ساخت دسته بندی با PHP (+n زیرشاخه)

  • آپدیت شده در تاریخ

ساخت دسته بندی با PHP (+n زیرشاخه)

ساخت دسته بندی چندسطحی به کاربر این امکان را می دهد که لیست دسته بندی مطالب سایت را بصورت پدر و فرزندی ببیند.دسته بندی و زیرشاخه های آن ها به راحتی با ساختار درختی قابل جداسازی است.

نمایه درختی دسته بندی ها همیشه برای نمایش بی نهایت سطح دسته بندی و زیرشاخه, پیشنهاد می شود.

همچنین وجود دسته بندی و تعداد بسیار زیاد زیرشاخه برای سایت های فروشگاهی اهمیت یادگیری این مبحث را چندین برابر می کند.

در این آموزش php , قصد داریم به شما نحوه ساخت دسته بندی با PHP و MySQL به همراه بی نهایت زیرشاخه و بصورت داینامیک را نشان بدیم.

دسته بندی درختی برای ایجاد لیست بی نهایت دسته بندی بصورت آبشاری (dropdown) , بسیار توصیه می شود.

 

کد php مثال به شما نحوه ساخت دسته بندی با PHP و همچنین زیرمجموعه های آن را نشان می دهد.

داده های دسته بندی ما از طریق دیتابیس MySQL خوانده و بصورت پدر-فرزندی در فرمت دسته بندی درختی نمایش داده می شود.

ساخت جدول دیتابیس

برای ذخیره دسته بندی و زیرشاخه ها, نیاز به ایجاد یک جدول در دیتابیس داریم.

کد SQL زیر جدول categories را در دیتابیس MySQL ایجاد می کند.

نکته مهم ما اینجا ستون parent_id است. این ستون مشخص می کند که آیا دسته بندی این سطر خودش parent (پدر) است یا فرزند (child).

اگر پدر باشد مقدار parent_id برار با ۰ است. در غیر اینصورت فرزند است و ID پدر آن دسته بندی قرار می گیرد.

 

اتصال به دیتابیس (dbConfig.php)

این فایل برای اتصال و انتخاب دیتابیس استفاده شده است. مقدار هاست ($dbHost), نام کاربری($dbUsername), پسورد ($dbPassword) و نام ($dbName) را بر اساس اطلاعات دیتابیس خود تغییر بدید.

 

تابع بازگشتی PHP برای ایجاد ساختار درختی

تابع categoryTree() بی نهایت سطح دسته بندی و زیرشاخه را با استفاده از حلقه while ایجاد می کند.

این تابع گزینه های لیست آبشاری را برای درخت دسته بندی ها می سازد.

  • $parent_id – اختیاری. آیدی دسته بندی را برای دریافت زیرشاخه های آن مشخص می کند.
  • $sub_mark – اختیاری. علامتی که قصد داریم قبل نام دسته بندی فرزند اضافه شود.

برای کپی صحیح و کامل کدها ، دابل کلیک کرده تا وارد محیط سفید و کپی شوید در غیر اینصورت امکان دارد اجرای کدها با مشکل روبرو شود

ساخت دسته بندی با PHP (+زیرمجموعه)

از تابع categoryTree() برای ساخت داینامیک ساختار درختی دسته بندی ها بصورت داینامیک با PHP و MySQL استفاده کردیم.

امیدوارم از آموزش ساخت دسته بندی با PHP بصورت داینامیک و بی نهایت زیرشاخه استفاده مفید را برده باشید.

برای دانلود سورس کد کامل از باکس دانلود زیر استفاده کنید.

هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید.

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۲۹)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. مهران ۱۶ آبان ۱۴۰۰

    سلام
    اینطوری که همه زیر هم دیده میشن
    اگر بشه زیر مجموعه یه ذره فاصله داشته باشن از پرنت خیلی عالی میشه

    پاسخ
    1. حسن شفیعی ۱۶ آبان ۱۴۰۰

      سلام.
      این کاررو باید دیگه با css انجام بدید

      پاسخ
  2. عرفان ۱۷ مهر ۱۴۰۰

    عالی واقعا ایده رتورن شدن فانشکن در خودش عالی بود

    پاسخ
  3. Dude ۱۴ شهریور ۱۴۰۰

    سلام.
    یه سوال داشتم در مورد مرتب کردن بر اساس دسته بندی .
    مثلا ۳ تا دسته بندی داریم به صورت زیر:
    ۱:all
    ۲:child
    ۳:adult
    زمانی که کاربران اطلاعاتشون میفرستن به صورت کلی نمایش داده میشه ولی اگه فقط دسته بندی child نشون داده بشه باید چیکار کرد.مثلا تو سایت دیوار شما بر اساس شهر آگهی میذارید زمانی که آگهی ارسال میشه بر اساس هر شهر میتونیم نتایج ببینیم .
    ممنون میشم راهنماییم کنید.

    پاسخ
    1. حسن شفیعی ۲۰ شهریور ۱۴۰۰

      سلام. این آموزش رو ببینید :
      https://netparadis.com/city-selection-list-ajax-php/

      پاسخ
  4. صادق ۸ مرداد ۱۴۰۰

    سلام.
    من نیاز به دو تا دسته بندی دارم که به صورت parent و child هست و ابتدا parent انتخاب میشه و بعد از انتخاب parent دسته بندی child ظاهر میشه و کلا به صورت Dropdown button تو نرم افزار استفاده میشه.
    ممنون میشم راهنماییم کنید.

    پاسخ
    1. حسن شفیعی ۹ مرداد ۱۴۰۰

      سلام. از این آموزش استفاده کنید :
      https://netparadis.com/city-selection-list-ajax-php

      پاسخ
      1. صادق ۹ مرداد ۱۴۰۰

        سلام.
        ممنون بابت اطلاعاتی که دادید.
        فقط من با فلاتر کار میکنم و این کد مربوط میشه به وب و Ajax
        قسمتی که تو فلاتر برای دریافت اطلاعات نیاز هست رو نمیتونم انجام بدم.

        پاسخ
      2. حسن شفیعی ۹ مرداد ۱۴۰۰

        سلام.
        در زمینه فلاتر بنده نمیتونم راهنمایی کنم باید در php و فلاتر متوسط بلد باشید تا بتونید پیاده سازی کنید

        پاسخ
  5. پوریا ۱۵ آبان ۱۳۹۹

    با سلام و احترام
    جناب شفیی ممنون بابت این آموزش مفید و کاربردی. بنده طبق آموزش پیش رفتم و همه چی درست هست فقط نمیدونم چطور باید در مگامنو دسته بندی های کلی و در زیرش زیر دسته هارو نمایش بدم. ممنون میشم راهنمایی بفرمایید.

    پاسخ
    1. حسن شفیعی ۱۵ آبان ۱۳۹۹

      سلام.
      خوشحالیم که مفید واقع شده.
      این نمایش کاملا بستگی به دانش html css شما داره ولی خب شما میتونید حلقه while رو داخل کدتون قرار بدید و دستی یکبار بدون ساختار خاصی تولید کنید و بعد تگ و کلاس ها را جایگزین کنید

      پاسخ
      1. پوریا ۱۶ آبان ۱۳۹۹

        سلام مجدد
        ممنون بابت راهنماییون. جناب شفیعی بنده چون مبتدی هستم و در حال حاضر زیاد مسلط نیستم و در حال تمرین هستم، میخواستم اگر ممکنه بنده هزینه اش رو خدمت شما پرداخت کنم و شما زحمت بکشید اون تیکه کد رو برای بنده قبول زحمت کنید. فایل بنده آماده هست و منو آماده هست فقط عرض کردم قبلا که نمیدونم در منو چطور باید تفکیکشون کنم دسته هارو.

        پاسخ
      2. حسن شفیعی ۱۶ آبان ۱۳۹۹

        سلام. اطلاعات بیشتر خدمتتون ایمیل شد

        پاسخ
  6. amir ۴ آبان ۱۳۹۹

    سلام. دمتون گرم ♥

    پاسخ
    1. حسن شفیعی ۴ آبان ۱۳۹۹

      سلام.
      خوشحالیم که مفید واقع شده.
      موفق باشید.

      پاسخ
  7. Mahdi ۶ آذر ۱۳۹۸

    سلام
    میشه یه روش برای نمایش کاربران در بازاریابی شبکه ای پیشنهاد بدین

    پاسخ
    1. حسن شفیعی ۷ آذر ۱۳۹۸

      سلام.
      از همین روش میتونید استفاده کنید که بدون محدودیت زیرشاخه های نامحدود از کاربران را هم می تواند نشان دهد.
      موفق باشید.

      پاسخ
      1. Mahdi ۷ آذر ۱۳۹۸

        چطور میتونم حلقه بازگشتیو شمارش کنم

        پاسخ
      2. Mahdi ۷ آذر ۱۳۹۸

        برای نمایشش مشکلی نیست ولی چطور تعدادشو بدست بیارم

        پاسخ
      3. حسن شفیعی ۷ آذر ۱۳۹۸

        داخل حلقه شما باید یک متغییر به عنوان شمارشگر اضافه کنید که با هر بار تکرار حلقه این متغییر یکی به آن اضافه شود و در نهایت مقدار این متغییر رو میتونید استفاده کنید.
        مثلا $counter = 0 و داخل حلقه این متغییر رو به اینصورت افزایش بدید : $counter++
        موفق باشید.

        پاسخ
      4. Mahdi ۸ آذر ۱۳۹۸

        این کارو انجام دادم ولی چون بازگشتیه به صورت آرایه بر میگردونه مثلا اگه ۷ تا کاربر پیدا کنه به صورته ۷ تا آرایه با مقدار ۱ برمیگردونه

        پاسخ
  8. مهدیار موسویان ۱ مرداد ۱۳۹۸

    سلام
    من یه جدول دارم با تعداد زیادی رکورد که هر کدوم parent id متفاوتی دارن و parent اکثر رکوردها خودش child محسوب میشه، میخوام کاری کنم که از parent id صفر تمام اطلاعات تا مرحله ای که دیگه زیرمجموعه وجود ندارن به صورت درختی نمایش داده بشه و وقتی اخرین آیدی انتخاب شد تمام رکوردهایی که parent id مشابه اون بخش رو دارن تو یه جدول نشون داده بشه.
    امیدوارم تونسته باشم منظورم رو منتقل کنم و بتونم از راهنمایی شما استفاده بکنم .
    ممنون

    پاسخ
    1. حسن شفیعی ۲ مرداد ۱۳۹۸

      سلام. همین آموزش جواب سوال شماست . سورس کد را اماده را مطابق نیاز پروژه خود تغییر بدید.
      موفق باشید.

      پاسخ
  9. امید ۹ تیر ۱۳۹۸

    بسم الله الرحمن الرحیم
    تشکر می کنم برای آموشهای خوب شما
    من یک tableبه نام categoriesساختم با زیر منوهای cat_idوcat_titleوparent_idو کدهایی را که شما برای تابع بازگشتی php برای ساختار درختی قرار دادید را استفاده کردم ولی هیچ کدام از منوها و زیر منوها را در صفحه سایت فراخوانی نمی کند.
    اگر راهنمایی بفرمایید تشکر می کنم.

    پاسخ
    1. حسن شفیعی ۹ تیر ۱۳۹۸

      سلام. خوشحالیم که مفید واقع شده.
      معادل نام رکورد های جدول شما در این آموزش بصورت زیر است :
      cat_id همان id
      cat_title هم همان name
      است و parent_id هم مشابه است. لطفا این مورد رو در تابع categoryTree لحاظ کنید.
      در صورتی که حل نشد دقیق همین سورس کد رو از باکس دانلود دریافت و عینا کدهای آن را استفاده کنید تا خطای کد رو رفع کنید.
      موفق باشید.

      پاسخ
      1. امید ۹ تیر ۱۳۹۸

        بسم الله الرحمن الرحیم
        تشکر برای ارسال کدها.
        امکان دارد بفرمایید در دستور echo چگونه باید

        پاسخ
      2. حسن شفیعی ۹ تیر ۱۳۹۸

        خواهش می کنم.
        به صورت زیر به جای تک کوتشین از دابل کوتیشن بهره ببرید

        echo “

        • menu $title

        “;

        پاسخ
      3. امید ۹ تیر ۱۳۹۸

        امید

        بسم الله الرحمن الرحیم
        تشکر مجدد برای پاسخگویی شما
        امکان دارد بفرمایید در دستور echo چگونه باید از ul و li و a استفاده کنم.
        و cat_title را در ul و li و a قرار دهم.

        پاسخ
      4. حسن شفیعی ۹ تیر ۱۳۹۸

        خواهش می کنم.

        echo ‘

        ‘;

        پاسخ
دوره های آموزشی