我有一个处理姓名/电话/评论等的评论部分。我也有一个这种形式的复选框。当复选框设置为空时,我得到错误异常。但是如果检查了盒子,并且其他区域不满意,我就无法让这些盒子保持检查,同时将错误抛到别处并重新加载页面。
我尝试将if语句中的值和$response
设置为yes,但是如果选中了一个框,则在页面重新加载时会检查所有框。
PHP:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["response"])) {
$responseErr = "Response is required";
} else {
$response = test_input($_POST["response"]);
}
}
How would you prefer us to respond? Choose all that apply.
<span class="error">*
<?php echo $responseErr;?>
</span>
<br>
<input type="checkbox" name="response" <?php if (isset($response) && $response=="Call") echo "checked";?> value="Call">Call
<input type="checkbox" name="response" <?php if (isset($response) && $response=="Text") echo "checked";?> value="Text">Text
<input type="checkbox" name="response" <?php if (isset($response) && $response=="Email") echo "checked";?> value="Email">E-mail
<br><br>
答案 0 :(得分:1)
另一种解决方案可能是为每个复选框指定一个唯一的名称(电话响应,电子邮件响应,文本响应),然后单独检查每个复选框。当然,这意味着更多的代码,但我以后很容易实现和管理。
答案 1 :(得分:0)
<强>解决:强>
有人提到我应该给每个输入他们自己的名字。
How would you prefer us to respond? Choose all that apply.<span class="error">* <?php echo $responseErr;?></span><br>
<input type="checkbox" name="callResponse" <?php if (isset($callResponse) && $callResponse=="Yes") echo "checked";?> value="Yes">Call
<input type="checkbox" name="textResponse" <?php if (isset($textResponse) && $textResponse=="Yes") echo "checked";?> value="Yes">Text
<input type="checkbox" name="emailResponse" <?php if (isset($emailResponse) && $emailResponse=="Yes") echo "checked";?> value="Yes">E-mail<br><br>
此外,在错误检查中,您需要针对空条目测试所有3个输入。否则,即使选中了复选框,也会显示错误消息。
if (empty($_POST["callResponse"]) && empty($_POST["textResponse"]) && empty($_POST["emailResponse"])) {
$responseErr = "Response is required";
} else {
$callResponse = test_input($_POST["callResponse"]);
}
if (empty($_POST["callResponse"]) && empty($_POST["textResponse"]) && empty($_POST["emailResponse"])) {
$responseErr = "Response is required";
} else {
$textResponse = test_input($_POST["textResponse"]);
}
if (empty($_POST["callResponse"]) && empty($_POST["textResponse"]) && empty($_POST["emailResponse"])) {
$responseErr = "Response is required";
} else {
$emailResponse = test_input($_POST["emailResponse"]);
}