Добрый день!
У меня есть таблица, в которой я редактирую данные и сохраняю в бд. там проблем нет.
Есть вторая таблица, в инпутах которой по умолчанию показываются значения, сделанные ранее.
Пытаюсь реализовать запись, но записывается только одна строка с одним id, а нужно сохранять по всем id. Пытался передавать список id массивом, пытался писать в цикле и ничего не получилось :(
Подскажите, пожалуйста, на конкретном примере, что нужно сделать и почему именно так, а то я пока не смог разобраться.
Вот форма, в которой я выбираю дату за которую нужно вывести записи.
<form method="post" name="delivery_date" action="">
<input class="form-control" type="date" name="delivery_date" value="" id="example-date-input"> <button type="submit" class="btn btn-primary btn-xs mb-3">Найти</button>
</form>
Вот, соответственно, сама таблица, которую я пытаюсь редактировать.
<form>
<div class="card-body">
<div class="single-table">
<div class="table-responsive">
<table class="table text-center">
<thead class="text-uppercase">
<tr>
<th scope="col">ID</th>
<th scope="col">Дата</th>
<th scope="col">Метро</th>
<th scope="col">Время</th>
<th scope="col">Номер</th>
<th scope="col">Фамилия</th>
<th scope="col">Имя</th>
<th scope="col">Отчество</th>
<th scope="col">Сумма</th>
<th scope="col">Курьер</th>
</tr>
</thead>
<?php
$post = get_delivery_users();
?>
<?php foreach ($post as $users): ?>
<tbody>
<tr>
<th scope="row">1</th>
<td><div class="form-group">
<input class="form-control" type="date" name="delivery_date" value="<?=htmlspecialchars($users['delivery_date'], ENT_QUOTES)?>" id="example-date-input">
</div></td>
<td><select name="delivery_adress" class="form-control">
<? foreach(get_delivery_addresses() as $delivery_address): ?>
<option <?if ($delivery_address == $users['delivery_adress']) echo ' selected'?>><?=htmlspecialchars($delivery_address, ENT_QUOTES)?></option>
<? endforeach;?>
</select></td>
<input type="hidden" name="form_id" value="<?=$users['id']?>">
<td><input class="form-control" type="text" name="delivery_time" value="<?=htmlspecialchars($users['delivery_time'], ENT_QUOTES)?>" id="example-text-input"></td>
<td><input class="form-control" type="text" name="phone" value="<?=htmlspecialchars($users['phone'], ENT_QUOTES)?>" id="example-text-input"></td>
<td><input class="form-control" type="text" name="surname" value="<?=htmlspecialchars($users['surname'], ENT_QUOTES)?>"></td>
<td><input class="form-control" type="text" name="name" value="<?=htmlspecialchars($users['name'], ENT_QUOTES)?>"></td>
<td><input class="form-control" type="text" name="second_name" value="<?=htmlspecialchars($users['second_name'], ENT_QUOTES)?>"></td>
<td><input class="form-control" type="text" name="second_name" value="<?=htmlspecialchars($users['manager_comment'], ENT_QUOTES)?>"></td>
<td><div class="form-group">
<select name="courier" class="form-control">
<? foreach(get_couriers() as $couriers): ?>
<option <?if ($couriers == $users['courier']) echo ' selected'?>><?=htmlspecialchars($couriers, ENT_QUOTES)?></option>
<? endforeach;?>
</select>
</div></td>
</tr>
</tbody>
<?php endforeach; ?>
</table>
<button type="submit" formmethod="post" name="couriers" formaction="courier.php" class="btn btn-xs btn-warning mb-3">Отправить</button>
</div>
</div>
</form>
Вот файл functions.php, который выводит циклом данные из бд в эту таблицу:
function get_delivery_users()
{
global $link;
if (isset($_POST['delivery_date'])) {
$form_date = $_POST['delivery_date'];
$SQL = "SELECT * FROM Users WHERE delivery_date='$form_date' AND delivery=1";
$result = mysqli_query($link, $SQL);
$users = mysqli_fetch_all($result, MYSQLI_ASSOC);
return $users;
} else {
$sql = "SELECT * FROM Users WHERE delivery = '1' ORDER BY id DESC LIMIT 25";
$result = mysqli_query($link, $sql);
$users = mysqli_fetch_all($result, MYSQLI_ASSOC);
return $users;
}
}
И вот обработка в courier.php:
require_once('db.php');
if(isset($_POST['couriers']))
{
$form_id = (int)$_POST['form_id'];
$phone = strip_tags(trim($_POST['phone']));
$name = strip_tags(trim($_POST['name']));
$surname = strip_tags(trim($_POST['surname']));
$second_name = strip_tags(trim($_POST['second_name']));
$manager_comment = strip_tags(trim($_POST['manager_comment']));
$delivery_adress = strip_tags(trim($_POST['delivery_adress']));
$delivery_time = strip_tags(trim($_POST['delivery_time']));
$delivery_date = strip_tags(trim($_POST['delivery_date']));
$courier = strip_tags(trim($_POST['courier']));
$SQL = "UPDATE Users SET phone='$phone', name='$name', surname='$surname', second_name='$second_name', manager_comment='$manager_comment', delivery_adress='$delivery_adress', delivery_time='$delivery_time', delivery_date='$delivery_date', courier='$courier' WHERE id='$form_id'";
$result = mysqli_query($link, $SQL);
if ($result) {
header('Location:delivery.php');
}
else {
printf("Ошибка: %s\n", mysqli_error($link));
}
}