السلام عليكم ورحمة والله وبركاته
اخواني واخواتي اليوم درسنا مهم وشيق جدا وفيه شرح لكيفية بناء دالة بلغة php وظيفتها استخراج جميع الاقسام الفرعية والرئيسية من قاعدة البيانات ثم عرضها بشكل مرتب وواضح في قائمة منسدلة … اعتقد جازما ان هذه الدالة ليست موجودة بأي موقع او منتدى عربي لحد الآن مع ان الاخ coder مشرف قسم لغة بي اتش بي في منتدى بي اتش بي قام بمحاولة ممتازة لبناء مثل هكذا دالة ونجحت التجربة بنسبة 80% على حد تقديري والسبب بعدم كون نجاحها كامل هو انه بقيت مشكلة في احد اجزاء الكود والذي سبب بتكرار علامة > اكثر من المطلوب اما الامر الاخر كون الدالة لم تخصص لتستعمل في لوحة تحكم بواسطة قائمة منسدلة وانما كانت طريقة عرضها نصية فقط … لمتابعة الموضوع هنا وبكل الاحوال اهنيء اخي الاستاذ coder على الجهد الرائع .
هذا الدرس للمستوى المتقدّم في لغة php وفيه سنشرح كيفية بناء هذه الدالة مع مثال مفصل لطريقة استدعاء هذه الدالة .
نبدأ بسم الله يجب في البداية ان نقوم ببناء الجدول الذي سيحوي الاقسام ثم نقوم ببناء 3 حقول في داخله والتي ستكون الحقول الاساسية في عملية ادارة هذه الدالة وهي كالتالي : 1- حقل رقم القسم id
2- حقل اسم القسم
3- حقل رقم القسم الاب او القسم الاساسي شرح الدالة نظريا : تقوم الدالة باستدعاء جميع الاقسام التي قمنا بادخالها للقاعدة وبعد استدعاء الاقسام الرئيسية تقوم الدالة بشكل متتالي باستخراج جميع الاقسام الفرعية المنطوية تحت كل قسم الرئيسي وهذا الامر يتم عن طريق تكرار او استدعاء الدالة لنفسها recursive function فعندما تعلم الدالة عن وجود قسم فرعي صاحب رقم 2 مثلا … فانها تذهب لتعرف لأي قسم رئيسي يتبع هذا القسم من خلال حقل رقم القسم الاب parent id والذي سوف يحوي رقم معين بكل قسم فرعي باستثناء عندما يكون في تركيبة قسم رئيسي فان قيمته سوف تكون 0 . عرض الدالة :
https://www.ebncana.com/upload/filez/841d28ee68.html المقال لـ EbNCaNa
نبدأ بسم الله يجب في البداية ان نقوم ببناء الجدول الذي سيحوي الاقسام ثم نقوم ببناء 3 حقول في داخله والتي ستكون الحقول الاساسية في عملية ادارة هذه الدالة وهي كالتالي : 1- حقل رقم القسم id
2- حقل اسم القسم
3- حقل رقم القسم الاب او القسم الاساسي شرح الدالة نظريا : تقوم الدالة باستدعاء جميع الاقسام التي قمنا بادخالها للقاعدة وبعد استدعاء الاقسام الرئيسية تقوم الدالة بشكل متتالي باستخراج جميع الاقسام الفرعية المنطوية تحت كل قسم الرئيسي وهذا الامر يتم عن طريق تكرار او استدعاء الدالة لنفسها recursive function فعندما تعلم الدالة عن وجود قسم فرعي صاحب رقم 2 مثلا … فانها تذهب لتعرف لأي قسم رئيسي يتبع هذا القسم من خلال حقل رقم القسم الاب parent id والذي سوف يحوي رقم معين بكل قسم فرعي باستثناء عندما يكون في تركيبة قسم رئيسي فان قيمته سوف تكون 0 . عرض الدالة :
<?
// مبنى الدالة
function getAllCats($id=0) {
////////// ابدأ التعديل من هنا //////////
$name_t = “category”; // اسم جدول الاقسام
$id_f = “cat_id”; // id اسم الحقل الذي يحوي رقم القسم
$name_f = “cat_name”; // اسم الحقل الذي يحوي اسم القسم
$parent_f = “cat_sub”; // parent اسم الحقل الذي يحوي رقم القسم الاساسي ////////// الانتهاء من التعديل ////////// static $cates = array();
static $tnum = 0; $tnum++;
$result = mysql_query(”SELECT $id_f,$name_f FROM $name_t WHERE $parent_f=$id ORDER BY $name_f”);
while($row = mysql_fetch_assoc($result))
{
$cates[$row[$id_f]] = str_repeat(”|-”,$tnum-1).”|—> “.$row[$name_f];
getAllCats($row[$id_f]);
}
$tnum = $tnum-1;
return $cates;
} // استدعاء الدالة echo “<select>
<option value=’0′>قسم رئيسي</option>”;
$allcats = getAllCats();
foreach($allcats as $key=>$value) {
echo “<option value=’$key’>$value</option>” ;
}
echo “</select>”; ?>
طريقة استدعاء الدالة بغاية السهولة لانها لا تحتاج لكتابة الاستعلام من جديده كون الاخير قد تم طلبه في مبنى الدالة نفسها وطريقة الاستدعاء هذه مصممة لكي تتلائم مع مبنى اي لوحة تحكم فمثلا تحوي لوحة تحكم الموقع اضافة قسم وتعديل قسم وحذف قسم … هذه الدالة يمكن استعمالها عندما نريد اضافة قسم او تعديل قسم .
تحميل$id_f = “cat_id”; // id اسم الحقل الذي يحوي رقم القسم
$name_f = “cat_name”; // اسم الحقل الذي يحوي اسم القسم
$parent_f = “cat_sub”; // parent اسم الحقل الذي يحوي رقم القسم الاساسي ////////// الانتهاء من التعديل ////////// static $cates = array();
static $tnum = 0; $tnum++;
$result = mysql_query(”SELECT $id_f,$name_f FROM $name_t WHERE $parent_f=$id ORDER BY $name_f”);
while($row = mysql_fetch_assoc($result))
{
$cates[$row[$id_f]] = str_repeat(”|-”,$tnum-1).”|—> “.$row[$name_f];
getAllCats($row[$id_f]);
}
$tnum = $tnum-1;
return $cates;
} // استدعاء الدالة echo “<select>
<option value=’0′>قسم رئيسي</option>”;
$allcats = getAllCats();
foreach($allcats as $key=>$value) {
echo “<option value=’$key’>$value</option>” ;
}
echo “</select>”; ?>
https://www.ebncana.com/upload/filez/841d28ee68.html المقال لـ EbNCaNa