Polling dengan AJAX dan PHP
Ditulis Oleh oscorp   
Saturday, 31 January 2009

HTML FORM

Ini adalah halaman HTML.Berisi formulir sederhana HTML dan link ke JavaScript:

<html>
<head>
<script src="poll.js"></script> 
</head>
<body>
<div id="poll">
<h2>Do you like PHP and AJAX so far?</h2>
<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>

Penjelasan contoh - HTML Form

Seperti yang dapat Anda lihat,  halaman HTML di atas berisi formulir sederhana HTML di dalam "<div>" dengan dua tombol radio.

Bentuk pekerjaan seperti ini:

  1. Sebuah event yang dipicu ketika pengguna memilih "ya" atau "tidak" pilihan
  2. Ketika acara ini dipicu, salah satu fungsi yang disebut getVote () akan dijalankan.
  3. Sekitar bentuk adalah <div> disebut "jajak pendapat".  Bila data yang dikembalikan dari getVote ()  fungsi, kembali data yang akan menggantikan form.

Text File 

Teks file (poll_result.txt) adalah dimana kita simpan data dari jajak pendapat.

Akan disimpan seperti ini:

0||0 0 | | 0

Nomor pertama yang mewakili "Ya" suara, angka kedua menunjukkan "Tidak" suara.

Catatan: Jangan lupa untuk memungkinkan server Web Anda untuk mengedit file teks. 

JANGAN memberikan akses setiap orang, hanya server web (PHP).


JavaScript

Kode JavaScript akan disimpan di "poll.js" dan dihubungkan ke dalam dokumen HTML:

var xmlHttp
 
function getVote(int)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 } 
var url="poll_vote.php"
url=url+"?vote="+int
url=url+"&sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged 
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
} 
 
function stateChanged() 
{ 
 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
 document.getElementById("poll").
 innerHTML=xmlHttp.responseText;
 } 
} 
 
function GetXmlHttpObject()
{ 
var objXMLHttp=null
if (window.XMLHttpRequest)
 {
 objXMLHttp=new XMLHttpRequest()
 }
else if (window.ActiveXObject)
 {
 objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
 }
return objXMLHttp
}

Penjelasan

StateChanged () dan GetXmlHttpObject fungsi yang sama seperti di PHP AJAX sugest.

getVote() Function

Melaksanakan fungsi ini bila "ya" atau "tidak" dipilih dalam bentuk HTML.

  1. Tetapkan url (filename) untuk mengirim ke server
  2. Menambahkan parameter (suara) untuk url dengan isi bidang masukan
  3. Menambahkan nomor acak untuk mencegah dari server menggunakan cache file
  4. Panggilan pada GetXmlHttpObject fungsi untuk membuat sebuah obyek XMLHTTP, dan memberitahu objek untuk menjalankan fungsi bernama stateChanged ketika perubahan yang dipicu
  5. Membuka objek XMLHTTP dengan url yang diberikan.
  6. HTTP yang mengirimkan permintaan ke server

Halaman dengan PHP

Server halaman dipanggil oleh kode JavaScript yang sederhana PHP file bernama "poll_vote.php".

<?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>
Yang dipilih adalah nilai yang dikirim dari JavaScript dan hal-hal berikut terjadi:
  1. Dapatkan isi "poll_result.txt" file
  2. Letakkan isi file dalam variabel dan menambahkan satu variabel yang dipilih
  3. Menulis hasilnya ke "poll_result.txt" file
  4. Output grafis perwakilan dari hasil jajak pendapat
» 3 Comments
3"krukcrsz" by krukcrsz at Monday, 21 September 2009 18:39
[URL=http://wgozrxnw.com]zeuucqzr[/URL] bpnvdthu http://ekrawzxk.com vdhmyauw intjncio fjjrunqe
2"Terimakasih mas Rifai" by oscorp at Sunday, 01 March 2009 19:05
terima kasih atas sambutan mas rifai atas artikel saya... 
mungkin kita kapan kapan bisa sharing...
1"berkualitas" by Rifai at Monday, 16 February 2009 00:41
ternyata artikel anda berkualitas semua bro.. 
cepat atau lambat sebagian dari artikel ini pasti saya butuhin, 
thx yaa for post !!
» Post Comment
Email (will not be published)
Name
Title
Comment
Pemutakhiran Terakhir ( Wednesday, 04 February 2009 )