تصميم موقع الويب الخاص بك مع PHP و MySQL


الدرس: الهياكل الشرطية


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

الهيكل الأساسي: else ... if


يمكن كتابة شرط في PHP في أشكال مختلفة. نحن نتحدث عن الهياكل الشرطية .
الشيء الذي سأعلمك استخدامه الآن هو الشيء الرئيسي الذي يجب معرفته. سوف نرى الأشياء الأخرى فيما بعد.
لدراسة الهيكل if… else، سوف نتبع الخطة التالية.
  1. الرموز التي يجب معرفتها  : يجب أن تتذكر أولاً بعض الرموز التي تسمح بإجراء المقارنات. كن منتبهاً لأنها ستكون مفيدة للشروط.
  2. Else ... if هنا سترى كيف يعمل الشرط if… else . وغني عن القول ، من الضروري أن نفهم هذا جيدًا.
  3. شروط متعددة  : سوف نعقد شروطنا قليلا. سترى أنه يمكننا استخدام العديد من الشروط في وقت واحد.
  4. حالة Booleans   : سنرى بعد ذلك أن هناك طريقة معينة لاستخدام الشروط عند العمل على Booleans . إذا كنت لا تعرف ما هي القيم المنطقية ، فراجع الفصل الخاص بالمتغيرات.
  5. المكافأة  : لأنه يوجد دائمًا مكافأة لمكافأة أولئك الذين تابعوها!
الرموز التي يجب معرفتها
قبل أن أبدأ مباشرة ، علي أن أريك الرموز التي سنستخدمها. سأعطيك جدولا صغيرا به هذه الرموز ومعناها. حاول أن تتذكرها ، ستكون مفيدة!
رمز معنى
== يساوي
> أكبر من
< أقل من
>= أكبر من أو يساوي
<= أقل من أو يساوي
!= يختلف عن
يوجد رمزان "متساويان" ( ==) على السطر الأول ، ويجب عدم الخلط بينه وبين الرمز البسيط = الذي قمت بتدريسه في الفصل الخاص بالمتغيرات. هنا ، يتم استخدام المساواة المزدوجة لاختبار المساواة ، ليقول "إذا كانت مساوية لـ ...". في ظل هذه الظروف ، سوف نستخدم دائمًا المساواة المزدوجة ( ==) . توجد الرموز "العلوية" ( >) و "السفلية" ( <) في أسفل يسار لوحة المفاتيح.
ELSE ... IF
إليك ما تكتبه ، لكي تستخدم شرطًا ما.
  • لإدخال شرط ، نستخدم الكلمة  ifالتي تعني "إذا" باللغة الإنجليزية.
  • ثم نضيف بين قوسين الشرط نفسه (سترى أنه يمكنك ابتكار شروط لانهائية).
  • أخيرًا ، نفتح الأقواس التي سنضع التعليمات لتنفيذها في حالة استيفاء الشرط.
    • نظرًا لأن المثال أفضل دائمًا من الكلام الطويل:
      
      <?php
      $age = 8;
      
      if ($age <= 12)
      {
          echo "مرحبا أيها الصبي !";
      }
      ?>
      
      هنا ، نسأل PHP : إذا كان المتغير  $age أقل من أو يساوي 12 ، فقال » مرحبا أيها الصبي . «
      ستلاحظ أنه في جميع الحالات تقريبًا ، يكون الشرط على متغير.
      في مثالنا ، نحن نعمل على المتغير $age . المهم هنا هو أن هناك احتمالين: إما أن يتحقق الشرط (العمر أقل من أو يساوي 12) ثم يتم عرض شيء ما ؛ خلاف ذلك ، حسنا نحن القفز التعليمات في الأقواس ، نحن لا نفعل شيئا.
      حسنًا ، لا يزال بإمكاننا تحسين مثالنا. سننشر رسالة أخرى إذا كان سنك أكبر من 12 عامًا:
      
      <?php
      $age = 8;
       
      if ($age <= 12) {
          echo " مرحبا يا طفل! مرحبا بك في موقعي!
      "; $autorisation = "yes"; } else { echo " هذا موقع للأطفال ، أنت كبير جدًا على الدخول. إلى اللقاء !
      "; $autorisation = "No"; } echo " هل لديك إذن للدخول؟ الجواب هو: $autorisation "; ?>
      جيد: كيف يعمل هذا الكود؟ أولاً ، لقد وضعت عدة تعليمات في الأقواس.
      ثم لاحظت أنني أضفت كلمة else ( " خلاف ذلك" ) . من الواضح أننا نسأل: إذا كان العمر أقل من أو يساوي 12 ، فقم بذلك ، وإلا افعل ذلك .
      جرب هذا الكود في المنزل ، واستمتع بتعديل قيمة $age ( في السطر الأول) . سترى أن الرسالة التي تظهر تتغير حسب العمر الذي تحدده!
      بالطبع ، يمكنك وضع التعليمات التي تريدها في الأقواس. هنا على سبيل المثال ، أعطيت قيمة مختلفة للمتغير $autorisation بعد عرض رسالة ، وهي قيمة يمكن أن تخدمنا لاحقًا:
      
      <?php
      $autorisation = "Yes";
      
      if ($autorisation == "Yes") // إذا كان لدينا إذن للدخول
      {
          // تعليمات للتنفيذ عندما يُسمح لأحد بالدخول
      }
      elseif ($autorisation == "No") // إن لم يكن لدينا إذن للدخول
      {
          // تعليمات للتنفيذ عندما لا يُسمح لأحد بالدخول
      }
      else // ELSE (المتغير لا يحتوي على نعم أو لا ، لا يمكننا التصرف)
      {
          echo " أه أنا لا أعرف عمرك ، يمكنك تذكيرني من فضلك?";
      }
      ?>
      
      أوه ، الأمر يزداد تعقيدًا ، أليس كذلك؟
      الشيء الجديد هنا هي الكلمة  elseif التي تعني "إن لم يكن". من أجل ، يفي PHP بالشروط التالية:
      1. إذا كانت $autorisation مساوية لـ "yes" ، فأنت تنفذ هذه التعليمات ...
      2. إذا لم تكن  $autorisation مساوية لـ "No" ، فأنت تقوم بتنفيذ هذه التعليمات الأخرى ...
      3. وإلا ، فأنت تطلب العمر من جديد لمعرفة ما إذا كان لديك إذن بالدخول أم لا.
      بالمناسبة ، في البداية ، لا يحتوي المتغير على أي شيء. قيمته فارغة ، ويقال أن قيمته  NULL، وهذا هو ، لا شيء على الإطلاق. للتحقق مما إذا كان المتغير فارغًا ، يمكنك كتابة: if ($variable == NULL)...
      القيمة المنطقية boolean
      إذا نظرت عن كثب إلى أحدث كود ( مع  $autorisation ) ، ألا تعتقد أنه سيكون من الأفضل استخدام boolean ؟
      تم ذكر boolean في الفصل الخاص بالمتغيرات. هل تتذكرون ؟
      هذه هي المتغيرات التي تكون true (صواب) أو false (خطأ) . حسنا ، منطقيون مفيدة بشكل خاص مع الظروف! إليك كيفية اختبار متغير منطقي:
      
      <?php
      $autorisation = true;
      
      if ($autorisation == true)
      {
          echo "مرحبا بك . :o)";
      }
      elseif ($autorisation == false)
      {
          echo " غير مسموح لك بالدخول!";
      }
      ?>
      
      حتى الآن ، لا شيء غير عادي. رأيتم أنني لم أضع في الاقتباس عن  true و false، كما قلت في الفصل المتعلق المتغيرات.
      ولكن واحدة من مزايا boolean هو أنها تتكيف بشكل خاص مع الظروف.
      لماذا؟ لأنك لا تحتاج إلى إضافته == true . عند العمل على متغير Boolean ، يفهم PHP جيدًا ما تعنيه:
      
      <?php
      $autorisation = true;
      
      if ($autorisation)
      {
          echo "مرحبا بك . :o)";
      }
      else
      {
          echo " غير مسموح لك بالدخول!";
      }
      ?>
      
      يفهم PHP أنه يجب عليه التحقق مما إذا كان المتغير $autorisation يحتوي true . المزايا:
      • من الأسرع أن أكتب لك.
      • إنه مفهوم أفضل بكثير.
      في الواقع ، إذا كنت "تقرأ" السطر الأول ، فهو يعطي: "إذا كان لدينا إذن بالدخول ..." .
      لذلك من المختصرات معرفة عند العمل على المنطقية.
      نعم ، لكن الطريقة "القصيرة" الخاصة بك لا تعمل إذا كنت ترغب في التحقق من الخطأ المنطقي. كيف يمكنك أن تفعل مع طريقة قصيرة ، هاه؟
      يوجد رمز للتحقق مما إذا كان المتغير false : علامة التعجب ( !) . نكتب:
      
      <?php
      $autorisation = true;
      
      if (! $autorisation)
      {
      
      }
      ?>
      
      هذه طريقة أخرى لفعل الأشياء. إذا كنت تفضل وضعه  if ($autorisation == false) بنفس الطريقة ، لكن الطريقة "القصيرة" تكون أكثر قابلية للقراءة.
      شروط متعددة
      ما سنحاول القيام به هو وضع العديد من الشروط في وقت واحد. لذلك ، سنحتاج إلى كلمات رئيسية جديدة. فيما يلي أهم ما يجب معرفته:
      كلمة مفتاحية معنى رمز مكافئ
      AND و &&
      OR أو ||
      يتكون الرمز المكافئ  OR من شريطين عموديين. لكتابة شريط عمودي ، اضغط على مفتاحي ( "Alt Gr" و "6" في نفس الوقت (على لوحة مفاتيح AZERTY فرنسية) أو "Alt Gr" و "&" ( على لوحة مفاتيح QWERTY .
      يحتوي العمود الأول على الكلمة الأساسية باللغة الإنجليزية ، والثالث مكافئ في الرمز. يعمل كلاهما جيدًا ، لكنني أوصي باستخدام تفضيلات الكلمات الرئيسية ، من الأسهل قراءتها (آمل أن تعرف الإنجليزية قليلاً ، على أي حال). استخدم هذه الكلمات الأساسية لوضع عدة شروط بين الأقواس. إليكم المثال الأول:
      
      <?php
      $age = 8;
      $langue = "anglais";
      
      
      if ($age <= 12 AND $langue == "français")
      {
          echo "Bienvenue sur mon site !";
      }
      elseif ($age <= 12 AND $langue == "anglais")
      {
          echo "Welcome to my website!";
      }
      ?>
      
      إنها بسيطة للغاية في الواقع وهي مفهومة جيدًا: إذا كان العمر أقل من أو يساوي 12 عامًا وكان الزائر يتحدث الفرنسية ، فإنه يعرض رسالة ترحيب باللغة الفرنسية. خلاف ذلك ، إذا كان الزائر يتحدث الإنجليزية ، يتم عرض رسالة باللغة الإنجليزية.
      حسنًا ، مثال أخير على OR ذلك الذي شاهدته مرة واحدة على الأقل ، وتوقف عند هذا الحد.
      
      <?php
      $pays = "France";
      
      if ($pays == "France" OR $pays == "Belgique")
      {
          echo "Bienvenue sur notre site !";
      }
      else
      {
          echo " عذرًا ، خدمتنا ليست متاحة بعد في بلدك!";
      }
      ?>
      
      خدعة المكافأة
      مع الهياكل الشرطية ، هناك خدعة يجب معرفتها.
      يجب الانتباه إلى أن الكودين أدناه يعطيان نفس النتيجة بالضبط:
      
      <?php
      $variable = 23;
      
      if ($variable == 23)
      {
          echo '<strong> Bravo! </strong> لقد وجدت رقم السحري!';
      }
      ?>
      <?php
      $variable = 23;
      
      if ($variable == 23)
      {
      ?>
       Bravo!  لقد وجدت رقم السحري 
      <?php
      }
      ?>
      
      كما ترون ، في العمود الثاني لم نستخدم أيًا منها echo . بالفعل ، عليك فقط فتح الدعامة ( {) ، ثم إغلاق علامة PHP ( ?>) ، ويمكنك وضع كل النص لعرضه في HTML !
      عملي تقريبًا عند وجود كميات كبيرة من النص للعرض ، وأيضًا لتجنب الاضطرار إلى أخذ الرأس مع خطوط مائلة عكسية أمام علامات اقتباس (  "أو ' ) .
      سيكون عليك التفكير في إغلاق الاقواس ({) بعد ذلك (داخل علامة PHP ، بالطبع) .
      وبعد ذلك ، يا إلهي ، لا يوجد شيء خاص يجب معرفته. سوف تواجه شروطًا في جميع الأمثلة تقريبًا التي سأقدمها إليك لاحقًا.
      يجب أن لا تواجه مشاكل في استخدام الظروف ، فلا يوجد شيء صعب للغاية. فقط استخدم المخطط الذي أعطيته لك للهيكل  if… else وقم بتطبيقه على حالتك. سنحصل قريباً على فرصة للتدرب قليلاً ، وستلاحظ أن الظروف ضرورية غالبًا.

نوع آخر من الهياكل الشرطية: التبديل switch


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

<?php
$note = 16;

if ($note == 0)
{
    echo " انت حقا ضعيف جدا!!!";
}

elseif ($note == 5)
{
    echo " انت سيء جدا ";
}

elseif ($note == 7)
{
    echo " انت سيء ";
}

elseif ($note == 10)
{
    echo "لديك بالكاد المعدل العام…";
}

elseif ($note == 12)
{
    echo " أنت جيد بما فيه الكفاية ";
}

elseif ($note == 16)
{
    echo " أنت بخير!";
}

elseif ($note == 20)
{
    echo " عمل رائع ، إنه مثالي!";
}

else
{
    echo " عذرا ، ليس لدي رسالة لعرضها لهذا العدد ";
}
?>
كما ترى ، إنها ثقيلة وطويلة ومتكررة. في هذه الحالة ، يمكن استخدام بنية أخرى أكثر مرونة: أي   switch .
هنا هو نفس المثال مع  switch (النتيجة هي نفسها ، ولكن الكود أكثر ملاءمة) :

<?php
$note = 10;

switch ($note) { 
    case 0:
        echo " انت حقا ضعيف جدا!!!";
    break;
    
    case 5:
        echo " انت سيء جدا ";
    break;
    
    case 7: 
        echo " انت سيء ";
    break;
    
    case 10: 
        echo "لديك بالكاد المعدل العام…";
    break;
    
    case 12:
        echo " أنت جيد بما فيه الكفاية ";
    break;
    
    case 16:
        echo " أنت بخير!";
    break;
    
    case 20:
        echo " عمل رائع ، إنه مثالي!";
    break;
    
    default:
        echo " عذرا ، ليس لدي رسالة لعرضها لهذا العدد ";
}
?>
لذلك اختبر هذا الكود!
حاول تغيير الملاحظة (في البيان الأول) لترى كيف يتفاعل PHP ! وإذا كنت تريد إجراء بعض التغييرات على هذا الرمز (سترى أنه ليس مثاليًا) ، فلا تتردد ، فسوف نقدم لك بعض التدريب!
بادئ ذي بدء ، هناك عدد أقل بكثير من الأقواس (لا يمثلون سوى بداية ونهاية switch ) .
Case يعني "الحالة" . في switch ، نشير في البداية إلى أي متغير يعمل ( هنا $note ) . نقول لـ PHP : سوف أقوم بتحليل قيمة$note . بعد ذلك، يستخدم case لتحليل كل حالة (  case 0 ، case 10، الخ) . وهذا يعني: في حالة القيمة 0 ... في حال كانت القيمة 10 ...
ميزة: نحن لسنا بحاجة لوضع مضاعفة متساوية! الافتراضي: لا يعمل مع الرموز الأخرى ( < > <= >= !=). بوضوح ، switch الاختبار الوحيد الذي المساواة.
الكلمة الأساسية default في النهاية تشبه قليلاً else . هذه هي الرسالة التلقائية بغض النظر عن قيمة المتغير.
بيد أن هناك شيء مهم عليك أن تعرفه: لنفترض في مثالنا ان note هي مساوية لـ 10 . PHP سوف يلي: case 0  ؟ لا . أقفز . case 5 ؟  لا أكثر . أقفز . case 7 ؟ لا أكثر . أقفز . case 10 ؟  نعم ، أقوم بتنفيذ التعليمات. ولكن على عكس elseif، PHP لا يتوقف عند هذا الحد ويستمر في قراءة تعليمات المربعات التي تتبع! case 12 ،  case 16إلخ
لمنع هذا ، استخدم العبارة  break; .  يطلب PHP التعليمات  Break للخروج من switch . بمجرد سقوط PHP  على break، يخرج من المشابك وبالتالي لا يقرأ ما case يلي. في الممارسة العملية ، نستخدم في كثير من الأحيان break خلاف ذلك ، يقرأ PHP التعليمات التي تتبع والتي ليست مناسبة.
حاول إزالة break في الكود السابق ، فسوف تفهم لماذا لا غنى عنها!
متى يجب أن نختار if، ومتى يجب أن نختار switch ؟
انها في الغالب مشكلة العرض والوضوح. لحالة بسيطة وقصيرة ، نستخدم if، وعندما يكون لدينا سلسلة من الشروط لتحليلها ، نفضل استخدامها switchلجعل الكود أكثر وضوحًا.

الثلاثيات: ظروف مكثفة


هناك شكل آخر من أشكال الحالة ، أقل تواترا ، لكنني أقدم لك على أي حال لأنه يمكنك يوم واحد أو آخر تقع عليه. وتسمى هذه الثلاثيات .
الثلاثية هي حالة مكثفة تقوم بأمرين على سطر واحد:
  • نختبر قيمة المتغير في حالة ما ؛
  • نقوم بتعيين قيمة لمتغير بناءً على ما إذا كانت الحالة صحيحة أم لا.
لنأخذ هذا المثال بناءً على من if… else يضع منطقية $majeur على صواب أو خطأ وفقًا لسن الزائر:

<?php
$age = 24;

if ($age >= 18)
{
    $majeur = true;
}
else
{
    $majeur = false;
}
?>
يمكننا أن نفعل الشيء نفسه في سطر واحد بفضل بنية ثلاثية:

<?php
$age = 24;

$majeur = ($age >= 18) ? true : false;
?>
هنا ، تم كل اختبارنا السابق على سطر واحد!
الحالة المختبرة هي $age >= 18 . إذا كان هذا صحيحًا ، فسيتم تعيين القيمة المعطاة بعد علامة الاستفهام ( هنا true ) للمتغير $majeur . خلاف ذلك ، سيتم تعيين القيمة التالية للنقطتين ل $majeur .
انه ملتوي بعض الشيء لكنه يعمل.
إذا لم تستخدم هذا النوع من الشروط في صفحات الويب الخاصة بك ، فلن ألومك. يجب الاعتراف بأنه من الصعب قليلاً قراءة الثلاثيات لأنها مكثفة للغاية. لكن تعرف على كيفية التعرف عليه وفهمها إذا قابلت شخصًا ما من خلال قراءة كود مصدر شخص آخر.

في الخلاصة


  • تسمح الهياكل الشرطية في PHP باتخاذ القرارات بناءً على قيمة المتغيرات.
  • الشكل الأكثر شيوعًا للشرط هو if... elseif... else مما يعني "إذا" ... "خلاف ذلك إذا" ... "خلاف ذلك".
  • يمكن دمج الشروط مع الكلمات الأساسية AND ( "و" ) و  OR ( "أو") .
  • إذا كان هناك شرط ما elseif ، فقد يكون من الأنسب استخدام switch شكل آخر من أشكال الحالة.
  • الثلاثيات هي ظروف مكثفة تختبر متغيرًا ، وتعتمد على نتائج هذا الاختبار قيمة لمتغير آخر. ومع ذلك ، فهي نادرا ما تستخدم.