Вопрос ответ php скрипты
БлогNot. Пишем простой тест на PHP
Пишем простой тест на PHP
- ‘q’ — отображаемый текст вопроса;
- ‘t’ — тип вопроса, соответствующий нужному тегу HTML: ‘checkbox’ для галочек «да/нет», ‘text’ для строки или числа в качестве ответа, ‘select’ — для списка, в котором нужно выбрать одно значение из нескольких. Выбор более одного значения реализуем придуманным нами элементом ‘multiselect’ , представляющим из собой группу вместе обрабатываемых checkbox’ов. На самом деле, стандартный список с атрибутом multiple тоже позволяет решить эту задачу, но не хотелось бы загружать пользователя необходимостью помнить, что множественный выбор из списка делается при зажатой клавише Ctrl;
- ‘a’ — правильный ответ, для checkbox это значение ‘1’ или ‘0’ (нужно ли включать галочку), для text — строка с ответом (длину поля будем генерировать равной длине строки с правильным ответом, так что контроль лишних разделителей и проч. опустим), для select — номер варианта в списке, который является правильным ответом (варианты нумеруются с нуля!), для multiselect — строка из единиц и нулей, разделённых символом » | «, показывающая, какие по порядку чекбоксы нужно включить, а какие не нужно;
- ‘i’ — элементы списка, нужные только для типов вопроса select и multiselect , значение содержит строки, разделённые символом » | » (элементы списка или варианты утверждений).
За каждый правильный ответ, в том числе, выбор всех «правильных» чекбоксов в ‘multiselect’, будет начисляться 1 балл, а в конце скрипт выдаст резюме о количестве и проценте правильных ответов.
В отличие от простого конвертера, в этом скрипте мы не ставили задачи сохранить пользовательский ввод, поэтому ссылка «Ещё раз!» на странице с результатами позволяет просто пройти тест повторно, введя все результаты и отметив все чекбоксы заново. Несмотря на это, программке понадобилось 2 дополнительных функции:
- error_check проверяет, всё ли хорошо с очередным элементом массива $test , и, если что-то не так, завершает выполнение скрипта. Это может пригодиться при отладке;
- strlwr_ переводит в нижний регистр строки, введённые пользователем в качестве ответов. Предполагается кодировка Windows-1251, но можно, конечно, вставить текст скрипта в файл с другой кодировкой и поменять мета-тег кодировки в заголовке.
Вот полный исходник приложения, содержащий тест всех 4 типов вопросов:
Тест на PHP
'Первым космонавтом был Юрий Гагарин','t'=>'checkbox','a'=>'1'), array ('q'=>'Первым президентом РФ был Михаил Горбачёв','t'=>'checkbox','a'=>'0'), array ('q'=>'Сколько уровней прикладных протоколов в стандартной сетевой модели OSI?','t'=>'text','a'=>'7'), array ('q'=>'Жириновский возглавляет партию ','t'=>'select','i'=>'КПРФ|ЛДПР|ЕР','a'=>'1'), array ('q'=>'Выберите верные утверждения','t'=>'multiselect', 'i'=>'2*2=4|Волга впадает в Каспийское море|Луна дальше от Земли, чем Солнце','a'=>'1|1|0') ); if (!empty($_POST['action'])) < //считаем правильные и выводим резюме $ball = 0; foreach ($test as $key=>$val) < switch ($val['t']) < case 'checkbox': if (isset($_POST[$key]) and $val['a']==1 or !isset($_POST[$key]) and $val['a']==0) $ball++; break; case 'text': if (isset($_POST[$key]) and strlwr_($_POST[$key])==strlwr_($val['a'])) $ball++; break; case 'select': if (isset($_POST[$key]) and $_POST[$key]==$val['a']) $ball++; break; case 'multiselect': $i = explode ('|',$val['a']); $cnt = 0; foreach ($i as $number=>$answer) if (isset($_POST[$key.'_'.$number]) and $answer==1 or !isset($_POST[$key.'_'.$number]) and $answer==0) $cnt++; if ($cnt==count($i)) $ball++; break; > > $p = round ($ball/count($test)*100); echo 'Верных ответов: '.$ball.' из '.count($test).', '.$p.'%.
'; echo 'Ещё раз!
'; > else < //предложить форму echo 'Отметьте верные утверждения или введите ответ или выберите верный вариант из списка.
'; $counter = 1; echo ''; foreach ($test as $key=>$val) < error_check ($val); echo ($counter++).'. '; switch ($val['t']) < case 'checkbox': echo $val['q'].' '; break; case 'text': $len = strlen ($val['a']); echo $val['q'].' '; break; case 'select': echo $val['q'].' '; break; case 'multiselect': $i = explode ('|',$val['i']); echo $val['q'].': '; foreach ($i as $number=>$item) echo $item.' '; break; > echo '
'; > echo ' '; > function error_check ($q) < $question_types = array ('checkbox', 'text', 'select', 'multiselect'); $error = ''; if (!isset($q['q']) or empty($q['q'])) $error='Нет текста вопроса или он пуст'; else if (!isset($q['t']) or empty($q['t'])) $error='Не указан или пуст тип вопроса'; else if (!in_array($q['t'],$question_types)) $error='Указан неверный тип вопроса'; else if (!isset($q['a']) or empty($q['a']) and $q['a']!='0') $error='Нет текста ответа или он пуст'; else < if ($q['t']=='checkbox' and !($q['a']=='0' or $q['a']=='1')) $error = 'Для переключателя разрешены ответы 0 или 1'; else if ($q['t']=='select' || $q['t']=='multiselect') < if (!isset($q['i']) or empty($q['i'])) $error='Не указаны элементы списка'; else < $i = explode ('|',$q['i']); if (count($i)<2) $error='Нет хотя бы 2 элементов списка вариантов ответа с разделителем |'; foreach ($i as $s) if (strlen($s)<1) < $error = 'Вариант ответа короче 1 символа'; break; >else < if ($q['t']=='select' and !array_key_exists($q['a'],$i)) $error='Ответ не является номером элемента списка'; if ($q['t']=='multiselect' ) < $a = explode ('|',$q['a']); if (count($i)!=count($a)) $error='Число утверждений и ответов не совпадает'; foreach ($a as $s) if ($s!='0' and $s!='1') < $error = 'Утверждение не отмечено как верное или неверное'; break; >> > > > > if (!empty($error)) < echo 'Найдена ошибка теста: '.$error.'
Отладочная информация:
'; print_r ($q); exit; > > function strlwr_($s) < $hi = "ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"; $lo = "abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя"; $len = strlen ($s); $d=''; for ($i=0; $ireturn $d; > ?>
Ниже показан вид теста и результат его прохождения.
простой тест на PHP, будет выведен на одной странице, но типы вопросов могут быть разными
простой тест на PHP, страница с результатами 🙂
05.10.2015, 18:14 [27604 просмотра]
prowebber.cc — Тут есть все для настоящих вебмастеров
Вы вошли как гость, рекомендуем Вам авторизироваться либо пройти процесс регистрации. Если Вы забыли пароль, то Вы можете его восстановить.
PROWEBBER » Web » Скрипты » AskMe v1.2.1 NULLED — социальная сеть для вопросов и ответов PHP
AskMe v1.2.1 NULLED — социальная сеть для вопросов и ответов PHP
Данный материал предоставлен сайтом ProWebber.cc исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое. Скачать бесплатно AskMe v1.2.1 NULLED — социальная сеть для вопросов и ответов PHP.
Это социальный скрипт вопросов и ответов, AskMe — лучший способ начать свой собственный (клон AskFm)! AskMe работает быстро, надежно.
Загрузить изображения: загрузите любое изображение со своего устройства и поделитесь им в Интернете с другими пользователями.
Высокая производительность и возможности: AskMe может легко обрабатывать любое количество видео / изображений с очень высокой производительностью и скоростью.
Интеграция с WoWonder: одним щелчком мыши пользователь может войти на ваш сайт с помощью социальной сети WoWonder.
Нравится: пользователь может лайкать пользователей на странице поиска совпадений.
Профиль пользователя: пользователь может создать свой собственный профиль и загружать изображения без ограничений.
Оптимизация для SEO: ссылки для SEO и HTML-код, который понравится Google!
Мощная панель администратора: управляйте настройками, видео, дизайном и многим другим с помощью нашей панели администратора.
Мощный интерфейс: красивый и современный дизайн.
Рекламная система: пользователи могут размещать рекламу на сайте, и владелец может получать от этого деньги.
Система продвижения: пользователь может продвигать свои вопросы, заплатив владельцу сайта.
Missing update?
Checkout our NULLED Web Community