PDA

View Full Version : سوال: امکان انتخاب بینهایت موضوع برای یک مطلب



Amir_Developer
سه شنبه 01 اردیبهشت 1394, 19:02 عصر
سلام دوستان
یه سوال دارم در مورد دیتابیس و نحوه پیاده سازیش تو پی اچ پی
اگه فرض کنیم تو مدیریت محتوا بخوایم برای یک مطلب چندین موضوع انتخاب کنیم ، معماری پایگاه داده مون چه جوری ؟
کوئریش چه جوری میشه ؟
مثلا تیبل ما داره :
id
title
category
body
date
حالا من بخوام به جای یه موضوع چندین تا باشه باید چطور پیاده سازی کنم ؟

reza_alie
سه شنبه 01 اردیبهشت 1394, 19:07 عصر
سلام شما می تونی یک جدول هم برای موضوعات ایجاد کنی و آدی موضوعات رو هم داخل جدول بالا ذخیره کنی این کار باعث کاهش افزونگی می شه

Amir_Developer
سه شنبه 01 اردیبهشت 1394, 19:08 عصر
اون category همون آیدی موضوعمه ، اما یه آیدی فقط میره توش ، مثلا برای پنج تا موضوع چطور باید هر 5 تا رو انتخاب کنم ؟؟:افسرده:

reza_alie
سه شنبه 01 اردیبهشت 1394, 19:17 عصر
ببین دوست عزیز فقط شما یک مطلب ایجاد می کنی و تونی قسمت موضوعت موضوعات رو با سمی کالن یا هرچیزی دیگه جدا کنی و موقع ذخیره کن میای میگی هر موقع به سمی کالن رسیدی برو رکورد بعدی

reza_alie
سه شنبه 01 اردیبهشت 1394, 19:21 عصر
اگه عجله نداری صبر کن تاشب جدولش رو برات کامل بکشم

Veteran
سه شنبه 01 اردیبهشت 1394, 19:23 عصر
این ارتباط m-n هست،یعنی هر مطلب میتونه چند دسته بندی داشته باشه و هر دسته بندی میتونه چند مطلب داشته باشه
باید یک جدول واسط قرار بدید و در اون کلید اصلی دوتا جدول در رابطه ( دسته بندی و مطالب) رو به عنوان کلید خارجی در جدول واسط قرار بدید و بعد با اون کار کنید.

Amir_Developer
سه شنبه 01 اردیبهشت 1394, 19:26 عصر
ممنونم لطف میکن ، من میخواستم مثلا 1و2و3 رو ذخیره کنم ، اما ذخیره چند تا چک باکس رو نمیدونم چه جوریه ، چون تعداد چک باکس هام نامحدوده ، بعد موقع فراخونیش میخواستم از explode استفاده کنم ، فرض کنیم بعد از نوشتن تیتر و متن از منوی موضوعات 4 تا چک باکس رو تیک بزنم ، اون چک باکس ها رو چطوری ذخیره کنم تو یه فیلد ، و هم موقع خروجی چطوری جداشون کنم !
ممنون میشم از راهنماییت.

Amir_Developer
سه شنبه 01 اردیبهشت 1394, 19:37 عصر
این مثلا منوی موضوعات به شکل چک باکس

http://8pic.ir/images/n0k6js5yo0v2y8wt8iiw_thumb.jpg (http://8pic.ir/viewer.php?file=n0k6js5yo0v2y8wt8iiw.jpg)

اینم جدول اصلی و موضوعات و واسط موضوعات

http://8pic.ir/images/llp1occsj8gbp249lcab_thumb.jpg (http://8pic.ir/viewer.php?file=llp1occsj8gbp249lcab.jpg)

حالا مشکل من تو نحوه وارد کردن مقدار چک باکس ها توی دیتابیسه ، تا حالا تعداد نا مشخص رو اینسرت نکردم ، میشه راهنمایی کنین !

rezaonline.net
چهارشنبه 02 اردیبهشت 1394, 02:09 صبح
این مثلا منوی موضوعات به شکل چک باکس

http://8pic.ir/images/n0k6js5yo0v2y8wt8iiw_thumb.jpg (http://8pic.ir/viewer.php?file=n0k6js5yo0v2y8wt8iiw.jpg)

اینم جدول اصلی و موضوعات و واسط موضوعات

http://8pic.ir/images/llp1occsj8gbp249lcab_thumb.jpg (http://8pic.ir/viewer.php?file=llp1occsj8gbp249lcab.jpg)

حالا مشکل من تو نحوه وارد کردن مقدار چک باکس ها توی دیتابیسه ، تا حالا تعداد نا مشخص رو اینسرت نکردم ، میشه راهنمایی کنین !

جواب سوالت رو veteran داد که :)


این ارتباط m-n هست،یعنی هر مطلب میتونه چند دسته بندی داشته باشه و هر دسته بندی میتونه چند مطلب داشته باشه
باید یک جدول واسط قرار بدید و در اون کلید اصلی دوتا جدول در رابطه ( دسته بندی و مطالب) رو به عنوان کلید خارجی در جدول واسط قرار بدید و بعد با اون کار کنید.




ببین دوست عزیز فقط شما یک مطلب ایجاد می کنی و تونی قسمت موضوعت موضوعات رو با سمی کالن یا هرچیزی دیگه جدا کنی و موقع ذخیره کن میای میگی هر موقع به سمی کالن رسیدی برو رکورد بعدی


روش بدی هست :)
از همون روش معمول استفاده کنید که به مشکل بر بخورید مثلا شمارش تعداد پست های یک دسته خاص !!!


روش veteran هم معمولترین روش هست در دیتابیس های رابطه ای

در مثال شما هر پست میتونه n تا دسته داشته باشه
و هر دسته هم میتونه متعلق باشه به n پست
پس میشه رابطه چند به چند

در رابطه چند به چند باید از یک جدول واسطه استفاده کنید

جدول پست(post)
id,title,body,date

جدول دسته بندی(category)
id,title

جدول واسطه (post_cat)
category_id,post_id

وقتی مثلا برای پست شماره 1 دسته های 5 و 6 و 7 رو تیک زدید به این جدول
سه رکورد وارد میکنید

vahidqara
چهارشنبه 02 اردیبهشت 1394, 09:18 صبح
درود... دوستان عزیز صرفا syntax یاد گرفتن PHP کافی نیست بعد شروع به کار کردن کنید یا پروژه بگیرید!!!!
من خیلی از این موارد میبینم متاسفانه تو فروم!!! حل کردن مشکل دوستان هم خوبه هم لذت بخش ولی دنیای وب پر از تکنولوژیه و
اینکه دیتا بیس رو ندونی یا رابطه ها رو خیلی سخته!!! چون پایه هستند... شما در ادامه کار هم حتما به مشکل بر میخورید پس یه کتاب خوب و آموزش
خوب برای دیتا بیس پیدا کنید!
موفق باشید

Amir_Developer
چهارشنبه 02 اردیبهشت 1394, 09:18 صبح
وقتی مثلا برای پست شماره 1 دسته های 5 و 6 و 7 رو تیک زدید به این جدول
سه رکورد وارد میکنید

درسته خودم میخوام ازین روش استفاده کنم ، فقط یه مشکل توی کوئری دارم ، مثلا وقتی دکمه ثبت رو زد ، چطور تعداد چک باکسها رو کنترل کنیم ؟
مثلا فرض کنیم 10 تا چک باکس بوده که 5 تاش چک خورده ، حالا برای اینسرت اون 5تا چطور باید عمل کرد ؟:متفکر:
یعنی حلقه لازمه ؟ ترتیب نام گذاری چک باکسها مهمه ؟
اینو موندم توش !!!!:گریه:

Amir_Developer
چهارشنبه 02 اردیبهشت 1394, 09:26 صبح
درود... دوستان عزیز صرفا syntax یاد گرفتن PHP کافی نیست بعد شروع به کار کردن کنید یا پروژه بگیرید!!!!
من خیلی از این موارد میبینم متاسفانه تو فروم!!! حل کردن مشکل دوستان هم خوبه هم لذت بخش ولی دنیای وب پر از تکنولوژیه و
اینکه دیتا بیس رو ندونی یا رابطه ها رو خیلی سخته!!! چون پایه هستند... شما در ادامه کار هم حتما به مشکل بر میخورید پس یه کتاب خوب و آموزش
خوب برای دیتا بیس پیدا کنید!
موفق باشید

فرمایش شما متینه ، من خودم روابط رو درک کردم دوست من ، گفتم که با دستور اس کیو الش مشکل دارم نحوه کنترل چک باکسها رو نمیدونم !
من چندید سال روی c# بودم و تازه به دنیای php اومد مشکلی توی درک دیتابیس ندارم
با این حال ممنون از توجهتون

reza_alie
چهارشنبه 02 اردیبهشت 1394, 10:54 صبح
فکر کنم این ساختار درست باشه


text

id_category

id_subject

id



...

...

...

..






جدول category


name

id



...
...



جدول subject


name

id_subject



..

...




موفق باشی

m.esmaeilzadeh
چهارشنبه 02 اردیبهشت 1394, 15:20 عصر
باید آیدی دسته ها رو implode کنی مثلا با کاراکتر ویرگول (,)
و بعدا بیای روش با کوئری like بزنی , مثل پایین :

category id = ,1,2,3,45,5,2

category like ,3,... order by harchi