我正在尝试创建一个搜索字段,这是一个动态填充的下拉菜单。查询数据库并填充菜单的代码如下:
<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>
这样我就可以获得与特定用户相关的所有独特图像。我不需要在我的查询中返回的数据库中的每个名称,只需要每个名称一次。我想我可能需要建立一个关系数据库方案,但我试图避免这种情况。有没有其他方法来设置它?感谢。
答案 0 :(得分:1)
将您的SQL更改为SELECT DISTINCT id, name from $tbl_name
答案 1 :(得分:0)
将您的数据库调用更改为:
SELECT id, name from $tbl_name group by id, name