编辑:有问题的插件位于此处。
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);
}
?>
感谢您指出正确的方向,
麦克风