Задать вопрос
@ikfah012
Не самый умный парень в этом чате

Как сделать множественный UPDATE по id?

Добрый день!
У меня есть таблица, в которой я редактирую данные и сохраняю в бд. там проблем нет.
Есть вторая таблица, в инпутах которой по умолчанию показываются значения, сделанные ранее.
Пытаюсь реализовать запись, но записывается только одна строка с одним 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));
    }
}
  • Вопрос задан
  • 162 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
dima9595
@dima9595
Junior PHP
Не плохой вариант: Сначала вы должны получить весь список, который необходимо обновить. После чего, проходите массив через foreach и обновляете.

PS: Если есть вариант получше, то отпишитесь в комментариях=)
Ответ написан
NYMEZIDE
@NYMEZIDE
резюме - ivanfilatov.ru
я так понимаю, вам достался проект на PHP, код, но вы не шарите совершенно.

1. id - уникальный идентификатор. он определяет одну и только одну запись в таблице.
2. что значит "чтобы он делал множественную запись" ?
если вам надо обновить много Юзеров, то надо менять
WHERE id='$form_id'
на другое условие, какое именно - решать вам.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы