繁体   English   中英

jQuery和PHP星级简化

[英]JQuery & PHP Star Rating simplified

编辑:有问题的插件位于此处

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);
}

?>

感谢您指出正确的方向,

麦克风

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM