在PHP的任何短代码?

时间:2010-10-24 19:04:05

标签: php javascript mysql html security

我有一个图片上传工具,可以在选择图片时重新加载页面(包含表格)。

我有这个代码来“记住”所选的删除列表选项,所以基本上我使用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是否已经设置...

有人知道一个好主意吗?

由于

2 个答案:

答案 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";
}