PHP: концепция системы звездных рейтингов?

Я использую PHP / MYSQL / JQUERY.

У меня есть сайт, на котором есть раздел новостей. На странице сведений о новостях я хочу добавить систему звездных рейтингов, которая позволит пользователю оценивать новость. Я использую эту систему оценки jquery http://www.fyneworks.com/jquery/star-rating/

Теперь я не понимаю, какой будет структура базы данных и что мне нужно кодировать на PHP. Мне нужно, какая логика будет применяться для этого, например, если за статью проголосовало 1000 человек, некоторые дали оценку 2 или 3 или 1 или 5. Тогда Где я должен хранить (структура базы данных) все это и что я буду рассчитывать (в php код).

Если у кого-то есть статья, раскрывающая эту концепцию, просьба предоставить.

Помогите, пожалуйста, разобраться в логике и концепции этого.

Спасибо!


person Prashant    schedule 23.12.2010    source источник


Ответы (2)


вот очень простой пример mysql:

drop table if exists image;
create table image
(
image_id int unsigned not null auto_increment primary key,
caption varchar(255) not null,
num_votes int unsigned not null default 0,
total_score int unsigned not null default 0,
rating decimal(8,2) not null default 0
)
engine = innodb;

drop table if exists image_vote;
create table image_vote
(
image_id int unsigned not null,
user_id int unsigned not null,
score tinyint unsigned not null default 0,
primary key (image_id, user_id)
)
engine=innodb;

delimiter #

create trigger image_vote_after_ins_trig after insert on image_vote
for each row
begin
 update image set 
    num_votes = num_votes + 1,
    total_score = total_score + new.score,
    rating = total_score / num_votes  
 where 
    image_id = new.image_id;
end#

delimiter ;

insert into image (caption) values ('image 1'),('image 2'), ('image 3');

insert into image_vote (image_id, user_id, score) values
(1,1,5),(1,2,4),(1,3,3),(1,4,2),(1,5,1),
(2,1,2),(2,2,1),(2,3,4),
(3,1,4),(3,5,2);

select * from image;
select * from image_vote;
person Jon Black    schedule 23.12.2010
comment
Понятно, вау, в этом случае мне даже не нужно ничего кодировать на PHP? все это будет обрабатываться mysql, не так ли? Спасибо! - person Prashant; 23.12.2010
comment
ну, вам понадобится какой-то php-код для вставки данных в таблицу image_vote и об этом :) - person Jon Black; 23.12.2010

Создатель ColorBox создал систему рейтинга jQuery / PHP, которую вы можете использовать, под названием ColorRating. ColorBox - это отличная программа, поэтому я думаю, что ColorRating тоже подойдет. Я бы проверил это, так как это может избавить вас от многих проблем:

http://colorpowered.com/colorrating/

person jeremysawesome    schedule 23.12.2010