Получение дат из базы данных в средство выбора пользовательского интерфейса jQuery на PHP

#javascript #php #jquery #ajax #jquery-ui-datepicker

#язык JavaScript #php #jquery #аякс #jquery-пользовательский интерфейс-datepicker

Вопрос:

Я пытаюсь получить даты из базы данных с помощью PHP. Который будет выделен в окне выбора даты. Для этого я сделал sql запрос для получения дат, как показано ниже.

 HTML  Date: lt;input type="text" id="datepicker"gt;  
 // Static dates // An array of dates var eventDates = {}; eventDates[ new Date( '08/07/2016' )] = new Date( '08/07/2016' ); eventDates[ new Date( '08/12/2016' )] = new Date( '08/12/2016' ); eventDates[ new Date( '08/18/2016' )] = new Date( '08/18/2016' ); eventDates[ new Date( '08/23/2016' )] = new Date( '08/23/2016' );  
 lt;scriptgt; $(function() { // An array of dates var eventDates = {}; lt;?php  $sql = "SELECT * from `table` WHERE `value` gt; 0";  $result = $connect-gt;query($sql);   while($row = $result-gt;fetch_assoc()) {   ?gt; eventDates[new Date('lt;?php echo $date = $row['date']; ?gt;')] = new Date( 'lt;?php echo $date = $row['date']; ?gt;'); lt;?php } ?gt;  // datepicker $('#datepicker').datepicker({ beforeShowDay: function(date) { var highlight = eventDates[date]; if (highlight) { return [true, "event", 'Tooltip text']; } else { return [true, '', '']; } } }); }); lt;/scriptgt;  

Итак, в приведенном выше коде я зациклил все даты, имеющие value gt; 0 . В котором должны быть напечатаны все даты, но это не так. Я проверил запрос, и он отлично работает в отдельном файле PHP. Это перекликается со всем, что есть у даты value gt; 0 .

Я не уверен, что это правильный метод для извлечения даты из базы данных и передачи ее в datepicker. Существует другой метод, использующий JSON, но я не знаком с этим методом, так как не работал с JSON.

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

Комментарии:

1. Вы проверили, как на самом деле выглядит завершенный Javascript?

2. @ADyson На нем отображается пустая страница. Если я заменю sql запрос статическими датами вручную, он покажет выделенные даты в окне выбора даты.

3. Нет, я имею в виду, проверьте сгенерированный Javascript в исходном коде вашего браузера. И проверьте консоль на наличие ошибок.

4. @ADyson получил ошибку Uncaught Error: Call to a member function fetch_assoc() on bool в Javascript и Refused to execute script from 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css' because its MIME type ('text/css') is not executable, and strict MIME type checking is enabled. в консоли.

5. На самом деле это ошибка PHP (которая в конечном итоге была выведена в середине Javascript). Это означает, что ваш запрос не удался, поэтому не на чем было вызывать fetch_assoc. Включите отчет об ошибках mysqli, чтобы узнать точную ошибку

Ответ №1:

Я отформатировал дату в YY/MM/DD от YY-MM-DD . Поскольку формат даты выбора даты таков YY/MM/DD . Если вы используете второй формат, - он не будет показывать вывод.

Вот исправленный код скрипта:

 lt;scriptgt;  $(function() {  // An array of dates  var eventDates = {};  lt;?php   $sql = "SELECT * from `table` WHERE `value` gt; 0";   $result = $connect-gt;query($sql);    while( $final=$result-gt;fetch_assoc() )   {   ?gt;  eventDates[new Date('lt;?php   $orgDate = date($final['date']);  $date = str_replace('-"', '/', $orgDate);   $newDate = date("Y/m/d", strtotime($date));   echo $newDate ?gt;')] = new Date(  'lt;?php $orgDate =date($final['date']);   $date = str_replace('-"', '/', $orgDate);   $newDate = date("Y/m/d", strtotime($date));   echo $newDate   ?gt;'  );   lt;?php    }   ?gt;   // datepicker  $('#start').datepicker({   dateFormat: "yy-mm-dd",   beforeShowDay: function(date) {  var highlight = eventDates[date];  if (highlight) {  return [true, "event", 'Tooltip text'];  } else {  return [true, '', ''];  }  }  });  });  lt;/scriptgt;