2012-04-02 16 views
1

EDIT:問題のプラグインはhereです。JQueryとPHPの星評価は簡略化

ここではJQueryスターレーティングスニペットを使用して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 

// 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`"; 
    [email protected]_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."' "; 
    [email protected]_query($sql); 
    [email protected]_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

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

+0

これは良い考えです。私はそれを試し、あなたにできるだけ早く戻ってきます。入力いただきありがとうございます。私はプラグインへのリンクを表示するためにOPを編集しました。 – TheNally

+0

私はそれを出しました!ありがとう、@キラ。カウンタ= 1に設定しても値は増加し、歪んだ結果が得られました。最終的には、最終的に "評価を設定する機能"の$ updateを変更していました。 $ _GET ['rating']。 "WHERE id = '"。$ id。 "'"; '常にカウンターは、次のようになります:' $ update = "UPDATE" pd_total_vote 'SET counter = 1、value = 1に等しく、各新しい値が前の値に加算されないようにする。私はこれがまだ半分の修正であることを認識していますが、それは今のところ行います。再度、感謝します。 – TheNally

+0

それは素晴らしいことです。 :) – Kyra