我刚刚开始使用PHP和 到目前为止,我对这个表单有2个问题(我相信我会有更多的lol)
这个表单应该向自己提交数据,重新填充是按下后退按钮。
第一个问题,对于单选按钮php没有读取>在文本Mr / Mrs / Ms之前作为输入标记的结束。
第二个问题,我收到了所有字段的“未定义索引”错误。
文本字段sem可以工作。如果我输入内容,请提交,然后回复文本。
<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>
提前谢谢。
答案 0 :(得分:1)
变化:
action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"
为此:
action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"
和
echo $_POST[fname]
为此:
echo $_POST['fname']
答案 1 :(得分: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" >
请注意我示例末尾的/>
,因为它实际上会关闭输入标记。