что не так с кодом ниже? - PullRequest
0 голосов
/ 09 июня 2011

Страница вопроса

<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 и ответ: Ed

Q2 и ответ: Практика

Q3 и ответМистер Чоу

Спасибо !!!

Ответы [ 4 ]

2 голосов
/ 09 июня 2011

Ваш код очень уродлив, но для решения этой проблемы начните с использования введенных вами переменных вместо неопределенных переменных 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 голос
/ 09 июня 2011

использование

echo $result1 + $result2 + $result3;

вместо

echo $_POST["result1"]+$_POST["result2"]+$_POST["result3"];
0 голосов
/ 09 июня 2011

вам нужно: echo $result1+$result2+$result3; вместо значения сообщения

0 голосов
/ 09 июня 2011

Измените эту строку:

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

На:

echo $result1+$result2+$result3;

Подумайте об этом: Как значения из ваших переменных должны заканчиваться в $_POST суперглобальном?

...