PDA

View Full Version : جستجوی متناظر



مهرداد سیف زاده
پنج شنبه 30 آذر 1391, 18:28 عصر
در حال نوشتن یه cms کوچیک برای یادگیری php هستم
در قسمت ویرایش مطالب قبلی میخوام query کنم تا متناظر با شماره منو، نام منو از جدول منو برگردانده بشه. جدول pages من بصورت زیر هست.
96984

و جدول منو بصورت زیر تعریف شده
96985

حالا کاربر ابتدا در صفحه انتخاب متن هست که با انتخابگر (edit_page.php?PageId=) همراه با شماره صفحه به ویرایشگر میره و در اونجا میخوام کاربر بتونه حتی منوی فعلی رو هم تغییر بده با این امکان که منوی فعلی رو هم بشه نشون بده.
سوال من فقط اینه چطور متناظر با id صفحه، منوی متناظر با اون که همون menu_id باشه برگردونده بشه تا در جدول منو اسم منو رو query کنم.
مثلا شماره ۴ منوی متناظرش ۲ هست.
هر چند ابتدایی هست ممنون میشم دوستان راهنمایی کنید.

pani.khoram
جمعه 01 دی 1391, 05:07 صبح
سلام
ارتباط منو ها با صفحات ارتباطی یک به چند است یعنی یک منو فقط به یک صفحه وصل می شه و یک صفحه می تونه به چند منو وصل بشه
حالا شما لازمه یه فیلد در جدول منو هاتون اضافه کنید به اسم شناسه صفحه و در ان شناسه صفحه رو قرار بدید .
این طوری وقتی که شماره صفحه رو از کاربر گرفتید ، رکورد متناظر با ان رو در جدول منو هاتون خیلی راحت پیدا میکنید .
شکل ارتباطی شما الان به این صورت که کلید خارجی در صفحه قرار گرفته در حالتی که این اشتباه است ، شما نمی تونید به یک منو چند صفحه رو اختصاص بدید
ولی می تونید به یک صفحه چند منو رو اختصاص بدید
حالا menu_id در جدول صفحه ها رو پاک کنید و به جاش در جدول منوهاتون کلید خارجی Page_id رو قرار بدید
موفق باشید

مهرداد سیف زاده
جمعه 01 دی 1391, 12:43 عصر
این کار رو انجام دادم
راهنماییتون خیلی مفید بود.
اما
سوالم جستجو در همین جدول pages هست که مثلا در رکورد ۴ که id اون 4 هست در همون رکورد شماره متناظر با menu_id برگردانده بشه.
یعنی عدد متناظر 4 ، 2 هست که فقط میخوام در همین جدول بر حسب رکوردهای متناظر query بشه.

ببخشید خوب توضیح ندادم

pani.khoram
شنبه 02 دی 1391, 12:03 عصر
دو راه کار :
select * from pages right join menus ON pages.menu_id = menus.id

راهکار دوم :
select * from menus where id = ( select menu_id from pages where id = XXX)

البته راهکار های دیگه هم است ، من راستش به شک افتادم که اصلا درست فهمیدم منظور سوال رو یا نه ولی توسط این دوتا کد می تونید از جدول صفحه هاتون ، رکورد متناظر در جدول منوهاتون رو به دست بیارید حالا از این جا به بعدش با کد شماست

موفق باشید