• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اجرای کوئری به ازای کسب هر 200 امتیاز
#1
دوستان سلام
فرض کنید توی سایت ما کلیه کاربران به ازای هر فعالیتی که دارند امتیاز دریافت می کنند
مثلا به ازای هر پستی که ارسال می کنند 50 امتیاز دریافت می کنند
به ازای هر ارسال نظر 35 امتیاز دریافت می کنند
به ازای هر لایک 13 امتیاز دریافت می کنند
که این امتیاز در ستون rate از جدول users ذخیره میشه یعنی هر امتیازی که کاربر دریافت میکنه به این ستون افزوده میشه
حالا من میخوام وقتی مقدار معینی امتیاز که به این ستون افزوده شد، یک کد اجرا بشه
یعنی میخوام به ازای هر 200 امتیازی که کاربر دریافت کرد، کد مورد نظر من اجرا بشه
این کدیه که نوشتم:
کد پی‌اچ‌پی:
$rate=$db2->fetch_field('SELECT rate FROM users WHERE id="'.$id.'"');

if(
$rate 200) {
$db2->query('UPDATE users SET user_rating=user_rating+10 WHERE id="'.$id.'" LIMIT 1');
}elseif(
$rate 400) {
$db2->query('UPDATE users SET user_rating=user_rating+10 WHERE id="'.$id.'" LIMIT 1');
}elseif(
$rate 600) {
$db2->query('UPDATE users SET user_rating=user_rating+10 WHERE id="'.$id.'" LIMIT 1');
}elseif(
$rate 700) {
$db2->query('UPDATE users SET user_rating=user_rating+10 WHERE id="'.$id.'" LIMIT 1');
}elseif(
$rate 800) {
$db2->query('UPDATE users SET user_rating=user_rating+10 WHERE id="'.$id.'" LIMIT 1');
}elseif(
$rate 1000) {
$db2->query('UPDATE users SET user_rating=user_rating+10 WHERE id="'.$id.'" LIMIT 1');
}elseif(
$rate 1200) {
$db2->query('UPDATE users SET user_rating=user_rating+10 WHERE id="'.$id.'" LIMIT 1');
}elseif(
$rate 1400) {
$db2->query('UPDATE users SET user_rating=user_rating+10 WHERE id="'.$id.'" LIMIT 1');

ولی خب به دو دلیل کد خوبی نیست:
1-اول اینکه کد نویسی زیادی داره مثلا اگر خواسته باشم تا 10000 بنویسم خیلی کد میشه
2-دوم اینکه فرض کنید یک کاربر امتیازش 220 شد، اونوقت هر وقت وارد ناحیه کاربریش بشه، کوئری من اجرا میشه درحالیکه من میخوام به ازای هر 200 امتیاز یک بار اجرا بشه
ممنون میشم راهنمایی کنید.
  پاسخ
تشکر شده توسط :
#2
سلام و وقت بخیر

به نظر من ، دوتا ستون در نظر بگیرین ، یکی برای جمع کل امتیاز ها ، و یک مورد برای امتیازهایی که هنوز کد شما اجرا نشده.
روال هم بدین شکل میشه که ، بعد از هر ثبت امتیاز ، مقدار فیلد دوم رو بررسی کنین اگر به 200 یا بالای 200 رسیده بود کد خودتون رو اجرا کنین.
اگر خود 200 بود ، مقدار رو به 0 تغییر بدین. اگر بالای 200 ، مثلا 230 باید مقدار 30 نگه داشته شود.

موفق باشید
  پاسخ
تشکر شده توسط : kingblog
#3
ممنون دوست عزیز از پاسختون
به نظرم تنها راهش یا ساده ترین راهش همینه
رو همین کار می کنم ببینم چجوری میشه
  پاسخ
تشکر شده توسط : ayoubsys


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان