جستجو در بخش : سوال جواب منابع اسلامی لغت نامه ها قوانین و مصوبات نقل قل ها
×

فرم ورود

ورود با گوگل ورود با گوگل ورود با تلگرام ورود با تلگرام
رمز عبور را فراموش کرده ام عضو نیستم، می خواهم عضو شوم
×

×

آدرس بخش انتخاب شده


جهت کپی کردن میتوانید از دکمه های Ctrl + C استفاده کنید
رویداد ها - امتیازات
در حال بارگذاری
×

رویداد ها - امتیازات

برای بررسی عملکرد فعالیت و امتیازات خود باید در وب سایت وارد باشید. در صورت عضویت از بخش بالای صفحه وارد شوید، در غیر این صورت از دکمه پایین، مستقیم به صفحه ثبت نام وارد شوید.


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

دلیل درخواست بستن پست

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

اسکریپت منو زیر منو در php mvc


2
0
779
public 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

ولی فقط زیر منو ها رو کنار هم لیست کرد مثل عکس زیر اصلا منوهامو نشون نمیده

توضیح تصویر

تکنولوژی برنامه-نویسی
ویرایش شده در 4 سال قبل
سوال شده در داود  فردعباسی
18 امتیاز


«میخوام پاس بدم به کنترلر که تو ویو نمایش بدم» ..! میشه بفرمایید آیا از فریم ورک خاصی هم استفاده میکنید یا خیر؟ ــ ساناز رضایی در 4 سال قبل

سلام وقت بخیر نه خود mvc هست ــ داود فردعباسی در 4 سال قبل

خب کاری که الان دارید انجام میدید شما، اینه که خروجی یک کوئری رو مستقیم برمیگردونید. بنده معماری کد شما رو نمیدونم و اطلاع ندارم که این متدد category() کجا داره صدا زده میشه؛ اگه اشتباه نکنم، شما با یک تغییر کوچیک در کوئریتون میتونید به چیزی که میخواید برسید، فقط کافیه که کوئریتون «منوهایی رو سلکت بکنه که زیر منو دارن». این تئوری درسته؟ و اگه هیچی رو سلکت نکرد خب نتیجه این تابع میشه null و طبیعتا هیچ منو-ای ساخته نمیشه. این رو میخواید؟ ــ سعید مرادی در 4 سال قبل

سلام وقت بخیر این تابع داخل controller فراخوانی میشه و به ویو پاس داده میشه که نمایش بده من میخوام که منوها رو نشون بده مثلا اجتماعی اقتصادی فرهنگی و ...... حالا اگر مثلا اجتماعی زیر منو داشت برام بیاره اگر نداشت که هیچ همونو نمایش بده ــ داود فردعباسی در 4 سال قبل

آها، پس شما میخواید در هر صورتی منو رو بیاره، حالا اگه زیر منو هم داشت اونم بیاره، درسته؟ چیزی که توی سوالتون نوشتید این رو نمیرسونه. به هر حال، ساختار جدولتون (table schema) رو لازم داریم که بتونیم کوئریش رو بنویسیم برات. احتمالا به یک LEFT JOIN احتیاج داری ــ سعید مرادی در 4 سال قبل

ببخشید من تازه تو سایت ثبت نام کردم چطوری میتونم ساختار db رو براتون بزارم؟ ــ داود فردعباسی در 4 سال قبل
1
@سعید.مرادی شاید تمام دیتای منو و زیر منو رو توی یک جدول نگهداری کرده باشه، در اون صورت باید self join بزنه. و همچنین در این صورت من فکر میکنم به لوپ loop توی view هم احتیاج پیدا میکنه. ــ ساناز رضایی در 4 سال قبل

خب الان توی این عکسی که گذاشتی، منطق ستون های parent و m_menu رو هم لطف کن اضافه کن به سوالت. که اگه 0 باشه یعنی چی، اگه 1 باشه چطور؟ 2 هم داریم ظاهرا ... خلاصه منطقشون رو توضیح بده که بشه کوئری نوشت. ــ سعید مرادی در 4 سال قبل

@ساناز.رضایی ا اره و طبق عکسی که ضمیمه سوالش کرده منم الان همین حدس رو میزنم که احتمالا باید همون self-join رو که فرمودید از نوع LEFT زد. البته مطمین نیستم. ــ سعید مرادی در 4 سال قبل
1
parent:0 یعنی منو والد هست منوی اصلی مثل صفحه اصلی درباره ما تماس با ما و ...... اگر parent صفر نباشه یعنی زیر منوی یک منوی دیگست مثلا الان اجتماعی parent :0 هست و منوی اصلی هست بعد بهداشت و رفاه parent:2 هست یعنی زیر منوی اجتماعیه M_menu هم برای تفکیکشونه یه منو توی صفحه دارم و اونای که m_memu : 0 دارن اونجا نمایش داده میشن و یه منوی کناری دارم اونایی که m_menu:1 هست رو اونجا نمایش میدم ــ داود فردعباسی در 4 سال قبل

بله آقای @سعید.مرادی درست میگن. الان باید منطق دیتا مدلتون رو توضیح بدید. به عبارت بهتر، این منطق parent = 1 and m_menu = 2 چه سطرهایی رو انتخاب میکنه؟ مثلا فقط منوها رو؟ یا فقط زیر منوها رو؟ یا ..؟ ــ سروش قادری نسب در 4 سال قبل

آها من پیامتو یک مقدار دیر دیدم. پس parent یا 0 هست که نمایانگر اصلی بودن منو هست، یا یک عدد غیر صفر هست که نمایانگر آیدی والد اون منو هست. درسته؟ ــ سروش قادری نسب در 4 سال قبل

بله درسته ــ داود فردعباسی در 4 سال قبل

خروجی print_r($res); die; چیه؟ ــ سجاد شفی زاده در 4 سال قبل

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) "سایر " } } ــ داود فردعباسی در 4 سال قبل

فقط زیر منوها میاد منوی اصلی نمیاد این var_dump --- $res هست ــ داود فردعباسی در 4 سال قبل

یعنی مثلا سایر جزو زیر منوها هست؟ ــ سجاد شفی زاده در 4 سال قبل

سایر هست و بله جز زیر منوهاست ــ داود فردعباسی در 4 سال قبل

یعنی توی خروجی «اجتماعی» موجود نیست؟ احتمالش خیلی کمه ها ــ سعید مرادی در 4 سال قبل

جوابم رو ویرایش کردم ــ سعید مرادی در 4 سال قبل

نه نیست - نه فقط اجتماعی کلا منو های اصلیم نمیاد ــ داود فردعباسی در 4 سال قبل

الان دقیقا توی WHERE چی داری؟ ــ سجاد شفی زاده در 4 سال قبل

500 کاراکتر باقی مانده

2 جواب

2

به عنوان یک سر نخ این کوئری پیشنهادی منه:

SELECT m.name, ms.name
FROM menu m
LEFT JOIN menu ms 
ON m.id = ms.parent AND ms.parent <> 0
WHERE m.parent = 0

همونطور که میبینی جدول menu رو با خودش JOIN زدم. یک بار به عنوان «منوی اصلی» (با عنوان m) و یک بار هم به عنوان زیر منو (با عنوان ms). و در آخر هم مشخص کردم که m.parent = 0 که باعث میشه فقط عناوین منوی اصلی در ستون اول، یعنی همون ستون منوی اصلی قرار بگیرن و بعدم ms.parent <> 0 که باعث میشه عناوین منوی اصلی رو توی ستون زیر منو (ستون دوم) نیاره.

همچنین توی select هم من فقط name رو نوشتم، خودت هر چیزی رو که لازم داری سلکت کنی اضافه کن.

نکته: محض اطلاعت، هدفم از استفاده s (در ms) به خاطر نمایانگر بودنش برای واژه sub هست.

ویرایش شده در 4 سال قبل
جواب داده شده در سعید مرادی
1858 امتیاز

500 کاراکتر باقی مانده


-1

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

SELECT * FROM menu m1
LEFT JOIN menu m2
 ON m1.id = m2.parent
WHERE m1.parent = ? and m_menu = ?

به این صورت اگر منویی حاوی زیر منو باشه هم در این کویری بر میگردد

جواب داده شده در فرید صالحی
194 امتیاز


m1 و m2 چی هستن؟؟؟؟؟ ــ داود فردعباسی در 4 سال قبل

نام موقت برای جدول یا alias (اطلاعت بیشتر)[آدرس بدون عنوان ] ــ فرید صالحی در 4 سال قبل
1
ببین واسه چی WHERE m1.parent = ? and m_menu = ? رو نوشتی؟ من حدس میزنم که سوال پرسنده میخواد یک منو بسازه، و هیچوقت قرار نیست یک عنوان خاص رو سلکت بکنه، پس m1.parent فکر نمیکنم لازم باشه توی where باشه. همینطور m_menu هم طبق چیزی که سوال پرسنده توی کامنت گفته، فقط برای نشون دادن یک سری از اون عنواین هست توی صفحات مختلفش و فکر نمیکنم نیاز باشه توی این کوئری درگیر باشه. ــ سعید مرادی در 4 سال قبل
1
اگه به این صورته که شما گفتین درسته حق با شماست @سعید.مرادی ــ فرید صالحی در 4 سال قبل

لطفا لینک توضیح راجع به Aliases در SQL رو در پیامهاتون به صورت Markdown استاندارد بنویسید. ــ سجاد شفی زاده در 4 سال قبل

500 کاراکتر باقی مانده


جواب شما
     
.....
×

×

جعبه لام تا کام


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

تبلیغات توضیحی


اقتصاد رفتاری بررسی روشهای تاثیرگذار بر رفتار کاربران
مردم همیشه به دنبال چیزهایی هستند که نمیتونن اونارو داشته باشن، و با به سادگی نمیتونن اون رو به دست بیارن.

تبلیغات تصویری


محک