我的其他if else语句正在执行php

时间:2014-07-24 18:15:26

标签: php html radio-button

我有3个表单,每个表单有3个无线电,但由于随机发生器,一次执行一个。如果我单击一个收音机,它将转到下一页,并将通过if else语句进行检查。现在我的问题是,当它得到答案并且它是正确的时,它将输出是。但是,我的另一个if else声明我的其他无线电执行。由于它没有回答,它认为它是错误的,所以输出没有。

这是我的代码:

<!doctype html>
<html>
<head>
    <title>Question and Answer</title>
</head>

<body>

    <?php 
        //Creating random numbers
        $rid = rand(1,3);
    ?> 




    <?php 


    if ($rid == 1){

echo "

<form action='answer.php?id=1' method='post' id='quizForm' id='1'>


<ol>


    <li>
    <h3>What does HTML Stands For ?</h3>

    <div>
    <input type='radio' name='answerOne' id='answerOne' value='A' />
    <label for='answerOneA'>A) Hyper text markup language</label>
    </div>

    <div>
    <input type='radio' name='answerOne' id='answerOne' value='B' />
    <label for='answerOneB'>B) Hyper turn mark lingo</label>
    </div>

    <div>
    <input type='radio' name='answerOne' id='answerOne' value='C' />
    <label for='answerOneC'>C) Happy tissue mahatma life</label>
    </div>
    </li>




<input type = 'submit' name = 'submit1' value = 'Choose..'> 


</form>";

}


    if ($rid == 2){

echo "

<form action='answer.php?id=1' method='post' id='quizForm' id='1'>


<ol>


    <li>
    <h3>What does CSS Stands For ?</h3>

    <div>
    <input type='radio' name='answer2' id='answer2' value='A' />
    <label for='answer2A'>A) College Computer Studies</label>
    </div>

    <div>
    <input type='radio' name='answer2' id='answer2' value='B' />
    <label for='answer2B'>B) Cascading Style Sheet</label>
    </div>

    <div>
    <input type='radio' name='answer2' id='answer2' value='C' />
    <label for='answer2C'>C) Cascaded Style Sheet</label>
    </div>
    </li>




<input type = 'submit' name = 'submit1' value = 'Choose..'> 


</form>";

}

if ($rid == 3){

echo "

<form action='answer.php?id=1' method='post' id='quizForm' id='1'>


<ol>


    <li>
    <h3>What does PHP Stands For ?</h3>

    <div>
    <input type='radio' name='answer3' id='answer3' value='A' />
    <label for='answerOneA'>A) Hyper text markup language</label>
    </div>

    <div>
    <input type='radio' name='answer3' id='answer3' value='B' />
    <label for='answerOneB'>B) Hyper turn mark lingo</label>
    </div>

    <div>
    <input type='radio' name='answer3' id='answer3' value='C' />
    <label for='answerOneC'>C) Happy tissue mahatma life</label>
    </div>
    </li>




<input type = 'submit' name = 'submit1' value = 'Choose'> 


</form>";

}

    ?> 



</body>
</html>

/////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////

<!doctype html>
<html>
<head>
    <title>Question and Answer</title>
</head>

<body>

    <?php

        error_reporting(E_ALL ^ E_NOTICE);

        $answer = array('A','B','C');


        $answer1= $_POST['answerOne'];
        $answer2= $_POST['answer2'];

        if($answer1 == $answer[0]){
            echo 'yes';
        }
        else if ($answer1 != $answer[0]){
            echo 'no';
        }
        else{

        }

        if($answer2 == $answer[1]){
            echo 'yes';
        }
        else if ($answer2 != $answer[1]){
            echo 'no';
        }

    ?>

</body>
 </html>

1 个答案:

答案 0 :(得分:2)

这是一种更清洁的方法。在is_correct函数内部,它会检查$_POST中是否存在特定答案,如果是,则在答案正确时返回:

function is_correct()
{
    $answer = array(
        'answerOne' => 'A',
        'answer2' => 'B',
        'answer3' => 'C',
    );

    foreach ($answer as $k => $v) {
        if (array_key_exists($k, $_POST)) {
            return $v == $_POST[$k];
        }
    }

    return false;
}

if (is_correct()) {
    echo "yes";
} else {
    echo "no";
}