مقدمة AJAX و PHP
ان لغة AJAX هي تحديث جزء من صفحة الويب بدون تحديث الصفحة كلها .
ماذا يجب أن تعرف
قبل البدء بلغة AJAX يجب أن تكون على علم باللغات التالية :
- HTML / XHTML
- CSS
- JavaScript / DOM
ان أردت دراسة هذه المناهج واللغات أولاً يمكنك زيارة للمعهد .
ماهي لغة AJAX ؟
- ان لغة AJAX هي اختصار Asynchronous JavaScript and XML هي الاستخدام الغير متزامن مع الجافاسكربت JavaScript و XML .
- ان لغة AJAX هي تقنية إنشاء صفحات ويب بسرعة و بأكثر فعالية .
تسمح لك لغة AJAX بالتطوير بشكل غير متزامن من خلال تبادل كمية قليلة من البيانات مع السيرفر أي ما خلف الكواليس . و ذلك يعني يمكنك التعديل على جزء معين من صفحة النت و بدون تحديث الصفحة كلها .
يجب على الصفحات التقليدية ( التي لا تستخدم AJAX ) تحديث الصفحة كلها اذا أردت تغير شيء معين من الصفحة .
مثال عن التطبيقات التي تستخدم AJAX هي : Google Maps و Gmail و Youtube و Facebook .
كيف تعمل AJAX
تعتمد لغة AJAX على قوانين الانترنت
تعتمد لغة AJAX على قوانين الانترنت كما تستخدم المزيج من :
- كائن XMLHttpRequest ( لتبادل البيانات بشكل غير متزامن مع السيرفر ) .
- JavaScript/DOM : لعرض او التفاعل مع المعلومات .
- CSS : لتصميم شكل البيانات .
- XML : تستخدم عادة لتغيير نقل المعلومات .
تعتبر لغة AJAX خاصة بتطبيقات و قواعد الاساسية للمتصفح .
اقتراحات جووجل Google
تم إنشاء لغة AJAX عام 2005 من خلال شركة Google قسم اقتراحات جوجل .
يستخدم قسم اقتراحات جووجل لغة AJAX لإنشاء واجهة صفحات أكثر فعالية . عند الكتابة في صندوق محرك البحث جووجل , سترسل الجافاسكربت الأحرف الى السيرفر و سيعيد السيرفر قائمة من الاقتراحات .
ابدء باستخدام AJAX اليوم
تعتمد لغة AJAX على المبادئ الحالية . تم استخدام هذه المبادئ من خلال المطورون لعدة سنوات . ستتعلم المزيد في الدروس القادمة عن كيفية عمل لغة AJAX .
استخدام AJAX مع PHP
تستخدم AJAX لإنشاء تطبيقات أكثر فعالية و احترافية .
مثال عن PHP
يظهر المثال التالي كيف يمكن لصفحة الانترنت التواصل مع السيرفر بينما يكتب المستخدم أحرف اسمه في حقل النص .
شرح المثال – صفحة HTML
عند يقوم المستخدم بكتابة اسم في حقل الإدخال عندها ستعمل الدالة showHint() المرتبطة مع الحدث onkeyup .
<html>
<head>
<script type="text/javascript">
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// هذا الكود للمتصفحات اوبرا و سفاري و جوجل كروم و فايرفوكس و اكسبلورر 7
xmlhttp=new XMLHttpRequest();
}
else
{// هذا الكود لاكسبلورر إصدار 5 و 6xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body><p><b> إبدء بكتابة اسمك في الحقل التالي :</b></p>
<form>
الاسم : <input type="text" onkeyup="showHint(this.value)" size="20" />
</form>
<p>الإقتراحات : <span id="txtHint"></span></p>
</body>
</html>
شرح مصدر الكود
إذا كان حقل الإدخال فارغ (str.length==0) عندها ستقوم الدالّة بمسح المحتوى من تلميح الحقل و إنهاء الوظيفة أو الدالّة .
اذا لم يك حقل الإدخال فارغ عندها ستقوم الدالّة showHint() بعمل مايلي :
- إنشاء كائن XMLHttpRequest .
- إنشاء دالّة حيث ستعمل اذا كان استجابة السيرفر جاهزة .
- إرسال طلب خارجي الى ملف في السيرفر .
- لاحظ بأن المدخل (q) تم إضافته الى الرابط التشعبي مع محتوى حقل الإدخال .
ملف PHP
تم استدعاء الصفحة على السيرفر من خلال الجافاسكربت لملف PHP يسمى gethint.php
يفحص gethint.php في مصدر الكود عن مصفوفة الأسماء ثم يعيد الأسماء المقترحة لتظهر على المتصفح :
<?php
/* إملأ المصفوفة بالأسماء التالية */
$a[]=”منى”
$a[]=”محمد”
$a[]=”ملك”
$a[]=”حسام”
$a[]=”أنس”
$a[]=”صالح”
$a[]=”سمير”
$a[]=”أحمد”
$a[]=”قصي”
$a[]=”جمانة”
$a[]=”كندة”
$a[]=”صفوت”
$a[]=”فادي”
$a[]=”بشار”
$a[]=”وحيد”
$a[]=”سلوى”
$a[]=”صلاح”
$a[]=”ناجي”
$a[]=”حامد”
$a[]=”حمود”
$a[]=”إيناس”
$a[]=”عبادة”
$a[]=”تيم”
$a[]=”ميسون”
$a[]=”حمد”
$a[]=”ليزا”
$a[]=”صفاء”
$a[]=”رامي”
$a[]=”وسام”
$a[]=”رهف”
// استخدم القيمة q من خلال الرابط
$q=$_GET["q"];
if (strlen($q) > 0)
{
$hint=”";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint==”")
{
$hint=$a[$i];
}
else
{
$hint=$hint.” , “.$a[$i];
}
}
}
}
/*
النتيجة ” لايوجد اقتراحات” اذا لم يتم ايجاد أي تلميحات أو النتيجة بالقيمة الصحيحة .
*/
if ($hint == “”)
{
$response=”no suggestion”;
}
else
{
$response=$hint;
}
// كود الاستجابة
echo $response;
?>
شرح الكود السابق
اذا تم ارسال أي نص من خلال الجافاسكربت (strlen($q) > 0) سيتم حصول مايلي :
- إيجاد اسم مطابق للأحرف التي تم ارسالها من الجافاسكربت .
- ان لم يتم ايجاد مطابقة سيتم ارسال جملة "لايوجد اقتراحات" .
- ان تم إيجاد مطابقة أو أكثر عندها سيتم ارسال استجابة لجميع تلك الأسماء .
- يتم إرسال الاستجابة الى المؤشر txtHint .
استخدام AJAX مع MySQL
تستخدم AJAX مع تبادل البيانات من خلال قواعد البيانات .
أمثلة مع قواعد البيانات Database
في المثال التالي يشرح كيف يمكن لصفحة الويب إظهار البيانات من خلال قواعد البيانات باستخدام AJAX :
شرح المثال – صفحة HTML
عندما يختار المستخدم دولة من خلال القائمة المنسدلة سيتم استدعاء الدالّة showUser() من خلال الحدث onchange :
<html>
<head>
<script type="text/javascript">
function showCustomer(str)
{
var xmlhttp;
if (str==”")
{
document.getElementById(“txtHint”).innerHTML=”";
return;
}
if (window.XMLHttpRequest)
{
/*
يعمل على IE7+, Firefox, Chrome, Opera, Safari
*/
xmlhttp=new XMLHttpRequest();
} else {
/*
يعمل على IE5 و IE6
*/
xmlhttp=new ActiveXObject(“Microsoft.XMLHTTP”);
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open(“GET”,”getcustomer.asp?q=”+str,true);
xmlhttp.send();
}
</script>
</head>
<body><form>
<select name="users" onchange="showUser(this.value)">
<option value="">اختر بلد الزبون :</option>
<option value="1">سوريا</option>
<option value="2">تركيا</option>
<option value="3">أمريكا</option>
<option value="4">أوروبا</option>
</select>
</form>
<br />
<div id="txtHint"><b>
هذا الزبون من أشهر الزبائن لدينا
</b></div></body>
</html>
تعمل الوظيفةshowCustomer() كالتالي
- يفحص اذا تم اختيار الزبون من القائمة .
- إنشاء كائن XMLHttpRequest .
- إنشاء function واستدعائه عندما تكون استجابة السيرفر جاهزة .
- ارسال الطلب الى ملف على السيرفر .
- لاحظ بأن القيمة q تم إضافتها الى الرابط URL مع محتوى القائمة المنسدلة .
ملف ال PHP
تم استدعاء الصفحة على السيرفر من خلال الجافاسكربت لملف PHP يسمى getuser.php .
يقوم الكود في getuser.php بتفعيل أوامر من قاعدة البيانات MySQL و إعادة النتيجة في جدول HTML .
<?php
$q=$_GET["q"];$con = mysql_connect('localhost', 'peter', 'abc123');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("ajax_demo", $con);
$sql="SELECT * FROM user
WHERE id = '".$q."'";
$result = mysql_query($sql);
echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Job</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['Hometown'] . "</td>";
echo "<td>" . $row['Job'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
شرح الكود
عند ارسال الأمر في ملف PHP مستخدمين الجافاسكربت سيحدث التالي:
- يفتح PHP اتصال مع سيرفر قاعدة البيانات MySQL .
- سيتم إيجاد اسم الدولة المطلوب .
- سيتم إنشاء جدول و يملىء بالبيانات و سيتم ارساله مجدداً الى مؤشر txtHint.
استخدام AJAX و XML
تستخدم AJAX مع تبادل البيانات من خلال ملفات XML .
أمثلة AJAX مع XML
في المثال التالي يشرح كيف يمكن لصفحة الويب إظهار البيانات من خلال ملف XML باستخدام AJAX :
اضغط على الرابط
شرح المثال – صفحة HTML
عند اختيار مستخدم CD من القائمة المنسدلة سيتم استخدام الدالّة showCD() مع الحدث onchange .
<html>
<head>
<script type="text/javascript">
function showCD(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
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("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getcd.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body><form>
اختر اسم CD :
<select name="cds" onchange="showCD(this.value)">
<option value="">اختر CD</option>
<option value="Bob Dylan">Bob Dylan</option>
<option value="Bonnie Tyler">Bonnie Tyler</option>
<option value="Dolly Parton">Dolly Parton</option>
</select>
</form>
<div id="txtHint"><b>ستظهر معلومات الفنانين هنا</b></div></body>
</html>
تقوم الدالّة showCD() بعمل مايلي :
- فحص فيما اذا تم اختيار فنان من CD .
- إنشاء الكائن XMLHttpRequest .
- إنشاء دالّة عندما تكون استجابة السيرفر جاهزة .
ارسال الطلب الى ملف على السيرفر .
لاحظ بأن القيمة q تم إضافتها الى الرابط URL مع محتوى القائمة المنسدلة .
الملف PHP
تم استدعاء الصفحة على السيرفر من خلال الجافاسكربت لملف PHP يسمى getcd.php .
يحمّل كود PHP ملف XML "cd_catalog.xml" ثم يقوم بتشغيل الأمر في ملف XML ثم يعيد النتيجة ويظهرها على ملف HTML :
<?php
$q=$_GET["q"];$xmlDoc = new DOMDocument();
$xmlDoc->load("cd_catalog.xml");
$x=$xmlDoc->
getElementsByTagName('ARTIST');
for ($i=0; $i<=$x->length-1; $i++)
{
//Process only element nodes
if ($x->item($i)->nodeType==1)
{
if ($x->item($i)->childNodes->item(0)->nodeValue == $q)
{
$y=($x->item($i)->parentNode);
}
}
}$cd=($y->childNodes);
for ($i=0;$i<$cd->length;$i++)
{
//Process only element nodes
if ($cd->item($i)->nodeType==1)
{
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
echo($cd->item($i)->childNodes->item(0)->nodeValue);
echo("<br />");
}
}
?>
عندما يتم ارسال الأمر من الجافاسكربت الى صفحة PHP سيتم حدوث مايلي :
- يقوم PHP بإنشاء كائن XML DOM .
- إيجاد جميع وسوم الفنانين <artist> التي تطابق الاسم المرسل من الجافاسكربت .
- سيتم عرض معلومات الألبوم .
البحث المباشر مع AJAX
يمكن استخدام AJAX لإنشاء محركات بحث أكثر فعالية و صديقة للبيئة .
البحث المباشر
سيقوم المثال التالي بعملية بحث مباشرة حيث ستشاهد نتيجة البحث بينما تقوم بكتابة الكلمات .
مثال مباشر بكيفية
لدى البحث المباشر مزايا جميلة يختلف عن البحث التقليدي
- تظهر النتيجة عندما تكتب ماتبحث عنه.
- عرض النتائج بحسب الكلمات التي تكتبها .
- عندما تصبح النتائج ضيقة جداً قم بحذف بعض الأحرف لتشاهد حدود النتيجة .
شرح المثال – صفحة HTML
عندما يقوم المستخدم بكتابة كلمة في حقل الكتابة سيتم عمل الدالّة showResult() مع بداية عمل الحدث onkeyup .
<html>
<head>
<script type="text/javascript">
function showResult(str)
{
if (str.length==0)
{
document.getElementById("livesearch").innerHTML="";
document.getElementById("livesearch").style.border="0px";
return;
}
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("livesearch").innerHTML=xmlhttp.responseText;
document.getElementById("livesearch").style.border="1px solid #A5ACB2";
}
}
xmlhttp.open("GET","livesearch.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body><form>
<input type="text" size="30" onkeyup="showResult(this.value)" />
<div id="livesearch"></div>
</form>
</body>
</html>
شرح الكود
اذا لم يتم إدخال أي كلمة في حقل الكتابة ستقوم الدالّة بحذف محتوى البحث وإنهاء الدالّة .
اذا تم ادخال كلمة عندها ستقوم الدالّة showResult() بعمل مايلي :
- إنشاء الكائن XMLHttpRequest .
- إنشاء دالّة عندما تكون استجابة السيرفر جاهزة .
- ارسال الطلب الى ملف على السيرفر .
- لاحظ بأن القيمة q تم إضافتها الى الرابط URL مع محتوى حقل الكتابة .
ملف PHP
يستدعى الملف الموجود على السيرفر من خلال الجافاسكربت وبالملف PHP ويسمى livesearch.php .
يبحث كود PHP في ذلك الملف عن ملف XML بحيث يطابق العناوين التي يتم البحث عنها ثم يتم إعادة النتيجة كالتالي
<?php
$xmlDoc=new DOMDocument();
$xmlDoc->load("links.xml");$x=$xmlDoc->getElementsByTagName('link');
//get the q parameter from URL
$q=$_GET["q"];
//lookup all links from the xml file if length of q>0
if (strlen($q)>0)
{
$hint="";
for($i=0; $i<($x->length); $i++)
{
$y=$x->item($i)->getElementsByTagName('title');
$z=$x->item($i)->getElementsByTagName('url');
if ($y->item(0)->nodeType==1)
{
//find a link matching the search text
if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q))
{
if ($hint=="")
{
$hint="<a href='" .
$z->item(0)->childNodes->item(0)->nodeValue .
"' target='_blank'>" .
$y->item(0)->childNodes->item(0)->nodeValue . "</a>";
}
else
{
$hint=$hint . "<br /><a href='" .
$z->item(0)->childNodes->item(0)->nodeValue .
"' target='_blank'>" .
$y->item(0)->childNodes->item(0)->nodeValue . "</a>";
}
}
}
}
}
// Set output to "no suggestion" if no hint were found
// or to the correct values
if ($hint=="")
{
$response="no suggestion";
}
else
{
$response=$hint;
}
//output the response
echo $response;
?>
إن تم ارسال نص من خلال الجافاسربت سيتم حدوث مايلي
- تحميل ملف XML إلى كائن XML DOM جديد .
- الدوران من خلال الحلقات لجميع عناصر <title> وذلك لإيجاد النص المطابق والذي تم ارساله من خلال الجافاسكربت .
- ضبط الرابط و العنوان الصحيحين في المتغير $response واذا تم العثور على أكثر من مطابقة سيتم إضافة جميع المتغيرات معاً .
- ان لم يتم أي مطابقة عندها سيقوم المتغير $response بوضع عبارة "لايوجد اقتراحات" .
استخدام AJAX مع تغذية RSS
تستخدم تغذية RSS لقراءة آخر الأخبار من أي موقع يتم الاشتراك به .
في المثال التالي سيتم اختيار احدى تغذيات RSS والتي سيتم تحميلها من السيرفر أو مباشرة من خلال رابط تغذية الموقع.
مثال مشروح – صفحة HTML
عندما يختار المستخدم احدى أنواع التغذية من القائمة المنسدلة سيتم عمل الدالّة showResult() والذي بدوره مرتبط مع الحدث عند التغيير onchange .
<html>
<head>
<script type="text/javascript">
function showRSS(str)
{
if (str.length==0)
{
document.getElementById("rssOutput").innerHTML="";
return;
}
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("rssOutput").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getrss.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body><form>
<select onchange="showRSS(this.value)">
<option value="">اختر موقع التعذية</option>
<option value="Google">دروس HTML</option>
<option value="MSNBC">المعهد العربي للبرمجة</option>
</select>
</form>
<br />
<div id="rssOutput">تم إنشاء تغذية Rss وهي مصنفةهنا</div>
</body>
</html>
يقوم الدالّة showResult() بما يلي :
- فحص تغذية RSS عند اختياره .
- إنشاء الكائن XMLHttpRequest .
- إنشاء دالّة عندما تكون استجابة السيرفر جاهزة .
- ارسال الطلب الى ملف على السيرفر .
- لاحظ بأن القيمة q تم إضافتها الى الرابط URL مع محتوى القائمة المنسدلة .
ملف PHP
يتم استدعاء الصفحة من السيرفر من خلال الجافاسكربت في الأعلى من خلال صفحة PHP المسماة getrss.php :
<?php
//get the q parameter from URL
$q=$_GET["q"];//find out which feed was selected
if($q=="Google")
{
$xml=("http://www.w3arabiconline.com/feed");
}
elseif($q=="MSNBC")
{
$xml=("http://www.w3arabiconline.com/feed");
}
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
//get elements from "<channel>"
$channel=$xmlDoc->getElementsByTagName('channel')->item(0);
$channel_title = $channel->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$channel_link = $channel->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$channel_desc = $channel->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
//output elements from "<channel>"
echo("<p><a href='" . $channel_link
. "'>" . $channel_title . "</a>");
echo("<br />");
echo($channel_desc . "</p>");
//get and output "<item>" elements
$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $i<=2; $i++)
{
$item_title=$x->item($i)->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$item_link=$x->item($i)->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$item_desc=$x->item($i)->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
echo ("<p><a href='" . $item_link
. "'>" . $item_title . "</a>");
echo ("<br />");
echo ($item_desc . "</p>");
}
?>
عند ارسال أمر التغذية من خلال الجافاسكربت عندها سيحدث مايلي :
- فحص اي واحدة من التغذية تم اختيارها .
- إنشاء كائن XML DOM جديد .
- تحميل ملف RSS في متغير xml .
- فك و إظهار العناصر من العنصر <channel> .
- فك و إظهار العناصر من العنصر <item> .
استخدام AJAX مع التصويت poll
في المثال التالي سيتم اختيار و اظهار نتيجة التصويت بدون تحميل .
المثال المشروح – صفحة HTML
عندما يختار المستخدم خيار نعم أو لا من المثال السابق سيتم استدعاء الدالّة getVote() و التي تظهر بدورها مع الحدث onclick
<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>هل تحب لغة PHP</h3>
<form>
نعم :
<input type="radio" name="vote" value="0" onclick="getVote(this.value)" />
<br />لا :
<input type="radio" name="vote" value="1" onclick="getVote(this.value)" />
</form>
</div>
</body>
</html>
تقوم الدالّة getVote() بما يلي :
- إنشاء الكائن XMLHttpRequest .
- إنشاء دالّة عندما تكون استجابة السيرفر جاهزة .
- ارسال الطلب الى ملف على السيرفر .
- لاحظ بأن القيمة vote تم إضافتها الى الرابط مع القيمة المختارة .
ملف PHP
يتم استدعاء صفحة PHP المسماة 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>النتيجة</h2>
<table>
<tr>
<td>نعم : </td>
<td>
<img src="images/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>لا : </td>
<td>
<img src="images/poll.gif"
width='<?php echo(100*round($no/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($no/($no+$yes),2)); ?>%
</td>
</tr>
</table>
يتم ارسال القيمة من خلال الجافاسكربت ثم يحصل مايلي :
- الحصول على محتوى ملف نتيجة التصويت poll_result.txt .
- وضع محتوى الملف في متغير و إضافة واحد إلى المتغير الذي تم اختياره .
- كتابة النتيجة في ملف poll_result.txt .
- إظهار صورة توضيحية عن نتيجة التصويت .
الملف النصي
نستخدم الملف النص poll_result.txt لتخزين بيانات نتيجة التصويت .
يتم تخزينها و عرض نتيجتها كما يلي :
0||0
يعبر الرقم الأول من اليسار على اختيار "نعم" في نتيجة التصويت أما الرقم الثاني يعبّر عن اختيار "لا" في نتيجة التصويت .
ملاحظة : تذكر بالسماح للسيرفر للتعديل على الملف النصي و لا تعطي صلاحية لأي شخص للتعديل عليه فقط السيرفر .