如何检查是否使用PHP检查了两个单选按钮中的一个?

时间:2013-08-25 18:11:45

标签: php html

如何检查是否用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']) {} ?????

5 个答案:

答案 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代码^