Получение значения из DatePicker и присвоение php - PullRequest
1 голос
/ 02 февраля 2020

У меня есть форма для бронирования встречи с 1 вводом и 2 выборами: Первый : ввод с jQuery, который может выбрать дату. Второй : выберите с помощью списка причесок (не актуально). Третий : выберите из списка доступных времен на основе даты.

Я попал в базу данных за все время на основе даты, поэтому моя цель:

Когда пользователь выбирает дату, мой запрос заполняет третий выбор списком доступных времен, поэтому для моего запроса требуется дата, которую он выбрал. Как я могу получить значение выбранной даты и использовать его в php для моего запроса?


HTML / View:

<h1>Book Reservation</h1>
                <b><p>Select Date:</p></b>
                <input id="datepicker" name="date" width="270" style = "display: block; float: center;" disabled required>

    <script>
        $('#datepicker').datepicker({
            uiLibrary: 'bootstrap'
        });
    </script>

    <?php include "../../Models/appointment/hdquery.php"?>
    <b><p style = "margin-top: 10px; ">Select Hair Dressing :</p></b>
    <select  class="select-css" name = "hairdressing">
     <?php include "../../Models/appointment/populatelisthd.php"?>
     </select>
     <b><p style = "margin-top: 10px;">Select Time:</p></b>
     <?php include "../../Models/appointment/timesquery.php"?>
     <select  class="select-css" name = "times"><
     <?php include "../../Models/appointment/populatelisttimes.php"?>
     </select><p style="margin-top: 10px;">

     <input type="submit" value = "Confirm">

hdquery и populatelisthd в Включения не имеют отношения к моему вопросу, поэтому я не буду их показывать.


Тайм-запрос:

<?php
$mysqli = NEW MySQLi('localhost','root','','cappeli');
$result = $mysqli->query("SELECT t.`hour` FROM `times` t LEFT JOIN ( SELECT `time` FROM `reservations` WHERE `date` = '$date' GROUP BY `time` HAVING COUNT(*) > 2) r on r.time = t.`hour` WHERE r.time IS NULL ");
?>

Если вы заметите в запросе есть WHERE date=$date Я хочу чтобы получить эту дату из поля ввода DatePicker и при каждом изменении мне нужен запрос, чтобы обновить время. Как я могу это сделать? (PS: у меня есть другой php файл для его заполнения, но мне нужен результат из timesquery для заполнения выбора)

1 Ответ

0 голосов
/ 02 февраля 2020

Вам нужно сделать AJAX запрос каждый раз, когда пользователь выбирает дату. Чтобы это работало, вы можете использовать событие onSelect` библиотеки datepicker .

  1. Сначала давайте избавимся от файлов timesquery.php и populatelisttimes.php:
    <?php include "../../Models/appointment/hdquery.php"?>
    <b><p style = "margin-top: 10px; ">Select Hair Dressing :</p></b>
    <select  class="select-css" name = "hairdressing">
     <?php include "../../Models/appointment/populatelisthd.php"?>
     </select>
     <b><p style = "margin-top: 10px;">Select Time:</p></b>
      <!-- -->
     <select  class="select-css" name = "times">
     <!-- Options will be added here dynamically using jQuery -->
     </select><p style="margin-top: 10px;">

     <input type="submit" value = "Confirm">
Теперь давайте послушаем дату «выбора» в вашем jQuery:
$('#datepicker').datepicker({
    onSelect: function (date) {
        $.ajax({
            type: "POST",
            url: 'timesquery.php',
            data: {
                'date': date,
            },
        }).done(function (data) {
            $('select[name=times]').html(data);
        }).fail(function () {
            alert('An error has occured.')
        });
    }
});
В последнее время давайте распечатаем опции HTML в файле timesquery.php, я полагаю, что ваш файл populatelisttimes.php позаботится о печати опции, поэтому я просто включу ее:
$date = $_POST['date']; // <====== Here is our date variable, you need to escape this!!!
$mysqli = NEW MySQLi('localhost','root','','cappeli');
$result = $mysqli->query("SELECT t.`hour` FROM `times` t LEFT JOIN ( SELECT `time` FROM `reservations` WHERE `date` = '$date' GROUP BY `time` HAVING COUNT(*) > 2) r on r.time = t.`hour` WHERE r.time IS NULL ");

include __DIR__ . '/populatelisttimes.php';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...