الدكتور نت

السلام عليكم

منذ العام 1999م و نحن نحاول الارتقاء بالمصمم و المطور العربي عبر إضافة دروس و مقالات و دروات لتساعده على إنشاء و تطوير موقعه . لو كنت أحد هؤلاء و أحببت مساعدتنايمكننا أن ندلك على عدد من الأمور التي يمكنك القيام بها لمساعدتنا اضغط هنا و أقرأ أكثر عن الموضوع ..

الأخطاء


بقلم: أم محمد /مواضيع أخرى لنفس المحرر أم محمد

حول الموضوع

وصف الموضوع

بعض الأخطاء التي من الممكن أن تواجهك في الphp و أسبابها و طرق علاجها.


الأوسمة :
| |
في التصنيفات :PHP

هناك ثلاث أنواع من الأخطاء في php

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

Parse Errors

مثال


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

سبب الخلل

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

الحل

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

< ? if($test==1){ echo "one";} else{ echo "two"; } ?>

و لكن نسقة بهذا الشكل

&lt;?if($test==1){
echo "one";
}else{
echo "two"; }
?&gt;

لتعرف بداية و نهاية كل كود كما يستحسن استخدام أحد المحررات التي تسمح بتلوين الشفرة لتعرف في حال نسيت إقفال أقواس النص .

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 مثلا لو كان الكود بالشكل التالي

&lt;?
$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"];}
?&gt;

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

الحل

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

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

ملحوظة أخيرة

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

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

تقييم الموضوع :
نقطة  واحدةنقطتين3 نقاط4 نقاط5 نقاط
(3 صوت)
Loading ... Loading ...
أعجبك الموضوع .. أضفه في
Del.icio.us     Digg     أرسله إلى  Stumbleupon!     Technorati     File on Furl     Blinklist    Ma.gnolia     Yahoo! My Web