我有一个图片上传工具,可以在选择图片时重新加载页面(包含表格)。
我有这个代码来“记住”所选的删除列表选项,所以基本上我使用php创建选项:
$posted_type=$row['9_type']; //From mysql db
$types = array('Clothes', 'Bags', 'Others');
$category_table .= "<select name='type' id='type'>";
foreach ($types as $type)
{
$category_table .= "<option id='" . $type . "' value='" . $type . "' " .
(($_POST['type'] == $type || $posted_type==$type)?'selected':'') . ">" . $type . "</option>\n";
}
此代码有问题,如果重新加载页面,并且更改了“type”下拉列表,则会添加两个“SELECTED”属性而不是一个。
我需要有类似的东西:
isset($_POST['type']) THEN add "SELECTED" and ignore the $posted_type variable comparison
这是否有短代码?
我是PHP的新手,我只需要一天时间来更改所有类别并添加“if-case”只是为了检查$ _POST是否已经设置...
有人知道一个好主意吗?
由于
答案 0 :(得分:1)
在进入foreach循环之前检查所选类型:
$selected = $posted_type;
if (isset($_POST['type'])) {
$selected = $_POST['type'];
}
foreach ($types as $type) {
$html .= '<option '
.= 'id="' . $type . '" '
.= 'value="' . $type . '" ';
if ($selected == $type) {
$html .= "selected";
}
$html .= '>'
.= $type
.= '</option>';
}
答案 1 :(得分:0)
只需在实际的HTML构建之外设置一个不同的变量:
$selectedType = $posted_type;
if (isset($_POST['type']))
{
$selectedType = $_POST['type'];
}
foreach ($types as $type)
{
$category_table .= "<option id='" . $type . "' value='" . $type . "' " . (($selectedtype == $type) ? 'selected' : '') . ">" . $type . "</option>\n";
}