PHP ile basit anket veya oylama scripti yapalım. Öncelikle HTML Dosyamızı oluşturalım.
HTML Dosyası
Açıklaması: Kullanıcı radio butonu tıkladığında getVote fonksiyonunu çalıştıracak.
GetVote Fonksiyonu aşağıdaki işlemleri yapar:
Açıklaması: HTML sayfasında çağıralan php_vote.php dosyasıdır.
PHP dosyasının yaptıkları:
HTML Dosyası
<html> <head> <script type="text/javascript"> function getVote(int) { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("poll").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","poll_vote.php?vote="+int,true); xmlhttp.send(); } </script> </head> <body> <div id="poll"> <h3>Do you like PHP and AJAX so far?</h3> <form> Yes: <input type="radio" name="vote" value="0" onclick="getVote(this.value)" /> <br />No: <input type="radio" name="vote" value="1" onclick="getVote(this.value)" /> </form> </div> </body> </html> |
Açıklaması: Kullanıcı radio butonu tıkladığında getVote fonksiyonunu çalıştıracak.
GetVote Fonksiyonu aşağıdaki işlemleri yapar:
- XMLHttpRequest nesnesini oluşturur.
- Sunucu cevap vermeye hazır olduğunda çalışacak fonksiyonu hazırlar.
- Sunucuda dosya kapatma isteği gönderir.
PHP Dosyası
<?php $vote = $_REQUEST['vote']; //get content of textfile $filename = "poll_result.txt"; $content = file($filename); //put content in array $array = explode("||", $content[0]); $yes = $array[0]; $no = $array[1]; if ($vote == 0) { $yes = $yes + 1; } if ($vote == 1) { $no = $no + 1; } //insert votes to txt file $insertvote = $yes."||".$no; $fp = fopen($filename,"w"); fputs($fp,$insertvote); fclose($fp); ?> <h2>Result:</h2> <table> <tr> <td>Yes:</td> <td> <img src="poll.gif" width='<?php echo(100*round($yes/($no+$yes),2)); ?>' height='20'> <?php echo(100*round($yes/($no+$yes),2)); ?>% </td> </tr> <tr> <td>No:</td> <td> <img src="poll.gif" width='<?php echo(100*round($no/($no+$yes),2)); ?>' height='20'> <?php echo(100*round($no/($no+$yes),2)); ?>% </td> </tr> </table> |
Açıklaması: HTML sayfasında çağıralan php_vote.php dosyasıdır.
PHP dosyasının yaptıkları:
- "Poll_result.txt" dosyasının içeriğini alınır.
- Değişkenlere bir eklenir.
- Txt dosyasına yazılır.
- Anket sonucu grafiksel olarak ekrana yansır.
Metin Dosyası
Poll_resutlt.txt içeriği : 0||0 ilk "0" evet oyunu ikinci "0" ise hayır oyunu işaret etmektedir. Dosyayı sunucuda çalıştıracağınızdan gerekli izinleri vermelisiniz.
oylama sistemini her kişi için bir defa yapmak istediğimizde ne yapmamız gerekiyor ?
YanıtlaSilOylayan kişiye çerez veya session(oturum) ata. Örnek:
Silsession_start();
$_SESSION["oydurum"] =1; //bunu oy verme işleminden sonraya yaz.
if($_SESSION["oydurum"]==1){ echo "Siz daha önce oy kullanmışsınız"; // oy verme kodlarından önüne yaz bunu
}else //oy verme işlemi kodlarını buraya yaz.
Umarım açıklayıcı olmuştur.
Şu oy veren kişinin 1 kere vermesini bir daha geniş çaplı anlatır mısın?
YanıtlaSilBir de kaç kişinin oy verdiğini nasıl bulabiliriz?
yukarıdaki kodu uygula.
Silkaç kişi içinse ise $toplam = $no + $yes; desen olması lazım sanırım.
Çok teşekkür ederim toplam oy çalıştı.
SilFakat yukarıdaki kodu nereye uygulayacağımı bulamadım bi söyler misin? :)
Saygılar..
Merhaba
Silsecenekleri artırmak için ne yapmalıyım