اسکریپت منو زیر منو در php mvc
https://lamtakam.com/qanda/2276/اسکریپت-منو-زیر-منو-در-php-mvc 2public function category($parent, $m)
{
$sql = "SELECT * FROM `menu` WHERE `parent` = ? and m_menu = ?";
$result = $this->db->prepare($sql);
$result->bindParam(1, $parent);
$result->bindParam(2, $m);
$result->execute();
$res = $result->fetchAll(PDO::FETCH_ASSOC);
return $res;
}
سلام دوستان من این کد رو نوشتم برای منو و منوهای والد رو نشون میده اونایی که parent شون 0 هست حالا میخوام توی همین اسکریپت بگم اگر منو من زیر منو داشت اونو نمایش بده اگر نداشت که هیچی چه کار بکنم اینو میخوام پاس بدم به کنترلر که تو ویو نمایش بدم.
این کدی که گفتید رو اضافه کردم
SELECT m.name, ms.name
FROM menu m
LEFT JOIN menu ms
ON m.id = ms.parent
WHERE m.parent = 0
AND ms.parent <> 0
ولی فقط زیر منو ها رو کنار هم لیست کرد مثل عکس زیر اصلا منوهامو نشون نمیده
«میخوام پاس بدم به کنترلر که تو ویو نمایش بدم» ..! میشه بفرمایید آیا از فریم ورک خاصی هم استفاده میکنید یا خیر؟ ــ ساناز رضایی در 6 سال قبل | |||
سلام وقت بخیر نه خود mvc هست ــ داود فردعباسی در 6 سال قبل | |||
خب کاری که الان دارید انجام میدید شما، اینه که خروجی یک کوئری رو مستقیم برمیگردونید. بنده معماری کد شما رو نمیدونم و اطلاع ندارم که این متدد category() کجا داره صدا زده میشه؛ اگه اشتباه نکنم، شما با یک تغییر کوچیک در کوئریتون میتونید به چیزی که میخواید برسید، فقط کافیه که کوئریتون «منوهایی رو سلکت بکنه که زیر منو دارن». این تئوری درسته؟ و اگه هیچی رو سلکت نکرد خب نتیجه این تابع میشه null و طبیعتا هیچ منو-ای ساخته نمیشه. این رو میخواید؟ ــ سعید مرادی در 6 سال قبل |
|||
سلام وقت بخیر این تابع داخل controller فراخوانی میشه و به ویو پاس داده میشه که نمایش بده من میخوام که منوها رو نشون بده مثلا اجتماعی اقتصادی فرهنگی و ...... حالا اگر مثلا اجتماعی زیر منو داشت برام بیاره اگر نداشت که هیچ همونو نمایش بده ــ داود فردعباسی در 6 سال قبل | |||
آها، پس شما میخواید در هر صورتی منو رو بیاره، حالا اگه زیر منو هم داشت اونم بیاره، درسته؟ چیزی که توی سوالتون نوشتید این رو نمیرسونه. به هر حال، ساختار جدولتون (table schema) رو لازم داریم که بتونیم کوئریش رو بنویسیم برات. احتمالا به یک LEFT JOIN احتیاج داری ــ سعید مرادی در 6 سال قبل |
|||
ببخشید من تازه تو سایت ثبت نام کردم چطوری میتونم ساختار db رو براتون بزارم؟ ــ داود فردعباسی در 6 سال قبل | |||
1 | @سعید.مرادی شاید تمام دیتای منو و زیر منو رو توی یک جدول نگهداری کرده باشه، در اون صورت باید self join بزنه. و همچنین در این صورت من فکر میکنم به لوپ loop توی view هم احتیاج پیدا میکنه. ــ ساناز رضایی در 6 سال قبل | ||
خب الان توی این عکسی که گذاشتی، منطق ستون های parent و m_menu رو هم لطف کن اضافه کن به سوالت. که اگه 0 باشه یعنی چی، اگه 1 باشه چطور؟ 2 هم داریم ظاهرا ... خلاصه منطقشون رو توضیح بده که بشه کوئری نوشت. ــ سعید مرادی در 6 سال قبل |
|||
@ساناز.رضایی ا اره و طبق عکسی که ضمیمه سوالش کرده منم الان همین حدس رو میزنم که احتمالا باید همون self-join رو که فرمودید از نوع LEFT زد. البته مطمین نیستم. ــ سعید مرادی در 6 سال قبل |
|||
1 | parent:0 یعنی منو والد هست منوی اصلی مثل صفحه اصلی درباره ما تماس با ما و ...... اگر parent صفر نباشه یعنی زیر منوی یک منوی دیگست مثلا الان اجتماعی parent :0 هست و منوی اصلی هست بعد بهداشت و رفاه parent:2 هست یعنی زیر منوی اجتماعیه M_menu هم برای تفکیکشونه یه منو توی صفحه دارم و اونای که m_memu : 0 دارن اونجا نمایش داده میشن و یه منوی کناری دارم اونایی که m_menu:1 هست رو اونجا نمایش میدم ــ داود فردعباسی در 6 سال قبل | ||
بله آقای @سعید.مرادی درست میگن. الان باید منطق دیتا مدلتون رو توضیح بدید. به عبارت بهتر، این منطق parent = 1 and m_menu = 2 چه سطرهایی رو انتخاب میکنه؟ مثلا فقط منوها رو؟ یا فقط زیر منوها رو؟ یا ..؟ ــ سروش قادری نسب در 6 سال قبل |
|||
آها من پیامتو یک مقدار دیر دیدم. پس parent یا 0 هست که نمایانگر اصلی بودن منو هست، یا یک عدد غیر صفر هست که نمایانگر آیدی والد اون منو هست. درسته؟ ــ سروش قادری نسب در 6 سال قبل |
|||
بله درسته ــ داود فردعباسی در 6 سال قبل | |||
خروجی print_r($res); die; چیه؟ ــ سجاد شفی زاده |
|||
array(52) { [0]=> array(1) { ["name"]=> string(24) "بهداشت و رفاه" } [1]=> array(1) { ["name"]=> string(24) "حقوقی و قضایی" } [2]=> array(1) { ["name"]=> string(22) "زن و خانواده" } [3]=> array(1) { ["name"]=> string(28) "دفاعی و انتظامی" } [4]=> array(1) { ["name"]=> string(10) "حوادث" } [5]=> array(1) { ["name"]=> string(9) "سایر " } } ــ داود فردعباسی در 6 سال قبل | |||
فقط زیر منوها میاد منوی اصلی نمیاد این var_dump |
|||
یعنی مثلا سایر جزو زیر منوها هست؟ ــ سجاد شفی زاده |
|||
سایر هست و بله جز زیر منوهاست ــ داود فردعباسی در 6 سال قبل | |||
یعنی توی خروجی «اجتماعی» موجود نیست؟ احتمالش خیلی کمه ها ــ سعید مرادی در 6 سال قبل | |||
جوابم رو ویرایش کردم ــ سعید مرادی در 6 سال قبل | |||
نه نیست - نه فقط اجتماعی کلا منو های اصلیم نمیاد ــ داود فردعباسی در 6 سال قبل | |||
الان دقیقا توی WHERE چی داری؟ ــ سجاد شفی زاده |