数据库

时间:2015-10-28 19:02:56

标签: php mysql mysqli addition subtraction

所以我已经在网站上建立了评级系统。目前,每个itema在任一侧都有一个加号和减号按钮以及一个可见的评级级别,在这种情况下,它的3.1为其中一个项目。

我试图对加号和减号按钮进行编程,以便当用户按下它们时,评级会增加或减少1。

目前我只实现了减号按钮,但是,当我点击它时,评级值不会减少。它保持在3.1。页面工作正常,当我点击“减号”按钮时,我得到错误调用第67行上的非对象上的成员函数execute()$stmt->execute()

这是我到目前为止的代码:

<?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"><h5>'.$obj->Rating.'</h5></div>';
        echo '<div id = "btnMin"><input type="button" id ="minus" value ="-"/></div>';
        echo '<div id = "btnPl"><input type="button" id ="plus" value ="+"/></div> ';
        echo '<br/>';
        echo '</form>';
        echo '</div>';
        echo '</td>';
        $i++; 
        if ($i == 5) {
          echo '</tr><tr>';
        }
    }
     echo '</tr></table>';
}

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

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

?>

我保持ID字段隐藏,因为我不希望它显示在网页上。我只想更新特定ID的评级。

任何信息都将受到赞赏

3 个答案:

答案 0 :(得分:0)

要在表单上使用_POST['some_name']字段,应使用值为name的属性some_name

<input type="button" name="some_name" value="Some value"/>

目前您有id="minus"未传递给服务器。至少你应该:

<input type="button" id ="minus" name="minus" value="-" />
                                 ^ we got name here

第二个想法 - 因为plus/minus按钮没有type="submit"我认为你的表单没有提交,除非你有一些隐藏的javascript。

尝试设置plus/minus按钮,如:

<input type="submit" name="minus" value ="-"/>
<input type="submit" name="plus" value ="+"/>

答案 1 :(得分:0)

或者,您可以为rating使用HTML5数字类型输入。根据broswer你将有一个小旋转器,将完成这项任务。请注意,并非所有的broswers都呈现相同的。

echo '<div class="progRating">
    <h5><input type="number" id="rating" name="rating" value="'.$obj->Rating.'"/></h5></div>';

然后您必须仅使用其新值更新评级。 更多信息:http://www.html5tutorial.info/html5-number.php

答案 2 :(得分:0)

更改您的查询:

$upsql = "UPDATE programmes SET Rating = Rating - $newRating WHERE progID='$ID'";

对此:

$upsql = "UPDATE programmes SET Rating = Rating - $newRating WHERE ProgrammeID='$ID'";

希望它能够发挥作用..