如何在 PHP 中“记住”选择的表单值?

Posted

技术标签:

【中文标题】如何在 PHP 中“记住”选择的表单值?【英文标题】:How to "remember" chosen form values in PHP? 【发布时间】:2011-07-08 13:26:37 【问题描述】:

如果用户表单验证失败,那么为了让他们更容易,我们可以这样做:

if(isset($_POST['submit'])) 
    $email = $_POST['email'];
    //....


<input type="text" name="phone" value="<?php echo $phone; ?>" />
<input type="text" name="email" value="<?php echo $email; ?>" />
...

因此,在这种情况下,如果用户因为输入了电子邮件而不是电话号码而未能通过验证,那么当页面在提交时刷新并警告他们缺少电话时,电子邮件(他们确实填写了)将已经在它的位置,不会要求用户重新输入。

但是我怎样才能“记住”用户为选择、单选和复选框输入选择的值呢?

【问题讨论】:

通过这些字段类型的常规 html 功能:“selected”、“checked”等。你不认识他们吗? 之前有人问过这个问题:***.com/questions/2246227/… 【参考方案1】:

它的工作原理相同,但需要更多工作:

<select name="whatever">
  <option value="Apple">Apple</option>
  <option value="Banana" selected="selected">Banana</option>
  <option value="Mango">Mango</option>
</select>
Banana is selected here.

<input type="checkbox" name="fruits[]" value="banana" /> Banana
<input type="checkbox" name="fruits[]" value="mango" checked="checked" /> Mango
<input type="checkbox" name="fruits[]" value="apple" checked="checked" /> Apple
Mango and Apple are checked here

所以基本上你在生成表单时将selected="selected"checked="checked" 添加到适当的字段中。

另一种选择是在页面加载并准备好进行 DOM 操作后使用 jQuery 之类的工具进行这些选择。这样,您可以轻松地将所有更改放在一个地方,而无需丑化代码。当然,现在有一个缺点,您需要加载 jQuery,而您的用户需要拥有 JS。

【讨论】:

【参考方案2】:

这里有一些示例代码。

<?php
$options = array('option1' => 'Option 1', 'option2' => 'Option 2', 'option3' => 'Option 3');
$myselect = 'option2';
?>
<select name="myselect">
<?php 
foreach($options as $key => $value) 
    echo sprintf('<option value="%s" %s>%s</option>', $key, $key == $myselect ? 'selected="selected"' : '', $value);

?>
</select>

如果您经常做这样的事情,那么在函数中会更整洁,或者您甚至可以创建一个 Form 类助手。

这是一个基本的选择功能:

<?php
function form_select($name, $options, $selected) 
    $html = sprintf('<select name="%s">', $name);
    foreach($options as $key => $value) 
        $html .= sprintf('<option value="%s"', $key);
        if ($selected == $key)
            $html .= ' selected="selected"';
        $html .= sprintf('>%s</option>', $value);
    
    $html .= '</select>';
    return $html;

然后您只需调用以下命令即可创建任何选择:

echo form_select('myselect', $options, $selected);

您可以轻松地使函数处理更多属性,如样式、类和 id。

【讨论】:

【参考方案3】:
<input type="radio" name="xxxx" <?php if ($xxx == 'VALUE') echo "checked=\"checked\""; ?>" />

与选择中的选项类似

【讨论】:

以上是关于如何在 PHP 中“记住”选择的表单值?的主要内容,如果未能解决你的问题,请参考以下文章

如何让表单元素“记住”选择?

如何在提交到 PHP 之前使用 AJAX 从选择标签中获取数据?

在同一页面上使用 php 更新和选择如何

如何从选择表单输入中显示的值发布不同的值

如何添加php脚本来转发表单的副本

如何在 html/php 站点中记住用户帐户中的复选框首选项