2

編集: 問題のプラグインはここにあります

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 ;

想像どおりに動作させることができれば、列countervalue列の両方を必要とせず、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);
}

?>

正しい方向へのポイントをありがとう、

マイク

4

1 に答える 1

1

使用している評価システムにアクセスできないのでわかりませんが、持っているものを一瞥するだけで、カウンターを1に設定したままにして(削除するとjQuery評価システムが壊れた場合)、その人が値を更新できると思います。したがって、フェッチすると、値のみが表示されます(値が5を超えないようにしてください)。そうすれば、値が5に設定されている場合、他の評価が見つからないため、5が表示されます...(私の理解に基づく)また、ユーザーIDを追加して、どの人の評価を取得するかを知る必要があります(あなたはそれを個人的にしたいので)。これは、アプリケーションが特定のデータベース設計にどの程度依存しているかによって異なります。

于 2012-04-02T20:00:14.873 に答える