JQuery&;简化PHP星级评定

JQuery&;简化PHP星级评定,php,jquery,mysql,rating-system,Php,Jquery,Mysql,Rating System,编辑:正在讨论的插件位于 PHP初学者在这里使用一个JQuery星级代码片段,并已使其完美工作。我的问题是,它当前配置为计数和显示许多评级的平均值(对于公共应用程序)。我试图简化这个插件,这样就可以设置个人评分(就像在iTunes中给自己的歌曲评分一样)。用户可以更新他们的评级,但不存在偏星。为了让插件正常工作,我多次破坏了它,但都没有用。mysql数据库如下所示: CREATE TABLE IF NOT EXISTS `pd_total_vote` ( `id` int(11) NOT N

编辑:正在讨论的插件位于

PHP初学者在这里使用一个JQuery星级代码片段,并已使其完美工作。我的问题是,它当前配置为计数和显示许多评级的平均值(对于公共应用程序)。我试图简化这个插件,这样就可以设置个人评分(就像在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 ;
如果我能让它按照我想象的方式工作,我就不需要
计数器
列,只需要一个INT列,其中包含1到5之间的值。当前,
counter
累计投票数,而
value
汇总评分。然后使用(值/计数器)*20(百分比)显示星星。PHP文件如下(原件):


我不确定,因为我无法访问您正在使用的评级系统,但只要浏览一下您拥有的,我想您可以将计数器设置为1(如果删除它会破坏jQuery评级系统),并由人员更新该值,这样当您获取该值时,他们只能看到其值(确保值不能超过5)。这样,如果该值设置为5,那么它将显示5,因为它找不到其他评级。。。。(根据我的理解)您还必须添加一个用户id,以便知道要获取哪些人的评级(因为您希望它是个人的)。这取决于应用程序对特定数据库设计的依赖程度。

这是个好主意。我会试试看,然后尽快给你回复。谢谢你的意见。我已经编辑了OP以显示插件的链接。我找到了!谢谢,凯拉。将计数器设置为1仍然允许值增加,从而产生扭曲的结果。最终起作用的是在最后的“设置评级的函数”中更改$update。工作行如下所示:
$update=“update'pd\u total\u vote”SET counter=1,value=“.$\u GET['rating']”其中id=“$id.”
Counter始终等于1,并使其不将每个新值添加到以前的值中。我知道这仍然是一个半修复,但它会做的现在。再次感谢。
<?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);
}

?>