所以我在我的表单中有这个下拉列表,它将数据库中的“标记”作为下拉选项的值:
<select name="cartags">
<?php $result = mysql_query("SELECT * FROM Products WHERE ID > '0'");
while($row = mysql_fetch_array($result))
{
echo "<option value=\""; echo $row['Tag']; echo "\""; echo ">"; echo $row['Tag']; echo "</option>";
}
?>
</select>
我的问题是什么?我的问题是我在我的数据库中添加了很多产品,并且我的代码使用带有所有这些产品的标签的下拉列表,即使它们具有相同的标签。所以我需要的是如何防止同一标签在我的下拉列表中出现两次。
我是PHP的新手,这是我的第一个问题所以我真的希望我能很好地解释我的问题。
提前致谢!
答案 0 :(得分:0)
WHERE ID > '0'
的目的是什么?如果ID
是自动增量,那么它将始终为正数。如果没有,那应该是。
为什么使用mysql_fetch_array
然后只使用关联键?您应该使用mysql_fetch_assoc
代替。
为什么每次要输出变量时都使用新的echo
?只是连接。
为什么要在value
中设置与选项文本相同的字符串?没有值,无论如何都默认为文本。
为什么不在列名和表名周围使用反引号?
请改为尝试:
<select name="cartags">
<?php
$result = mysql_query("SELECT DISTINCT `Tag` FROM `Products`");
while(list($tag) = mysql_fetch_row($result)) {
echo "<option>".$tag."</option>";
}
?>
</select>
答案 1 :(得分:0)
试试这个
<select name="cartags">
<?php $result = mysql_query("SELECT Tag, COUNT(Tag) tg Products WHERE ID > '0' GROUP BY Tag HAVING COUNT(Tag)>0 ORDER BY tg DESC");
while($row = mysql_fetch_array($result))
{
echo "<option value=\""; echo $row['tg']; echo "\""; echo ">"; echo $row['tg']; echo " </option>";
}
?>
</select>
它还会显示最先出现的顶级标签。