2

我正在从 mysql 数据库中填充一个下拉菜单。它运作良好,但我希望它不要重复值。(即,如果某个值在数据库中出现 N 次,则它在下拉列表中仅出现一次)

这是我的代码:

<?php

mysql_connect('host', 'user', 'pass');
mysql_select_db ("database");

$sql = "SELECT year FROM data";
$result = mysql_query($sql);

echo "<select name='year'>";
while ($row = mysql_fetch_array($result)) {
    echo "<option value='" . $row['year'] . "'>" . $row['year'] . "</option>";
}
echo "</select>";

?>
4

5 回答 5

10

在查询中使用DISTINCT 。

"SELECT DISTINCT year FROM data";
于 2012-07-16T09:37:07.517 回答
4

只需更改您的查询。更好

$sql = "从数据中选择不同的年份";

于 2012-07-16T09:37:59.510 回答
2

另一种技术:

select year from table group by year
于 2012-07-16T09:39:30.027 回答
1

在 PHP 方面你必须这样做

$all_data = array();

echo "<select name='year'>";
while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
 array_push($all_data,$row["column"]);
}
$all_data = array_unique($all_data);
foreach($all_data as $columns => $values){
 print("<option value='$value'>$value</option>");
}
echo "</select>";
于 2012-07-16T09:40:12.220 回答
1

这是一个简单的技巧。取一个布尔数组。哪个值没有进入列表打印它在列表中,哪个值已经进入列表一次,通过索引布尔数组将其设置为真。

设置条件,如果boolean_array[ value ]不为true ,则在列表中显示值。否则,不要。

mysql_connect('host', 'user', 'pass');
mysql_select_db ("database");

$sql = "SELECT year FROM data";
$result = mysql_query($sql);

echo "<select name='year'>";
while ($row = mysql_fetch_array($result)) {

    if($bul[$row['year']] != true){
        echo "<option value='" . $row['year'] . "'>" . $row['year'] . "        </option>";
        $bul[$row['year']] = true;
   }
}
echo "</select>";
?>
于 2017-02-06T22:08:02.727 回答