درس عمل التصويت عن طريق Php و Ajax ...
التصويت عن طريق PHP و ajax ...
في درسنا هذا سنقوم بوضع تصويت و يتم عرض النتيجة بعد الإختيار دون إعادة فتح الصفحة ....
سوف نحتاج لعمل الدرس ...
- صفحة HTML
- صفحة PHP
- ملف جافا سكريبت
- ملف نصي ، لحفظ النتائج
لنبدأ العمل الآن ...
أولا: صفحة الـ HTML ...
هذه هي صفحة HTML فلنسمها مثلا " poll.html " ، و هي تحتوي على فورم HTML و رابط للجافا سكريبت ...
كود PHP:
<html><head><script src="poll.js">
شرح الصفحة ...
تحتوي الصفحة كما ترون أعلاه على فورم HTML داخل الوسم
و معه اثنان من عناصر الإختيار ( radio buttons )
و الفورم يعمل هكذا ...
- يقع الحدث عند التصويت على أحد الخيارين " نعم " أو " لا "
- و عند وقوع الحدث يتم تنفيذ العملية getVote()
- الوسم
الذي يحيط بالفورم يدعى " poll " ، و عند إعادة البيانات من عملية getVote() يتغير الفورم
ثانيا: الملف النصي ...
فلنسمي هذا الملف " poll_result.txt " ، و به يتم تخزين بيانات التصويت ...
و يخزن على الشكل الآتي:
كود PHP:
0||0
العدد الأول ( على اليسار ) يمثل " نعم " ، و الآخر يمثل " لا "
ملاحظة : لا تنسى أن تعطي تصريح الكتابة فقط للخادم لا غير ...
ثالثا: ملف الجافا سكريبت ...
نعطيه اسم " poll.js " ، و هو الملف الذي ربطناه بصفحة الـ HTML و التي سميناها " poll.html "
كود PHP:
var xmlHttpfunction getVote(int){xmlHttp=GetXmlHttpObject()if (xmlHttp==null) { alert ("Browser does not support HTTP Request") return } var url="poll_vote.php"url=url+"?vote="+inturl=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=nullif (window.XMLHttpRequest) { objXMLHttp=new XMLHttpRequest() }else if (window.ActiveXObject) { objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP") }return objXMLHttp}
شرح الملف ...
العملية getVote()
تنفذ هذه العملية عند إختيار " نعم " أو " لا " في صفحة الـ HTML
- نحدد رابط ( اسم الملف ) للإرسال للخادم
- نضيف البارامتر " vote " للرابط مع محتوى حقل الـ input
- نضيف عدد عشوائي لمنع استخدام خدمة الملف المخبأ ( cached file )
- طلب عملية GetXmlHttpObject لإنشاء كائن XMLHTTP ، و إخبار الكائن بتنفيذ العملية المسماة stateChanged عند حدوث التغيير
- فتح كائن XMLHTTP مع الرابط المعطى
- إرسال طلب HTTP إلى الخادم
رابعا: صفحة الـ PHP ...
نعطيها اسم " poll_vote.php "
كود PHP:
$vote = $_REQUEST['vote'];
// الحصول على محتويات الملف النصي
$filename = "poll_result.txt";
$content = file($filename);
// وضع المحتويات في مصفوفة
$array = explode("||", $content[0]);
$yes = $array[0];
$no = $array[1];
if ($vote == 0)
{
$yes = $yes + 1;
}
if ($vote == 1)
{
$no = $no + 1;
}
// إدراج التصويتات في الملف النصي
$insertvote = $yes."||".$no;
$fp = fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);
?>
النتيجة
نعم
width='echo(100*round($yes/($no+$yes),2)); ?>'
height='20'>
echo(100*round($yes/($no+$yes),2)); ?>%
لا
width='echo(100*round($no/($no+$yes),2)); ?>'
height='20'>
echo(100*round($no/($no+$yes),2)); ?>%
يحتوي الملف على:
- الحصول على محتوى الملف النصي " poll_result.txt "
- وضع محتوى الملف في المتغيرات و الإضافة إلى المتغير المصوت عليه
- طباعة النتيجة في الملف النصي " poll_result.txt "