使用php提交表单后保持选择的值
Posted
技术标签:
【中文标题】使用php提交表单后保持选择的值【英文标题】:Keeping values selected after form submission with php 【发布时间】:2016-02-29 11:29:53 【问题描述】:我想在提交表单后保留选定的值,正如 @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>
但我收到了通知:
注意:未定义的索引:...中的名称
更新
比我尝试过的(如 cmets 中所建议的那样,我如何推荐 here):
$options .= '<option name="' . $location . (!isset($_GET['selected']) ? 'selected="selected"' : '') . '" value="' . $location . '">' . $location .'</option>';
没有错误,但仍然没有产生预期的结果 - 表单提交后选择的值不会保留。
如何做到这一点?
【问题讨论】:
你的表单标签是什么样子的?method="post"
或 method="get"
name=
应该是selected=
它为Undefined index: name
抛出一个错误,所以检查你是否在$_GET
中获得了价值,还有name
属性不是option
,而是select
@swidmann 我更新了问题。
php: "Notice: Undefined variable" and "Notice: Undefined index"的可能重复
【参考方案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
。我记得选项没有 name 属性,它必须是一个包含属性名称的选择,并且您将 selected="true"
放在 name 属性中,您首先没有正确关闭(这是不存在)。
【讨论】:
对不起!我用缺失的数据更新了问题,但你还是猜到了。在未来的问题中,我会更加小心,我将包括所有必要的信息。现在代码按预期工作!非常感谢? 另一种方法使用js
- ***.com/a/16458797/4050261【参考方案2】:
您正在使用 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"
。
【讨论】:
以上是关于使用php提交表单后保持选择的值的主要内容,如果未能解决你的问题,请参考以下文章