Я пытаюсь подсчитать, сколько раз определенная статья была оценена, например, сколько раз users_articles_id
3
были оценены моими участниками.
Я также пытаюсь подсчитать баллы за определенную статью, например, users_articles_id
3
относится к базе данных ratings
по ее ratings_id
, рейтинговые баллы должны составлять в общей сложности 13.
Мне было интересно, правильно ли я поступил, потому что для меня все выглядит неправильно? Я надеялся, что кто-нибудь поможет мне это исправить? И куда конкретно должен идти мой код?
Я использую PHP и MySQL?
Вот мои таблицы MySQL
CREATE TABLE articles_grades (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ratings_id INT UNSIGNED NOT NULL,
users_articles_id INT UNSIGNED NOT NULL,
user_id INT UNSIGNED NOT NULL,
date_created DATETIME NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE ratings (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
points FLOAT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
Ввод базы данных
articles_ratings
id ratings_id users_articles_id user_id date_created
1 3 2 32 2010-01-13 02:22:51
2 1 3 3 2010-01-13 02:23:58
3 2 3 45 2010-01-13 02:24:45
отзывы
id points
1 10
2 3
3 5
Вот код PHP, который я пытаюсь исправить.
// function to retrieve rating
function getRating(){
$sql1 = "SELECT COUNT(*)
FROM articles_ratings
WHERE users_articles_id = '$page'";
$result = mysql_query($sql1);
$total_ratings = mysql_fetch_array($result);
$sql2 = "SELECT COUNT(*)
FROM ratings
JOIN ratings ON ratings.id = articles_ratings.ratings_id
WHERE articles_ratings.users_articles_id = '$page'";
$result = mysql_query($sql2);
$total_rating_points = mysql_fetch_array($result);
if(!empty($total_rating_points) && !empty($total_ratings)){
// set the width of star for the star rating
$rating = (round($total_rating_points / $total_ratings,1)) * 10;
echo $rating;
} else {
$rating = 100;
echo $rating;
}
}