Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Каким образом лучше суммировать баллы за ответы в тесте?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
mxup
Отправлено: 08 Сентября, 2014 - 13:53:02
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Сент. 2014  


Помог: 0 раз(а)




Есть тест, за каждый вариант ответа аётся определённок количество баллов
Например,
- если человек на первый вопрос дал ответ:"зелёный", то за этот ответ даётся 3 балла
- если человек на первый вопрос дал ответ: "красный", то за этот ответ даётся 1 балл

То есть в конце надо проссуммировать общее количество баллов.
Каким образом это лучше сделать?

Выделить переменную и с помощью оператора IF (например: if (otvet==зелёный) { ball=3}; if (otvet==красный) { ball=1};
и так для каждого варианта вопроса суммировать баллы за ответы...но это мне кажется слишком громоздко

Или как вообще это лучше сделать????
 
 Top
difight
Отправлено: 08 Сентября, 2014 - 14:27:42
Post Id



Посетитель


Покинул форум
Сообщений всего: 355
Дата рег-ции: Нояб. 2011  


Помог: 3 раз(а)




Смотря как это у вас все реализовано, а так я бы делал так, сделал селект с 2умя ответами например так
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <select name="rating">
  3.     <option disabled>Выберите баллы</option>
  4.     <option value="1">Красный</option>
  5.     <option value="3">Зеленый</option>    
  6.    </select>
  7.  

В результате при отправке формы у вас в переменную со значение rating попадет значение value, и его уже записывайте в базу, а потом суммируйте как хотите, если уже эти результате в базе со значениями зеленый красный, то да через if только, по другому не знаю как Улыбка
 
My status
 Top
RickMan
Отправлено: 08 Сентября, 2014 - 14:31:29
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




А что мешает на странице заменить value на 100500 и получить 100500 баллов из 100 ?)

(Отредактировано автором: 08 Сентября, 2014 - 14:31:42)

 
 Top
difight
Отправлено: 08 Сентября, 2014 - 14:34:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 355
Дата рег-ции: Нояб. 2011  


Помог: 3 раз(а)




RickMan пишет:
А что мешает на странице заменить value на 100500 и получить 100500 баллов из 100 ?)

Ниче не мешает, можно сделать проверки при обработки результатов, или в идеале хранить все виды райтингов в базе и по айдишнику получать значение выбранного поля Улыбка Тут уж хозяин барин =)
 
My status
 Top
mxup
Отправлено: 08 Сентября, 2014 - 14:36:04
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Сент. 2014  


Помог: 0 раз(а)




да дело в том что систему самого голосования я изменить не могу, только принимаю ответы в виде "красный", "зелёный", "не знаю" , "квадратный" и т.п. через POST
 
 Top
Tyoma5891
Отправлено: 08 Сентября, 2014 - 14:37:11
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




mxup пишет:
систему самого голосования

что это значит?
 
 Top
difight
Отправлено: 08 Сентября, 2014 - 14:37:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 355
Дата рег-ции: Нояб. 2011  


Помог: 3 раз(а)




mxup пишет:
да дело в том что систему самого голосования я изменить не могу, только принимаю ответы в виде "красный", "зелёный", "не знаю" , "квадратный" и т.п. через POST

Ну тогда через if фигаш, другого выхода не вижу =) Опять же не понятно откуда ты принимаешь эти ответы ?Улыбка С базы ?Улыбка
 
My status
 Top
Мелкий Супермодератор
Отправлено: 08 Сентября, 2014 - 15:19:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Замените группу условий словарём.
PHP:
скопировать код в буфер обмена
  1. $rgAnswers = array(
  2. 'зелёный' => 3,
  3. 'красный' => 1,
  4. /**/
  5. );
  6. $iBalls = 0;
  7. if (! isset( $rgAnswers[ $sSelectedAnswer ] )) {
  8. // такого ответа нет, реакция на ошибку ввода
  9. } else {
  10. $iBalls = $rgAnswers[ $sSelectedAnswer ];
  11. }


-----
PostgreSQL DBA
 
 Top
mxup
Отправлено: 09 Сентября, 2014 - 10:50:24
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Сент. 2014  


Помог: 0 раз(а)




Ответы теста приходят в таком виде через POST
PHP:
скопировать код в буфер обмена
  1. (
  2.     [1] => Array
  3.         (
  4.             [0] => хорошо
  5.         )
  6.  
  7.     [2] => Array
  8.         (
  9.             [0] => 76678
  10.         )
  11.  
  12.     [3] => Array
  13.         (
  14.             [0] => Синие
  15.             [1] => Зелёные
  16.         )
  17.  
  18. )

(Добавление)
Мелкий пишет:
Замените группу условий словарём.
PHP:
скопировать код в буфер обмена
  1. $rgAnswers = array(
  2. 'зелёный' => 3,
  3. 'красный' => 1,
  4. /**/
  5. );
  6. $iBalls = 0;
  7. if (! isset( $rgAnswers[ $sSelectedAnswer ] )) {
  8. // такого ответа нет, реакция на ошибку ввода
  9. } else {
  10. $iBalls = $rgAnswers[ $sSelectedAnswer ];
  11. }


Да дело в том, что есть вопросы с иллюстрациями (картинками) и там например 5 вариантов ответа: "Вариант 1" , "Вариант 2" ,"Вариант 3".....
И в разных вопросах за один и тот же вариант ответа может даваться разное количество баллов.
 
 Top
Мелкий Супермодератор
Отправлено: 09 Сентября, 2014 - 11:42:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Но вы-то знаете:
0) за какой ответ какого вопроса даётся сколько баллов
1) на какой вопрос какой пришёл ответ

Простейшая матрица: [вопрос][ответ] => количество баллов
Просто, читаемо. Если в массиве такой элемент - добавили в итог столько-то баллов.


-----
PostgreSQL DBA
 
 Top
mxup
Отправлено: 10 Сентября, 2014 - 10:40:43
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Сент. 2014  


Помог: 0 раз(а)




Мелкий пишет:
Но вы-то знаете:
0) за какой ответ какого вопроса даётся сколько баллов
1) на какой вопрос какой пришёл ответ

Простейшая матрица: [вопрос][ответ] => количество баллов
Просто, читаемо. Если в массиве такой элемент - добавили в итог столько-то баллов.


А можете пожалуйста этот код немного изменить под мой тип массива с овтетами

PHP:
скопировать код в буфер обмена
  1. $rgAnswers = array(
  2. 'зелёный' => 3,
  3. 'красный' => 1,
  4. /**/
  5. );
  6. $iBalls = 0;
  7. if (! isset( $rgAnswers[ $sSelectedAnswer ] )) {
  8. // такого ответа нет, реакция на ошибку ввода
  9. } else {
  10. $iBalls = $rgAnswers[ $sSelectedAnswer ];
  11. }


массив с ответами который мне приходит
PHP:
скопировать код в буфер обмена
  1. (
  2.     [1] => Array
  3.         (
  4.             [0] => хорошо
  5.         )
  6.  
  7.     [2] => Array
  8.         (
  9.             [0] => 76678
  10.         )
  11.  
  12.     [3] => Array
  13.         (
  14.             [0] => Синие
  15.             [1] => Зелёные
  16.         )
  17.  
  18. )

(Отредактировано автором: 10 Сентября, 2014 - 10:42:43)

 
 Top
mxup
Отправлено: 12 Сентября, 2014 - 15:25:18
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Сент. 2014  


Помог: 0 раз(а)




Ребзя, подскажите кто-нибудь плиз а ,а то у меня вечная путаница с этими массивами(((
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB