UIDatePicker - minDate & maxDate от php Var - PullRequest
1 голос
/ 24 августа 2011

У меня есть php, который запрашивает базу данных, чтобы получить несколько дат:

<?php
//connect to db etc
$sql="SELECT date FROM entries ORDER BY date ASC"; 
$result = mysql_query($sql);
if($result){
  $entryDates = array();
  while ($row=mysql_fetch_array($result)) { 
    $entryDates[] = $row['date'];
  }
  $minDate = explode("-", $entryDates[0]);
  $minDate[1] -= 1;
  $maxDate = explode("-", end($entryDates));
  $maxDate[1] -= 1;
  echo($maxDate[1]);
}

?>

Затем я пытаюсь назначить минимальную и максимальную даты для uidatepicker, используя jquery.

Первоначально я сделал это, и это сработало:

var theDate = new Date();
      $( "#datepicker" ).datepicker(
          {        
          dateFormat: 'dd-mm-yy',
          maxDate: new Date(theDate.getFullYear(), theDate.getMonth(), theDate.getDate())

      }
      )

Однако попытка реализовать то же самое с помощью php vars не работает:

$( "#datepicker" ).datepicker(
          {        
          dateFormat: 'dd-mm-yy',
          maxDate: new Date(<?php echo($maxDate[2]);?>,<?php echo($maxDate[1]);?>,<?php echo($maxDate[0]); ?>)
          minDate: new Date(<?php echo($minDate[2]);?>,<?php echo($minDate[1]);?>,<?php echo($minDate[0]); ?>)
      }
      );

Я пытаюсь использовать следующий конструктор даты:

new Date(year, month, day, hours, minutes, seconds, milliseconds)

$ minDate и $ maxDate - это массивы, которые выглядят примерно как

[yyyy|mm|dd]

При отражении их они содержат правильные значения .. поэтому проблема заключается в jQuery ... вероятно, в способе, которым я пытаюсь создать Date ... но что именно не так с моим синтаксисом? Я не вижу, что я делаю неправильно ...

1 Ответ

2 голосов
/ 24 августа 2011

Данные вашего массива, вероятно, помещаются в конструктор javascript Date () в неправильном порядке. Предполагая, что ваши строки даты имеют формат ГГГГ-ММ-ДД и вы print_r () вашего массива $ maxdate, вы должны увидеть что-то вроде этого:

Array
(
    [0] => 2011
    [1] => 0
    [2] => 01
)

Обратите внимание, что индексы этого массива имеют порядок 0 => год, 1 => месяц, 2 => день. Поэтому вам нужно изменить ваши конструкторы Date (), чтобы выровнять эти значения с входными параметрами конструкторов, например так:

<script type="text/javascript">
$( "#datepicker" ).datepicker({        
    dateFormat: 'dd-mm-yy',
    maxDate: new Date(<?php echo($maxDate[0]);?>,<?php echo($maxDate[1]);?>,<?php echo($maxDate[2]); ?>),
    minDate: new Date(<?php echo($minDate[0]);?>,<?php echo($minDate[1]);?>,<?php echo($minDate[2]); ?>)
});
</script>
...