PDA

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



idocsidocs
چهارشنبه 23 فروردین 1391, 10:18 صبح
موقع نمایش محصولات هر گروه، چطور باید محصولات زیر گروه اون محصول رو نمایش بدم؟

MMSHFE
چهارشنبه 23 فروردین 1391, 13:16 عصر
توی جدول محصولات یک فیلد برای مشخص کردن گروه مربوط به هر محصول بگذارین و با شرط Where فقط محصولاتی رو نشون بدین که اون فیلدشون با شماره گروهی که درحال نمایشش هستین یکسان باشه.

idocsidocs
چهارشنبه 23 فروردین 1391, 14:28 عصر
الان از همین روش استفاده می کنم ولی با این روش می شه هر محصول رو فقط عضو یک گروه کرد.

اگر بخوام هر محصول عضو چند گروه باشه باید چیکار کنم؟

MMSHFE
چهارشنبه 23 فروردین 1391, 15:16 عصر
خوب میتونید موقع ثبت محصول، تمام گروههایی که میخواین عضوش باشه رو توی یک آرایه بگذارین و مشابه مثال زیر، یک رشته حاوی تمام گروهها بدست بیارین:


$cat = '';
foreach($groups as $group) {
$cat .= " {$group} ";
}

از اونجا که قبل و بعد از هر گروه یک Space درج شده، موقع خوندن میتونید به این شکل محصولات هر گروه رو نشون بدین:

$products = mysql_query("SELECT * FROM `products` WHERE (`group` LIKE '% {$group_id} %')");
اینطوری، رکوردهایی که توی فیلد group اونها شناسه گروه جاری یعنی group_id$ همراه با Space قبل و بعدش وجود داشته باشه، پیدا و استخراج میشه.
موفق باشید.

idocsidocs
چهارشنبه 23 فروردین 1391, 17:03 عصر
اینطوری ممکنه دو گروه gr1 gr2 gr3 که شبیه به هم هستن رو هم استخراج کنه. یعنی اگر محصول فقط عضو gr1 باشه، این محصول توی سایر گروهها هم نمایش داده می شه.

راه دقی تری نیست؟

MMSHFE
چهارشنبه 23 فروردین 1391, 22:55 عصر
نه دیگه گروههای شبیه هم استخراج نمیشه چون id گروهها با هم فرق میکنه. درواقع داریم میگیم رکوردهایی رو پیدا کنه که group_id اونها توی فیلد group وجود داشته باشه. مثلاً فرض کنید کالایی توی فیلد group این مقدار رو داشته باشه:
gr1 gr3
و کالای دیگه این groupها رو داره:
gr1 gr2
دقت کنید که قبل و بعد از اسم هر گروه یک Space داریم.
حالا این کوئری رو برای پیدا کردن کالاهای گروه 3 مینویسیم:
SELECT * FROM `proructs` WHERE (`group` LIKE '% gr3 %')
خوب با این کار فقط کالای اول پیدا میشه. اما اگه بنویسیم:
SELECT * FROM `products` WHERE (`group` LIKE '% gr1 %')
هر دو کالا پیدا میشن.
موفق باشید.