РЕДАКТИРОВАТЬ: рассматриваемый плагин находится здесь .
PHP новичок здесь использует фрагмент кода JQuery Star Rating и получил его для идеальной работы. Моя проблема в том, что в настоящее время он настроен на подсчет и отображение среднего значения многих оценок (для общедоступных приложений). Я пытаюсь упростить плагин, чтобы он позволял устанавливать личный рейтинг (как если бы вы оценивали свои собственные песни в iTunes). Пользователь может обновить свой рейтинг, но никакие частичные звезды никогда не будут существовать. Я много раз ломал плагин, пытаясь заставить его работать, но безрезультатно. База данных mysql существует следующим образом:
CREATE TABLE IF NOT EXISTS `pd_total_vote` (
`id` int(11) NOT NULL auto_increment,
`desc` varchar(50) NOT NULL,
`counter` int(8) NOT NULL default '0',
`value` int(8) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
Если бы я мог работать так, как я себе представляю, мне бы не потребовались оба столбца counter
и value
, просто один столбец INT, который содержит значение от 1 до 5. В настоящее время counter
накапливает количество голосов, а value
агрегирует рейтинги. Звезды затем отображаются с использованием (значение / счетчик) * 20 (в процентах). PHP ниже (оригинал):
<?php
// connect to database
$dbh=mysql_connect ("localhost", "user", "pass") or die ('Cannot connect to the database');
mysql_select_db ("thenally_pd",$dbh);
if($_GET['do']=='rate'){
rate($_GET['id']);
}else if($_GET['do']=='getrate'){
// get rating
getRating($_GET['id']);
}
// get data from table
function fetchStar(){
$sql = "select * from `pd_total_vote`";
$result=@mysql_query($sql);
while($rs = @mysql_fetch_array($result,MYSQL_ASSOC)){
$arr_data[] = $rs;
}
return $arr_data;
}
// function to retrieve
function getRating($id){
$sql= "select * from `pd_total_vote` where id='".$id."' ";
$result=@mysql_query($sql);
$rs=@mysql_fetch_array($result);
// set width of star
$rating = (@round($rs[value] / $rs[counter],1)) * 20;
echo $rating;
}
// function to set rating
function rate($id){
$text = strip_tags($_GET['rating']);
$update = "update `pd_total_vote` set counter = counter + 1, value = value + ".$_GET['rating']." where id='".$id."' ";
$result = @mysql_query($update);
}
?>
Спасибо за точку в правильном направлении,
Mike