如何在不重复数据的情况下从数据库填充下拉菜单?

时间:2011-03-06 17:59:28

标签: sql database search menu dynamic-data

我正在尝试创建一个搜索字段,这是一个动态填充的下拉菜单。查询数据库并填充菜单的代码如下:

<form action="<?=$SERVER['PHP_SELF'];?>" method="post" name="nameSearch">
<label for="nameMenu">  
<p>Choose a name from the drop down menu<br />  
to retrieve all the data for that person.</p>  
</label>
<select name="dateMenu" id="dateMenu">
    <option value="0" selected="selected">Choose a name</option>
    <?php
      $sql_search = 'SELECT id, name from $tbl_name';
      $query_search = mysql_query($sql_search);
      while($row = mysql_fetch_array($query_search))
      {
        echo '<option value=' . $row['id'] . '>' . $row['name'] . '</option>';
      }
    ?>
</select>
<input type="submit" name="searchName" value="Find">
</form>

问题在于,因为数据库保存的信息会导致它重复存储相同的名称,所以我在下拉菜单中会将相同的名称列为选项。

数据库看起来像这样:

----------------------------------------------------------  
| id | name |    uniqueImage     |    date    |   time   |   
----------------------------------------------------------  
| 1  | John | uniqueImage001.png | 2011-03-11 | 14:21:20 | 
| 2  | James| uniqueImage002.png | 2011-03-11 | 14:24:30 | 
| 3  | Joe  | uniqueImage003.png | 2011-03-11 | 14:26:10 | 
| 4  | John | uniqueImage004.png | 2011-03-11 | 14:40:10 | 
| 5  | Joe  | uniqueImage005.png | 2011-03-11 | 14:56:32 | 
| 6  | Joe  | uniqueImage006.png | 2011-03-11 | 15:02:50 | 
| 7  | James| uniqueImage007.png | 2011-03-11 | 15:21:25 | 
| 8  | John | uniqueImage008.png | 2011-03-11 | 15:26:30 | 
----------------------------------------------------------  

返回的菜单选项如下:

<option value="1">John</option>  
<option value="2">James</option>  
<option value="3">Joe</option>  
<option value="4">John</option>  
<option value="5">Joe</option>  
<option value="6">Joe</option>  
<option value="7">James</option>  
<option value="8">John</option>  

我需要的是下拉菜单更像是这样:

<option value="1">John</option>  
<option value="2">James</option>  
<option value="3">Joe</option>

这样我就可以获得与特定用户相关的所有独特图像。我不需要在我的查询中返回的数据库中的每个名称,只需要每个名称一次。我想我可能需要建立一个关系数据库方案,但我试图避免这种情况。有没有其他方法来设置它?感谢。

2 个答案:

答案 0 :(得分:1)

将您的SQL更改为SELECT DISTINCT id, name from $tbl_name

答案 1 :(得分:0)

将您的数据库调用更改为:

SELECT id, name from $tbl_name group by id, name