2011-03-06 56 views
0

我正在尝试创建一个动态填充的下拉菜单的搜索字段。该代码来查询数据库,并填充菜单如下:如何在不重复数据的情况下从数据库填充下拉菜单?

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

的问题是,因为数据库保存,导致它反复存储相同的名字,我得到列为选项相同名称的信息我下拉式菜单。

的DB看起来像这样:

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

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

回答

0

更改数据库调用是:

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

不好,结果一样。 – AverageJoe 2011-03-06 18:15:29

+0

问题是,您的ID列并不是唯一的人。您必须将其更改为仅使用名称列。例如约翰是1和4哪一个你想要使用? – Avitus 2011-03-06 18:17:24

+0

是的,我看到了。我以为我需要这个ID,但事实证明我毕竟不需要它。我拿出身份证后,你的解决方案确实奏效。谢谢。 – AverageJoe 2011-03-06 18:18:57

1

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

+0

试了一下,还是一样的结果。 – AverageJoe 2011-03-06 18:13:14

+0

不好意思,试试SELECT id,从$ tbl_name的DISTINCT名称 – cusimar9 2011-03-06 18:39:27

相关问题