【问题标题】:Repopulating a form after submitting to itself提交给自身后重新填充表单
【发布时间】:2013-11-12 16:39:01
【问题描述】:

我刚开始使用 PHP 和 到目前为止,我在使用此表单时遇到了 2 个问题(我相信我还会遇到更多问题)

这个表单应该向自己提交数据,并在按下返回按钮时重新填充。

第一个问题,对于单选按钮,php 没有读取文本 Mr/Mrs/Ms 之前的 > 作为输入标记的结束。

第二个问题,我收到所有字段的“未定义索引”错误。

文本字段似乎可以工作。如果我输入了什么,提交然后回击文本就在那里。

    <form method="POST"
      action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

    <table>
    <tr>
    <td>Title:</td>
    <td><input type="radio" name="title" value="Mr" <?php if ($_POST['title'] == "Mr") echo "CHECKED"; ?>>Mr.</td>
    </tr><tr>
    <td></td>
    <td><input type="radio" name="title" value="Mrs" <?php if ($_POST['title'] == "Mrs") echo "CHECKED";?>>Mrs.</td>
    </tr><tr>
    <td></td>
    <td><input type="radio" name="title" value="Ms" <?php if ($_POST['title'] == "Ms") echo "CHECKED";?>>Ms.</td>
    </tr><tr>
    <td>First Name:</td><td><input type="text" name="fname" width=50 value="<?php if ($_POST['fname']) echo $_POST[fname];?>" ></td>

提前谢谢你。

【问题讨论】:

  • 你需要关闭你的input元素:&lt;input type="radio" name="title" value="Mrs" &lt;?php if ($_POST['title'] == "Mrs") echo "CHECKED";?&gt; /&gt;(注意最后的斜线)

标签: php html forms http-post


【解决方案1】:

要修复未定义的索引错误,您可以在尝试使用它们之前使用isset 检查有问题的 POST 变量是否确实存在:

if(isset($_POST['my_form_value']) && $_POST['my_form_value'] == 'Mr'){ 
    echo "CHECKED";
}

array_key_exists 也可以,如果你喜欢的话:

if(array_key_exists('my_form_value', $_POST) && $_POST['my_form_value'] == 'Mr'){ 
    echo "CHECKED";
}

至于标签,尝试使用:

<input type="radio" name="title" value="Mrs" />

代替:

<input type="radio" name="title" value="Mrs" >

请注意我示例末尾的/&gt;,因为它实际上关闭了输入标签。

【讨论】:

  • +1 - 此外,我可能会将isset 检查放在外面并填充一个可以在所有三个检查中重复使用的新变量(消除重复并使其更易于阅读)跨度>
  • @Steve 同意。我通常会事先为表单字段设置默认数据。
【解决方案2】:

改变:

action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"

为此:

action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"

echo $_POST[fname]

为此:

echo $_POST['fname']

【讨论】:

    猜你喜欢
    • 2018-04-11
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多