PHP MySQL 数据库中的数学更新值
PHP MySQL maths update value in database
所以我在我制作的网站上建立了评级系统。目前,每个项目的两侧都有一个加号和减号按钮,以及一个可见的评级级别,在这种情况下,其中一个项目为 3.1。
我正在尝试以这样一种方式对加号和减号按钮进行编程,即当用户按下它们时,评分会增加或减少一个。
目前我只实现了减号按钮,但是,当我点击它时,评级值并没有减少。它保持在 3.1。该页面工作正常,当我单击 "minus" 按钮时,出现错误 Call to a member function execute() on a non-object on line 67 which is the $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 的评分。
任何信息将不胜感激
要在您的表单上使用 _POST['some_name']
字段,应具有值为 some_name
的属性 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 ="+"/>
或者,您可以为 rating
使用 HTML5 数字类型输入。根据浏览器的不同,您将有一个小的微调器来完成这项任务。请注意,并非所有的浏览器都呈现相同的效果。
echo '<div class="progRating">
<h5><input type="number" id="rating" name="rating" value="'.$obj->Rating.'"/></h5></div>';
然后您只需使用新值更新评分。
更多信息在这里:http://www.html5tutorial.info/html5-number.php
将您的查询更改为:
$upsql = "UPDATE programmes SET Rating = Rating - $newRating WHERE progID='$ID'";
为此:
$upsql = "UPDATE programmes SET Rating = Rating - $newRating WHERE ProgrammeID='$ID'";
希望它能奏效..
所以我在我制作的网站上建立了评级系统。目前,每个项目的两侧都有一个加号和减号按钮,以及一个可见的评级级别,在这种情况下,其中一个项目为 3.1。
我正在尝试以这样一种方式对加号和减号按钮进行编程,即当用户按下它们时,评分会增加或减少一个。
目前我只实现了减号按钮,但是,当我点击它时,评级值并没有减少。它保持在 3.1。该页面工作正常,当我单击 "minus" 按钮时,出现错误 Call to a member function execute() on a non-object on line 67 which is the $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 的评分。
任何信息将不胜感激
要在您的表单上使用 _POST['some_name']
字段,应具有值为 some_name
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 ="+"/>
或者,您可以为 rating
使用 HTML5 数字类型输入。根据浏览器的不同,您将有一个小的微调器来完成这项任务。请注意,并非所有的浏览器都呈现相同的效果。
echo '<div class="progRating">
<h5><input type="number" id="rating" name="rating" value="'.$obj->Rating.'"/></h5></div>';
然后您只需使用新值更新评分。 更多信息在这里:http://www.html5tutorial.info/html5-number.php
将您的查询更改为:
$upsql = "UPDATE programmes SET Rating = Rating - $newRating WHERE progID='$ID'";
为此:
$upsql = "UPDATE programmes SET Rating = Rating - $newRating WHERE ProgrammeID='$ID'";
希望它能奏效..