如何防止在php中两次回显相同的值

时间:2013-02-10 23:30:43

标签: php forms drop-down-menu

所以我在我的表单中有这个下拉列表,它将数据库中的“标记”作为下拉选项的值:

<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的新手,这是我的第一个问题所以我真的希望我能很好地解释我的问题。

提前致谢!

2 个答案:

答案 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>

它还会显示最先出现的顶级标签。