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


الدرس: الجداول


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

كلا النوعين من الجداول


صفيف (وتسمى أيضا array )هو متغير. لكن متغير خاص قليلا.
 لقد عملت حتى الآن مع متغيرات بسيطة: لديهم اسم وقيمة .  مثلا :

<?php
$prenom = 'Nicole';
echo 'Hello ' . $prenom; 
?>
ما الذي يمكن أن يتحقق في النموذج:
اسم قيمة
$prenom Nicole
سنرى هنا أنه من الممكن حفظ الكثير من المعلومات في متغير واحد بفضل الجداول. هناك نوعان:
  • الجداول المرقمة
  • صفائف الترابطية.
الجداول المرقمة
هذه اللوحات بسيطة جدا في التخيل. ابحث عن هذا المثال ، محتويات المتغير $prenoms :
مفتاح قيمة
0 François
1 Michel
2 Nicole
3 Véronique
4 Benoît
... ...
prenoms عبارة عن array  : هذا يسمى متغير "الصفيف" . لا يحتوي على قيمة واحدة ، ولكن عدة (يمكنك وضع ما تريد).
في صفيف ، يتم تخزين القيم في "صناديق" مختلفة. هنا ، نعمل على صفيف مُرقّم ، بمعنى أنه يتم تحديد كل مربع برقم. هذا الرقم يسمى المفتاح .
تحذير ! صفيف ذات تعداد رقمي يبدأ دائمًا في المربع رقم 0! لن تنساه أبدًا ، أو تخاطر بارتكاب الأخطاء لاحقًا ...
بناء جداول مرقمة
لإنشاء جداول مرقمة في PHP ، نستخدم عادةً الوظيفة array .
يوضح لك هذا المثال كيفية إنشاء الصفيف $prenoms  :

<?php
$prenoms = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît');
?>
أمر يهم كثيرا . العنصر الأول ("François ") سيكون له الرقم 0 ، ثم Michel الرقم 1 ، إلخ.
يمكنك أيضًا إنشاء المربع يدويًا بواسطة مجموعة مربعات:

<?php
$prenoms[0] = 'François';
$prenoms[1] = 'Michel';
$prenoms[2] = 'Nicole';
?>
إذا كنت لا ترغب في كتابة رقم المربع الذي تنشئه بنفسك ، يمكنك السماح لـ PHP بتحديده تلقائيًا عن طريق ترك الأقواس فارغة:

<?php
$prenoms[] = 'François'; // $prenoms[0]
$prenoms[] = 'Michel'; // $prenoms[1]
$prenoms[] = 'Nicole'; // $prenoms[2]
?>
عرض جداول مرقمة
لعرض عنصر ، يجب أن تحدد موضعه بين قوسين بعد $prenoms . هذا يشبه قول PHP :
"أرني محتويات المربع رقم 1 من $prenoms . "
للقيام بذلك في PHP ، يجب عليك كتابة اسم المتغير ، متبوعًا بالرقم الموجود بين قوسين معقوفين. لعرض " Michel " ، يجب أن نكتب:

<?php
echo $prenoms[1];
?>
من الغباء أنك لا تنسى أن Michel يحتل المرتبة الثانية ولذا فهو يحتفظ بالرقم 1 (منذ أن بدأنا العد من 0).
إذا نسيت وضع الأقواس المربعة "[ ] "، فلن يعمل (سيظهر فقط "Array" ... ) . بمجرد العمل على المصفوفات ، تكون مضطرًا لاستخدام الأقواس المربعة للإشارة إلى "المربع" الذي يتعين عليه أن يذهب اليه للحصول على المعلومات ، وإلا فإن PHP لا يعرف ما الذي يجب استعادته.
المصفوفات الترابطية
تعمل الصفائف الترابطية على نفس المبدأ ، باستثناء أنه بدلاً من ترقيم الصناديق ، سنقوم بتسمية كل منهم بإعطاء اسم مختلف لكل منهم.
على سبيل المثال ، افترض أنني أريد ، في صفيف واحد ، حفظ معلومات الاتصال الخاصة بشخص ما (الاسم الأخير ، الاسم الأول ، العنوان ، المدينة ، إلخ). إذا تم ترقيم المصفوفة ، فكيف تعرف أن # 0 هو الاسم ، والرقم 1 هو الأول ، والرقم 2 هو العنوان ...؟ هذا هو المكان الذي تصبح المصفوفات الترابطية مفيدة.
بناء مصفوفات ترابطية
لإنشاء واحدة ، سنستخدم الوظيفة array كما كان من قبل ، لكننا سنضع "التصنيف" أمام كل قطعة من المعلومات:

<?php
$coordonnees = array (
    'prenom' => 'François',
    'nom' => 'Dupont',
    'adresse' => '3 Rue du Paradis',
    'ville' => 'Marseille');
?>
ملاحظة مهمة: لا يوجد سوى بيان واحد هنا (فاصلة منقوطة واحدة فقط). كان بإمكاني وضع كل شيء على نفس الخط ، لكن لا شيء يمنعني من الفصل على عدة أسطر حتى أكون أسهل في القراءة.
لاحظت أن السهم ( =>) مكتوبًا ليقول "مرتبط" . على سبيل المثال ، نقول " ville " المرتبطة ب " Marseille "
لقد أنشأنا جدولًا يشبه الهيكل التالي:
مفتاح قيمة
prenom François
nom Dupont
adresse 3 Rue du Paradis
ville Marseille
من الممكن أيضًا إنشاء مربع الجدول حسب المربع ، مثل هذا:

<?php
$coordonnees['prenom'] = 'François';
$coordonnees['nom'] = 'Dupont';
$coordonnees['adresse'] = '3 Rue du Paradis';
$coordonnees['ville'] = 'Marseille';
?>
عرض مصفوفات ترابطية
لعرض عنصر ، يكفي الإشارة إلى اسم هذا العنصر بين قوسين ، وكذلك بين علامات اقتباس أو علامة اقتباس أحادية لأن تسمية الصفيف الترابطي عبارة عن نص.
على سبيل المثال ، لاستخراج المدينة ، يجب عليك كتابة:

<?php
echo $coordonnees['ville'];
?>
يعرض هذاالكود: "" Marseille
متى يجب استخدام صفيف مُرقّم ومتى يجب استخدام صفيف ترابطي  ؟
كما رأيت في الأمثلة الخاصة بي ، لا يتم استخدامها لتخزين نفس الشيء ...
  • تستخدم المصفوفات المرقمة لتخزين سلسلة من العناصر من نفس النوع ، مثل الأسماء الأولى. سيحتوي كل عنصر من عناصر الجدول على الاسم الأول.
  • تتيح الصفائف الترابطية تقسيم البيانات إلى عدة عناصر فرعية. على سبيل المثال ، يمكن تقسيم العنوان إلى الاسم الأخير والاسم الأول واسم الشارع والمدينة ...

تصفح الجدول


عندما يتم إنشاء جدول ، فأنت تحتاج غالبًا إلى المرور فيه للتعرف على محتوياته. سنرى ثلاث طرق لاستكشاف جدول:
  • الحلقة for ؛
  • الحلقة foreach ؛
  • وظيفة print_r (تستخدم أساسا لتصحيح الأخطاء) .
الحلقة FOR
من السهل جدًا استعراض جدول مُرقّم بحلقة for . في الواقع ، نظرًا لأن الترقيم يبدأ من 0 ، فيمكننا إنشاء حلقة for تزداد عدادًا بدءًا من 0:

<?php
$prenoms = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît');

//  ثم نصنع حلقة لعرض كل شيء:
for ($numero = 0; $numero < 5; $numero++)
{
    echo $prenoms[$numero] . '
'; } ?>
web dynamique php
عرض قيم الجدول مع
عند الكتابة $prenoms[$numero] ، $numero يتم استبدال المتغير أولاً بقيمته. على سبيل المثال ، إذا كان $numero 2 ، فهذا يعني أننا نحاول الحصول على ما في  $prenoms[2] ، وهذا هو ... Nicole . أحسنت ، فهمت.
الحلقة foreach
حلقة for لديها عمل جميل، يمكننا استخدام نوع آخر من حلقة أكثر ملاءمة للجداول لم نرها حتى الآن:  foreach . انها نوع من حلقة for متخصصة في الجداول.
Foreach سوف يمر خلال كل صف من الصفيف ، وفي كل تمريرة ، سيضع قيمة ذلك الصف في متغير مؤقت (على سبيل المثال $element ) .
أنا أتكلم الصينية ؟ انظر بدلا من ذلك:

<?php
$prenoms = array ('François', 'Michel', 'Nicole', 'Véronique', 'Benoît');

foreach($prenoms as $element)
{
    echo $element . '
'; } ?>
web dynamique php
عرض قيم الصفيف مع foreach
إنه نفس الكود كما كان من قبل ولكن هذه المرة تعتمد على حلقة foreach . في كل تكرار حلقة ، يتم وضع قيمة العنصر التالي في المتغير $element . يمكنك $element فقط استخدام داخل الحلقة لعرض العنصر الحالي.
ميزة هذا  foreach أنه يتيح لك أيضًا استعراض المصفوفات الترابطية.

<?php
$coordonnees = array (
    'prenom' => 'François',
    'nom' => 'Dupont',
    'adresse' => '3 Rue du Paradis',
    'ville' => 'Marseille');

foreach($coordonnees as $element)
{
    echo $element . '
'; } ?>
web dynamique php
تصفح صفائف النقابي
Foreach سيضع بدوره في المتغير $element الاسم الأول والاسم والعنوان والمدينة الموجودة في المصفوفة $coordonnees .
لذلك وضعنا بين قوسين:
  1. أولاً اسم المصفوفة ( هنا $coordonnees ) ؛
  2. ثم الكلمة الأساسية as (والتي تعني شيئًا مثل "حيث" ) ؛
  3. أخيرًا ، اسم المتغير الذي تختاره والذي سيحتوي على كل عنصر من عناصر المصفوفة ( هنا $element ) .
بين الأقواس ، نستخدم المتغير فقط $element .
تتوقف الحلقة عندما تجتاز جميع عناصر المصفوفة.
ومع ذلك ، مع هذا المثال ، يتم استرداد القيمة فقط. ومع ذلك ، يمكننا أيضًا استرداد مفتاح العنصر. في هذه الحالة يجب أن نكتب  foreach مثل هذا:

<?php
foreach($coordonnees as $cle => $element) 
?>
في كل تكرار حلقة ، لن يكون لدينا واحد ، ولكن اثنين من المتغيرات:
  • $cle، والذي سيحتوي على مفتاح العنصر الجاري تحليله ("الاسم الأول" ، "الاسم" ، إلخ) ؛
  • $element، والتي سوف تحتوي على قيمة العنصر الحالي ("Francois" ، "Dupont" ، إلخ).
لنختبر العملية بمثال:

<?php
$coordonnees = array (
    'prenom' => 'François',
    'nom' => 'Dupont',
    'adresse' => '3 Rue du Paradis',
    'ville' => 'Marseille');

foreach($coordonnees as $cle => $element)
{
    echo '[' . $cle . '] vaut ' . $element . '
'; } ?>
web dynamique php
استرداد مفتاح العنصر
بهذه الطريقة للمتابعة ، لديك الآن في الحلقة المفتاح والقيمة.
و foreach، صدقوني، انها حلقة قوية حقا! نستخدمها بانتظام!
عرض بسرعة مجموعة معprint_r
في بعض الأحيان ، من خلال كود موقعك في PHP ، سيكون لديك مجموعة تحت ذراعك وتريد معرفة ما يحتويه ، لمعلوماتك فقط. يمكنك استخدام حلقة forأو حلقة أفضل foreach . ولكن إذا كنت لا تحتاج إلى تنسيق خاص وتريد فقط معرفة ما هو موجود في الصفيف ، يمكنك استدعاء الوظيفة print_r . إنه نوع من  echo و متخصصة في المصفوفات.
ومع ذلك ، فإن هذا الأمر به عيب: فهو لا يُرجع كود HTML مثل  فواصل الأسطر. لرؤيتهم ، يجب أن نستخدم علامة HTML 
 التي تتيح لنا الحصول على عرض أكثر دقة.	

<?php
$coordonnees = array (
    'prenom' => 'François',
    'nom' => 'Dupont',
    'adresse' => '3 Rue du Paradis',
    'ville' => 'Marseille');

echo '
';
print_r($coordonnees);
echo '
'; ?>
web dynamique php
باستخدام العلامة
	
هذا كل شيء ، إنه سهل الاستخدام طالما أنك لا تنسى أن العلامة 
 لديها عرض صحيح.	
بالطبع ، لن تظهر أبدًا أشياء من هذا القبيل للزائرين. من ناحية أخرى ، يمكن استخدامها لتصحيح الأخطاء ، أثناء إنشاء الموقع ، لمعرفة ما يحتوي الصفيف بسرعة.

البحث في الجداول


سنبحث الآن عن صفائف. قد يكون ذلك مفيدًا في بعض الأحيان بالنسبة لك لمعرفة ما إذا كانت صفيفتك تحتوي على معلومات معينة أم لا.
سنرى ثلاثة أنواع من عمليات البحث ، استنادًا إلى وظائف PHP :
  • array_key_exists  : للتحقق من وجود مفتاح في الصفيف ؛
  • in_array  : للتحقق من وجود قيمة في المصفوفة ؛
  • array_search  : لاسترداد مفتاح القيمة في الصفيف.
تحقق من وجود مفتاح في الصفيف :array_key_exists
هذه هي مشكلتنا: لدينا مجموعة ، لكننا لا نعرف ما إذا كان المفتاح الذي نبحث عنه موجودًا أم لا.
للتحقق من ذلك ، سوف نستخدم الوظيفة array_key_exists التي ستتصفح الجدول و تخبرنا إذا كان يحتوي على هذا المفتاح.
يجب أن نعطيها أولاً اسم المفتاح الذي يجب البحث عنه ، ثم اسم المصفوفة التي نقوم بالبحث فيها:

<?php
array_key_exists('cle', $array); 
?>
تقوم الدالة بإرجاع منطقية ، وهذا true (صواب) إذا كان المفتاح في الصفيف ، و false (خطأ) إذا كان المفتاح غير موجود. يسمح لنا باختبار بسهولة باستخدام if :

<?php
$coordonnees = array (
    'prenom' => 'François',
    'nom' => 'Dupont',
    'adresse' => '3 Rue du Paradis',
    'ville' => 'Marseille');

if (array_key_exists('nom', $coordonnees))
{
    echo ' coordonnees موجود في "nom"  المفتاح ';
}

if (array_key_exists('pays', $coordonnees))
{
    echo '  غير موجود"pays"!';
}

?>
web dynamique php
سنجد فقط "الاسم" وليس "البلد" (المنطق). سيتم تنفيذ الشرط الأول فقط.
تحقق من وجود قيمة في المصفوفة: in_array
المبدأ هو نفسه array_key_exists... ولكن هذه المرة نحن نبحث في القيم .  in_array إرجاع true إذا كانت القيمة في الصفيف ، false إذا لم يكن هناك.
لتغيير القليل من المجموعة الخاصة بنا $coordonnees، سوف أقوم بإنشاء فاكهة جديدة (مرقمة).

<?php
$fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise');

if (in_array('Myrtille', $fruits))
{
    echo 'موجودة "Myrtille"  !';
}

if (in_array('Cerise', $fruits))
{
    echo 'موجودة "Cerise" ';
}
?>
الحصول على مفتاح القيمة في الصفيف:ARRAY_SEARCH
array_search يعمل مثل in_array : إنه يعمل على قيم مجموعة. هذا هو ما ترجع الدالة:
  • إذا وجدت قيمة، array_search تقوم بإرجاع المفتاح (أي أن عدد إذا كانت مجموعة مرقمة أو اسم المفتاح إذا كانت مجموعة ترابطية)؛
  • إذا لم تجد array_search القيمة ، فسترجع false .
نأخذ مجموعة مرقمة مع الفواكه:

<?php
$fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise');

$position = array_search('Fraise', $fruits);
echo '"Fraise" position ' . $position . '
'; $position = array_search('Banane', $fruits); echo '"Banane" position ' . $position; ?>
web dynamique php
استرجاع مفتاح القيمة
أعلم أنني أكرر نفسي ، لكن لا تنسى أن مجموعة مرقمة تبدأ في 0! وهذا يفسر سبب إخبارنا بأن "الموز" في الموضع 0.
هذه هي الوظائف التي كان عليك معرفتها للبحث في صفيف. هناك آخرون ولكنك تعرف الآن أهمها.
في الخلاصة
  • الجداول (أو المصفوفات) هي متغيرات ممثلة في شكل جدول. يمكنهم بالتالي تخزين كميات كبيرة من المعلومات.
  • يحتوي كل صف من الجداول على مفتاح (يحدده) وقيمة.
  • هناك نوعان من الجداول:
    • الجداول المرقمة : يتم تحديد كل سطر بواسطة مفتاح مرقّم. يبدأ الترقيم من 0؛
    • المصفوفات الترابطية : يتم تحديد كل سطر بسلسلة قصيرة من النص.
  • لتصفح جدول ، يمكننا استخدام الحلقة forالتي نعرفها بالفعل ، ولكن أيضًا الحلقة foreach المخصصة للجداول.
  • هناك العديد من الوظائف التي تسمح لك بالعمل على الجداول ، بما في ذلك البحث.