Merhaba arkadaşlar. Bugün sizlere en kısa yoldan nasıl bir anket sistemi yapacağımızı göstereceğim. Yeni sistemle beraber veritabanı üzerinden şıklarımızı ve oylarımızı çekeceğiz. Bu sayede çok esnek yapıda bir anketimiz olacaktır. İsteyen kişiler bu sistemi yönetim paneline bağlayıp oradan da istediği gibi anket yaratabilir.

Php’ nin yanında çok az da Css’ den faydalandım. Böylece istenildiği gibi kişiselleştirilebilir birşey ortaya çıktı. İsteyen arkadaşlar fonksiyona bağlayıp; tek bir kod ile gösterebilirler. Dediğim gibi kodlar çok basit ve taşınabilir. Anket konusunda ilk başlarda Google API kullandım yalnız sistemi kasıyordu boşuna. Yine dediğim gibi en iyisi Php ve Css :)

Öncelikle kodlarımızı verelim;

<?
@$baglan = mysql_connect("localhost","root","");
@mysql_select_db("anket",$baglan);
$sorgu = mysql_query("SELECT * FROM anket") or die ("hata");
$soru = @mysql_result($sorgu, 0, "soru");
$sec = @mysql_result($sorgu, 0, "sec");
$secs = explode(",",$sec);

if($_POST) {
$veri = @mysql_result($sorgu, 0, "oy");
$id = @mysql_result($sorgu, 0, "id");
$hangi = $_POST["veri"];
$oy = explode(",",$veri);
$yeni = $oy[$hangi]+1;
$oy[$hangi] = $yeni;

foreach($oy as $tek) $toplam += $tek;
$sql = "UPDATE anket SET oy='";
foreach($oy as $tek) {
 if($s_sql!="") $s_sql.=",";
 $s_sql.=$tek;
 $sonuclar[] = number_format(($tek/$toplam*100));
}

$i = -1;
echo "<div id='u_bas'>$soru</div>";
foreach($sonuclar as $sonuc) {
$i += 1;
?>
<div style="width:<? echo $sonuc ?>%; background-color:#ddd"><? echo $secs[$i]; ?></div>
<?
}
$sql .= $s_sql."' WHERE id='$id'";
$sorgu = mysql_query($sql) or die ("no");
?>
<? }else{ echo $soru; ?>
<form id="form1" name="form1" method="post" action="">
<? $i=-1; foreach($secs as $sect) { $i +=1;?>
<p>
<input type="radio" name="veri" value="<? echo $i; ?>"/><? echo $sect; ?>
</p>
<? } ?>
<input type="submit" name="button" id="button" value="Oyla">
</form>
<? } ?>

Kodların uzun olduğu gözünüzü korkutmasın :) . Sistemi kasmamak için HTML kısımları Php ye yazdırtmadım. Artık günümüzde herşey hız olmuş durumda :) .

Unutmadan veritabanı şeklimiz bu;

anket veritabanı şeması

Şimdi kodlarımızı açıklayalım;

Öncelikle veritabanımıza bağlanıyoruz. Sonra sorumuzu ve seçeneklerimizi çekiyoruz. Fakat arkadaşlar seçenekler tek bir şekilde kayıt ediliyor; sec1,sec2 . Bu da sanki bir tek bir seçenek gibi gösteriyor. Bizde explode komutu ile “,” noktalarından hepsini ayırıyoruz ve secs isimli bir diziye atıyoruz.

Sonra sayfaya veri yollanmış mı kontrol ediliyor. Eğer ki veri yollanmış ise toplam oy sayısı alınıyor ki bu da yukarıda belirttiğim gibi 11,12,123 şeklinde ve Php tek bir veri kabul ediyor. Bunları da “,” noktalarından ayırıyoruz. Sonra kullanıcı hangi şıkkı seçmiş onu alıyoruz ve gerekli oy kısmına artı bir düşürüyoruz.

Kısa mantık şu şekilde; Form1=>0; Form2=1 — Oy1=>11; Oy2=>12 burada kontrol ediliyor ve $oy[hangi sıradaki veri] diyoruz. Sonrasında sırada ki veriye +1 ekleniyor. Böylece oy verilmiş oluyor. Sonrasında ise dizimizi güncelliyoruz.

Hemen ardından parçalanmış olan oy sırasını (12,13 diye almıştık sonra 12 13 diye ayırdık. Eklerken tekrar birleştiriyoruz ) tekrar kuruyoruz Ardından bunu veritabanımıza ekliyoruz. Ondan önce her oy’un toplam yüzde değeri alınıyor ve $sonuclar isimli bir diziye aktarılıyor. İşte burada Css gücü ile kutucuklarımızı yaratıyoruz…

Eğer ki if false düşerse bu seferde seçeneklerimiz veritabanından alınıyor ve radio grup içerisine tek tek ekleniyor…

Gördüğünüz gibi oylarımızın bulunduğu kutucuklarımıza style ifadesinden faydalanarak yüzdeler veriyoruz. Sonunda 10 üzerinden ayarlamalar yapılıyor. Kodları denerseniz daha iyi anlaşılır hale gelecektir…

Sorularınızı buradan sorabilirsiniz. İyi günler, iyi çalışmalar…