如何从使用php保存在数据库中的下拉列表中选择一些东西?

时间:2012-04-06 14:43:02

标签: php html html-select

我有这个国家/地区的下拉列表:

<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(直到更改)。

3 个答案:

答案 0 :(得分:1)

只需将selected属性添加到用户在创建帐户时选择的option

基本理念

FOREACH

<?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>';

注意:虽然它会消耗更多的资源,但我建议至少使用一系列国家/地区,但最好将这些国家/地区存储起来数据库。数据库的原因是,如果您更改了国家/地区的名称(例如,苏联到俄罗斯),您也不必为每个用户更新它(因为它们会链接到idcountries表中。我建议使用数据库或数组,因为迟早你可能会在某个时间点更改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上已有许多此类主题。