我正在尝试创建一个动态填充的下拉菜单的搜索字段。该代码来查询数据库,并填充菜单如下:如何在不重复数据的情况下从数据库填充下拉菜单?
<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>
这样我就可以获得与特定用户关联的所有独特图像。我不需要在查询中返回的数据库中的每个名称,只是每个名称只有一次。我想我可能需要建立一个关系数据库方案,但我试图避免这种情况。有没有其他的方法来设置它?谢谢。
不好,结果一样。 – AverageJoe 2011-03-06 18:15:29
问题是,您的ID列并不是唯一的人。您必须将其更改为仅使用名称列。例如约翰是1和4哪一个你想要使用? – Avitus 2011-03-06 18:17:24
是的,我看到了。我以为我需要这个ID,但事实证明我毕竟不需要它。我拿出身份证后,你的解决方案确实奏效。谢谢。 – AverageJoe 2011-03-06 18:18:57