編集: 問題のプラグインはここにあります。
JQuery Star Rating スニペットを使用して、ここで PHP の初心者が完全に動作するようになりました。私の問題は、現在、多くの評価の平均をカウントして表示するように構成されていることです (パブリック アプリケーションの場合)。プラグインを単純化して、個人的な評価を設定できるようにしています (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
列の両方を必要とせず、1 から 5 までの値を保持する単一の INT 列だけで済みます。現在、評価を集計し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);
}
?>
正しい方向へのポイントをありがとう、
マイク