"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > قم بإنشاء قائمة لا حصر لها مع PHP و MySQL: حل متكرر

قم بإنشاء قائمة لا حصر لها مع PHP و MySQL: حل متكرر

نشر في 2025-04-22
تصفح:493

How to Build Unlimited-Level Menus with PHP and MySQL: A Recursive Solution?

في مثل هذه الهياكل ، عادةً ما يكون للقوائم ذات المستوى الأعلى معرف الوالدين من 0 ، بينما يتم تخصيص معرف القائمة الوالدية الخاصة بهم.

إليك كيفية تحقيق ذلك باستخدام php و mysql:

استعلام mysql:

من menu_item order by parent_id ، position ؛

يجلب هذا الاستعلام جميع عناصر القائمة بترتيب هرمي استنادًا إلى علاقات الوالدين والطفل.

$ parent = 0 ؛ // بدءًا من القائمة العليا $ parent_stack = array () ؛ // تتبع معرفات القائمة الأصل // عناصر قائمة الخريطة بواسطة معرف الوالدين الخاص بهم $ الأطفال = صفيف () ؛ foreach (عناصر $ كعنصر $) { $ children [$ item ['parent_id']] [] = $ item ؛ } بينما ( // إذا كان هناك المزيد من الأطفال على مستوى الوالدين الحالي (خيار $ = كل ($ أطفال [$ parent])) || // أو إذا كنا بحاجة إلى التراجع إلى مستوى الوالدين السابق ($ parent> 0) ) { إذا (! فارغة (خيار $)) { // تعامل مع عناصر القائمة مع الأطفال if (! فارغة ($ children [$ Option ['value'] ['id']])) { $ html. = '

  • '. خيار $ ['value'] ['name']. '
  • ' ؛ $ html. = '' ؛ $ parent = array_pop ($ parent_stack) ؛ // pop آخر معرف الوالدين من المكدس } } // إخراج HTML الناتج echo $ html ؛ التفسير:
    SELECT id, parent_id, name, link, position
    FROM menu_item
    ORDER BY parent_id, position;

    من سلسلة إخراج HTML مع متداخلة

      لعملية فرعية. ليس فارغًا ، يتم عرض الوالد الحالي من المكدس ، ويتم تعيين الوالد الحالي على المعرف المفروم.

      تستمر الحلقة حتى تتم معالجة جميع عناصر القائمة.

    أحدث البرنامج التعليمي أكثر>

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

    Copyright© 2022 湘ICP备2022001581号-3