آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

چطور یک سیستم لایک پیاده سازی کنم؟

PandaStudio  11 سال پیش  11 سال پیش
+2 0

سلام دوستان

من برای یکی از برنامه هام که با وبسرویس نوشتم نیاز دارم لایک کردن را پیاده سازی کنم طوری که آدرس ایمیل یا اکانت فرد لایک کننده هم توی جدول ذخیره بشه ولیست تمام لایک کنندگان یک آیتم را داشته باشم توی موارد زیر راهنمایی می خواستم

1 - امکانات : نمایش تعداد لایک ها، هرفرد یکبار لایک کنه و اگه مجدد دکمه لایک را زد دیسلایک بشه، نمایش نام کاربری لینک کنندگان، اگه درحالت آفلاین لایک کرد وقتی آنلاین شد اتوماتیک جدول اصلی بروز بشه(مثل سرآشپز پاپیون)

2 - میخواستم ببینم ساختار جداول باید چطور باشه و اینکه لیست لایک کنندگان با باید کجا و چطور ذخیره کنم

3 - یک نمونه از کوئری اگه براتون امکان پذیره

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
احمد اسدی  11 سال پیش
+5 0

اگر ارسال مطالب یک طرفه هستش و فقط شما ارسال میکنین، به این شکل عمل میکنیم.

فرض میکنیم سه تا جدول داریم.

  • جدول مطالب :
 
+---------+-------------+------+-----+---------+-------+
| Field   | Type        |
+---------+-------------+------+-----+---------+-------+
| id      | int         |
| title | varchar(20) | | contetn | TEXT |
| num_like| int | | date | DATETIME | +---------+-------------+------+-----+---------+-------+
  • جدول کاربران (ثبت نام شده) :
 +---------+-------------+------+-----+---------+-------+
| Field   | Type        |
+---------+-------------+------+-----+---------+-------+
| id      | int         |
| name    | varchar(50) |
| username| varchar(50) |
| password| varchar(50) |
| email | varchar(50) |
+---------+-------------+------+-----+---------+-------+
  • جدول لایک:
 +---------+-------------+------+-----+---------+-------+
| Field   | Type        |
+---------+-------------+------+-----+---------+-------+
| id      | int         |
| user_id | int | | post_id | int |
| type | TINYINT | | date | DATETIME | +---------+-------------+------+-----+---------+-------+

هر کاربر وقتی مطلبی رو لایک میکنه، باید id مطلب + username یا user_id اون شخص به سرور ارسال بشه.

فرض میکنیم، id مطلب برابر است با 36 و user_id اون شخصی که لایک کرده هم 17.

با یک کوئری مقادیر رو به جدول "لایک" insert میکنم.

ضمنآ قبل از insert باید بررسی کنیم آیا چنین رکوردی در جدول "لایک" قبلا ثبت شده یا خیر.

حالا فرض میکنیم ثبت نشده؛ پس خواهیم داشت :

  +---------+-------------+------+-----+---------+-------+
| Field   | value      |
+---------+-------------+------+-----+---------+-------+
| id      | 1          |
| user_id | 17 | | post_id | 36 |
| type | 1 | | date | 2014-06-12 | +---------+-------------+------+-----+---------+-------+

الان چیزی که نامفهومه فیلد "type" هستش، که برای بار اول وقتی کاربر روی لایک کلیک میکنه این مقدار برابر با 1 است (یعنی لایک شد) و اگر اون کاربر دوباره روی لایک اون پست کلیک کرد، و پارامتر ها به سرور ارسال شد، قبل از insert اون شرطی که گذاشته بودیم، چون اینبار چنین رکوردی در جدول "لایک" وجود داره، ما باید type اون رکورد رو به صفر Update کنیم (یعنی لایک برداشته شد).

ضمنآ در نظر داشته باشید که اگر باز هم اون کاربر روی لایک اون پست کلیک کرد، باید شرطی داشته باشیم که type رو اینبار برابر به یک قرار بده.

 پ.ن: یه راه ساده تر هم اینه که موقعی که پارامترهای id پست و user_id به سرور ارسال میکنین، یک پارمتر جدید با نام type هم بفرستید تا واسه Update کردن کوئری راحتر باشیم. :)

و در آخر هم یادمون نره وقتی type یک شد، فیلد num_like  جدول "مطالب" یکی جمع بزنیم یا هم اینکه یکی کم کنیم :)

+ الان تعداد لایک شده های یک پست از فیلد num_like  در جدول "مطالب" مشخص هستش.

+ نمایش لایک کنندگان اون پست هم میشه از طریق user_id و post_id که در جدول "لایک" قرار داره میشه بدست آورد.

+ در آخر هم با Count کردن در کوئری، میشه تعداد بیشترین لایک کنندگان از جدول "لایک" بیرون کشید.

 

+1 0
ممنون خیلی خوب بود. (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .