بكسل - Powered by vBulletin

درس: الأخطاء


افاتار الكاتب
الصورة الرمزية MonTexo
MonTexo
مشــرف عــام
الدولة : -
الإهتمامات : -
الوظيفة : -
صورة الدرس الرمزية
معلومات الدرس
الأخطاء
هناك ثلاث أنواع من الأخطاء في php

1. Parse Errors
2. Header Errors
3. mySQL Result Source Errors خلل في نتائج الإستعلام في قاعدةالبيانات


Parse Errors


مثال

Parse error: parse error, unexpected T_STRING in /home/www/html/script/cat.php on line 11


سبب الخلل

هو خلل بسيط في عملية ترجمة البرنامج و هو غالبا خطأ مطبعي قد تكون نسيت الفاصلة المنقوطة ; أو نسيت إقفال الأقواس أو اخطأ ت في صيغة الدالة مثلا الدالة تأخذ متغير واحد و انت وضعت 2 و هكذا .
الحل


راجع كودك و انظر إلى رقم السطر الذي ذكر لك في رسالة الخطأ من المستحسن أن ترتب كودك بمعنى أن تترك المسافات اللازمة مثلا الشكل التالي غير عملي

كود PHP:
<?
if($test==1){
echo 
"one";}
else{ echo 
"two"; }
?>
و لكن نسقة بهذا الشكل

كود PHP:
<?
if($test==1){
echo 
"one";
}
else{
echo 
"two";
?>
لتعرف بداية و نهاية كل كود كما يستحسن استخدام أحد المحررات التي تسمح بتلوين الشفرة لتعرف في حال نسيت إقفال أقواس النص .
Header Errors


مثال



Warning: Cannot add header information - headers already sent by (output started at /home/www/html/test/showclass.php:9) in /home/www/html/test/showclass.php on line 10


سبب الخلل

دالات HTTP header هي دالة موجود في الphp تستخدم لعدة أسباب منها و هي دالات يجب أن توضع قبل طباعة أي شئ حتى السطر الفارغ أي يجب أن لا يظهر قبلها سطر فارغ و أن لايطبع قبلها اي شئ في المتصفح سواء باستخدام الhtml العادي أو بأستخدام دالة echo أو print أحد أكثر الدالات من هذا النوع استخداما هي



Header("location: http://ww.qatardr.net.com");

و

setcookie()


الحل

تأكد من عدم وجود أي مخرجات قبل هذه الدوال حتى الأسطر الفارغة
mySQL Result Source Errors

مثال


Warning: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/virtual/site5/fst/php/error/index.php on line 3



سبب الخلل حسنا اكتشاف هذا الخلل يجتاج للقليل من البحث و في الغالب المشكلة في المتغير result و الذي يستخدم في حلقة التكرار loop مثلا لو كان الكود بالشكل التالي

كود PHP:
<?
$result 
mysql_query("select * from shoutbox ORER by id desc limit 5");
//problem on the above line, ORDER is misspelled
while($r=mysql_fetch_array($result))
{
$time=$r["time"]; //getting each variable from the table
$id=$r["id"];
$message=$r["message"];
$name=$r["name"];
}
?>

ستلاحظ أن الخلل في الدالة mysql_fetch_array لكن في الحقيقة الخلل في المتغير result فهو السبب كونه لم يحتوى على نتائج من الإستعلام و الخلل به حيث لو لاحظت الاستعلام كلمة order غير صحيحة
الحل

أولا اذهب إلى السطر الذي يقوم الphpان الخلل به

تأكد من ان السطر صحيح و في اغلب الأوقات سيكون صحيح و الأن انتقل إلى الأعلى قليلا و انظر للمتغير result من أين يأخذ نتائجة في حالتنا كانت المشكلةفي الإستعلام لكن البphpلم يعلم بل اظهر أن الخلل في السطر المحتوي علىmysql_fetch_array
ملحوظة أخيرة

احيانا قد تظهر رسالة خلل و يبدو كل شئ صحيح لكن سيظهر لك البرنامج نوع من التحذير يمكنك وقف هذا التحذير باستخدام الرمز @ قبل الدالة مثلا @mysql_fetch_array

مترجم عن http://www.spoono.com/php/tutorials/tutorial.php?id=31 بتصرف