lit*_*leK 1 html php drop-down-menu
我有一个用PHP构建的下拉框.这是代码:
$region_result = mysql_query("SELECT * FROM region ORDER BY region");
$dropdown = "<select name='region'>";
while($row = mysql_fetch_assoc($region_result)) {
$rid = $row["id"];
$region = $row["region"];
$dropdown .= "\r\n<option value='{$row['rid']}'>{$region}</option>";
}
$dropdown .= "\r\n</select>";
Run Code Online (Sandbox Code Playgroud)
我需要在处理上述代码后设置下拉框的选定值.有没有简单的方法来做到这一点?
有没有人有什么建议?谢谢!
编辑:
谢谢大家的答案.让我解释一下我在做什么.我正在设置一个"编辑用户"页面,您可以在其中按多个条件搜索用户,然后结果以"编辑模式"列出 - 即 - 在文本框和下拉框中.因此,您可以编辑和更新用户.对于两个用户字段,我需要在下拉框中列出数据(以确保数据完整性和约束).因此,我想显示那些下拉框,其中包含您可以更改的所有可能值,但我希望下拉列表的选定值是当前与用户关联的值.
因此,我能够使用deceze的建议 - 在我的while循环中设置我的PHP值与数据库结果,我插入了一个嵌套的while循环,它将构造$ dropdown,并在其中,嵌套if -环.我并没有为所有这些嵌套循环而疯狂.以下是代码段:
if (@mysql_num_rows($result)) {
while ($r=@mysql_fetch_assoc($result)) {
$fname = $r["fname"];
$lname = $r["lname"];
$region = $r["region"];
$role = $r["role"];
$extension = $r["extension"];
$username = $r["username"];
$building = $r["building"];
$room = $r["room"];?>
<?php
$dropdown = "<select name='region'>";
while($row = mysql_fetch_assoc($region_result)) {
$rid = $row["id"];
$region2 = $row["region"];
if($region == $region2){
$dropdown .= "\r\n<option selected='selected' value='{$row['rid']}'>{$region}</option>";
}else{
$dropdown .= "\r\n<option value='{$row['rid']}'>{$region2}</option>";
}
}
$dropdown .= "\r\n</select>";
?>
Run Code Online (Sandbox Code Playgroud)
但是,我正在考虑将其更改为文本替换(由soulscratch和zombat建议),因为我认为它在性能方面会更好.
...但是,当多个结果集符合搜索条件时,这似乎不起作用(因为第2和第3等结果的下拉框为空).
你们有什么感想?
通过构建字符串的方式,它是一个相当简单的str_replace(),这很好,因为它省去了需要正则表达式的麻烦:
$dropdown = str_replace("value='".$rid."'","value='".$rid."' selected=\"selected\"",$dropdown);
Run Code Online (Sandbox Code Playgroud)