2014-01-05 2 views
0

У меня есть HTML-страница с несколькими вопросами выбора и кнопкой отправки. Кнопка «Отправить» приводит к странице .php, которая включает в себя код: 1) подключение к phpmyadmin базе данных SQL и соответствующей таблице и 2) приведенный ниже код, который сообщает/напоминает пользователю, какой номер вопроса он был, фактический вопрос, правильный ответ (из базы данных) и их ответ.Вычисление оценки для викторины в PHP, связанной с базой данных

Моя проблема в том, что я хочу, чтобы счет был рассчитан и передан пользователю, и он не совсем работает. Сообщение об ошибке говорит мне, что следующая строка не работает

$answered = $row['select'.$_GET['a'.$x]] ; 

Я взял это из другого вопроса/ответ форума, и я не совсем уверен, что это полностью государство, но это, кажется, вызывает ошибку

База данных проста; Только столбцы «Только», «Questionid», «Questiontext» и «Correctanswer».

Браузер отображает следующее:

Question Number: 1 
Question: ________ hablo 
Correct Answer: Yo 
Your Answer: Yo 

Примечание: Не определено индекс: а2 в C: \ XAMPP \ HTDOCS \ SSF \ 1B results.php на линии 33

Примечание: Не определено index: select in C: \ xampp \ htdocs \ SSF \ 1B results.php on line 33 Вы правильно ответили на вопросы 0 из 1!

Код

$result = mysql_query("SELECT * FROM 1b") 
       or die ('Connection to table failed'); 

$x = 0; 
$score = 0; 
while ($row = mysql_fetch_assoc($result)){ 

    echo "Question Number: " . $row['Questionid'] . '<br />'; 
    echo "Question: " . $row['Questiontext'] . '<br />'; 
    echo "Correct Answer: " . $row['Correctanswer'] . '<br />'; 
    foreach ($_GET['select'] as $value) 
    echo "Your Answer: " . $value."\n" . '<br />'; 

    $answered = $row['select'.$_GET['a'.$x]] ; 
    $correct = $row['Correctanswer'] ; 

    if ($answered == $correct) { 
     $score++; 
     $acolor = 'green' ; 
    } 
    else { 
     $acolor = 'red' ; 
    } 

    $x = $x + 1; 
} 
echo 'You answered ' . $score . ' out of ' . $x . ' questions correctly!'; 
?> 

ответ

0
$answered = $row['select'.$_GET['a'.$x]] ; 

Но когда эхо 'Ваш ответ', вы используете $ значение. Разве это не сработало бы?

$answered = $value ; 

(это было бы полезно, чтобы увидеть форму вы отправляете, хотя ...)

+0

Я вижу сейчас. Я дублировал переменную. Я удалил строку $ answer = $ row ['select'. $ _ GET ['a'. $ X]]; и скорректировал оператор If на значение $. Теперь он работает. спасибо – user3163399

0

неопределенная ошибка индекса, что вы получаете, когда вы ссылаетесь на значение в массиве с помощью ключа, но ключа не существует. Например:

$array = array(
     'abc' => 1, 
     'def' => 2, 
); 

Если теперь я стараюсь ссылаться на какой-то случайный ключ как массив $ [ «г»] Я получаю сообщение об ошибке вы упомянули.

Первая ошибка, которую вы получаете, говорит вам, что ваши параметры GET даже не имеют установленного ключа «a2». Вторая ошибка, которую вы получаете, потому что ключ «select» не существует в вашем массиве $ row.

Нам нужно будет увидеть форму, которую вы отправляете, чтобы получить правильное представление о том, что именно неправильно.

Смежные вопросы