我正在尝试为网站创建评分系统。我无法从数据库中检索项目,并在每个项目下方显示5个单选按钮。 5个单选按钮的值是1到5。

我试图根据选择的单选按钮的值更新每个项目的评级。

我有以下代码:

<?php
$results = $mysqli->query("SELECT * FROM programmes ORDER BY ProgrammeName ASC");
if ($results) {
     $i=0;
     echo '<table><tr>';

     echo '<br/>';
     echo '<br/>';

     while($obj = $results->fetch_object())
    {
        echo '<td>';
        echo '<div class="tvProgs">';
        echo '<form method="post" id = "programmes" action="">';
        echo "<input type=\"hidden\" name=\"progID\" value=\"".htmlentities($obj->ProgrammeID)."\" />";
        echo '<div class="progImage"><img src="images/'.$obj->Image.'"></div>';
        echo '<div class="progTitle"><h3>'.$obj->ProgrammeName.'</h3>';
        echo '<div class="progRating"><h4>'.$obj->Rating.'</h4></div>';
        echo '<input type="radio" class="rating-input" id="rate" name="rate" value="1">';
        echo '<input type="radio" class="rating-input" id="rate" name="rate" value="2">';
        echo '<input type="radio" class="rating-input" id="rate" name="rate" value="3">';
        echo '<input type="radio" class="rating-input" id="rate" name="rate" value="4">';
        echo '<input type="radio" class="rating-input" id="rate" name="rate" value="5">';
        echo '<br/>';
        echo '</form>';
        echo '</div>';
        echo '</td>';
        $i++;
        if ($i == 5 OR $i == 10) {
          echo '</tr><tr>';
        }
    }
     echo '</tr></table>';
}



    if(isset($_POST['rate'])){
        $newRating = $_POST['rate'];
        $ID = $_POST['progID'];

        $upsql = "UPDATE programmes SET Rating = Rating + $newRating WHERE ProgrammeID='$ID'";
        $stmt = $mysqli->prepare($upsql);
        $stmt->execute();
    }

?>


除Update语句外,所有代码都可以正常工作,在该语句中,im添加到已存储在数据库中的当前评级中。

有人可以帮我解决此问题

谢谢!

最佳答案

您需要捕获错误条件,这将告诉您语句的错误(如果有的话)。另外,您应该正确使用准备好的语句,以避免安全问题。最后,您应该在显示数据之前进行数据库插入,以确保显示最新数据。

if(isset($_POST['rate'])){
    $upsql = "UPDATE programmes SET Rating = Rating + ? WHERE ProgrammeID = ?";
    $stmt = $mysqli->prepare($upsql);
    if (!$stmt) {
        echo "Error preparing: " . $mysqli->error . "<br/>";
    } else {
        $stmt->bind_param('is', $_POST['rate'], $_POST['progID']);
        if (!$stmt->execute()) {
            echo "Error executing: " . $mysqli->error . "<br/>";
        } else {
            echo $stmt->affected_rows . "rows affected<br/>";
        }
    }
}

$results = $mysqli->query("SELECT * FROM programmes ORDER BY ProgrammeName ASC");
if ($results) {
...

关于php - 根据单选按钮值更新数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33420705/

10-11 01:34
查看更多