所以这是我的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>
这是按年份对所有结果进行排序,以便用户只需使用选择来选择他们想要查看的年份。
答案 0 :(得分:8)
有很多方法可以做到这一点,但最简单的可能是:
$sql1 = "SELECT DISTINCT year FROM reports ORDER BY year DESC";
使用DISTINCT
,数据库只返回每个值中的一个。然后,您不必浪费任何资源处理PHP端的数据。
答案 1 :(得分:2)
但是,如果你坚持使用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>
";
}