如何在PHP表单验证后阻止表单输入类型选择数据擦除?
我正在一个电子商务网站上工作,我正在尝试使用PHP验证一个表单。 因此,对于我当前的代码,在我提交表单后,数据不会被删除,如果有错误,所有数据都会保留在表单中并显示错误消息,但我无法对如何在PHP表单验证后阻止表单输入类型选择数据擦除?,php,Php,我正在一个电子商务网站上工作,我正在尝试使用PHP验证一个表单。 因此,对于我当前的代码,在我提交表单后,数据不会被删除,如果有错误,所有数据都会保留在表单中并显示错误消息,但我无法对选择选项执行相同操作。我错过了什么 <?php if (!empty($_POST)) { $error = false; if (empty($_POST["expMonth"])) { echo "<p class='errorMessa
选择
选项执行相同操作。我错过了什么
<?php
if (!empty($_POST)) {
$error = false;
if (empty($_POST["expMonth"])) {
echo "<p class='errorMessage'> Month must be selected. </p>";
$error = true;
}
if (!$error) {
header("Location: confirmation.php");
exit;
}
}
?>
<th><label for="expDate">Expiration Date</label></th>
<td><select id="expMonth" name="expMonth"
<?php
if (isset($_POST["expMonth"])) echo "value='" . $_POST["expMonth"] . "' selected";
?>>
<option disabled selected>Select Month</option>
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">Jone</option>
</select>
您需要在正确的选项上回显所选的而不是将值回显到输入中。应该是这样的
此外,有效的HTML只允许select中的一个选项具有selected
属性。您的默认选项(Select Month
)可能会导致问题
<?php
if (!empty($_POST)) {
$error = false;
if (empty($_POST["expMonth"])) {
echo "<p class='errorMessage'> Month must be selected. </p>";
$error = true;
}
if (!$error) {
header("Location: confirmation.php");
exit;
}
}
?>
<th><label for="expDate">Expiration Date</label></th>
<td><select id="expMonth" name="expMonth">
<?php
$months = [
'1' => 'January',
'2' => 'February',
'3' => 'March',
'4' => 'April',
'5' => 'May',
'6' => 'Jone',
];
foreach ($months as $key => $value) {
$selected = '';
if (isset($_POST["expMonth"]) && $_POST["expMonth"] == $key) {
$selected = 'selected';
}
echo "<option value='{$key}' {$selected}>{$value}</option>";
}
?>
</select>
您需要在正确的选项上回显所选的而不是将值回显到输入中。您好,谢谢您的评论!我尝试了你的代码,但它在我的选择选项中重复显示了几个月。。。我添加了截图,因为我不能很好地解释它。发布所有新代码。看起来你试图混合我的代码和你的代码,但你没有删除创建选项的旧HTML代码部分。啊!!!很抱歉,我发现了原因并解决了问题!!!谢谢,还有一个问题,不知何故foreach循环没有得到第一个值“一月”,为什么会这样?我缺少一个
,在您选择输入后,我更新了我的答案。看一看。