2

如何检查是否使用 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 语句。如果不是,我想打印一个错误代码,例如“请填写整个表格”或其他内容。如何?

然后我想从单选按钮和文本框中检查多个语句,如何?

if($_POST['sr'] && $_POST['relevant'] && if(isset($_POST['article'])) && if(isset($_POST['template'])) && $_POST['text']) {}???

4

5 回答 5

3
if(isset($_POST['template'])){
    $template = $_POST['template'];

    //do more stuff
}
else{
    echo "Please fill the whole form."; //error
}
于 2013-08-25T18:15:41.080 回答
3

提交表单后,检查 POST 变量“模板”是否未使用isset.

前面!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>

编辑:为了解决你想要一次做所有检查的问题,你不应该养成这样做的习惯,你可以做这样的事情:

if(!isset($_POST['template']) || !isset($_POST['relevant']) || !isset($_POST['sr']) || ... ) {
    $error = "<p>Please fill out all form fields.</p>";
}

然后以上面我的示例中的形式回显错误。

于 2013-08-25T18:16:55.283 回答
2

您可以isset在 php 代码中使用函数。

if (isset($_POST['template'])){
    // Yes or No selected.
}
于 2013-08-25T18:15:42.257 回答
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



原来的

在下面使用我的示例时,需要将单选按钮视为一个数组,使用[]when using 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>
于 2013-08-25T18:20:03.457 回答
1
if(isSet($_POST['template']) && $_POST['template'])
{
   // dsth
}
else
   echo 'Please fill the whole form';

您需要编辑您的 PHP 代码 ^

于 2013-08-25T18:27:17.913 回答