PDA

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



mosi2007
پنج شنبه 04 اسفند 1390, 02:00 صبح
سلام
مدتیه که میخوام یه شبکه اجتماعی کوچیک برای دل خودم طراحی کنم تا ببینم چه قدر php یاد گرفتم البته بعضی چیزا را شبیه فیسبوک البته بصورت خیلی ضعیف ساختم ولی تو یه چیز موندم اونم اینه که چطور یه نفر به لیست دوستام اضافه کنم البته سرچ را درست کردم که دوستان را پیدا میکند ولی موندم چطوری اینو به لیست دوستام اضافه کنم که قبلش مثله خود فیس اول اجازه بگیره از طرف بعد در صورت اجازه به لیست اضافه بشه دوستان اگه ممکنه ی خورده راجع بهش توضیح بدن ممنون میشم

Reza1607
پنج شنبه 04 اسفند 1390, 07:17 صبح
شما يك جدول رو به عنوان جدول دوستان در نظر بگيريد كه شامل فيلد هاي زير باشه
id,userid,friendid,allow,date
خوب id كه شمارنده هست (auto increment) و userid,friendid هم دو فيلد هستند كه قرار مشخص كنه كه كدوم شخص با كدوم يك از شخص هاي ديگه دوست هستند(شمارشون رو ذخيره مي كنه) و allow هم يك مقدار bool هست كه در ابتدا 0 هست و زماني كه طرف مقابل يا همون friendid درخواست رو تاييد كرد مقدار اين فيلد رو 1 مي كنيد و date هم تاريخ دادن درخواست هستش

بعد براي نشان دادن درخواست دوستي هر كاربري كه لاگين كرد شما مي يان و اين كوئري رو اجرا مي كنيد
SELECT * FROM friends WHERE allow=0 AND friendid={MEID}
كه {MEID} آي دي همون فردي هست كه لاگين كرده
اميدوارم منظورم رو رسونده باشم

mosi2007
پنج شنبه 04 اسفند 1390, 17:12 عصر
شما يك جدول رو به عنوان جدول دوستان در نظر بگيريد كه شامل فيلد هاي زير باشه
id,userid,friendid,allow,date
خوب id كه شمارنده هست (auto increment) و userid,friendid هم دو فيلد هستند كه قرار مشخص كنه كه كدوم شخص با كدوم يك از شخص هاي ديگه دوست هستند(شمارشون رو ذخيره مي كنه) و allow هم يك مقدار bool هست كه در ابتدا 0 هست و زماني كه طرف مقابل يا همون friendid درخواست رو تاييد كرد مقدار اين فيلد رو 1 مي كنيد و date هم تاريخ دادن درخواست هستش

بعد براي نشان دادن درخواست دوستي هر كاربري كه لاگين كرد شما مي يان و اين كوئري رو اجرا مي كنيد
SELECT * FROM friends WHERE allow=0 AND friendid={MEID}
كه {MEID} آي دي همون فردي هست كه لاگين كرده
اميدوارم منظورم رو رسونده باشم

مثلا من id خودم تو دیتابیس اصلی نه تو این دیتا بیس 50 است بعد من برای یه نفر که ایدیش 55 است درخواست دوستی میدم مثلا من هم 80 مین نفری هستم که درخواست دوستی میده
بعد این عمل میاد تو این جدول دوستان به این شکل قرار میگیره

id=80 userid=50 friendid=55 alow=0 date =2002 /1/1 مثلا این از این بعد وقتی میام که یه درخواست دیگه به یه نفر بدم دوباره این اطلاعاتو تو همین ایدی 80 نگه میداره یا چون auto increment است میاد یه فیلد دیگه میسازه ؟
اگه این جوری بشه این جدول زیاد قاطی پاطی و شلوغ نمیشه ؟

Reza1607
شنبه 06 اسفند 1390, 00:43 صبح
مثلا این از این بعد وقتی میام که یه درخواست دیگه به یه نفر بدم دوباره این اطلاعاتو تو همین ایدی 80 نگه میداره یا چون auto increment است میاد یه فیلد دیگه میسازه ؟
اگه این جوری بشه این جدول زیاد قاطی پاطی و شلوغ نمیشه ؟
[/RIGHT]

بله چون به صورت auto increment هست id به صورت خودكار يكي اضافه ميشه و آي دي جديد ميشه 81

mosi2007
شنبه 06 اسفند 1390, 01:42 صبح
بله چون به صورت auto increment هست id به صورت خودكار يكي اضافه ميشه و آي دي جديد ميشه 81
راه دیگه ای نیست اگه اینجوری باشه پس فیسبوک یه جدول شاید با یه میلیارد فیلد توش داره !

SadeghPro19
شنبه 06 اسفند 1390, 11:06 صبح
چرا میشه از یه راه دیگه هم استفاده کرد مثلا همین جدول بالا رو در نظر میگیریم
userid که مشخصه چیه و friendid هم که ای دی دوستامون هست بجای اینکه بیاییم یه دونه توش بزاریم هر چندتا که میخوایم باهاش دوست بشیم رو تو همین فیلد میزاریم و با یک کارکتر از هم جداشو میکنیم و واسه allow هم همینکار رو میکنیم واسه date هم میتونیم اینکار رو بکنیم.
پس اینجوری میشه:
id=80 userid=50 friendid=55,60,70 alow=1,1,0 date =2002/1/1,2002/1/2,2002/1/3
و بعد برای جدا کردن اینا هم راحت با explode میشه اینکارو کرد و واسه تقیرات هم که با یه آپدیت ساده میشه اینکارو کرد...

farhadfery
شنبه 06 اسفند 1390, 13:01 عصر
چرا میشه از یه راه دیگه هم استفاده کرد مثلا همین جدول بالا رو در نظر میگیریم
userid که مشخصه چیه و friendid هم که ای دی دوستامون هست بجای اینکه بیاییم یه دونه توش بزاریم هر چندتا که میخوایم باهاش دوست بشیم رو تو همین فیلد میزاریم و با یک کارکتر از هم جداشو میکنیم و واسه allow هم همینکار رو میکنیم واسه date هم میتونیم اینکار رو بکنیم.
پس اینجوری میشه:
id=80 userid=50 friendid=55,60,70 alow=1,1,0 date =2002/1/1,2002/1/2,2002/1/3
و بعد برای جدا کردن اینا هم راحت با explode میشه اینکارو کرد و واسه تقیرات هم که با یه آپدیت ساده میشه اینکارو کرد...
این حالت سرعت خوندن، نوشتن؛ update کم نمی شه؟

Reza1607
شنبه 06 اسفند 1390, 19:01 عصر
راه دیگه ای نیست اگه اینجوری باشه پس فیسبوک یه جدول شاید با یه میلیارد فیلد توش داره !

دوست عزيز اين بهترين راه هست
جدول دوستان در مقابل جدول لايك هيچي نيست
روشي كه دوستمون گفتن هم هست ولي پيچيدگي هاي خيلي زيادي داره