如何检查是否用PHP检查了两个单选按钮中的一个?
HTML
<form action="" method="post">
<b>Yes or No?</b><br>
Yes <input type="radio" name="template" value="Yes">
NO <input type="radio" name="template" value="No"><br><br>
<input type="submit" name="send" value="Skicka internlogg">
</form>
我不希望从头开始检查这两个单选按钮中的一个。如果用户检查其中一个,我想要一个if-statement继续代码。如果不是,我想打印一个错误代码,如“请填写整个表格”或其他东西。怎么样?
然后我想检查单选按钮和文本框中的多个语句,怎么做?
if($_POST['sr'] && $_POST['relevant'] && if(isset($_POST['article'])) && if(isset($_POST['template'])) && $_POST['text']) {}
?????
答案 0 :(得分:3)
if(isset($_POST['template'])){
$template = $_POST['template'];
//do more stuff
}
else{
echo "Please fill the whole form."; //error
}
答案 1 :(得分:3)
提交表单后,检查是否未使用isset
设置POST变量“template”。
!
前面的isset
表示“不是”。因此,它正在检查“模板”是否设置。
您应该单独检查表单的每个元素,以便为最终用户提供有关解决错误消息所需操作的建设性反馈。这被视为最佳做法以及您应该在任何表单上执行的操作,无论大小不同。
<?php
// Form submitted
if(isset($_POST['send'])) {
// CHECK FOR ERRORS
// Check for radio button value
if(!isset($_POST['template'])) {
// No value for template, show error message
$e['template'] = "<p><strong>Please select Yes or No.</strong></p>";
}
// Check the value of text box
if(!isset($_POST['relevant'])) {
$e['relevant'] = "<p><strong>Please fill out the Relevant field.</strong></p>";
}
// If no errors occurred, finish processing the form
if(!is_array($e)) {
// Do stuff (db update, email send out, etc.)
// Show thank you message
echo "<p>Thank you. We have received your submission.</p>";
exit();
}
}
?>
<form action="" method="post">
<?php echo $e['relevant']; ?>
<p><label for="relevant">Relevant:</label><input type="text" name="relevant" id="relevant" value="<?php echo htmlspecialchars($_POST['relevant']); ?>" /></p>
<?php echo $e['template']; ?>
<p>Yes or No?</p>
<p><label for="yes">Yes</label><input type="radio" name="template" id="yes" value="Yes" <?php if($_POST['template'] == "Yes") { echo 'checked="checked"'; } ?> /></p>
<p><label for="no">No</label><input type="radio" name="template" id="no" value="No" <?php if($_POST['template'] == "No") { echo 'checked="checked"'; } ?> /></p>
<p><input type="submit" name="send" value="Skicka internlogg" /></p>
</form>
编辑:为了解决您想要立即进行检查的问题,您不应该养成做的习惯,您可以这样做:< / p>
if(!isset($_POST['template']) || !isset($_POST['relevant']) || !isset($_POST['sr']) || ... ) {
$error = "<p>Please fill out all form fields.</p>";
}
然后在表格中回显错误,如上例所示。
答案 2 :(得分:2)
您可以在php代码中使用isset
函数。
if (isset($_POST['template'])){
// Yes or No selected.
}
答案 3 :(得分:1)
要一次检查所有POST值,您可以创建一个必需字段数组并循环显示它。
$required_fields = array("name", "address", "phone", "email");
foreach ($require_fields as $field) {
if (!strlen($_POST[$field])) {
echo "$field cannot be empty";
}
}
来源:https://stackoverflow.com/a/4496301/1415724
在使用下面的示例时,使用[]
时,需要使用foreach
将单选按钮视为数组,如同name="template[]"
中所用的所有单选按钮一样。否则,将出现Warning: Invalid argument supplied for foreach()
。
这使您可以以其他方式使用它,例如复选框,如果您决定在另一个应用程序中使用它而不是单选按钮。
<?php
$name = $_POST['template'];
if(isset($_POST['template'])) {
echo "You chose: <br>";
echo "<ul>";
foreach ($name as $template){
echo "<li>" .$template."</li>";
}
echo "</ul>";
} // isset
else {
echo "You did not make a choice.";
}
?>
<form action="" method="post">
<b>Yes or No?</b><br>
Yes <input type="radio" name="template[]" value="Yes">
NO <input type="radio" name="template[]" value="No"><br><br>
<input type="submit" name="send" value="Submit">
</form>
答案 4 :(得分:1)
if(isSet($_POST['template']) && $_POST['template'])
{
// dsth
}
else
echo 'Please fill the whole form';
您需要编辑PHP代码^