2017-01-17 3 views
0

Как и в названии, у меня есть выбор параметров ввода, который мне нужно отключить определенные параметры на основе, если они были добавлены в таблицу дважды, и если они были добавлены в таблицу дважды в таблице, затем отключите параметр времени в раскрывающемся списке выбора.Отключение опций выбора при загрузке страницы на основе MySQL Query

В приведенном ниже примере в таблице вы видите, что в 18:15 уже есть две записи для 18.06.2012. Поэтому, когда я загружаю страницу, мне нужно отключить 12:15 вечера в списке опций, когда на дату выбрано 1/18/2017. Поэтому, если я загрузил страницу, и я выбрал 1/18/2017 в качестве даты, опция 12:15 PM будет отключена.

Мне кажется, что я должен сделать это с помощью отдельного php-файла, который будет получать данные из таблицы с помощью QUERY и COUNT, но я просто не уверен, как атаковать это.

Пример таблицы:

TIMESTAMP   Datepicker Timepicker 
2017-01-17 08:44:15 01/21/2017 12:00 PM 
2017-01-17 09:52:00 01/20/2017 11:30 AM 
2017-01-17 10:07:09 01/18/2017 12:15 PM 
2017-01-17 10:08:58 01/18/2017 12:15 PM 

Пример Выберите Функции:

<input class="dateselect" id="datepicker" name="datepicker" type="text" placeholder="Select Date"> 
          <select class="timeselect" id="timepicker" name="timepicker"> 
          <option value="10-15 Minutes">Select Time</option> 
          <option value="08:00 AM">08:00 AM</option> 
          <option value="08:15 AM">08:15 AM</option> 
          <option value="08:30 AM">08:30 AM</option> 
          <option value="08:45 AM">08:45 AM</option> 
          <option value="09:00 AM">09:00 AM</option> 
          <option value="09:15 AM">09:15 AM</option> 
          <option value="09:30 AM">09:30 AM</option> 
          <option value="09:45 AM">09:45 AM</option> 
          <option value="10:00 AM">10:00 AM</option> 
          <option value="10:15 AM">10:15 AM</option> 
          <option value="10:30 AM">10:30 AM</option> 
          <option value="10:45 AM">10:45 AM</option> 
          <option value="11:00 AM">11:00 AM</option> 
          <option value="11:15 AM">11:15 AM</option> 
          <option value="11:30 AM">11:30 AM</option> 
          <option value="11:45 AM">11:45 AM</option> 
          <option value="12:00 PM">12:00 PM</option> 
          <option value="12:15 PM">12:15 PM</option> 
          <option value="12:30 PM">12:30 PM</option> 
          <option value="12:45 PM">12:45 PM</option> 
</select> 

Любая помощь будет высоко оценили весь материал я найти в Интернете не совсем то, что я ищу.

PHP Ориентировочный файл:

$host_name = "xxxxxxx"; 
$database = "xxxxxx"; 
$user_name = "xxxxx"; 
$password = "xxxxx"; 


$connect = mysqli_connect($host_name, $user_name, $password, $database); 

$sql = "SELECT Datepicker, 
    Timepicker 

FROM shuttlerequests 
    INNER JOIN (SELECT Datepicker 
      FROM shuttlerequests 
      GROUP BY Timepicker 
      HAVING COUNT(id) > 1) dup 
     ON shuttlerequests.Datepicker = dup.Timepicker;"; 

if ($connect->query($sql) === TRUE) { 
return $sql; 
} else { 
echo "Error: " . $sql . "<br>" . $connect->error; 
} 

ответ

0

Я думаю, что вы на правильном пути. Я бы создал PHP-файл, который возвращает список раз, который «недоступен» на основе параметра даты ввода. Затем, основываясь на списке, я вернусь, отключите/включите параметры соответствующим образом. Попробуйте этот пример:

Javascript

function getTimes() { 
    var date = $('#datepicker').val(); 

    //REPLACE THIS WITH A CALL TO YOUR PHP FILE WHICH SHOULD RETURN THE DISABLED TIMES FOR A GIVEN DATE. 
    $.ajax({ 
    url: 'getdisabledtimes.php', 
    data: { date: date }, 
    success: handleTimes 
    }); 
} 

function handleTimes(obj) { 
    //INITIALLY SET ALL OPTIONS TO ENABLED 
    $('#timepicker option').removeAttr('disabled'); 
    //DISABLE THE OPTIONS THAT WERE RETURNED FROM THE FUNCTION 
    for (var i in obj) { 
     $('#timepicker option[value="' + obj[i] + '"]').attr('disabled','disabled'); 
    } 
} 

jsFiddle: https://jsfiddle.net/mspinks/3y69qygu/4/

-notice времени инвалидов после нажатия на кнопку "Get Times". Кнопка «Получить время» в этом примере моделирует выбор даты в вашем коде. Это будет зависеть от вашей реализации (щелчок, клавиатура, размытие и т. Д.).

Возможные PHP (это не тестировался)

$host_name = "xxxxxxx"; 
$database = "xxxxxx"; 
$user_name = "xxxxx"; 
$password = "xxxxx"; 


$connect = mysqli_connect($host_name, $user_name, $password, $database); 

$sql = "SELECT Datepicker, 
    Timepicker 

FROM shuttlerequests 
    INNER JOIN (SELECT Datepicker 
      FROM shuttlerequests 
      GROUP BY Timepicker 
      HAVING COUNT(id) > 1) dup 
     ON shuttlerequests.Datepicker = dup.Timepicker;"; 


$result = $connect ->query($sql); 

if ($result->num_rows > 0) { 
    //CREATE AN ARRAY FOR STORAGE OF EACH TIME ENTRY (TIMEPICKER) 
    $disabledTimes = array(); 
    //ITERATE THROUGH EACH DATA ROW THAT WAS RETURNED 
    while($row = mysql_fetch_assoc($result)) { 
     //ADD THE 'TIMEPICKER' ENTRY TO THE ARRAY 
     //NOTE: YOU MAY NEED TO FORMAT THE TIME STRING TO MATCH THE SELECT LIST. SHOULD BE IN THIS FORMAT: "08:00 AM" 
     array_push($disabledTimes , $row["Timepicker"]); 
    } 
    //SERIALIZE THE ARRAY INTO A JSON STRING. THIS SHOULD OUTPUT SOMETHING LIKE "['08:00 AM','12:30 PM']" 
    echo(json_encode($myArray)); 
} else { 
    echo "[]"; //NO RESULTS HERE 
} 
+0

Во-первых Спасибо за ваш удивительный ответ, я пытаюсь выяснить файл PHP, чтобы получить дубликаты записей для запроса Ajax и он просто не работает. Я обновил свой вопрос с помощью php-файла. –

+0

Вы ищете функцию сериализации для ваших данных? –

+0

Я не понимаю «функцию сериализации». –

Смежные вопросы