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

Как сделать ajax на кнопке для записи в бд и вывести строку другим цветом?

Добрый день.
У меня есть таблица, которая выводит значения из mysql в цикле.
Вот как она выглядит:
<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>
                                                </tr>
                                            </thead>
                                            <?php
                                            $post = get_cargo_users1();
                                            ?>
                                            <?php foreach ($post as $users): ?>
                                            <form method="post" action="dost.php">
                                                <tbody>
                                                <tr>
                                                    <td><?=$users['id']?></td>
                                                    <td><?=htmlspecialchars($users['delivery_adress'], ENT_QUOTES)?></td>
                                                    <td><?=htmlspecialchars($users['delivery_time'], ENT_QUOTES)?></td>
                                                    <td><?=htmlspecialchars($users['surname'], ENT_QUOTES)?> <?=htmlspecialchars($users['name'], ENT_QUOTES)?> <?=htmlspecialchars($users['second_name'], ENT_QUOTES)?></td>
                                                    <td><?=htmlspecialchars($users['sum'], ENT_QUOTES)?></td>
                                                    <td><button type="submit" formmethod="post" name="delivered" class="btn btn-xs btn-success mb-3" id="delivered">Отдал</button></td>
                                                    <td><button type="submit" formmethod="post" name="undelivered" class="btn btn-xs btn-danger mb-3">Отказ</button></td>
                                                    <td><button type="button" formmethod="post" name="delivery"  class="btn btn-xs btn-warning mb-3" data-toggle="modal" data-target="#exampleModalLong">Перенос</button></td>
                                                     </tr>
                                                </tbody>
                                            </form>
                                         <?php endforeach ?>
                                        </table>

Что я пытаюсь сделать:
1. По нажатию кнопок delivered и undelivered записывать их значения в бд.
Вот код, который обрабатывает их:
<?php

require_once('db.php');

if(isset($_POST['undelivered']))
{
    $form_id = (int)$_POST['form_id'];
    $SQL = "UPDATE Users SET delivery_status=2 WHERE id='$form_id'";
    $result = mysqli_query($link, $SQL);

    if ($result) {
        header('Location:cargo.php');
    }
    else {
        printf("Ошибка: %s\n", mysqli_error($link));
    }
}

if(isset($_POST['delivered']))
{
    $form_id = (int)$_POST['form_id'];
    $SQL = "UPDATE Users SET delivery_status=1 WHERE id='$form_id'";
    $result = mysqli_query($link, $SQL);

    if ($result) {
        header('Location:cargo.php');
    }
    else {
        printf("Ошибка: %s\n", mysqli_error($link));
    }
}

if(isset($_POST['perenos']))
{
    $form_id = (int)$_POST['form_id'];
    $delivery_adress = strip_tags(trim($_POST['delivery_adress']));
    $delivery_time = strip_tags(trim($_POST['delivery_time']));
    $delivery_date = strip_tags(trim($_POST['delivery_date']));
    $SQL = "UPDATE Users SET delivery_status=3, delivery_adress='$delivery_adress', delivery_time='$delivery_time', delivery_date='$delivery_date' WHERE id='$form_id'";
    $result = mysqli_query($link, $SQL);
    if ($result) {
        header('Location:cargo.php');
    }
    else {
        printf("Ошибка: %s\n", mysqli_error($link));
    }
}

?>

2. Сделать строку со значениями другим цветом.
Уже есть готовые паттерны для изменения цвета, например:
<div class="alert alert-primary" role="alert">
                                            <strong>Heads up!</strong> This alert needs your attention, but it's not super important.
                                        </div>

Пытаюсь сделать так, что если значение delivered=1, то строка выводится с этим div-ом, если 2 - с другим, 3 - с ещё одним, если значения нет никакого - то остаётся как есть. Пытался сделать через тернарный оператор, но не до конца понял как.
$class = ($row['delivery_status'] == 1)? 'alert-primary' : '';

<div class="alert <?=$class?>" role="alert">
                                            <strong>Heads up!</strong> This alert needs your attention, but it's not super important.
                                        </div>


Помогите тупому разобраться, пожалуйста :(
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 2
@ikfah012 Автор вопроса
Не самый умный парень в этом чате
В общем, методом проб и ошибок пришёл к рабочему варианту сам:
$('button[name="couriers"]').on('click', function() {
let $row = $(this).closest('tr');
let data = $row.find('input, select').serialize();
$.ajax({
type: "POST",
url: "courier.php",
data: data
}).done(function() {
alert("Данные сохранены");
});
return false;
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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