2013-11-03 24 views
-1

我在數據庫中有一堆日期,我希望用戶能夠從下拉列表中選擇特定日期。根據數據庫中的一個範圍填充充滿日期的選擇列表

我試着列出所有的日期,但這不起作用,因爲它顯示重複的日期。

$query1 = "SELECT order_date FROM orders"; 
$result1 = mysql_query($query1); 
while($row1 = mysql_fetch_array($result1)) 
    { 
    $dateDB = date("Y-m-d", strtotime($row1['order_date'])); 
    $niceDate = date("d/m/Y", strtotime($row1['order_date'])); 

?> 
    <option value="<?php echo $dateDB; ?>"><?php echo $niceDate; ?></option> 
<?php 
    } 
?> 

我怎樣才能抓住最低日期,最高日期和只填充選擇框中的一切inbetween?

感謝

回答

1

我嘗試了所有上市的日期,但是,這並不工作,因爲它顯示了重複的日期。

如果這是問題的核心,然後解決它會改變你的查詢使用DISTINCT關鍵字,結合了ORDER BY關鍵字,讓他們有序的,像這樣的簡單的方法:

SELECT DISTINCT order_date FROM orders ORDER BY order_date

這意味着你只會得到唯一的日期,第一個日期將是最低的,最後是最高的,你可以很容易地添加到你的while循環。

編輯:但如果你想用最高和最低的做,你可以使用內置的MINMAX功能,以獲得最高和最低,然後生成它們如下:

<?php 
    $query = 'SELECT MAX(order_date) AS `highest`, ' . 
        'MIN(order_date) AS `lowest` FROM orders'; 
    $result = mysql_query($query); 
    $lowest = strtotime(mysql_result($result , 0, 'lowest')); 
    $highest = strtotime(mysql_result($result , 0, 'highest')); 
    $dates = array(); 
    $dateTime = $lowest; 
    do 
    { 
     $newDates = array(); 
     $newDates['db'] = date("d/m/Y", $dateTime); 
     $newDates['nice'] = date("d/m/Y", $dateTime++); 
     $dates[] = $newDates; 
    } 
    while($dateTime <= $highest); 
    foreach($dates as $date) 
    { 
?> 
    <option value="<?php echo $date['db']; ?>"><?php echo $date['nice']; ?></option> 
<?php 
    } 
?> 
+0

沒」 t似乎工作,我仍然得到所有的日期。時間也是在日期時間專欄的商店,所以即時猜測它不會工作,因爲所有的時間都不一樣? – Exoon

+0

我試過你編輯,但我沒有得到任何結果回來,是否有關的「order_date」是一個日期時間字段,所以它也包括時間?但我不希望顯示在選擇列表中。 – Exoon

相關問題