Çevreden gelen yoğun istek üzerine Anket Sihirbazı 'nı sonsuz seçenek yaratabilecek şekilde güncellemeye karar verdim. Sadece aşağıdaki 3 tabloyu yaratmanız ve tek dosya formatındaki scripti kullanmanız yeterli olacak. Bu script ile artık test bile hazırlayabilirsiniz .Haydi tekrar başlayalım... İlk önce 3 adet tablomuzu yaratıyoruz. Anket,Seçenekler ve Oylar tabloları. Bu tabloların yapılarını veri çekerken çok faydası olacağı için incelemenizi tavsiye ederim (tablo ilişkilendirmeleri vs.)
CREATE TABLE `anket` ( `id` INT(3) NOT NULL AUTO_INCREMENT, `baslik` VARCHAR(255) NOT NULL, `soru` VARCHAR(255) NOT NULL, `tarih` DATETIME NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin5 AUTO_INCREMENT=1 ; CREATE TABLE `secenekler` ( `id` BIGINT(5) NOT NULL AUTO_INCREMENT, `anket_id` INT(3) NOT NULL, `secenek` VARCHAR(255) NOT NULL, KEY `id` (`id`), KEY `anket_id` (`anket_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin5 AUTO_INCREMENT=1 ; CREATE TABLE `oylar` ( `id` BIGINT(10) NOT NULL AUTO_INCREMENT, `anket_id` INT(3) NOT NULL, `secenek_id` BIGINT(5) NOT NULL, `oy` BIGINT(5) NOT NULL DEFAULT '0', `kullanici_ip` VARCHAR(25) NOT NULL, `tarih` DATETIME NOT NULL, PRIMARY KEY (`id`), KEY `anket_id` (`anket_id`), KEY `secenek_id` (`secenek_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin5 AUTO_INCREMENT=1 ; Şimdi sorumuzu, seçeneklerimiz ve anket adımızı belirleyeceğimiz bir form ile scripte girelim: <?php /***********************************/ /* ANKET SIHIRBAZI */ /***********************************/ /* (C)2006 - AZIZ(R) */ /* */ /* Lütfen bu kısmı değiştirmeyiniz */ /* Alihan Çetin */ /***********************************/ /* Ilk Evvel dinamik Anket oluşturucusu yaratıyoruz */ ////////////////////////////////////////////////////// @ mysql_connect("localhost", "root", "") || die ("CONN_ERR_1"); @ mysql_select_db("test") || die("CONN_ERR_2"); @ mysql_query("SET NAMES 'latin5' "); if (! $_POST['submit'] && ! $_POST['submit2']){ ?> <html> <body> <form action="<?php $_SERVER['$PHP_SELF'] ?>" method="POST"> <table align="center" width="50%" border="1" cellpadding="0" cellspacing="2"> <tr> <!-- ADIM I --> <td colspan="2">Anket Yaratıcı:</td> </tr> <tr> <td width="50%">Soru: (Max 255 )</td> <td width="50%"><input type="text" maxlength="255" name="soru"></td> </tr> <tr> <td width="50%">Anket Adı: (Max 255 )</td> <td width="50%"><input type="text" maxlength="255" name="anket_adi"></td> </tr> <tr> <td width="50%">Kaç Seçenekli</td> <td width="50%"><input type="text" name="secenek_sayisi" maxlength="5"></td> </tr> <tr> <td> </td> <td><input type="reset" name="reset" value="TEMIZLE"> <input type="submit" name="submit" value="ADIM I"></td> </tr> </table> </form> </body> </html> Şimdi sırada gelen verileri ayrıştırmak ve seçenek sayısını belirleyerek, oluşacak tabloda dolduracağımız seçenek alanlarını yaratmaya geldi iş. Bu arada 3. kısımda kullanacağımız değişkenleri de hidden bir taşıyıcıya yüklüyoruz : <?php } if ($_POST['submit']){ //session_start(); $soru = $_POST['soru']; $secenek_sayisi = $_POST['secenek_sayisi']; $anket_adi = $_POST['anket_adi']; echo "<html><body> <form action=\"" . $_SERVER[$PHP_SELF]. "\" method=\"POST\"> <table align=\"center\" width=\"50%\" border=\"1\" cellpadding=\"0\" cellspacing=\"2\"> <tr> <td width=\"50%\"> </td> <td width=\"50%\"><input type=\"hidden\" name=\"soru\" value=\"$soru\"> <input type=\"hidden\" name=\"secenek_sayisi\" value=\"$secenek_sayisi\"> <input type=\"hidden\" name=\"anket_adi\" value=\"$anket_adi\"> $soru</td> </tr>"; for ($i= 0; $i< $secenek_sayisi; $i++ ) { $secenek_no= intval($i+1); $secenek_adi[] = $_SESSION['secenek'. $secenek_no. '']; echo " <tr> <td width=\"50%\">Seçenek -$secenek_no-</td> <td width=\"50%\"><input type=\"text\" name=\"secenek_$secenek_no\" value=\"$secenek_adi[$i]\"></td> </tr>"; } echo "<tr> <td width=\"50%\"> </td> <td width=\"50%\"> <input type=\"reset\" name=\"reset\" value=\"TEMIZLE\"> <input type=\"submit\" name=\"submit2\" value=\"ADIM II\"> </tr> </table> </form> <body> </html>"; } 3. form kısmı en civcivli kısım. Daha önceki scriptte olduğu gibi bu scriptin de kalbi burada atıyor. Bu kısmı Anket Sihirbazı Bölüm II de bulabilirsiniz... |