PHP MySQL математическое обновление значения в базе данных

Итак, у меня есть система рейтинга на сайте, который я создаю. В настоящее время каждая итера имеет кнопки «плюс» и «минус» с каждой стороны, а также видимый уровень рейтинга, в данном случае это 3.1 для одного из элементов.

Я пытаюсь запрограммировать кнопки «плюс» и «минус» таким образом, чтобы, когда пользователь нажимал их, тогда рейтинг увеличивался или уменьшался на единицу.

В настоящее время реализована только кнопка «минус», однако при нажатии на нее значение рейтинга не уменьшается. Это остается в 3.1. Страница работает нормально, и когда я нажимаю кнопку «минус», я получаю сообщение об ошибке Вызов функции-члена execute () для необъекта в строке 67, который является $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="http://web-answers.org/wp-content/uploads/2019/02/'.$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();
}

?>

Я скрыл поле идентификатора, так как не хочу, чтобы оно отображалось на веб-странице. Я просто хочу обновить рейтинг конкретного идентификатора.

любая информация будет оценена

-2

Решение

Измените ваш запрос с:

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

К этому:

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

Надеюсь, это должно работать ..

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 ="+"/>
0

Кроме того, вы можете использовать ввод числового типа HTML5 для вашего rating, В зависимости от брашера у вас будет маленький блесна, который будет выполнять эту задачу. Обратите внимание, что не все брошюры отображают это одинаково.

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

Тогда вам нужно обновить только рейтинг с его новым значением.
Больше информации здесь: http://www.html5tutorial.info/html5-number.php

0