* مجموعة السجلات Record Set
هي عبارة عن عدة سجلات، وكما تعرف فإن كل سجل مكون من عدة حقول، فهي في الواقع عبارة عن جدول، وتمثل مجموعة السجلات في PHP بما يسمى بالـ Record Set Resource وهو ما تعيده الدالة mysql_query أو الدالة mysql_db_query ..
يمكنك مشاهدة أمثلة على استعلامات وجداول السجلات التي تنتج منها في دورة SQL هنا:
http://www.arabbuilder.com/learn/lessons/sql/
لنفرض أنك قمت بعكل استعلام وحصلت على نتيجة الاستعلام ووضعتها في المتغيرة $result، وكانت نتيجة الاستعلام كالتالي:
كود:
name telephone
---- ---------
Tim 111
Jim 222
John 333
في مجموعة السجلات الموضحة في الأعلى توجد ثلاثة سجلات، كل سجل يتكون من حقلين هما ( name ) و ( telephone ) ..
بالإضافة إلى مجموعة السجلات، تحتوي المتغيرة $result أيضا على ما يسمى بالمؤشر pointer، وهو يشير إلى السجل الحالي ضمن مجموعة السجلات السابقة ..
ويشير الـ pointer بدايةً إلى أول سجل في مجموعة السجلات ..
بعد ذلك، وعند استدعاء الدالة mysql_fetch_array فإن الدالة تقوم بأمرين ..
1) إعادة مصفوفة ( Array ) تتكون من اسم الحقل للسجل الحالي -> قيمة الحقل .. وذلك لجميع حقول السجل الحالي .. أي أننا عندما نستدعي الدالة mysql_fetch_array للمرة الأولى فإننا سنحصل على مصفوفة كالتالي:
كود:
array ( "name" => "Tim", "telephone" => "111" )
2) نقل المؤشر ( pointer ) إلى السجل الذي يلي السجل الحالي، حتى إذا ما قمنا باستدعاء الدالة mysql_fetch_array للمرة الثانية فإننا سنحصل على السجل الذي يلي السجل السابق.
يستمر الوضع هكذا، مع كل استدعاء نحصل على السجل الحالي، ثم ينتقل المؤشر إلى السجل الذي يليه، إلى أن نصل إلى نهاية مجموعة السجلات، عندها ستعيد الدالة القيمة false بدلا من مصفوفة الحقول، فهذه هي العلامة التي نعرف بها أننا وصلنا إلى آخر سجل ..
الآن دعنا نلقي نظرة على كيفية الاستفادة من الدالة mysql_fetch_array في المرور على جميع السجلات التي حصلنا عليها:
كود:
while ($row = mysql_fetch_array($result)) {
/* use $row here for the fields of the current record */
}
ما حدث في الشفرة السابقة هو أننا قمنا بعمل حلقة while، في كل دورة يتم جلب محتويات السجل الحالي ووضعها في المتغيرة $row كما هو في الشفرة التالية:
كود:
$row = mysql_fetch_array($result)
بإلإضافة إلى ذلك فإن التعبير السابق يعيد القيمة التي وضعت في المتغيرة $row (للمزيد حول ذلك أنظر الدرس الذي كتبته حول المتغيرات والتعبيرات في لغة PHP)، فإذا وصلنا إلى نهاية الحقول ستوضع القيمة false داخل المتغيرة $row وعندها سيعيد التعبير القيمة false أي سيصبح التالي:
وبالتالي سيخرج البرنامج من الحلقة عند الانتهاء من جميع السجلات.
يمكن استخدام أي اسم بدلا من المتغيرة $row .. فهي ليست أمرا اجباريا.
للحصول على دروس PHP التي حدثتك عنها:
http://www.arabbuilder.com/learn/lessons/php/index.php
http://www.arabbuilder.com/learn/lessons/php/php01.php