我在数据库中有一堆日期,我希望用户能够从下拉列表中选择特定日期。
我尝试列出所有日期,但这不起作用,因为它显示重复的日期。
$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
}
?>
我如何获取最低日期,最高日期,并在其中填充所有内容的选择框?
由于
答案 0 :(得分:1)
我尝试列出所有日期,但这不起作用,因为它显示重复的日期。
如果这是问题的核心,那么解决问题的最简单方法就是更改您的查询以使用DISTINCT
关键字,并结合ORDER BY
关键字来定位,例如这样:
SELECT DISTINCT order_date FROM orders ORDER BY order_date
这意味着您只会获得唯一的日期,第一个日期将是最低日期,最后一个日期将是最高日期,您可以轻松添加到您的while循环中。
编辑:虽然如果你想要使用最高和最低,你可以使用内置的MIN
和MAX
函数来获得最高和最低,然后按如下方式生成它们: / p>
<?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
}
?>