PDA

View Full Version : سوال: چگونه مطالب سایت رو بر اساس دسته بندی دریافت کنم؟؟؟؟



amirmohammad76
شنبه 12 تیر 1395, 15:13 عصر
با سلام خدمت دوستان ، من دارم یک cms طراحی میکنم که در بخش مطالب آن دسته بندی ها اگر بیش از یکی باشد ، در دیتابیس به صورت cat 1, ca2 ذخیره میشه ، حالا من وقتی که میخوام مطالب رو بر اساس این دسته بندی ها بخوانم مشکل دارم ، مثلا اگر من سه دسته cat, cat 1,cat 2 رو داشته باشم و بخوام که فقط مطالب دسته cat رو بارگذاری کنم تمام cat 1 , cat 2 هم بارگذاری میشن!!!
دستور msql ام اینه :

mysql_query("SELECT * FROM posts WHERE category LIKE '%{$_GET['cat']}%'")

leaping
یک شنبه 13 تیر 1395, 10:34 صبح
با سلام خدمت دوستان ، من دارم یک cms طراحی میکنم که در بخش مطالب آن دسته بندی ها اگر بیش از یکی باشد ، در دیتابیس به صورت cat 1, ca2 ذخیره میشه ، حالا من وقتی که میخوام مطالب رو بر اساس این دسته بندی ها بخوانم مشکل دارم ، مثلا اگر من سه دسته cat, cat 1,cat 2 رو داشته باشم و بخوام که فقط مطالب دسته cat رو بارگذاری کنم تمام cat 1 , cat 2 هم بارگذاری میشن!!!
دستور msql ام اینه :

mysql_query("SELECT * FROM posts WHERE category LIKE '%{$_GET['cat']}%'")
اولا امیدوارم این پروژه رو برای سرگرمی و یادگیری بیشتر خودتون طراحی کنید
بعدشم این میشه


mysql_query("SELECT * FROM posts WHERE category = '.$_GET['cat'].'")

milad_d993
یک شنبه 13 تیر 1395, 10:58 صبح
فکر میکنم صفت های چند مقاره رو باید تبدیل به یه جدول کرد؛ ذخیره کردن چند مقدار توی یه فیلد و قرار دادن کاما بین اونها غیر اصولیه

Farshid007
چهارشنبه 16 تیر 1395, 13:03 عصر
این روشی که شما پیش گرفتی به هیچ عنوان پذیرفته نیست
یک جدول مجزا برای دسته ها داشته باشید
یک جدول برای اینکه هر پست مربوط به کدام دسته است
یک جدول هم برای هر پست
بعد برای سلکت کردن این ها از روابط تو در تو SQL استفاده کنید
مثال»»
141287

جدول اول سه تا دسته بندیو نشون میده
جدول دوم پست ها (همون مطلب )
جدول سوم نشون میده که هر پست مربوط به کدوم جدوله
مثال 1 »»
میخواهیم تمامی پست هایی رو انتخاب (SELECT ) کنیم که مربوط به دسته ی شماره 3 هستند .

پاسخ : (توسط سلکت تو در تو )


SELECT * FROM posts WHERE p_id IN (SELECT cating.p_id FROM cating WHERE cating.cat_id=3)

نتیجه :
پست با ایدی 1 و پست با ایدی 2

--------------------------------------------------------------------------
مثال 2»»
تمامی پست هایی رو انتخاب کنید که مربوط به دسته شماره 3 باشند اما در قسمت p_title انها عبارت php وجود داشته باشد.
پاسخ:


SELECT * FROM posts WHERE posts.p_id IN (SELECT cating.p_id FROM cating WHERE cating.cat_id=3) AND posts.p_title LIKE '%PHP%'

نتیجه :
بله درسته خالی برمیگردونه :)

sina365
پنج شنبه 17 تیر 1395, 12:57 عصر
در ضمن شما بسته به نیازتون ردیف ها رو فراخوانی کنید و همیشه استفاده از * راه حل خوبی نیست و فشار بیهوده ای برروی سرور قرار میگیره.