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

我怎样才能抓住最低日期,最高日期,然后用中间的所有内容填充选择框?

谢谢

4

1 回答 1

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
    }
?>
于 2013-11-03T17:35:20.300 回答