Помогите подправить php код

A
На сайте с 30.06.2013
Offline
119
863

я делаю онлайн тест и немного запутался..

Пример

У меня есть скажем 5 вопросов..

1) Вопрос 1

Ответ: да / нет (radiobutton)

2) Вопрос 2

Ответ: да / нет (radiobutton)

3) Вопрос 3

Ответ: да / нет (radiobutton)

4) Вопрос 4

Ответ: да / нет (radiobutton)

5) Вопрос 5

Ответ: да / нет (radiobutton)

Да - 1 очко, Нет - 0.

Мне надо выводить ответы в зависимости от кол-ва очков..

Код


$count = 0;

// вопрос 1
if ($_POST[q1] == a){
$count++;
}

// вопрос 2
if($_POST[q2] == a){
$count++;
}

// вопрос 3
if($_POST[q3] == a){
$count++;
}


// вопрос 4
if($_POST[q4] == a){
$count++;
}


// вопрос 5
if($_POST[q5] == a){
$count++;
}


// выводим результат в зависимости от очков
if(count < 2){
echo "ABC";
}

else if(count > 3){
echo "DEF";
}

Но

1) Проблема в том, что всегда срабатывает только ECHO ABC...

Где я ошибку сделал?

ps: php редактор форума почему-то код отформатировал..вообще там так я писал

if($_POST[q3] == a)

rkelly
На сайте с 08.06.2007
Offline
96
#1

Метод отправки в html-форме теста указан POST ?

Joker-jar
На сайте с 26.08.2010
Offline
167
#2

А что такое "a"? Константа?

A
На сайте с 19.07.2010
Offline
130
#3
alexdosson:
ps: php редактор форума почему-то код отформатировал..вообще там так я писал
if($_POST[q3] == a)

Скорее всего нужно писать:

$_POST["q3"]

А вообще добавьте в самом начале

print_r($_POST);

и посмотрите, что к вам приходит.

.............
S3
На сайте с 29.03.2012
Offline
362
#4

Проверьте, что у вас в инпутах приходит из формы ответов, возможно всегда одно и тоже, если для всех радиобаттонов одно и тоже имя.

Ну и в пхп есть case, если правильно помню, он тут уместнее

A
На сайте с 30.06.2013
Offline
119
#5
rkelly:
Метод отправки в html-форме теста указан POST ?

Верно...вот html


<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<form action="result.php" method="POST">
<div>
<p>Вопрос?</p>
<label><input name="q1" value="a" type="radio">Да</label>
<label><input name="q1" value="b" type="radio">Нет</label>

</div>

<div>
<p>Вопрос?</p>
<label><input name="q2" value="a" type="radio">Да</label>
<label><input name="q2" value="b" type="radio">Нет</label>

</div>

<div>
<p>Вопрос?</p>
<label><input name="q3" value="a" type="radio">Да</label>
<label><input name="q3" value="b" type="radio">Нет</label>

</div>

<div>
<p>Вопрос?</p>
<label><input name="q4" value="a" type="radio">Да</label>
<label><input name="q4" value="b" type="radio">Нет</label>

</div>

<div>
<p>Вопрос?</p>
<label><input name="q5" value="a" type="radio">Да</label>
<label><input name="q5" value="b" type="radio">Нет</label>


</div>
<button type="submit">Результат</button>
</form>
</body>
</html>


---------- Добавлено 04.04.2016 в 08:17 ----------

Joker-jar:
А что такое "a"? Константа?

a это value

S3
На сайте с 29.03.2012
Offline
362
#6

А вы заметили, что у вас проверяется функция count а не переменная $count ???

W
На сайте с 09.04.2013
Offline
46
#7

Попробуйте так переписать код:

index.html


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<form action="submit.php" method="post">
<div>
<p>Вопрос 1?</p>
<label><input name="test[q1]" value="1" type="radio" checked>Да</label>
<label><input name="test[q1]" value="0" type="radio">Нет</label>
</div>
<div>
<p>Вопрос 2 ?</p>
<label><input name="test[q2]" value="1" type="radio" checked>Да</label>
<label><input name="test[q2]" value="0" type="radio">Нет</label>
</div>
<p>
<input type="submit" value="Отправить">
</form>
</body>
</html>

submit.php


<?php
$points = array_sum($_POST['test']);
switch ($points) {
case 0:
echo "Баллов 0";
break;
case 1:
echo "Баллов 1";
break;
case 2:
echo "Баллов 2";
break;
}



A
На сайте с 30.06.2013
Offline
119
#8
Sly32:
А вы заметили, что у вас проверяется функция count а не переменная $count ???

вы правы, спасибо

---------- Добавлено 05.04.2016 в 00:41 ----------

webjey:
Попробуйте так переписать код:

index.html


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<form action="submit.php" method="post">
<div>
<p>Вопрос 1?</p>
<label><input name="test[q1]" value="1" type="radio" checked>Да</label>
<label><input name="test[q1]" value="0" type="radio">Нет</label>
</div>
<div>
<p>Вопрос 2 ?</p>
<label><input name="test[q2]" value="1" type="radio" checked>Да</label>
<label><input name="test[q2]" value="0" type="radio">Нет</label>
</div>
<p>
<input type="submit" value="Отправить">
</form>
</body>
</html>


submit.php

<?php
$points = array_sum($_POST['test']);
switch ($points) {
case 0:
echo "Баллов 0";
break;
case 1:
echo "Баллов 1";
break;
case 2:
echo "Баллов 2";
break;
}



спасибо, я просто с if else больше понимаю

S3
На сайте с 29.03.2012
Offline
362
#9
alexdosson:
вы правы, спасибо

спасибо, я просто с if else больше понимаю

Я бы посоветовал потратить 15 минут и разобраться - все таки иногда эта конструкция полезна.

В Питоне ее нет, а иногда бы удобнее было через нее делать выбор.

Я как то сделал себе плагин для вордпресса для быстрого создания тестов с отдельными таблицами в базе для вопросов, ответов, но его не мешало бы довести до ума.

Вот тут рабочая версия, если любопытно.

M
На сайте с 04.12.2013
Offline
223
#10
Sly32:
все таки иногда эта конструкция полезна

Да, только не в данном случае:

echo 'Баллов ',$points;
Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий