اكسترا ويب
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

اكسترا ويب


 
الرئيسيةالبوابةأحدث الصورالتسجيلدخول

 

 درس عمل التصويت عن طريق Php و Ajax ...

اذهب الى الأسفل 
كاتب الموضوعرسالة
P i e x l
Admin
P i e x l


عدد المساهمات : 85
تاريخ التسجيل : 27/12/2011

درس عمل التصويت عن طريق Php و Ajax ...   Empty
مُساهمةموضوع: درس عمل التصويت عن طريق Php و Ajax ...    درس عمل التصويت عن طريق Php و Ajax ...   Icon_minitimeالجمعة ديسمبر 30, 2011 5:35 pm

درس عمل التصويت عن طريق 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 "
درس عمل التصويت عن طريق Php و Ajax ...   2609508595

الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
درس عمل التصويت عن طريق Php و Ajax ...
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
اكسترا ويب  :: الاقسام التقنية :: الاقسام التقنية :: قسم العاب الكمبيوتر :: قسم الجوال :: قسم البرمجة العامة-
انتقل الى: