0

所以这是我的php代码:

$sql1 = "SELECT year FROM reports ORDER BY year DESC";
$res1 = mysql_query($sql1);
while($row = mysql_fetch_array($res1)) {
    $selectYear = "
        <select id='select_year'>
            <option value='".$row['year']."'>".$row['year']."</option>
        </select>
    ";
}

我想要它做的只是输出一年,而不是它现在正在做的事情,即每年输出,一年中的每个月都有一个条目,所以同一年有 12 个条目,所以我的 html 是这样的:

<select id='select_year'>
    <option value='2013'>2013</option>
    <option value='2013'>2013</option>
    <option value='2013'>2013</option>
    <option value='2013'>2013</option>
    <option value='2012'>2012</option>
</select>

但这是我真正想要的:

<select id='select_year'>
    <option value='2013'>2013</option>
    <option value='2012'>2012</option>
</select>

这是按年份对所有结果进行排序,以便用户可以使用 select 来选择他们想要查看的年份。

4

2 回答 2

8

有很多方法可以做到这一点,但最简单的可能是:

$sql1 = "SELECT DISTINCT year FROM reports ORDER BY year DESC";

使用DISTINCT,数据库将只返回每个值中的一个。那么您就不必在 PHP 端浪费任何资源处理数据了。

于 2013-10-05T01:24:15.780 回答
2

@Thomas Kelley 在上面给出了完美的答案。

但是,如果您坚持使用 PHP 解决方案。您可以按如下方式进行。

$res1 = mysql_query($sql1);
$placeHolder = ",";
while($row = mysql_fetch_array($res1)) {
    if ( strpos($placeHolder , $row['year']) )
        continue;
    $placeHolder .= $row['year'] .',';
    $selectYear = "
        <select id='select_year'>
            <option value='".$row['year']."'>".$row['year']."</option>
        </select>
    ";
}
于 2013-10-05T02:23:21.900 回答