我已经搜索过很多关于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>";
}
?>
答案 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">';
}
然而我建议改写整个事情,因为你正在以错误的方式接近它