我有这个国家/地区的下拉列表:
<select name="country">
<option value="">Country...</option>
<option value="Afganistan">Afghanistan</option>
<option value="Albania">Albania</option>
<option value="Algeria">Algeria</option>
<!-- Removed several options as they are not needed for question -->
<option value="Zaire">Zaire</option>
<option value="Zambia">Zambia</option>
<option value="Zimbabwe">Zimbabwe</option>
</select>
当用户编辑他们的个人资料时,我希望默认选择用户所选的国家/地区(在数据库中)。
用户注册后,选择了Egypt
。当用户编辑其个人资料时,我希望此下拉列表默认选择Egypt
(直到更改)。
答案 0 :(得分:1)
只需将selected
属性添加到用户在创建帐户时选择的option
。
<?php
$country_list = '<select name="country">';
$selected_country = $user_info['country'];
foreach($countries as $country){
$is_selected = ($country===$selected_country);
$country_list .= '<option value="'.$country.'"'.($is_selected ? ' selected' : '').'>$country</option>';
}
$country_list .= '</select>';
<?php
...
$country_list = '<select name="country">';
$selected_country = $user_info['country'];
$stmt->bind_result($country);
while($mysqli->fetch()){
$is_selected = ($country===$selected_country);
$country_list .= '<option value="'.$country.'"'.($is_selected ? ' selected' : '').'>$country</option>';
}
$country_list .= '</select>';
注意:虽然它会消耗更多的资源,但我会建议至少使用一系列国家/地区,但最好将这些国家/地区存储起来数据库。数据库的原因是,如果您更改了国家/地区的名称(例如,苏联到俄罗斯),您也不必为每个用户更新它(因为它们会链接到id
在countries
表中。我建议使用数据库或数组,因为迟早你可能会在某个时间点更改option
列表的标记,并且将列表放在数组中可以更改数据库或数组单行,而不是列出的每个国家/地区。
答案 1 :(得分:0)
Html语法是这样的:
<option value="AAAA" selected>label</option>
因此,在PHP中,当您在循环中打印它们时,从DB加载您的值和所选值,如果当前打印的是选定值,则只回显“已选择”。
答案 2 :(得分:0)
从数据库值定义变量。
将整个<select>
标记存储为变量。
使用所选属性查找并替换所选选项值。
$country_selected_value;
// defined from database
$country_select = '<select name="country">...</select>';
// ... represents your options
$value_search = 'value="'.country_selected_value.'"';
// what to look for in the select
echo str_replace($value_search , $value_search.'" selected="selected"', $country_select);
// displaying the select field with the selected option
如果您需要帮助从数据库获取数据,那么SO上已有许多此类主题。