PDA

View Full Version : سوال: نمایش پست های مربوط به یک دسته بندی ...



thacker
یک شنبه 04 آبان 1393, 14:43 عصر
سلام...
یه سایت ساختم که هر کدوم از مطالبش میتونه زیرمجموعه چند تا از دسته بندی های سایت باشه ...

جدول موضوعات به این صورت هست : id,category که شامل عنوان و آیدی موضوعات میشه ...
توی جدول مطالب هم یک ستون هست که موضوع والد هر مطلب رو شامل میشه ... مثلا مطلبی که شامل 2 تا از دسته بندی ها میشه به این صورت درج شده : 1,4 ( یعنی هم زیر مجموعه گروه 1 هست هم گروه 4 ) و دیگر مطالب به این صورت هستند : 2,4 - 1,2 - 4 - 4,3 - 2,3

حالا چطوری میتونم مطالبی که زیرمجموعه گروه 4 هستند رو نمایش بدم ؟
امیدوارم منظور رو رسونده باشم.
با تشکر

thacker
یک شنبه 04 آبان 1393, 23:46 عصر
با عرض پوزش این پست رو زدم که تاپیک به صفحه اول برگرده ...

Veteran
دوشنبه 05 آبان 1393, 08:37 صبح
خب اینجا رابطه n-m هست و بهتره که کلید های اصلی به صورت کلید خارجی در یک جدول واسط قرار بگیره تا کارهای اینچنینی اسونتر بشه!
چیزی که الان به ذهن من میرسه استفاده از دستور like در کوئری هست

MMSHFE
دوشنبه 05 آبان 1393, 09:16 صبح
اینو تست کنید:
SELECT * FROM `posts` WHERE (CONCAT(',', `cid`, ',') LIKE '%,{$cid},%')
توضیح: اول یک کاما به ابتدا و انتهای فیلد cid اضافه میکنه و بعد چک میکنه ببینه متغیر cid$ شما بین دو تا کاما توی نتیجه وجود داره یا نه (اضافه کردن کاما و چک کردنش در دوطرف cid برای اینه که ابتدا و انتهای رشته کاما نیست و ازطرفی اگه دوطرف همه مقادیر کاما نباشه رو چک کنیم ممکنه دسته بندی حالتی مثل 11, یا ,11 داشته باشیم که باعث بشه توی جستجو برای دسته بندی شماره 1 هم نتیجه true دریافت کنیم).
البته من هم توصیه میکنم برای ارتباط n..n از جدول واسط استفاده کنید. الان اصول نرمالسازی رو رعایت نکردین.

MMSHFE
دوشنبه 05 آبان 1393, 09:21 صبح
بهتره این لینک رو نگاه کنید. خیلی جاها توی نوشتن کوئری کمکتون میکنه:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

thacker
دوشنبه 05 آبان 1393, 11:44 صبح
خیلی ممنون از لطفتون دوستان :لبخندساده:
برای نرمالسازی چیکار باید بکنم ؟ یه جدول دیگه درست کنم آیدی مطلب و آیدی دسته بندی مربوط بهش رو توش وارد کنم ؟

MMSHFE
دوشنبه 05 آبان 1393, 11:50 صبح
بله یک جدول واسط که دو کلید اصلی داره (یکی post_id و یکی دیگه cat_id) و به ازای هر ارتباط دسته بندی بین پست و دسته مربوطه، یک رکورد اونجا درج کنید.