下面的代码有什么问题?

时间:2011-06-09 06:20:32

标签: php point

问题页面

<html>
<head><title>ex41a</title></head>
<body>
<form method="post" name="ex41a" action="ex41b.php">
<hr>
Q1: Who made this question? <br>
<input type="radio" name="1ans" value="Spiderman"> Spiderman <br>
<input type="radio" name="1ans" value="Ed"> Ed <br>
<input type="radio" name="1ans" value="Superman"> Superman <br>
<input type="radio" name="1ans" value="The Hulk"> The Hulk <br>
<hr>
Q2: What is this for? <br>
<input type="radio" name="2ans" value="Exercise"> Exercise <br>
<input type="radio" name="2ans" value="Your own self"> Your own self <br>
<input type="radio" name="2ans" value="Practice"> Practice <br>
<input type="radio" name="2ans" value="Nothing"> Nothing <br>
<hr>
Q3: Who is the teacher? <br>
<input type="radio" name="3ans" value="Mr. Lo"> Mr. Lo <br>
<input type="radio" name="3ans" value="Mr. Lai"> Mr. Lai <br>
<input type="radio" name="3ans" value="Mr. Ivan"> Mr. Ivan <br>
<input type="radio" name="3ans" value="Mr. Chow"> Mr. Chow <br>
<hr>
<input type="submit" name="Submit">

</body>
</html>

点页面

<html>
<head><title>ex41b</title></head>
<body bgcolor="silver" text="black">
<body>
<font size=30 color=blue>Your total point is:</font><hr>

<?php   
    if($_POST["1ans"]=="Ed") {
        $result1=1;
    }else{
        $result1=0;
}
    if($_POST["2ans"]=="Practice") {
        $result2=1;
    }else{
        $result2=0;
}
    if($_POST["3ans"]=="Mr Chow") {
        $result3=1;
    }else{
        $result3=0;
}

    echo $_POST["result1"]+$_POST["result2"]+$_POST["result3"];

?>

<hr>
<a href="ex41a.php">Back</a>

</body>
</html> 

我已经尝试过这个代码,但是如果我选择了正确的答案,我仍然得到0分......如果有正确的答案我怎么能这样做呢?它总共会增加1分3分......

Q1 ans是Ed

Q2 ans is Practice

第三季度是周先生

谢谢!!!

4 个答案:

答案 0 :(得分:2)

您的代码非常难看,但要解决此问题,请先使用您引入的变量而不是未定义的POST变量:

echo $result1+$result2+$result3;

以下是对更好结构的建议:

$correct = array(1 => 'Ed',
                 2 => 'Practice',
                 3 => 'Mr Chow');
$result = array();
$points = 0;

for($i = 1; $i <= 3; $i++) {
  if($_POST['ans'.$i] == $correct[$i]) {
    $result[$i] = true;
    $points++;
  }else{
    $result[$i] = false;
  }
}

echo $points;

如果用户在每个问题上回答正确,则$result将包含,$points是正确答案的总数。请注意,我更喜欢数组而不是编号的变量名,因为使用数组更容易。

答案 1 :(得分:1)

使用

echo $result1 + $result2 + $result3;

而不是

echo $_POST["result1"]+$_POST["result2"]+$_POST["result3"];

答案 2 :(得分:0)

更改此行:

echo $_POST["result1"]+$_POST["result2"]+$_POST["result3"];

要:

echo $result1+$result2+$result3;

请考虑一下:变量中的值如何最终在$_POST超全局中?

答案 3 :(得分:0)

您需要:echo $result1+$result2+$result3;而不是帖子值