Как выполнить SQL-запрос на клик с помощью условного PHP?

Я пытаюсь создать страницу проверки доступности номеров для общежития, и у меня возникла проблема.

У меня есть база данных с таблицей под названием «комнаты», в которой перечислены все типы комнат с этими строками:

  1. id [INT]
  2. имя (тип номера) [CHAR]
  3. емкость (максимальная емкость, не подлежит изменению) [INT]
  4. использованный (количество используемых кроватей, Я хочу изменить это динамически!) [INT]

Я создал код для генерации списка комнат из БД с помощью PHP и Я хочу, чтобы кнопки «+» и «-» добавляли или удаляли одну единицу в используемом столбце для определенной комнаты. Как я могу это сделать?

Вот мой код:

           <!-- SOME HTML/PHP THAT WORKS -->
<?php if ($roomlist->num_rows > 0) {
// output data of each row
while($room = $roomlist->fetch_assoc()) {
$roomid = $room["id"]; ?>
<div>
<!-- SOME OTHER HTML/PHP THAT WORKS -->

// THE ISSUE IS BELOW, IT SHOWS THE CORRECT AMOUNT BUT $room["used"] DOES NOT UPDATE
<div>
Used: <?php echo $room["used"] . " / " . $room["capacity"] ?>
</div>
<div>
<form action="" method="POST">
<input type="submit" name="remove" value="-" />
<input type="submit" name="add" value="+" />

<?php
if(isset($_POST['remove'])){
$remove_query = mysqli_query("UPDATE rooms SET used = used - 1 WHERE id = $roomid") or die(mysqli_error());
} elseif (isset($_POST['add'])){
$add_query = mysqli_query("UPDATE rooms SET used = used + 1 WHERE id = $roomid") or die(mysqli_error());
}

?>
</form>
</div>
</div>
</div>
<?php }
} else {
echo "0 results";
} ?>

1

Решение

Если вы задаете для действия своей формы любое имя, которое указано в вашем коде (например, «rooms.php»), затем переместите

if(isset($_POST['remove'])){
$remove_query = mysqli_query("UPDATE rooms SET used = used - 1 WHERE id     = $roomid") or die(mysqli_error());
} elseif (isset($_POST['add'])){
$add_query = mysqli_query("UPDATE rooms SET used = used + 1 WHERE id = $roomid") or die(mysqli_error());
}

до самого верха, поэтому он обновляет таблицу, прежде чем запрашивать ее, чтобы заполнить оставшуюся часть страницы, она должна работать. Прямо сейчас ваш php обновляет таблицу после запроса SELECT, чтобы заполнить вашу страницу, поэтому она не обновляется.

Я думаю, что лучшим вариантом будет внедрение AJAX, поэтому ваша форма обновляет поле Используется без перезагрузки страницы.

0

Другие решения

Хорошо, так что в конце концов я сам нашел способ, чтобы выложить его здесь, чтобы другие люди столкнулись с подобной проблемой, чтобы ее преодолеть;)

Вот соответствующая часть кода в index.php:

<form action="update.php?id=<?php echo $roomid ?>&action=remove&used=<?php echo $room["used"] ?>&capacity=<?php echo $room["capacity"] ?>" method="post">
<input type="submit" name="remove" class="minus" value="-" />
</form>
<form action="update.php?id=<?php echo $roomid ?>&action=add&used=<?php echo $room["used"] ?>&capacity=<?php echo $room["capacity"] ?>" method="post">
<input type="submit" name="add" class="plus" value="+" />
</form>

И код update.php:

if (isset($_REQUEST['used']) && isset($_REQUEST['id']) && isset($_REQUEST['capacity'])) {

$roomid  = $_REQUEST['id'];
$used = $_REQUEST['used'];
$capacity = $_REQUEST['capacity'];

if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'add') {
if ($used >= $capacity) {
header("location: index.php");
} else {
$newValue = $used + 1;
$add_query = mysqli_query($connection, "UPDATE `rooms` SET `used` = $newValue WHERE `ID` = $roomid") or die(mysqli_error());
header("location: index.php");
}
} elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'remove') {
if ($used <= 0) {
header("location: index.php");
} else {
$newValue = $used - 1;
$remove_query = mysqli_query($connection, "UPDATE `rooms` SET `used` = $newValue WHERE `ID` = $roomid") or die(mysqli_error());
header("location: index.php");
}
}
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector