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]   

> Описание: Как бы Вы это реализовали?
Sanek_OS9
Отправлено: 02 Декабря, 2013 - 19:20:21
Post Id



Гость


Покинул форум
Сообщений всего: 115
Дата рег-ции: Окт. 2012  
Откуда: Украина


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




Здравствуйте, мне не дает покоя одна функция которую я как то "костыльно" реализовал. Для начала расскажу о задумке, скрипт у меня называется "Тесты", выводит вопрос и четыре варианта ответов, после ответов на все вопросы выводится результат, вопрос и соответственно четыре вариантов ответа которые нужно вывести с подсветкой, а именно подсветить зеленым если ответ был дан верно, красным если не верно и если ответ не верный еще нужно подсветить правильный ответ. Я это реализовал так:
PHP:
скопировать код в буфер обмена
  1.        
  2.         public function getString($otvet){
  3.                 static $i = 1 ;
  4.                 if($otvet['otvet'] == $otvet['user_otvet'] && $otvet['otvet'] == $i){
  5.                         $String = '[green]' . $otvet['n' . $i] . '[/green]' ;
  6.                 }elseif($otvet['otvet'] != $otvet['user_otvet'] && $otvet['user_otvet'] == $i){
  7.                         $String = '[red]' . $otvet['n' . $i] . '[/red]' ;
  8.                 }elseif($otvet['otvet'] != $otvet['user_otvet'] && $otvet['otvet'] == $i && $this->_set['showing_answer']){
  9.                         $String = '[green]' . $otvet['n' . $i] . '[/green]' ;
  10.                         }else{
  11.                         $String = $otvet['n' . $i] ;
  12.                 }
  13.                 $i++ ;
  14.                 if($i > 4)$i = 1 ;
  15.                 return '- ' . $String ;
  16.         }
  17.  

Если ответ == ответу пользователя и этот ответ == номеру итерации то светить зеленым
Если ответ != ответу пользователя и этот ответ == номеру итерации то светить красным
Если ответ != ответу пользователя и правильный ответ == номеру итерации и подсветка разрешена то светить зеленым
------------
Вроде все просто и понятно но как по мне можно сделать и лучше.
 
 Top
IllusionMH
Отправлено: 03 Декабря, 2013 - 01:31:05
Post Id



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


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




Sanek_OS9, ну у меня б ответы выводились в li.
Вне зависимости от обстоятельст я б для каждого ответа в массив собирал классы в цикле
PHP:
скопировать код в буфер обмена
  1. if('right' == $question[$i]['status']) {
  2.  $classes[$i][] ='right';
  3. }
  4. if('checked' == $question[$i]['user']) {
  5.  $classes[$i][] ='user';
  6. }

потом
CODE (htmlphp):
скопировать код в буфер обмена
  1. <li class="<?php implode(' ', $classes[$i]); ?>">

Названия и структуру на входе показал неудачно, но это для демонстрации принципа.
У нас на выходе имеются варианты ответов
и Варианты когда у ответа есть классы
CODE (css):
скопировать код в буфер обмена
  1. .user {
  2.   background: red;
  3. }
  4. .right {
  5.   background: green;
  6. }


Таким образом праильный ответ будет подсвечен зеленым, и будет 1 если юзер попал, и крассным если юзер не попал, и отдельно зеленым правильный.

В вопросах с множественным выбором можно желтым выделять правильный, зеленым - совпадение с правильным и красным - непраильные ответы.
CODE (css):
скопировать код в буфер обмена
  1. .user {
  2.   background: red;
  3. }
  4. .right {
  5.   background: green;
  6. }
  7. .user.right {
  8.   background: yellow;
  9. }


Использовать свои бб коды как-то напряжно. Но если невозможно избежать, то так же через массив можно делать открывающие теги соединив через ][, а потом реверс и соединять через ][/

(Отредактировано автором: 03 Декабря, 2013 - 01:40:09)

 
 Top
Sanek_OS9
Отправлено: 04 Декабря, 2013 - 03:49:06
Post Id



Гость


Покинул форум
Сообщений всего: 115
Дата рег-ции: Окт. 2012  
Откуда: Украина


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




IllusionMH спасибо за Ваш ответ, принцип работы думаю понял, скрипт у меня написан для движка так что в стили мне лезть не стоит, вариант с бб кодами мне хорошо подходит, мне лишь не подходит свой громоздкий код. Ваш мне больше нравится, спасибо.

(Отредактировано автором: 04 Декабря, 2013 - 03:51:03)

 
 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