عرض مشاركة واحدة
  #10 (permalink)  
قديم 06-09-2005, 03:59 PM
Ahmed Tohamy Ahmed Tohamy غير متواجد حالياً
 
تاريخ التسجيل: Jun 2005
المشاركات: 54
Post ثامنا : الجمل الشرطية ...

أريد منكم الآن أن تذهبوا لنموذج الطلب وتطلبوا أي شيء غير معقول ، مثل : ( عشر طعش "كبسة" ، ومليار "سلطة" ، وحسنين "عصير" ) .. أو أن لا تطلبوا شيء .... وانظروا ماذا ستكون النتيجة ؟

قد لاحظتم بالتأكيد أن نموذج الطلب يمكن أن يدخل فيه أي شيء حتى لو لم يكن معقولا ... فكيف لنا أن نلزم الزبون أو الزائر أن يطلب شيئا معقولا ؟!؟

يمكن ذلك بواسطة : الجمل الشرطية !

وأشهر الجمل الشرطية على الإطلاق ، ليس فقط في php بل في كل لغات البرمجة هي الجملة ( if ) !

لنجرب مثالا سريعا عليها في تطبيقنا العملي ، على فرض أن الزبون ضغط زر إرسال الطلبية عن غير قصد من غير أن يملأ البيانات ، فنريد أن تظهر له رسالة : ( لم تقم بطلب شيء ! ).

سنقوم باستخدام الكثير من عوامل المقارنة ، وقد قمت بإدراج جدول بهذه العوامل مسبقا يمكنك الرجوع إليه متى شئت .

أضف الكود التالي على ملف order.php ...
============================================

============================================
انتبه جيدا للمكان الذي تضيف إليه الكود ، لأنه لن يعمل إذا لم تضعه في مكانه الصحيح !

دعوني أفسر لكم معنى الجملة هذه : أولا هي جملة شرطية بدأت بإذا (if) المتغير ($totalprice) يساوي (==) (استخدمنا عامل المقارنة يساوي وليس التعيين (=) وقد وضحت الفرق بينهما مسبقا ) صفر فقم بما يلي :
اطبع (echo) الرسالة (لم تقم بطلب شيء!).

فالمتغير $totalprice هو سعر الطلبية ، فلو كان السعر يساوي صفر ، فهذا معناه أن الزبون لم يطلب أي شيء ، إما أنه نسي أن يملأ الفراغات ، أو أنه ملأها بحروف وليس أرقام ، أو ملأها بالرقم صفر .

إذن كما رأينا ، فالموضوع يعتمد على قدراتك العقلية في تحليل القضية حتى تعرف ما هو بالضبط الكود الذي عليك استخدامه .

دعوني أختبركم ، ومن يحل هذا السؤال ، فأنا أضمن له أنه أتقن الجمل الشرطية :

على فرض أنه بقي في المطعم 7 وجبات كبسة فقط ، قم بتعديل الكود السابق بحيث يعطي رسالة تقول : ( للأسف لم يبق إلا سبع وجبات في المطعم !) تظهر إذا طلب الزبون أكثر من سبع وجبات ؟

والآن ماذا لو أردنا تحقيق شرطين معا أو أحدهما ... ؟!؟

سنستعمل في هذه الحالة العوامل المنطقية للجمع بين شرطين ، مثلا لو أردنا أن نتحقق من أن الزبون لم يطلب شيئا وأيضا لم يطلب شيئا سالبا فكيف يصبح الكود ؟!؟ سيصبح كما يلي :

كود PHP:
if ( $totalprice == && $totalprice )
echo 
"لم تقم بطلب شيء! <br>"
لاحظوا كيف جمعنا بين الشرطين ( أن السعر الكلي يساوي صفر ) و ( السعر الكلي أصغر من صفر أي أنه سالب ) وذلك باستخدام العامل (و) && ، هذا العامل سيتحقق منهما معا ، فلو تحقق أحدهما ولم يتحقق الآخر فلن يعمل الشرط بأكمله ، فهنا يشترط ان يتحقق الشرطان معا .
ماذا لو أردنا أن نتحقق من أحد الشرطين أو كليهما ، سنتبدل العامل (و) && بالعامل (أو) || .
فالعامل (أو) || هنا سيقوم باختبار الشرطين ولكن لو تحقق أحدهما فقط ولم يتحقق الآخر فإن الشرط سيتم تنفيذه .

دعوني أوضح لكم بمثال ... سنكتب الشرط السابق بطريقة مختلفة ، حيث نريد من الفورم أن يتأكد من أن الزبون لم يقم بطلب شيء لكي يظهر له رسالة خطأ ، كما يلي :
كود PHP:
if ( $totalprice == || $total == )
echo 
"لم تقم بطلب شيء! <br>"
هنا الشرط هو أن السعر الكلي يساوي صفر ، أي أن الزبون لم يطلب شيء ، وأيضا الشرط الآخر أن كمية الطلبية تساوي صفر ، وهذا أيضا معناه أن الزبون لم يطلب شيء ، فطلبت من الفورم أن يتأكد من أحدهما ، فلو تحقق أحدهما ولم يتحقق الآخر سيتحقق الشرط .

في الحقيقة أعلم أن الأمر معقد بعض الشيء على المبتدئين منكم بالذات ، لذا نصيحتي لكم أن تكثروا من الأسئلة ، وتكثروا من التجارب ، وأنا موجود هنا بإذن الله لإجاوب لكم عن كل ما أستطيع الإجابة عليه ، وأظن أن أعضاء المنتدى الخبراء لن يقصروا معكم أيضا ...

والآن قبل أن ندخل إلى الجمل الأخرى أود أن أنبه إلى أنه لو أتى تنفيذ الشرط أكثر من سطر واحد ، علينا أن نستخدم الأقواس المعقوفة { } ، فمثالنا السابق عندما يتحقق الشرط سوف ينفذ سطر واحد فقط ألا وهو :
echo "لم تقم بطلب شيء! <br>";
ولكن عندما يكون التنفيذ أكثر من سطر واحد يكون الكود مكتوبا داخل الأقواس المعقوفة كما يلي :
============================================

============================================
أما الآن فسندخل في جملتين تابعتين للجمل if ألا وهما : الجملة( else ) والجملة ( elseif )
الجملة else بالمختصر المفيد معناها أن إذا لم يتحقق الشرط فقم بعمل التالي ، كل ما فعلناه سابقا كان يعتمد على تحقق الشرط ، ولكنكم تسائلتم ( طبعا ) ماذا لو لم يتحقق ؟!؟ هنا يأتي دور else .
فمثلا .. شرطنا السابق يقول أنه إذا لم يطلب الزبون شيئا فسوف تظهر له رسالة تخبره بالخطأ ، ولكن ماذا لو طلب الزبون شيئا ؟!؟ سؤال وجيه : هه ؟ ، فهنا سنستخدم else لننفذ أمرا آخر في حالة عدم تحقق الشرط .
لنطبق فورا حتى تترسخ في أذهانكم الفكرة ...
سنحول الشرط السابق إلى التالي :
إذا لم يطلب الزبون شيئا فأظهر له رسالة خطأ ، ولكن إذا طلب فأظهر له ما طلبه ، سيصبح الكود كما يلي :
============================================

============================================
طبعا الأقواس المعقوفة تحتاجها في else تماما كما تحتاجها في if لو كان كود التنفيذ أكثر من سطر واحد .
يمكننا الآن بواسطة هاتين الجملتين تنفيذ أوامر أكثر تعقيدا ، وذلك بإدخال جمل if وelse داخل بعضها البعض بكثرة ... انظروا المثال التالي :
شرطنا السابق سيعمل في حالة أن الزبون لم يطلب أي شيء ، ولكن ماذا لو طلب شيئا واحدا فقط ولم يطلب الباقي ؟!؟ سوف لن يعمل الشرط ، وسيظهر له الطلبية كلها ما طلبه وما لم يطلبه ... ولكن الآن سوف نكتب كودا يتحقق من كل طلب على حده ، سوف نفحص خانة الوجبة والعصير والسلطة كل على حده ..... كما يلي :
============================================

============================================
انظر كيف قمنا بإدخال 3 جمل if داخل جملة else ... بهذه الطريقة سنتحقق من كل خانة على حده ..
والآن نأتي لآخر جملة ألا وهي ... elseif ، وهذه مهمة جدا ولها فائدة كبيرة جدا ، فلحد الآن لم نكن نستطيع تحقيق أكثر من شرطين ! ( if إذا تحقق قم بعمل التالي وelse إذا لم يتحقق قم بما يلي ) ، ولكن ماذا لو أردنا أن ندخل 3 أو 4 شروط ؟!؟
هنا يأتي دور الجملة elseif ... حيث تمكننا من إدخال عدد لا نهائي من الشروط ، وسنطبق مثال رهيب سيعجبكم على مثالنا الحالي ... فعلى سبيل المثال لو أردنا عمل حسم خاص على الوجبات ( الكبسة ) كما يلي :
إذا طلب الزبون أقل من 8 وجبات فليس له خصم .
ولكن إذا طلب من 8 إلى 16 وجبة فله خصم 10% .
وإذا طلب من 16 إلى 24 وجبة فله خصم 15% .
وإذا طلب أكثر من 24 وجبة فله خصم 20 % .
هنا لدينا أربعة شروط ... سنستخدم if للشرط الأول ، وelseif للثلاث شروط الأخرى ... كما يلي :
============================================

============================================
لقد استخدمنا متغير جديد اسميته $discount لنخزن فيه قيمة الخصم والتي طبعناها بعد العملية برمتها .
كما استخدمنا عوامل المقارنة لنحدد عدد الطلبات ( أقل من 8 و بين الـ8 و الـ16 وهكذا ..) وأيضا استخدمنا العوامل المنطقية للتأكد من انحصار العدد بين رقمين معينين ( بين الـ16 والـ24 مثلا ) .... أرجو منكم التركيز جيدا هنا في هذا الدرس فهو حقيقة مربك بعض الشيء ولكنه رائع وجميل وستستمتع في تطبيقه عندما تبدأ العمل في php .

وأخيرا ... أود أن أنبه على قضية مهمة في الجملة elseif ... ماذا لو تحققنا من شرطين ممكن أن يتحققا معا ؟!؟
مثلا ... أقل من 8 ليس له خصم ثم بين 7 و 9 له خصم ! ( اعتبرها سهوا ) ...
فلو طلب الزبون 8 وجبات سنجد أنه تحقق شرطين اثنين من الشروط فأيهما سيطبق ؟!؟
الجواب ببساطة سوف يطبق الأول ويتجاهل أي شرط يتحقق بعده .... هذا كل ما في الأمر ....
وبارك الله فيكم ... وانتظرونا في الدرس القادم . حيث سنشرح الجملة الشرطية الأخيرة ... switch
والتي تعتبر البديل المثالي للجمل الثلاثة السابقة ( if و else و elseif )

ودمتم بخير .. والسلام عليكم ورحمة الله وبركاته
رد مع اقتباس