我正在从数据库的jQuery UI日期选择器中禁用日期,我的代码几乎可以工作了,唯一的问题是它只从数据库中读取一行。目前,我在数据库中有两个预订,所以在日期选择器中应该有两个单独的预订,其中日期被禁用,但只有一个。有人能看出我哪里错了吗?
<?php
$bookeddates = "SELECT fromdate, todate FROM messages WHERE listing_id = '".$_GET['listingid']."'";
$resultbookeddates = mysql_query($bookeddates) or die(mysql_error() . "<br>" . $bookeddates);
$date_list = array();
while ($rowbookeddates = mysql_fetch_assoc($resultbookeddates)) {
$from = date('Y-n-j', strtotime($rowbookeddates['fromdate']));
$to = date('Y-n-j', strtotime($rowbookeddates['todate']));
$start_time = strtotime($from);
$end_time = strtotime($to);
$date_list[] = $from;
$current_time = $start_time;
while($current_time < $end_time) {
//Add one day
$current_time += 86400;
$date_list[] = date('Y-n-j',$current_time);
}
$date_list[] = $to;
} ?>
<script type="text/javascript">
var bookedDays = <?php echo json_encode($date_list); ?>;
</script>
问题解决了,实际上是存储在JavaScript变量中的内容。上面的代码反映了工作代码。
我不太确定while循环parens应该放在哪里,但需要将它们下移。
类似这样的东西:
<?php
$bookeddates = "SELECT fromdate, todate FROM messages WHERE listing_id = '".$_GET['listingid']."'";
$resultbookeddates = mysql_query($bookeddates) or die(mysql_error() . "<br>" . $bookeddates);
while ($rowbookeddates = mysql_fetch_assoc($resultbookeddates)) {
$from = date('Y-n-j', strtotime($rowbookeddates['fromdate']));
$to = date('Y-n-j', strtotime($rowbookeddates['todate']));
$start_time = strtotime($from);
$end_time = strtotime($to);
$date_list = array($from);
$current_time = $start_time;
while($current_time < $end_time) {
//Add one day
$current_time += 86400;
$date_list[] = date('Y-n-j',$current_time);
}
$date_list[] = $to;
}
$date_list_res = '["' . implode('","', $date_list) . '"]';
?>
<script type="text/javascript">
var bookedDays = <?php echo $date_list_res; ?>;
</script>
此代码:
while ($rowbookeddates = mysql_fetch_assoc($resultbookeddates))
{
$from = date('Y-n-j', strtotime($rowbookeddates['fromdate']));
$to = date('Y-n-j', strtotime($rowbookeddates['todate']));
}
遍历结果集,将其值指定为$from和$to,替换以前的值。循环结束后,您将获得遍历的最后一条记录的"from"answers"to"值。
您应该将结果放在一个数组中进行进一步处理,或者将处理代码包含在while
循环中。