使用php保留表单提交后选择的值

时间:2015-11-26 11:26:31

标签: php html forms

我希望在表单提交后保留选定的值,如@ ignacio-vazquez-abrams所建议的here。我试过这个:

<form action="" method="get">
    ...
    foreach ($file_array as $location)
        $options .= '<option name="' . $location . (($_GET['name'] == $location) ? 'selected="true"' : '') . '" value="' . $location . '">' . $location .'</option>';
    $select = '<select id="location" name="location">' . $options . '</select>';
    echo $select;
    ...
</form>

但我收到了通知:

  

注意:未定义的索引:名称在...

更新

我试过这个(正如评论中建议的那样,我建议如何here):

$options .= '<option name="' . $location . (!isset($_GET['selected']) ? 'selected="selected"' : '') . '" value="' . $location . '">' . $location .'</option>';

没有错误,但仍未生成预期结果 - 表单提交后的选定值未保留。

如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

您使用的是严格的PHP模式,因此在将其值与某些内容进行比较之前,您需要检查GET参数是否已通过(使用isset())。

<form action="" method="get">
    <select id="location" name="location">
        <?php foreach($file_locations as $location): ?>    
        <option <?php echo ((isset($_GET['location']) && $_GET['location'] == $location) ? 'selected="selected"' : '') ?> value="<?php echo $location ?>"><?php echo $location ?></option>
        <?php endforeach; ?>
    </select>
</form>

此外,您需要撰写selected="selected"selected代替selected="true"

答案 1 :(得分:1)

实际上为此添加正确的答案有很多遗漏,但无论如何我都会尝试。

PHP位置数组:

$locations = array( 'Loc1', 'Loc2', 'Loc3' );

在表格上:

<form action="" method="get">
    <select name="location">
        <?php 
            foreach ( $locations as $location ) {
                echo '<option value="' . $location . '" ' . ( isset( $_GET['location'] ) && $_GET['location'] == $location ? 'selected="selected"' : '' ) . '>' . $location . '</option>';
            }
        ?>
    </select>
</form>

首先,无法告知您的发布值是值name。我记得没有选项的名称属性,它必须是一个包含它的选项,它包含属性名称,并且你将selected="true"放在name属性中,而你首先没有正确关闭它(和这是不存在的。)