PDA

View Full Version : حرفه ای: ساختار درختی برای منو ها با دیتابیس



djsaeedkhan
جمعه 16 دی 1390, 18:28 عصر
سلام
من می خوام یه منوی درختی درست کنم
بدین صورت که
یه تکست باکس عنوان منو و یه کمبو باکس که میگه این زیر منوی کدوم هست
مثلا
صفحه 1 آیدی 1 زیر منو 0
صفحه 2 آیدی 2 زیر منو 1
صفحه 3 آیدی 3 زیر منو 1
صفحه 4 آیدی 4 زیر منو 3
صفحه 5 آیدی 5 زیر منو 1


یعنی صفحه 1 دوتا زیر منو داره و صفحه 4 نداره و همچنین صفحه 4 زیر منوی صفحه 3 هست
و اینا می تونن تا بی نهایت زیر منو داشته باشن

چطور میشه همچین اطلاعاتی رو بصورت منو نمایش داد؟؟

با تشکر

pejman_view
جمعه 16 دی 1390, 20:27 عصر
سلام

برای اینکار اول یک دیتابیس بسازید با فیلدهای زیر:
1- menu_id (شناسه برای آیتم های منو)
2- parent_id (شناسه آیتم والد)
3- menu_text (متن آیتم منو)

حالا مثل زیر عمل کنید:


<?php
function make_list ($parent) {
global $menus;
echo '<ol>';
foreach ($parent as $menu_id => $todo) {
echo "<li>$todo";
if (isset($menus[$menu_id])) {
make_list($menus[$menu_id]);
}
echo '</li>';
}
echo '</ol>';
}


$dbc = @mysqli_connect ('localhost', 'username', 'password', 'test') OR die ('<p>Could not
connect to the database!</p>');
$q = 'SELECT menu_id, parent_id, menu_text FROM menus ORDER BY parent_id ASC';
$r = mysqli_query($dbc, $q);
$menus = array();
while (list($menu_id, $parent_id, $menu_text) = mysqli_fetch_array($r, MYSQLI_NUM)) {
$menus[$parent_id][$menu_id] = $menu_text;
}
make_list($menus[0]);
?>

اگر فهمیدید که چی شد خوب خدا رو شکر اگر نفهمیدید بگویید تا توضیح بدهم.

با آرزوی موفقیت

djsaeedkhan
شنبه 17 دی 1390, 16:56 عصر
من مثل این مثال جلو رفتم فقط توی یه حلقه افتادم که تا بینهایت فقط اولین منو رو چاپ کرد
اگر میشه لطفا یه مثال تست شده قرار بدید

djsaeedkhan
یک شنبه 18 دی 1390, 23:41 عصر
آیا کسی راهی بلد هست برای انجام این کار

djsaeedkhan
دوشنبه 19 دی 1390, 17:49 عصر
کیست مرا یاری کند

pejman_view
چهارشنبه 21 دی 1390, 14:06 عصر
سلام

خوب نگاه کنید توضیح می دم که من چیکار کردم شاید متوجه بشی دقیقاً چطور درست کنید:

function make_list ($parent) { global $menus; echo '<ol>'; foreach ($parent as $menu_id => $todo) { echo "<li>$todo"; if (isset($menus[$menu_id])) { make_list($menus[$menu_id]); } echo '</li>'; } echo '</ol>';}
تابع make_list قراره شناسه والد را دریافت کند سپس با دریافت شناسه والد تمامی شناسه های زیر مجموعه اش را چاپ کند در صورتی که خود زیر مجموعه والد باشد دوباره همینکار را تکرار کند.
یعنی می تواند n تا زیر مجموعه را نمایش می دهد.

با آرزوی موفقیت

djsaeedkhan
چهارشنبه 21 دی 1390, 14:39 عصر
سلام دوست عزیز
با تشکر
من این روش رو پیدا کردم
فکر کنم خوب باشه
http://barnamenevis.org/showthread.php?322408-%D9%85%D9%86%D9%88-%D9%87%D8%A7%DB%8C-%D8%AF%D8%B1%D8%AE%D8%AA%DB%8C-%D8%A8%D8%A7-%D8%A8%DB%8C-%D9%86%D9%87%D8%A7%DB%8C%D8%AA-%D8%B3%D8%B7%D8%AD

Sanaz.m
یک شنبه 26 اردیبهشت 1395, 17:56 عصر
سلام
من میخوام یه منو ساده تو وب سایتم داشته باشم که اطلاعاتش از دیتابیس خونده بشه
با phpmyadmin
ولی اصلا بلد نیستم
میشه لطفا کمک کنین ممنون