1

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

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

提前致谢!

4

2 回答 2

0

目的是WHERE ID > '0'什么?如果ID是自动增量,那么它将始终为正。如果没有,它应该是。

你为什么使用mysql_fetch_array然后只使用关联键?你应该mysql_fetch_assoc改用。

echo为什么每次要输出变量时都使用 new ?只是串联。

为什么要设置与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>
于 2013-02-10T23:37:48.497 回答
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>

它还将显示最先出现的顶部标签。

于 2013-02-10T23:44:33.510 回答