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


الدرس: الحلقات


الصفحة السابقة
في سلسلة العناصر الأساسية لـ PHP التي يجب معرفتها تمامًا ، إليك الحلقات! كرر الإرشادات ، أن الكمبيوتر يعرف كيفية القيام به (بالإضافة إلى أنه لا يندثر أبدًا)!
تخيل أنك تقوم بإنشاء منتدى لموقعك. على الصفحة ، على سبيل المثال ، نعرض حوالي ثلاثين رسالة. سيكون طويلًا جدًا ومتكرّر أن يقول "يُظهر الرسالة 1 واسم مؤلفها" ، "يعرض الرسالة 2 واسم مؤلفها" ، "يعرض الرسالة 3 واسم مؤلفها" ، إلخ. لتجنب الاضطرار إلى القيام بذلك ، يمكننا استخدام نظام حلقة يتيح لنا أن نقول مرة واحدة: "يعرض 30 رسالة واسم مؤلفها في كل مرة."
بالطبع ، لن نكون قادرين على تعلم كيفية إنشاء منتدى لموقعك في هذا الفصل ، ما زال الوقت مبكرًا جدًا. ومع ذلك ، خذ الوقت الكافي لفهم كيفية عمل الحلقات لأننا سنحتاجها طوال هذه الدورة. انها ليست معقدة ، سترى!

حلقة بسيطة: while


ما هي الحلقة؟ إنها بنية تعمل على نفس مبدأ الشروط ( if… else) . علاوة على ذلك ، سترى أن هناك العديد من أوجه التشابه مع الفصل الخاص بالشروط.
بشكل ملموس ، تتيح الحلقة تكرار الإرشادات عدة مرات. من الواضح ، إنه توفير للوقت ، إنه عملي للغاية ، وغالبًا ما لا غنى عنه.
إذا كنت ترغب في تقديم المبدأ في الرسم البياني التالي.
web dynamique php
مبدأ تشغيل حلقة
هذا ما يحدث في حلقة:
  1. إذا كانت $autorisation مساوية لـ "yes" ، فأنت تنفذ هذه التعليمات ...
  2. إذا لم تكن  $autorisation مساوية لـ "No" ، فأنت تقوم بتنفيذ هذه التعليمات الأخرى ...
  3. وإلا ، فأنت تطلب العمر من جديد لمعرفة ما إذا كان لديك إذن بالدخول أم لا.
المشكلة الوحيدة في هذا المخطط هي أنه لا يتوقف أبداً! سيتم إعادة تشغيل التعليمات إلى ما لا نهاية!
هذا هو السبب ، بغض النظر عن نوع الحلقة (  while أو for )، من الضروري الإشارة إلى حالة ما . طالما تم استيفاء الحالة ، يتم إعادة تشغيل التعليمات. حالما لا يتم الوفاء بالشرط ، نخرج أخيرًا من الحلقة .
وهنا كيف مع حلقة بسيطة: while .

<?php
while ($continue == true)
{
    // تعليمات لتنفيذها في الحلقة
}
?>
While يمكن ترجمته كـ "طالما " . هنا ، نسأل PHP : طالما  $continuer صحيح ، قم بتنفيذ هذه التعليمات .
التعليمات التي تتكرر في حلقة بين الأقواس { و } . لكنني لن أعلمك أي شيء ، فأنت بدأت عادة برؤية المشابك ({}) في كل مكان. 
ليس الأمر أكثر تعقيدًا من ذلك بكثير ، فليس هناك الكثير لنعرفه. ومع ذلك ، سأظل أريكم مثالًا أو مثالين على استخدام الحلقات ، بحيث ترى ما يمكن أن تقدمه ...
على سبيل المثال الأول ، سنفترض أنك عوقبت وأنك يجب أن تنسخ 100 مرة. "ليس من الضروري أن أشاهد الذباب يطير عندما أتعلم PHP . ".
من قبل ، كان عليه أن يتحمل مشقة واستغرق الأمر الصبر ... الآن مع PHP ، سنفعل ذلك في غمضة عين!
انظر إلى هذا الكود:

<?php
$nombre = 1;

while ($nombre <= 100)
{
    echo 'Je ne dois pas regarder les mouches voler quand j\'apprends le PHP.
'; $nombre++; // $nombre = $nombre + 1 } ?>
مما يدل على ... الكثير من الخطوط:
web dynamique php
الخطوط المعروضة من خلال حلقة PHP
تشكل الحلقة الشرطية:  $nombre أقل من أو تساوي 100 .
في هذه الحلقة ، هناك إرشادات اثنين:
  • و echo، الذي يعرض النص في PHP . لاحظ أن هناك علامة HTML   في النهاية: فهي تسمح بالانتقال إلى السطر. بما أنك تعرف لغة HTML ، فليس من المستغرب أن تتم كتابة كل جملة في سطر واحد ؛
  • إذن ، تعليمات غريبة $nombre++; ؟  انظر إلى تعليقي: إنه بالضبط نفس الشيء. في الحقيقة ، إنها طريقة أقصر لإضافة 1 إلى المتغير. وهذا ما يسمى زيادة  ( هذا الاسم الهمجي يعني ببساطة إضافة 1 إلى المتغير) .
في كل مرة نصنع فيها حلقة ، تزيد قيمة المتغير: 1 ، 2 ، 3 ، 4 ... 99 ، 100 ... بمجرد أن يصل المتغير إلى 101 ، نوقف الحلقة. وهذا كل شيء ، لقد كتبنا 100 سطر في غمضة عين.
إذا كانت العقوبة أكبر ، فلا مشكلة! كان يكفي تغيير الشرط (على سبيل المثال ، ضع "عندما يكون أقل من أو يساوي 500" لكتابته 500 مرة) .
تأكد دائمًا من أن الحالة ستكون خاطئة مرة واحدة على الأقل. إذا لم تكن أبدًا ، فسيتم تشغيل الحلقة إلى ما لا نهاية! PHP يرفض عادة العمل أكثر من خمسة عشر ثانية. سوف يتوقف من تلقاء نفسه إذا رأى أن عمله يستمر لفترة طويلة ويعرض رسالة خطأ.
لقد رأينا للتو كيفية عرض عبارة عدة مئات من المرات دون جهد.
ولكن هل هو حقا مفيد؟ نحن لسنا بحاجة للقيام بذلك على موقع على شبكة الإنترنت!
ليس حقًا ، ولكن كما قلت لك في المقدمة ، نحن نتعلم بعض التقنيات الأساسية التي سنتمكن من إعادة استخدامها في الفصول التالية من هذه الدورة. تخيل في النهاية أن نظام الحلقات هذا سيسمح لك أن تطلب من PHP عرض جميع رسائل منتداك دفعة واحدة. بالطبع ، ستحتاج إلى مزيد من المعرفة لتحقيق ذلك ، ولكن بدون الحلقات لن تتمكن من فعل أي شيء!
أسألك عن الوقت المناسب للتدرب وفهم كيفية عمله.
حسنا ، مثال آخر للمتعة؟
يمكنك كتابة مائة سطر بالطريقة نفسها ، ولكن يمكن أن يكون كل سطر مختلفًا (ليس عليك أن تكتب نفس الشيء في كل مرة).
يجب أن يوضح لك هذا المثال أن قيمة المتغير تزيد مع مرور كل حلقة:

<?php
$nombre = 1;

while ($nombre <= 100)
{
    echo 'Ceci est la ligne n°' . $nombre . '
'; $nombre++; } ?>
مما يدل على:
web dynamique php
حلقة تحسب الخطوط
هذا كل شيء ، وهذا المثال يشبه إلى حد كبير المثال السابق. الخصوصية هنا هي أننا نعرض في كل مرة قيمة $nombre (تسمح لك أن ترى أن قيمتها تزيد قليلاً شيئًا فشيئًا) .
للحصول على معلومات ، تعمل النصيحة التي قدمتها لك في الفصل الخاص بالشروط هنا أيضًا: يمكنك إغلاق علامة PHP  ?>، كتابة نص في HTML ، ثم إعادة فتح علامة PHP <?php . هذا يوفر عليك استخدام واحد أو أكثر من التعليمات echo في الوسط. سيكون لدينا الفرصة لاستخدام هذه الخدعة عدة مرات في بقية الدورة.

حلقة أكثر تعقيدًا: for


لكن لا ، لا تخف من رؤيته.
لن يحدث شيء سيء لك: هنا كلمة "معقدة" لا تعني "معقدة".
forهو نوع آخر من الحلقات ، في شكل أكثر تكثيفًا قليلاً وأكثر ملاءمة للكتابة ، بحيث for يتم استخدامه بشكل متكرر.
ومع ذلك، تذكر أن for و while تعطي نفس النتيجة وتستخدم لنفس الشيء: تصريحات تكرار مرارا وتكرارا. قد تبدو أكثر ملاءمة من الآخرى في بعض الحالات ، كما أنه يعتمد على الذوق.
كيف يعمل for  ؟ يشبه إلى حد كبير while ، لكن السطر الأول الذي هو غريب بعض الشيء. لكي ترى الفرق مع while، سآخذ المثال السابق بالضبط ، لكن هذه المرة مع for :

<?php
for ($nombre = 1; $nombre <= 100; $nombre++)
{
    echo 'Ceci est la ligne n°' . $nombre . '
'; } ?>
كم من الأشياء في نفس الخط!
حسنا ، يمكنك أن تتخيل ، سأشرح فقط السطر for، والباقي لم يتغير.
بعد الكلمة for، هناك أقواس تحتوي على ثلاثة عناصر ، مفصولة بفواصل منقوطة ; .
دعونا نصف كل هذه العناصر.
  • الأول يستخدم للتهيئة . هذه هي القيمة التي نعطيها في البداية للمتغير (هنا هو 1).
  • والثاني هو الشرط . بالنسبة إلى while، طالما تم استيفاء الشرط ، يتم إعادة تشغيل الحلقة. بمجرد أن الحالة لم تعد موجودة ، نخرج.
  • أخيرًا ، الثالث هو الزيادة ، والتي تسمح لك بإضافة 1 إلى المتغير في كل تكرار للحلقة.
وبالتالي يعطي الرمزان الأخيران نفس النتيجة تمامًا .  و  for هي نفس الشيء مثل while، ولكن يجمع في سطر واحد كل ما تحتاج لمعرفته حول العملية من الحلقة.
كيف أعرف أي واحد يجب أخذه عندما يتعين علي الاختيار بين واحد while و واحد for ؟
الحلقة while أبسط وأكثر مرونة: يمكننا أن نفعل كل أنواع الحلقات ولكن يمكننا أن ننسى القيام ببعض الخطوات مثل زيادة المتغير.
من ناحية أخرى ، for يتم تكييفها بشكل جيد عندما يتعين على المرء أن يحسب عدد المرات التي يكرر فيها المرء التعليمات ويجعل من الممكن ألا ننسى جعل الزيادة لزيادة قيمة المتغير!
إذا كنت تتردد بين الاثنين ، فما عليك سوى أن تسأل نفسك السؤال التالي: "  هل أعرف مقدمًا عدد المرات التي أريد فيها تكرار إرشاداتي؟  ".
إذا كانت الإجابة بنعم ، فالحلقة for هي الأكثر ملائمة. إذا لم يكن كذلك ، فمن الأفضل استخدام الحلقة while .

في الخلاصة


  • تطلب الحلقات من PHP تكرار التعليمات عدة مرات.
  • النوعان الرئيسيان من الحلقات هما:
    • While : يفضل استخدامها عندما لا تعرف مقدمًا عدد مرات تكرار الحلقة ؛
    • For : استخدم عندما تريد تكرار التعليمات عدد معين من المرات.
  • الزيادة هي تقنية لإضافة 1 إلى قيمة المتغير. على العكس ، يزيل التناقص 1 من هذا المتغير. غالبا ما تكون هناك زيادات داخل الحلقات for .