如果未选择单选按钮,则返回错误 - PHP

时间:2014-02-18 16:53:54

标签: javascript php

我已经搜索过很多关于php和单选按钮的问题,但我还没有找到一些帮助我的情况。我正在为服务器端脚本类构建测验。我被困在实际的测验部分。如果用户没有选择问题的答案,我想要回显错误消息。相反,当我点击提交按钮而不选择任何选项时,我会自动重定向到结果页面。如何更正我的代码,以便如果用户在未回答所有问题的情况下点击提交,则会收到错误消息?下面是我为了检查单选按钮和后续步骤而写出的当前代码。

<div id="question5"> <!-- each quiz question gets this set up -->
<h2 id="question5_error">WAIT! You did not pick an answer to this question!</h2>
<p>5. What creature pulls the Hogwarts carriages?<br>
<input type="radio" name="creature" value="Cornish Pixies" <?php if (isset($_SESSION["creature"]) && $_SESSION["creature"]="Cornish Pixies"){ echo"checked";} ?> > Cornish Pixies<br> <!-- php code checks to see if radio button has been selected-->
<input type="radio" name="creature" value="Clydesdales" <?php if (isset($_SESSION["creature"]) && $_SESSION["creature"]="Clydesdales"){ echo"checked";} ?> > Clydesdales<br>
<input type="radio" name="creature" value="Hippogriffs" <?php if (isset($_SESSION["creature"]) && $_SESSION["creature"]="Hippogriffs"){ echo"checked";} ?> > Hippogriffs<br>
<input type="radio" name="creature" value="Thestrals" <?php if (isset($_SESSION["creature"]) && $_SESSION["creature"]="Thestrals"){ echo"checked";} ?> > Thestrals<br>

<input type="hidden" name="sent" value="sent" onclick="Project1_Page2.php">
<input type="submit" name="goresults" value="Get Results?">|<input type="reset" name="resetquiz" value="Reset Quiz.">
</form> 
</article>
<?php
if(isset($_GET["sent"])){
echo "<script type = 'javascript'>";
if(!isset($_GET["question1"])){ // QUIZ QUESTION 1 CHECK
       $_SESSION["author"]=$_GET["author"];
    }
    else{
        echo "document.getElementById('question1').style.backgroundColor = '#ffcccc';
        document.getElementById('question1_error').style.display = 'block';";
    }
if(!isset($_GET["question2"])){ // QUIZ QUESTION 2 CHECK
    $_SESSION["godfather"]=$_GET["godfather"];
    }
    else{
        echo"document.getElementById('question2').style.backgroundColor = '#ffcccc';
        document.getElementById('question2_error').style.display = 'block';";
    }
if(!isset($_GET["question3"])){ // QUIZ QUESTION 3 CHECK
    $_SESSION["prison"]=$_GET["prison"];
    }
     else
    {
        echo"document.getElementById('question3').style.backgroundColor = '#ffcccc';
        document.getElementById('question3_error').style.display = 'block';";
    }   
if(!isset($_GET["question4"])){ // QUIZ QUESTION 4 CHECK
    $_SESSION["badguy"]=$_GET["badguy"];
    }
    else
    {
        echo"document.getElementById('question4').style.backgroundColor = '#ffcccc';
        document.getElementById('question4_error').style.display = 'block';";
    }
if(!isset($_GET["question5"])){ // QUIZ QUESTION 5 CHECK
    $_SESSION["creature"]=$_GET["creature"];
    }
    else
    {
        echo"document.getElementById('question5').style.backgroundColor = '#ffcccc';
        document.getElementById('question5_error').style.display = 'block';";
    }
echo "</script>";
}
?>

2 个答案:

答案 0 :(得分:0)

首先,如果您使用的是收音机,则将其属性名称设置为

<form method="post">
    <input name="question" value="1" />
    <input name="question" value="2" />
    <input name="question" value="3" />
    <input name="question" value="4" />
</form>

以这种方式设置你的逻辑语句。



    if(isset($_POST['question'])){

    //here you put the the right answer based on the user what he/she chose.


    }


我建议你使用POST是安全的。如果您使用GET,则无线电的值将显示在网址上。我希望这会有所帮助。

和平

答案 1 :(得分:0)

没有看到您的HTML,很难说,但这里有一些建议

在您的表单标记中,删除“操作”属性

<form method="post/get" >

然后创建一个变量

$haserror = false;

而且我不确定你想在这里实现什么,但是改变这样的代码

if(!isset($_GET["question1"])){ // QUIZ QUESTION 1 CHECK
       $_SESSION["author"]=$_GET["author"];
        echo "document.getElementById('question1').style.backgroundColor = '#ffcccc';
        document.getElementById('question1_error').style.display = 'block';";

$ haserror = true;         }

对所有复选框执行相同的操作

然后在结尾处显示结果页面

if(!$haserror)
{
    echo '<META http-equiv="refresh" content="0;URL=newpage.php">';

}

然而我建议改写整个事情,因为你正在以错误的方式接近它