【发布时间】:2016-04-11 07:38:45
【问题描述】:
我有一个 foreach 循环,其中显示了一个选项列表,其中包含所有国家/地区
foreach($countries as $cc => $name) {
echo '<option value="' . $name . '">' . $name . '</option>';
}
选定的选项被保存在数据库中。我想要做的是,如果我回到这个页面,它会显示数据库中已经选择的选项。我该怎么做?
谢谢。
【问题讨论】:
我有一个 foreach 循环,其中显示了一个选项列表,其中包含所有国家/地区
foreach($countries as $cc => $name) {
echo '<option value="' . $name . '">' . $name . '</option>';
}
选定的选项被保存在数据库中。我想要做的是,如果我回到这个页面,它会显示数据库中已经选择的选项。我该怎么做?
谢谢。
【问题讨论】:
只需将选定的属性放在您要选择的属性上
foreach ($countries as $name) {
if ($yourselectedValue == $name) {
$selected = 'selected';
} else {
$selected = '';
}
echo '<option value="' . $name . '" '.$selected.'>' . $name . '</option>';
}
【讨论】:
$name 在循环运行时更改值,因此它最终将成为选定的值并设置selected。
试试这个:
//$saved_option = get saved option or selected option
foreach($countries as $cc => $name) {
if ($saved_option == $name) {
echo '<option value="' . $name . '" selected="selected">' . $name . '</option>';
} else {
echo '<option value="' . $name . '">' . $name . '</option>';
}
}
【讨论】:
$name 始终是选择列表的最后一个选项?
$name 不是最后的选择。要检查它,将$name 的值打印到循环中。将打印$countries 数组的每个值。只需在循环中输入echo $name; 看看会发生什么。
检索国家 ID 并将其存储在变量中
$query = "SELECT country_id FROM Tablename WHERE YOUR_CONDITION";
$result = mysqli_query($connection, $query);
if (mysqli_num_rows($result) > 0)
{
$row = mysqli_fetch_assoc($result);
$selectedOption = $row['country_id'];
}
else
{
$selectedOption = ''; // Your default selection of $cc
}
选择框
下面的代码显示了国家数组的所有选项。 $cc 将检查数据库值 ($selectedOption),默认情况下会选择该国家/地区。
$Option = '';
foreach ($countries as $cc => $name)
{
if ($cc == $selectedOption)
{
$Option .= '<option value="'.$cc.'" selected="selected">'.trim($name).'</option>';
}
else
{
$Option .= '<option value="'.$cc.'">'.trim($name).'</option>';
}
}
<select name="country_id" id="country_id">
<?php echo $Option;?>
</select
【讨论】:
$previousselect = database query;
foreach($countries as $cc => $name) {
echo '<option value="' . $name .'" '. ($previousselected == $name) ? 'selected' .'>' . $name . '</option>';
}
或者当你创建你的选择对象时
<select name="arbitraryname" value="' . echo($previousselect); . '">
抱歉,只是快速输入了它,而不是语法,只是方法
$previousselect = database query;
foreach($countries as $cc => $name) {
echo '<option value="' . $name .'" '. ($previousselect == $name ? 'selected' : '') .'>' . $name . '</option>';
}
应该是正确的语法
【讨论】: