کلیدستان

نسخه‌ی کامل: انجام محاسبات برای سیستم ستاره دهی
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام
وقت بخیر
من نیاز دارم یه سیستم ستاره دهی با ماکزیمم 5 ستاره راه اندازی کنم. برای این منظور دو تا ستون ساختم برای هر مطلب. یکی تعداد ارا داده شده و یکی میانگین ستاره های داده شده.
امتیاز جدید گرفته شده از کاربر رو میفرستم به وب سرویس و اونجا کدهای زیر رو اجرا می کنم برای محاسبات :

$valuerate رای جدید داده شده توسط اخرین کاربر هست،

 $afzodan = mysql_query("UPDATE $table SET nrate = nrate +1 WHERE id = $id");

با دستور بالا میام به تعداد نفراتی که رای دادن یکی اضافه می کنم

    $nrate = mysql_query("SELECT nrate FROM $table WHERE id = $id");
با دستور بالا تعداد نفراتی که رای دادن رو میگیرم

    $rate = mysql_query("SELECT rate FROM $table WHERE id = $id");
با دستور بالا میانگین امتیازات رو میگیرم

    $newrate = (($nrate * $rate) + $valuerate ) / ($nrate);

با دستور بالا میانگین جدید رو با اعمال رای جدید محاسبه می کنم

    $afzodanrate = mysql_query("UPDATE $table SET rate = $newrate WHERE id = $id");

با دستور بالا میانگین جدید رو وارد دیتابیس می کنم
    $result = mysql_query("SELECT * FROM $table WHERE id = $id");

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

مشکل کد های من کجاست؟

 
سلام.
چون قبلا nrate را یک واحد افزایش داده اید، فرمول محاسبه به صورت زیر خواهد بود :

کد پی‌اچ‌پی:
$newrate = ((($nrate-1) * $rate) + $valuerate ) / ($nrate);