5

このチュートリアルhttp://megarush.net/5-star-rating-system-with-php-mysql-jquery-and-ajax/をダウンロードしましたが、次のエラーが発生します。

注意: 未定義の変数: C:\xampp\htdocs\rating\rating.php の 37 行目の rat

注意: 未定義の変数: C:\xampp\htdocs\rating\rating.php の 41 行目の v

<?php
include("settings.php");
connect();
$ids=array(1,2,3);
?>
<html>
<head>
<script src="jquery.js" type="text/javascript"></script>
    <link rel="stylesheet" href="rating.css" />
<script type="text/javascript" src="rating.js"></script>
</head>
<body>
 <?php
 for($i=0;$i<count($ids);$i++)
{
    $rating_tableName     = 'ratings';
 $id=$ids[$i];
 $q="SELECT total_votes, total_value FROM $rating_tableName WHERE id=$id";
$r=mysql_query($q);
if(!$r) echo mysql_error();
while($row=mysql_fetch_array($r))
{
$v=$row['total_votes'];
$tv=$row['total_value'];
$rat=$tv/$v;

}



$j=$i+1;
$id=$ids[$i];
echo'<div class="product">
       Rate Item '.$j.'
        <div id="rating_'.$id.'" class="ratings">';
            for($k=1;$k<6;$k++){
                if($rat+0.5>$k)$class="star_".$k."  ratings_stars ratings_vote";
                else $class="star_".$k." ratings_stars   ratings_blank";
                echo '<div class="'.$class.'"></div>';
                }
            echo' <div class="total_votes"><p class="voted"> Rating:     <strong>'.@number_format($rat).'</strong>/5 ('.$v. '  vote(s) cast) 
        </div>
    </div></div>';}
 ?>
</body></html>
4

6 に答える 6

1

$ratループ の$v範囲内で定義されています。while

それらをグローバルに (ループの外で) 宣言すると、残りのコードはそれらを認識します。

$rat = 0;
$v = 1;
while($row=mysql_fetch_array($r))
{
    $v=$row['total_votes'];
    $tv=$row['total_value'];
    $rat=$tv/$v;
}
于 2013-06-08T22:20:32.043 に答える
1

ここを参照してください: http://bgallz.org/988/javascript-php-star-rating-script/

これは、与えられたさまざまな評価の URL を生成する Javascript コードと、評価が与えられる前後の星の表示の変化を組み合わせたものです。

オーバーレイ DIV は、評価が与えられた後に表示されるため、すぐに評価を与えることはできません。また、1 人のユーザーからの複数の評価を防ぐために、評価の送信と共にユーザーの IP アドレスを保存します。

これは、スター評価用の Javascript と PHP のみを使用したシンプルで使いやすいスクリプトです。

于 2013-09-30T15:41:39.000 に答える
0

問題は、これらの変数のスコープが原因です。while ループの外側でこれらの変数をエコーし​​ようとしている場合。変数はループ内で作成 (および割り当て) されたため、PHP は変数を見つけることができません。これを解決するには、外側の両方の変数にも空白の値を割り当てます。

if(!$r) echo mysql_error();
$rat = 0;
$v = 1;    // In case there are no records.
while($row=mysql_fetch_array($r))
{
    $v = $row['total_votes'];
    $tv = $row['total_value'];
    $rat = $tv/$v;
}
于 2013-06-08T22:19:52.730 に答える
0
<style>
.star {
    font-size: x-large;
    width: 50px;
    display: inline-block;
    color: gray;
}
.star:last-child {
    margin-right: 0;
}
.star:before {
    content:'\2605';
}
.star.on {
    color: red;
}
.star.half:after {
    content:'\2605';
    color: red;
    position: absolute;
    margin-left: -20px;
    width: 10px;
    overflow: hidden;
}
</style>
<div class="stars"> 
<?php 
    $enable = 5.5;  //enter how many stars to enable
    $max_stars = 6; //enter maximum no.of stars
    $star_rate = is_int($enable) ? 1 : 0;
    for ($i = 1; $i <= $max_stars; $i++){ ?>
    <?php if(round($enable) == $i && !$star_rate) { ?>
            <span class="<?php echo 'star half'; ?>"></span>
    <?php } elseif(round($enable) >= $i) { ?>
            <span class="<?php echo 'star on'; ?>"></span>
    <?php } else { ?>
        <span class="<?php echo 'star'; ?>"></span>
    <?php } 
    }?>
</div>
于 2016-11-29T05:13:03.813 に答える
0
  var cname=document.getElementById(id).className;
  var ab=document.getElementById(id+"_hidden").value;
  document.getElementById(cname+"rating").innerHTML=ab;

  for(var i=ab;i>=1;i--)
  {
     document.getElementById(cname+i).src="star2.png";
  }
  var id=parseInt(ab)+1;
  for(var j=id;j<=5;j++)
  {
     document.getElementById(cname+j).src="star1.png";
  }

http://talkerscode.com/webtricks/star-rating-system-using-php-and-javascript.phpのコード

于 2016-02-26T18:46:09.907 に答える
0

これをコード内の nide 通知エラーの先頭の行に追加します。

error_reporting(E_ALL ^ E_NOTICE);

ほとんどの場合、通知エラーはプログラムに影響しません。投票が記録されていない場合は、Cookie を削除し、別の IP アドレスから投票してみてください。このスクリプトには、同じ製品で同じユーザーによる複数の投票を避けるために、同じ IP または訪問者からの投票を受け入れない機能があります。

于 2013-06-09T09:00:37.107 に答える