Arama butonu
Bu konudaki kullanıcılar: 1 misafir
5
Cevap
331
Tıklama
0
Öne Çıkarma
Anket in mantığı nedir?
T
19 yıl
Yarbay
Konu Sahibi

Arkadaşlar anket scriptlerinde işin mantığı nedir. Tamam bi tablonun öğelerinin her seçimde +1 artıtırıyoruz ama sonuçları nasıl yapıyoruz yüzde olarak veya 5 üzerinden olarak onu anlayamadım

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



E
19 yıl
Teğmen

dostum çok basit olarak şöylr çözdüm her oy ilgili alanını genel bir toplam alanı 1 arttırıyor sonuç olarak yüzdeleri hesaplayabiliyorsun ve görüntü eklemek istersende mesela 10 p*100 px bir çubuk yap ve o çubuğu ilgili alanı gösterirken width bölümüne yüzdesini yazdır o alanın çok pratik olay bu şekilde ama yüzde hesaplamak için de

$yuzde=$alan*100/$toplam_alan

gibi bir fonksiyon yazabilirsin doğru orantı yani biraz beklersen şimdi yaptığım bir sitede sıfırdan yazdım beğenirsen kodları veririm....



Bu mesaja 1 cevap geldi.
L
19 yıl
Yüzbaşı

ben bunu bir yerde yazdım ama nerede ?





< Bu mesaj bu kişi tarafından değiştirildi looter -- 28 Nisan 2006; 2:12:46 >

O
19 yıl
Teğmen

COK basit anket konularını bir tabloya atıcaksın secekleri bi tabloya bu anketin konusunun bulundugu
tablodaki id ile secenekleri baglıcaksın göstereceksin.....
seceneklerin yanındaki alanada oy degeri gireceksin
toplam yapan sql fonsiyonun kulanabilirsin...
hmmmm
oylarıda konunun idsine göre kaydedeceksin
yani konunun id si
secenekeler tablosunda
hangi_anket adlı bolum olucak
benim yazdıgım ankette böle boylece sınırsız secenek ekleyebilirsinn......
---------------------
Biraz yavan oldu ama özetle iki tablo
1konu -/ 3 tane alan konumetni - id/
2 secenler-/3 tane alan secenek - hangi anket -oy -/





< Bu mesaj bu kişi tarafından değiştirildi ozgurclub -- 28 Nisan 2006; 14:15:49 >
Bu mesaja 1 cevap geldi.
O
19 yıl
Binbaşı

--ANKET--
anket_id
anket_soru

--SECENEKLER--
secenek_id
secenek_yazi
secenek_hangi_ankete_ait

--CEVAPLAR--
cevap_id
cevap_cevap
cevap_ip
cevap_tarih

Yukardaki gibi bir mysql tablosu oluşturursun. Her anket için ayrı bir anket değeri yaparsın. Sonra o ankete ait olan seçenekleri de ayrıca eklersin ve hangi ankete aitse onu tabloda belirtirsin. Sonra ziyaretçiler bir seçeneği seçtiklerinde veritabanında cevap şeklinde bir girdi olur. Bu girdide hangi cevaba ait olduğu belirtilir. Kullanıcının IP adresini ve cevabı verdiği tarihi time() olarak kaydedersin böylece ziyaretçi bir anketi yanıtlayınca veritabanına kaydetmeden önce belirtilen zamanın aşılıp aşılmadığını kontrol ettirirsin. Böylece bir ankete arka arkaya yüzlerce oy veremez. Tabi bu basit anket. Daha da güvenilir kılmak için cookie desteği de konulabilir.


Bu mesaja 1 cevap geldi.
L
19 yıl
Yüzbaşı

Aslında bunu cevaplamak güç.Yaptığın tabloyu vermen gerekiyor;
KODLARDA BOLD YAZAN YERLERE DİKKAT EDELİM;(database_name yeine kendi database'inizin adını yazın.)(Form postlarda sayfanın adını girin.)


Ufaktan başlayalım;
Eger tablo adı:ss;

id konu a b c d e f g
1 kkkk  1 4 6 8 9 5 2

ise;

<?
$base=database_name;
$veri_yolu = mysql_connect('localhost', 'root');
mysql_select_db("$base" , $veri_yolu);

echo"<table cellpadding=0 cellspacing=0>";
$result=mysql_query("SELECT * FROM ss", $veri_yolu);
$satir = mysql_fetch_row($result);
$a=$satir[2];$b=$satir[3];$c=$satir[4];$d=$satir[5];$e=$satir[6];$f=$satir[7];$g=$satir[8];
$sık=array('a','b','c','d','e','f','g');$i=0;while($i<7)
{
$yuzde=100*($satir[$i+2]/($a+$b+$c+$d+$e+$f+$g));$yuzde=round($yuzde);
echo"<tr><td>$sık[$i] şıkıını işaretleyen:%$yuzde</td><td>";$j=0;while($j<$yuzde){echo"|";$j++;}echo"</td></tr>";
$i++;
}
echo"</table>";
?>



Bu da renklendirilmiş ve ss tablosundaki tüm anketler ile gösteriyor;

<?
$base=database_name;
$veri_yolu = mysql_connect('localhost', 'root');
mysql_select_db("$base" , $veri_yolu);

$result=mysql_query("SELECT * FROM ss", $veri_yolu);
while($satir = mysql_fetch_row($result))
{
echo"<table cellpadding=2 cellspacing=0 border=1 bordercolor=darkblue>";
$konu=$satir[1];$a=$satir[2];$b=$satir[3];$c=$satir[4];$d=$satir[5];$e=$satir[6];$f=$satir[7];$g=$satir[8];
echo"<tr><td colspan=2 align=center bgcolor=white><font color=darkred>$konu</font></td></tr>";
$sık=array('a','b','c','d','e','f','g');$i=0;while($i<7)
{
$yuzde=100*($satir[$i+2]/($a+$b+$c+$d+$e+$f+$g));$yuzde=round($yuzde);
echo"<tr bgcolor=dbdbdb><td>$sık[$i] şıkıını işaretleyen:%$yuzde</td><td>";$j=0;while($j<$yuzde){echo"|";$j++;}echo"</td></tr>";
$i++;
}
echo"</table><br>";
}
?>

Tüm tabloları değişik şık sayılarındaki anketlerle verir;tabloda yapmanız gereken sütun sıralaması; 'id','konu','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','y','z'

<?
$base=database_name;
$veri_yolu = mysql_connect('localhost', 'root');
mysql_select_db("$base" , $veri_yolu);

$result=mysql_query("SELECT * FROM ss", $veri_yolu);
$row = mysql_fetch_assoc ($result);
$sayi=0;foreach ($row as $heading=>$column){if (array ($heading, $allowed_order)){$sayi++;}}$sayi=$sayi-2;
$result=mysql_query("SELECT * FROM ss order by id ASC", $veri_yolu);


$sık=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','y','z');
$sıkk=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','y','z');

while($satir = mysql_fetch_row($result))
{
echo"<table cellpadding=2 cellspacing=0 border=1 bordercolor=darkblue>";
$konu=$satir[1];$s=0;$tum=0;while($s<$sayi){$tum=$tum+$satir[$s+2];$sık[$s]=$satir[$s+2];$s++;}
echo"<tr><td colspan=2 align=center bgcolor=white><font color=darkred>$konu</font></td></tr>";
$i=0;while($i<$sayi)
{
$yuzde=100*($satir[$i+2]/$tum);$yuzde=round($yuzde);
if($satir[$i+2]!==''){echo"<tr bgcolor=dbdbdb><td>$sıkk[$i] şıkıını işaretleyen:%$yuzde</td><td>";$j=0;while($j<$yuzde){echo"|";$j++;}echo"</td></tr>";}
$i++;
}
echo"</table><br>";
}
?>

NOT:Buglı yeleri kırmızı daha kısa yazılabilecek yerleri (benim bilmediğim) yeşil renklendirdim.Oraları düzeltirseniz çok daha sade çalışır;


Biliyorum fazla oldu ama bu da seçmeli olarak istediğiniz anketi görmek için;
<?
$base=database_name;
$veri_yolu = mysql_connect('localhost', 'root');
mysql_select_db("$base" , $veri_yolu);
if(isset($konu))
{
$result=mysql_query("SELECT * FROM ss", $veri_yolu);
$row = mysql_fetch_assoc ($result);
$sayi=0;foreach ($row as $heading=>$column){if (array ($heading, $allowed_order)){$sayi++;}}$sayi=$sayi-2;

$result=mysql_query("SELECT * FROM ss where konu='".$konu."' ", $veri_yolu);


$sık=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','y','z');
$sıkk=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','r','s','t','u','v','y','z');
while($satir = mysql_fetch_row($result))
{
echo"<table cellpadding=2 cellspacing=0 border=1 bordercolor=darkblue>";
$konu=$satir[1];$s=0;$tum=0;while($s<$sayi){$tum=$tum+$satir[$s+2];$sık[$s]=$satir[$s+2];$s++;}
echo"<tr><td colspan=2 align=center bgcolor=white><font color=darkred>$konu</font></td></tr>";
$i=0;while($i<$sayi)
{
$yuzde=100*($satir[$i+2]/$tum);$yuzde=round($yuzde);
if($satir[$i+2]!==''){echo"<tr bgcolor=dbdbdb><td>$sıkk[$i] şıkıını işaretleyen:%$yuzde</td><td>";$j=0;while($j<$yuzde){echo"|";$j++;}echo"</td></tr>";}
$i++;
}
echo"</table><br>";
}
}
else
{
echo"<form action=Bu_sayfanin_adi method=post><select name=konu>";
$result=mysql_query("SELECT * FROM ss order by id ASC", $veri_yolu);
while($satir = mysql_fetch_row($result)){echo"<option value=$satir[1]>$satir[1]</option>";}
echo"</select><input type=submit value=göster></form>";
}
?>


Gecelerin DONANIM HABER OLDU sinsice....

Hadi ii anketler....





< Bu mesaj bu kişi tarafından değiştirildi looter -- 1 Mayıs 2006; 4:55:59 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.