Вы отображаете несколько полей ввода с одним и тем же именем, и поэтому PHP не знает, какое поле ввода соответствует какому идентификатору комнаты.Ваш текущий код будет выводить что-то вроде этого:
<input type="text" name="room_id" id="room_id" value="1"></input>
<input type="text" name="room_id" id="room_id" value="2"></input>
<input type="text" name="room_id" id="room_id" value="3"></input>
Так что если вы отправите форму в PHP, он получит это:
$_POST = array(
'room_id' => 1,
'room_id' => 2,
'room_id' => 3
)
или, может быть,
$_POST = array(
'room_id' => 3
)
В любом случае, $_POST["room_{$id}"]
будет нулевым, так как все ваши данные хранятся под тем же именем.
Вместо этого вам нужно предоставить уникальный * 1016Атрибуты * name
и id
для каждого поля, например:
while($row = mysqli_fetch_assoc($query)) { ?>
<input type="text" name="room_<?php echo $row['id'] ?>" id="room_<?php echo $row['id'] ?>" value="<?php echo $row['id'] ?>"></input>
<?php } ?>
Это выдаст:
<input type="text" name="room_1" id="room_1" value="1"></input>
<input type="text" name="room_2" id="room_2" value="2"></input>
<input type="text" name="room_3" id="room_3" value="3"></input>
Это означает, что ваш массив $_POST
будет выглядеть следующим образом:
$_POST = array(
'room_1' => 1,
'room_2' => 2,
'room_3' => 3
)
Затем вы можете извлечь значения из POST, используя следующий цикл for
:
for($i = 1; isset($_POST["room_{$i}"]); $i++) {
mysqli_query($db, "UPDATE rooms SET capacity = capacity - 1 WHERE id={$i}");
// Or whatever you want to do
}
И я бы рекомендовал использовать флажки или что-то вместо текстовых полей, если выуменьшаются на фиксированную величину или числовые поля (но тогда вам нужно очистить введенные пользователем данные, например, intval($_POST["room_{$i}"])