New chat
Today
js генерация пазлов svg внутри к
dynamic sidebar html css bootstr
Yesterday
использовать bootstrap jquery da
1 обработать форму ajax <form me
php imap
используя php bootstrap datatabl
fullcalendar datatable
php прибывать к формату 2025-02-
7 Days
код js
кто я
code pj
Get App
My Profile
используя php bootstrap datatabl
используя php bootstrap datatables jquery 1 создать таблицу datatables с генерированными на php датами 2025-01-01 до 20-10-10 2 добавить форму выбора показа таблицы даты от меньшей даты и до большей даты интервал 3 добавить к таблице #datesTable колонку с кнопкой modal формой редактирования ряд записи php ajax

Для создания таблицы с использованием PHP, Bootstrap, DataTables и jQuery, а также добавления формы выбора даты и модального окна для редактирования записей, выполните следующие шаги:

1. Создание таблицы с датами

Сначала создадим PHP-скрипт, который будет генерировать таблицу с датами от 2025-01-01 до 2025-10-10.

php
Copy
<?php
// Генерация массива дат
$startDate = new DateTime('2025-01-01');
$endDate = new DateTime('2025-10-10');
$dates = [];

while ($startDate <= $endDate) {
    $dates[] = $startDate->format('Y-m-d');
    $startDate->modify('+1 day');
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DataTables Example</title>
    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap4.min.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
    <div class="container mt-5">
        <h2>Таблица с датами</h2>
        <form id="dateRangeForm" class="mb-3">
            <div class="form-row">
                <div class="form-group col-md-4">
                    <label for="startDate">Начальная дата</label>
                    <input type="date" class="form-control" id="startDate">
                </div>
                <div class="form-group col-md-4">
                    <label for="endDate">Конечная дата</label>
                    <input type="date" class="form-control" id="endDate">
                </div>
                <div class="form-group col-md-4 align-self-end">
                    <button type="submit" class="btn btn-primary">Применить</button>
                </div>
            </div>
        </form>
        <table id="datesTable" class="table table-striped table-bordered" style="width:100%">
            <thead>
                <tr>
                    <th>Дата</th>
                    <th>Действие</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($dates as $date): ?>
                    <tr>
                        <td><?php echo $date; ?></td>
                        <td>
                            <button class="btn btn-primary btn-sm edit-btn" data-date="<?php echo $date; ?>">Редактировать</button>
                        </td>
                    </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    </div>

    <!-- Модальное окно для редактирования -->
    <div class="modal fade" id="editModal" tabindex="-1" aria-labelledby="editModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="editModalLabel">Редактирование записи</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    <form id="editForm">
                        <div class="form-group">
                            <label for="editDate">Дата</label>
                            <input type="date" class="form-control" id="editDate" name="editDate">
                        </div>
                        <input type="hidden" id="originalDate" name="originalDate">
                    </form>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Закрыть</button>
                    <button type="button" class="btn btn-primary" id="saveChanges">Сохранить изменения</button>
                </div>
            </div>
        </div>
    </div>

    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.21/js/dataTables.bootstrap4.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    <script>
        $(document).ready(function() {
            var table = $('#datesTable').DataTable();

            // Фильтрация по дате
            $('#dateRangeForm').on('submit', function(e) {
                e.preventDefault();
                var startDate = $('#startDate').val();
                var endDate = $('#endDate').val();

                table.draw();
            });

            // Открытие модального окна для редактирования
            $('#datesTable').on('click', '.edit-btn', function() {
                var date = $(this).data('date');
                $('#editDate').val(date);
                $('#originalDate').val(date);
                $('#editModal').modal('show');
            });

            // Сохранение изменений
            $('#saveChanges').on('click', function() {
                var originalDate = $('#originalDate').val();
                var newDate = $('#editDate').val();

                $.ajax({
                    url: 'update_date.php',
                    type: 'POST',
                    data: { originalDate: originalDate, newDate: newDate },
                    success: function(response) {
                        if (response === 'success') {
                            alert('Дата успешно обновлена');
                            $('#editModal').modal('hide');
                            location.reload(); // Перезагрузка страницы для обновления таблицы
                        } else {
                            alert('Ошибка при обновлении даты');
                        }
                    }
                });
            });
        });
    </script>
</body>
</html>

2. Создание PHP-скрипта для обновления даты

Создайте файл update_date.php, который будет обрабатывать AJAX-запрос для обновления даты.

php
Copy
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $originalDate = $_POST['originalDate'];
    $newDate = $_POST['newDate'];

    // Здесь можно добавить логику для обновления даты в базе данных или другом хранилище

    // В данном примере просто возвращаем успешный ответ
    echo 'success';
}
?>

3. Объяснение кода

  • Генерация дат: Мы создаем массив дат от 2025-01-01 до 2025-10-10 и выводим их в таблицу.

  • Фильтрация по дате: Используем DataTables API для фильтрации данных в таблице на основе выбранного диапазона дат.

  • Модальное окно: При нажатии на кнопку "Редактировать" открывается модальное окно с формой для изменения даты.

  • AJAX-запрос: При сохранении изменений отправляется AJAX-запрос на сервер для обновления даты.

4. Запуск проекта

  • Разместите файлы на вашем веб-сервере.

  • Откройте страницу в браузере, и вы увидите таблицу с датами.

  • Используйте форму для фильтрации дат и кнопки для редактирования записей.

Этот пример демонстрирует базовую функциональность. В реальном проекте вам, возможно, потребуется добавить обработку ошибок, валидацию данных и интеграцию с базой данных.

3 / 3
1 сохранить запись update_date.php в файле data.json при нажатии кнопку saveChanges 2 после сохранения обновить отредактированный ряд

Для реализации сохранения данных в файл data.json и обновления соответствующей строки в таблице после редактирования, внесем изменения в код.

1. Изменение update_date.php

Файл update_date.php будет обновлять данные в data.json и возвращать обновленную дату.

php
Copy
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $originalDate = $_POST['originalDate'];
    $newDate = $_POST['newDate'];

    // Загрузка данных из data.json
    $dataFile = 'data.json';
    $data = json_decode(file_get_contents($dataFile), true);

    // Поиск и обновление записи
    foreach ($data as &$item) {
        if ($item['date'] === $originalDate) {
            $item['date'] = $newDate;
            break;
        }
    }

    // Сохранение обновленных данных в data.json
    file_put_contents($dataFile, json_encode($data, JSON_PRETTY_PRINT));

    // Возвращаем новую дату
    echo json_encode(['newDate' => $newDate]);
}
?>

2. Изменение HTML и JavaScript

Обновим JavaScript для обработки ответа от сервера и обновления строки в таблице.

html
Copy
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DataTables Example</title>
    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.21/css/dataTables.bootstrap4.min.css">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
    <div class="container mt-5">
        <h2>Таблица с датами</h2>
        <form id="dateRangeForm" class="mb-3">
            <div class="form-row">
                <div class="form-group col-md-4">
                    <label for="startDate">Начальная дата</label>
                    <input type="date" class="form-control" id="startDate">
                </div>
                <div class="form-group col-md-4">
                    <label for="endDate">Конечная дата</label>
                    <input type="date" class="form-control" id="endDate">
                </div>
                <div class="form-group col-md-4 align-self-end">
                    <button type="submit" class="btn btn-primary">Применить</button>
                </div>
            </div>
        </form>
        <table id="datesTable" class="table table-striped table-bordered" style="width:100%">
            <thead>
                <tr>
                    <th>Дата</th>
                    <th>Действие</th>
                </tr>
            </thead>
            <tbody>
                <?php
                // Загрузка данных из data.json
                $dataFile = 'data.json';
                $data = json_decode(file_get_contents($dataFile), true);

                foreach ($data as $item): ?>
                    <tr>
                        <td><?php echo $item['date']; ?></td>
                        <td>
                            <button class="btn btn-primary btn-sm edit-btn" data-date="<?php echo $item['date']; ?>">Редактировать</button>
                        </td>
                    </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    </div>

    <!-- Модальное окно для редактирования -->
    <div class="modal fade" id="editModal" tabindex="-1" aria-labelledby="editModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="editModalLabel">Редактирование записи</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    <form id="editForm">
                        <div class="form-group">
                            <label for="editDate">Дата</label>
                            <input type="date" class="form-control" id="editDate" name="editDate">
                        </div>
                        <input type="hidden" id="originalDate" name="originalDate">
                    </form>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Закрыть</button>
                    <button type="button" class="btn btn-primary" id="saveChanges">Сохранить изменения</button>
                </div>
            </div>
        </div>
    </div>

    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.21/js/dataTables.bootstrap4.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
    <script>
        $(document).ready(function() {
            var table = $('#datesTable').DataTable();

            // Фильтрация по дате
            $('#dateRangeForm').on('submit', function(e) {
                e.preventDefault();
                var startDate = $('#startDate').val();
                var endDate = $('#endDate').val();

                table.draw();
            });

            // Открытие модального окна для редактирования
            $('#datesTable').on('click', '.edit-btn', function() {
                var date = $(this).data('date');
                $('#editDate').val(date);
                $('#originalDate').val(date);
                $('#editModal').modal('show');
            });

            // Сохранение изменений
            $('#saveChanges').on('click', function() {
                var originalDate = $('#originalDate').val();
                var newDate = $('#editDate').val();

                $.ajax({
                    url: 'update_date.php',
                    type: 'POST',
                    data: { originalDate: originalDate, newDate: newDate },
                    success: function(response) {
                        var result = JSON.parse(response);
                        if (result.newDate) {
                            alert('Дата успешно обновлена');
                            $('#editModal').modal('hide');

                            // Обновление строки в таблице
                            table.row($('button[data-date="' + originalDate + '"]').closest('tr')).data([
                                result.newDate,
                                '<button class="btn btn-primary btn-sm edit-btn" data-date="' + result.newDate + '">Редактировать</button>'
                            ]).draw(false);
                        } else {
                            alert('Ошибка при обновлении даты');
                        }
                    }
                });
            });
        });
    </script>
</body>
</html>

3. Создание файла data.json

Создайте файл data.json с начальными данными:

json
Copy
[
    {"date": "2025-01-01"},
    {"date": "2025-01-02"},
    {"date": "2025-01-03"},
    {"date": "2025-01-04"},
    {"date": "2025-01-05"},
    {"date": "2025-01-06"},
    {"date": "2025-01-07"},
    {"date": "2025-01-08"},
    {"date": "2025-01-09"},
    {"date": "2025-01-10"}
]

4. Объяснение изменений

  • update_date.php:

    • Загружает данные из data.json.

    • Находит и обновляет запись.

    • Сохраняет обновленные данные обратно в data.json.

    • Возвращает новую дату в формате JSON.

  • JavaScript:

    • После успешного обновления даты на сервере обновляет соответствующую строку в таблице с помощью метода row().data().

  • data.json:

    • Хранит данные в формате JSON, которые используются для заполнения таблицы.

5. Запуск проекта

  • Разместите файлы на веб-сервере.

  • Откройте страницу в браузере.

  • Редактируйте даты, и они будут сохраняться в data.json, а таблица будет обновляться без перезагрузки страницы.

11 / 11
New chat
DeepThink (R1)
Search
AI-generated, for reference only