PDA

View Full Version : انجام محاسبات برای سیستم ستاره دهی



parniaznet
جمعه 21 فروردین 1394, 21:12 عصر
سلام
وقت بخیر
من نیاز دارم یه سیستم ستاره دهی با ماکزیمم 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");

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

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

reza_alie
جمعه 21 فروردین 1394, 21:20 عصر
سلام دوست عزیز دیتا بیس رو همراه با کد هات بفرست نگاه کنم
موفق باشی

parniaznet
جمعه 21 فروردین 1394, 21:49 عصر
کد های وب سرویس :


<?php
$response = array();
if (isset($_POST['id'])) {
$id = $_POST['id'];
$table = $_POST['table'];
$valuerate = $_POST['valuerate '];
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();

$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 + 1));

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

$result = mysql_query("SELECT * FROM $table WHERE id = $id");
if (!empty($result)) {
// check for empty result
if (mysql_num_rows($result) > 0) {
$result = mysql_fetch_array($result);
$product = array();
$product["rate"] = $result["rate"];
$product["nrate"] = $result["nrate"];
$response["success"] = 1;
$response["product"] = array();
array_push($response["product"], $product);
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "No product found";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "No product found";
echo json_encode($response);
}
}
else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";

// echoing JSON response
echo json_encode($response);
}
?>


من مقادیر رو از اندروید میفرستم و در اندروید میگیرم
دیتابیس چیز خاصی نداره کلا همون 2 تا ستونش الان مورد استفاده هست
rate = میانگین امتیازات
nrate = تعداد امتیاز دهندگان