بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين ، سيتم التطرق في هذا الدرس بمشيئة الله الى ما يلي :
- عبـاراة الـ if .
- عبـاراة الـ else .
- عبـاراة الـ elseif .
- عبـاراة الـ switch .
- حلقة التكرار while .
- حلقة التكرار for .
- حلقة التكرار do while .
- عبـاراة الـ if :
استخدام الـ if في كتابة السكربات شي أساسي ، وكما في لغات البرمجة الأخرى فإن الـ PHP تتبع نفس الاسلوب في كتابة الـ if ، فيمكن تحديد شرط معين مقترن بالـ if وبالتالي اذا كان الشرط صحيحاً ( true ) فسيتم تنفيذ الاسطر المحددة ، وبتفصيل أكثر يجب وضع الشرط بين قوسين ( ) ، ووضع الاسطر المطلوب تنفيذها بين العلامـات { } ، مع ملاحظة أنه يمكن التخلي عن العلامات { } في حال وجود سطر واحد فقط .
فلنفترض وجود نموذج بريدي ( Mail Fourm ) ، يحتوي على الإسم والبريد والرسالة ، ونرغب في معرفة ما اذا كان المرسل قد ملأ جميع الحقول وبالتالي إرسـال الرسـالة ، او انه لم بفعل ذلك وبالتالي عرض رسـالة ( فضلاً قم بتعبئة البيـانات كاملة ) ، لعمل ذلك نحتاج معرفة أسمـاء المتغيرات في النموذج ، ولذلك فلنفترض أن المتغيرات كالتالي :
( الإسم name$ ) ، ( البريد email$ ) ، ( الرسـالة later$ ) ، ولعمل الشرط الأول ( اذا كان الإسم لم يُدخل فلن يتم ارسـال الرسـالة ) :
كود PHP:
PHP
<?
if ( $name == "" )
echo "فضلاً قم بتعبئة البيـانات كاملة ";
?>
كود PHP:
PHP
<?
if ( $name == "" ) {
echo "فضلاً قم بتعبئة البيـانات كاملة ";
echo "لم تقم بإدخـال الإسم ";
}
?>
- عبـاراة الـ else :
هذه العبـارة تتيح امكانية وجود اجراء ثاني لعدم تحقق الشرط ، ففي مثالنا السابق كان الاجراء طباعة الجملة اذا تحقق الشرط ، ولكن في حالة عدم تحقق الشرط فلن يكون هناك اجراء لتنفيذه ، بل ان الاجراء سيتم تنفيذه اذا تحقق الشرط ومن ثم سيتم اكمال بقية الاسطر ، وفي حالة مثل هذه الحالة يتم استخدام الـ else لوضع اجراء آخر في حالة عدم تحقق الشرط ، وبالمثال يتضح المقال :
كود PHP:
PHP
<?
if ( $name == "" ) {
echo "فضلاً قم بتعبئة البيـانات كاملة";
}
else
{
echo "تم ارسـال الرسـالة ، شكرا لك";
}
?>
في هذا المثال سيتم طباعة الجملة (فضلاً قم بتعبئة البيـانات كاملة ) اذا تحقق الشرط أن المتغير name$ لا يحتوي على أي قيمة ، وسيتم طباعة الجملة (تم ارسـال الرسـالة ، شكرا لك ) في حالة عدم تحقق الشرط ، أي في حالة وجود قيمة في المتغير name$ ، مع ملاحظة أن هذا المثال يحتوي على شرطين وليس شرط واحد ، فالظاهر هو شرط واحد ( "" == name$ ) ولكن العبـارة else تعتبر شرطاً بحد ذاتها ولو لم يكن هذا الشرط مكتوباً ، وكما هو واضح فمعنى هذا الشرط هو ( إذا كان غير ذلك ) فقم بطباعة الجملة .
يمكن أن يكون الشرح غير واضح تماماً ، ولكن أهمية فهم الطريقة ستتضح في الأسطر القليلة القادمة .
elseif
- عبـاراة الـ elseif :
في العبارة السابقة ذكرنا أنه يوجد شرطين واجرائين ، أحد هذين الشرطين غير مكتوب بل هو مفهوم من ادراج العبـارة else ، وفي حالات كثيرة لا يكفينا مجرد شرطين واجرائين لاتمام بعض السكربات المعقدة ، فلذلك يمكن نستخدم العبـارة elseif مع الـ if لعمل مثل هذه السكربات ، فلو افترضنا أن لدينا عداد لزوار الموقع ونريد اظاهر العداد بحيث يتم قراءته بشكل جيد ، اي بمعني اخر اذا كان عدد الزوار ( 1 ) فسيتم طباعة الجملة ( عدد الزوار : زائر واحد فقط ) واذا كان ( 2 ) فسيتم طباعة الجملة ( عدد الزوار : زائرين ) ... وقس على ذلك ، فعندما يكون عدد الزوار ( 1 ) فسيتم عرض الجملة الأولى فقط وعندما يكون عدد الزوار ( 2 ) فسيتم عرض الجملة الثانية فقط ، وهكذا لبقية الشروط .
بافتراض أن المتغير ( counter$ ) هو عداد الزوار ، فالمثال التالي يبين ما تم شرحه سابقاً :
كود PHP:
PHP
<?
if ( $counter == 1 ) {
echo " عدد الزوار : زائر واحد فقط ";
}
elseif ( $counter == 2 ) {
echo " عدد الزوار : زائرين ";
}
elseif ( $counter >= 3 && $counter <= 10 ) {
echo "عدد الزوار : $counter زوار";
}
else {
echo "عدد الزوار : $counter زائر";
}
?>
الشرط : العداد يساوي 1
الإجراء : طبـاعة ( عدد الزوار : زائر واحد فقط )
الشرط : العداد يساوي 2
الإجراء : طبـاعة ( عدد الزوار : زائرين )
الشرط : العداد أكبر أو يساوي 3 و اصغر أو يسـاوي 10
الإجراء : طبـاعة ( عدد الزوار : ( العداد ) زوار )
الشرط : العداد لا يحقق أي من الشروط
الإجراء : طبـاعة ( عدد الزوار : ( العداد ) زائر )
ملاحظة بسيطة فقط ، وهي على العلامة && التي تعني ( و ) ، وهي من علامات الجمع بين جملتين ، فيجب أن تكون الجملتين صحيحتين لتحقق الشرط .
switch
- عبـاراة الـ switch :
هذه العبـارة قريبة جداً من العبـارة if ، ولكن يمكن استخدام اكثر من شرطرين باسلوب أخر ، غير انه يجب اسناد قيمة معينة للـ case وهي هنا بمثابة الشرط ، لكي يتم تنفيذ الاجراء المحدد لذلك الشرط أو الـ case ، وفي النهاية الأمر يعود الى المصمم وايهما يفضل ، وكما في المثال السابق يمكن كتابة مثال بالـ switch بنفس الطريقة ، والمشكلة الوحيدة هي كما قلنا أنه يجب اسناد قيمة معينة لكل case وبالتالي فإن الشرط الثالث من المثال السابق يجب تفريقه لكل قيمة من ( 3 الى 10 ) ، وهذه العميلة مجهدة لانه يجب كتابة سطر لكل قيمة كما يلي :
القيمة : 3
الـ case : 3
الاجراء : طبـاعة ( عدد الزوار : ( العداد ) زوار )
القيمة : 4
الـ case : 4
الاجراء : طبـاعة ( عدد الزوار : ( العداد ) زوار )
القيمة : 5
الـ case : 5
الاجراء : طبـاعة ( عدد الزوار : ( العداد ) زوار )
......... الخ ...
وفي المثال التالي ساتغاضى عن الشرط الثالث بكامله ، واذكر بقية الشروط والحالات لمجرد فهم طريقة عمل هذه العبـارة :
كود PHP:
PHP
<?
switch ($counter)
{
case "1";
echo " عدد الزوار : زائر واحد فقط ";
break;
case "2";
echo " عدد الزوار : زائرين ";
break;
default;
echo "عدد الزوار : $counter زائر";
break;
}
?>
استخدمنا في هذه المثال بعض الجمل وتعني ما يلي :
Switch وتكتب في البداية مع ادراج اسم المتغير الذي سيتم عمل الشروط عليه . Case أي في حالة ( .... ) ويكتب بجانبها الشرط . Break وتعني ايقاف العملية والخروج من الشرط بعد تنفيذ أحد الإجراءات . Default وهي تقابل العبـارة else أي بمعنى أنها لأي حالة لم يتم ذكرها في الشروط .
while
- حلقة التكرار while :
وهي ابسط حلقات التكرار على الأطلاق ، بحيث تاخذ شرط واحد فقط وتبني على تنفيذ ما بين علامات الشروط { } ، والفرق الوحيد بينها وبين الـ if هو انها ستقوم بتنفيذ الاجراءات طالما كان الشرط صحيحاً ، وهذا يعني احتمال تنفيذ الإجراء أكثر من مرة ، وهذ الدالة مفيدة في ادراج الحقول من الجدوال وغيرها من الاستخدامات ، بحيث لو افترضنا وجود جدول معين في قاعد بيانات ونريد ادراجه في صفحة PHP ، فسيكون من اهم خيارات الاستخدام هذه الدالة ، وباذن الله سيتم التطرق لقواعد البيانات في الدروس القادمة ، وفي الوقت الحالي ساذكر مثال بسيط على هذه الدالة لفهم طريقة استخدامها :
كود PHP:
PHP
<?
$total = 10;
while ( $total <= 50 )
{
echo "العدد أقل من 50";
$total +=10;
}
?>
بتفكير بسيط يمكن معرفة أن الجملة ( العدد أقل من 50 ) سيتم طباعتها 5 مرات ، لان حلقة التكرار while قامت بتنفيذ الاجراء طالما أن الشرط صحيح ، وفي المرة الأولى كان المتغير ( total$ ) يساوي ( 10 ) والشرط صحيح لان الـ ( total$ ) فعلاً اصغر أو يساوي الـ ( 50 ) ، فتم تنفيذ ما بين علامات الشرط ، ومن ذلك زيادة متغير المجموع ( total$ ) بقيمة ( 10 ) ومن ثم الرجوع والمقارنة من جديد ، وفي هذه الحالة صار المتغير ( total$ ) يساوي ( 20 ) وأيضـاً الشرط صحيح وبالتالي الدخول مرة أخرى وتنفيذ الأجراء .... وهكذا حتى يتم الوصول الى أن قيمة الـ ( total$ ) يساوي ( 50 ) وبالتالي الشرط صحيح ، ومن ثم تصبح قيمة الـ ( total$ ) تساوي ( 60 ) وفي هذه الحالة يتم ايقاف تنفيذ الاجراءات لأن الشرط غير صحيح .
for - do while
- حلقة التكرار for :
يوجد طريقة أسهل للتعامل مع المثال السابق ، فاستخدام حلقة التكرار while كانت القيمة الابتدائية للمتغير ( total$ ) في سطر ، والشرط في سطر والزيـادة على المتغير في سطر أخر ، وبالتالي زيارة في عدد الأسطر عن ما يمكن استخدامه مع حلقة التكرار for ، فالمثـال التالي يبين طريقة أخرى لاستخدام مثـال الـ while بطريقة أسهل :
كود PHP:
PHP
<?
for ( $total = 10; $total <=50; $total +=10 )
{
echo "العدد أقل من 50";
}
?>
كود PHP:
PHP
for ( القيمة الأفتراضية; الشـرط; مقدار الزيـادة; )
{
الإجراء المطلوب تنفيذه
}
- حلقة التكرار do while :
وهي نسخة أخرى من الـ while والفرق الوحيد بينهما أن التأكد من الشرط وصحته من عدمها يتم بعد تنفيذ الاجراء وليس قبله كما في الـ while وكمثال عليها :
كود PHP:
PHP
<?
$total = 10;
do
{
echo "العدد أقل من 50";
$total +=10;
}
while ( $total <= 50 );
?>