为什么我的查询结果只输出一行?

时间:2015-03-04 19:28:28

标签: php jquery mysql jquery-ui

我正在从我的数据库中禁用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变量中的内容。上面的代码反映了工作代码。

2 个答案:

答案 0 :(得分:3)

&#39;我不确定你的while循环父母应该去哪里,但你需要将它们移动。

这样的事情:

<?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>

答案 1 :(得分:3)

此代码:

while ($rowbookeddates = mysql_fetch_assoc($resultbookeddates)) 
{
  $from = date('Y-n-j', strtotime($rowbookeddates['fromdate']));
  $to = date('Y-n-j', strtotime($rowbookeddates['todate']));
}

遍历结果集,将其值分配给$ from和$ to,替换之前的值。当循环结束时,你得到&#34;来自&#34;和&#34;到&#34;遍历最后记录的值。

您应该将结果放在数组中进行进一步处理,或者在while循环中包含处理代码。