0

投稿フォームからユーザーのコメントを収集し、それらを 1 ~ 10 で評価できるページにすべて出力するサイトを作成しています。評価システムの部分に問題があります。

「SendRating.php」を介して値を投稿する評価用のラジオボタンを備えたフォームがあります。また、特定のコメントと特定の評価に関連付けられている「id」である、以前に使用された変数も送信したいと考えています。これを行うために非表示の入力を使用しようとしましたが、正しい構文を取得できないようで、何を試してもエラーが発生するようです。

私が持っている両方のphpファイルをお見せします:

<?php
    $con=mysqli_connect("host","me","pwd","base");
    // Check connection
    if (mysqli_connect_errno($con))
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $query= "SELECT  id, comment, date_made, rating FROM table ORDER BY id DESC LIMIT 15";
    $result=mysqli_query($con, $query);
while ($row=mysqli_fetch_array($result))
    {
        $date=$row['date_made'];
        $id=$row['id'];
        $num_id=intVal($id);
        $current=$row['rating'];

        echo '<div id="text" onpaste="return false"; oncut="return false"; readonly>';
        echo '<div id="text2">';
        echo "Submitted: ";
        echo date('l jS F Y H:i:s ',strtotime($date));echo '&nbsp;'; echo '&nbsp;'; 
        echo '&nbsp;'; echo "No: ";  echo $row['id']; 
        echo '</div>';

        echo '<br>'; 
        echo nl2br($row['comment']);
        echo '<br>'; echo '<br>'; 
        echo '</a>';

        //FOOT
        echo '<div >'; 
        echo '<form id="radio" name="input_rating" action="SendRating.php"     method="post" >';
        echo '<input type="hidden" name="id" value="'$id'" >';
        echo '<input  id="radio" type="radio" name="rating"  onclick="this.form.submit()" value="1">1';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="2">2';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="3">3';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="4">4';
        echo '<input  id="radio" type="radio" name="rating"     onclick="this.form.submit()" value="5">5';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="6">6';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="7">7';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="8">8';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="9">9';
        echo '<input  id="radio" type="radio" name="rating" onclick="this.form.submit()" value="10">10';

        echo '&nbsp;'; echo '&nbsp;'; echo '&nbsp;'; echo  "Rating: ";
        echo '&nbsp';
        echo  "$current";
        echo '</form>';

        echo '</div>';

        //END FOOT

         echo '</div>'; 
         echo '<p></p>';
    }
?> 

フォーム アクションは、次のように処理されます (または、すべてが機能していた場合)。

<?php
    $con2=mysqli_connect("host","me","pwd","base");

    // Check connection
    if (mysqli_connect_errno($con2))
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
        $value=$_POST['rating'];
        $id=$_POST['id'];

    mysqli_query  ($con2, "UPDATE table SET totalraters = totalraters + 1 WHERE id='$id' ");
    mysqli_query  ($con2, "UPDATE table SET ratingsum = ratingsum + '$value' WHERE id='$id' ");

    $query2 = mysqli_query ($con2, "SELECT FROM table ratingsum, totalraters WHERE id = '$id' ");
    $result2 = mysqli_query($con2, $query2);
    $row2 =mysqli_fetch_array($result2);

    $ratingsum=$row2['ratingsum']; 
    $totalraters=$row2['totalraters'];
    $current = $ratingsum/$ratingtotal;
    mysqli_query ($con2, "INSERT INTO table rating VALUE '$current' WHERE id='$id' ");

    include ('/index.html')
?>   

インクルード ページは、評価が更新される開始ページにユーザーを戻す必要があります。

ratingsum は与えられた評価の合計で、totalraters は評価した人の数です。$current は、現在の評価を与える平均である必要があります。

今悩んでいる回線は

echo '<input type="hidden" name="id" value="'$id'" >';

さらなるクエリで使用するために、ある場所から別の場所への ID を取得できないようです。この行の構文エラーが発生します。ありがたいことに助けを受け取り、正しい解決策以外はすべて試したと信じています!! 私は初心者でオブジェクト指向をまったく理解できないので、プロシージャルを使用してください...頭が痛くなります;-)

4

2 に答える 2