![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Kuliev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Доброго времени суток.
Начал писать скрипт тестирования, но до конца не понимаю механизма как его написать! Я только представляю как он должен выглядеть: 1)-- > Сначала выводится название тестов! 2)-- > Затем пользователь выбирает тест для прохождения! 3)-- > Скрипт выводит по очереди вопросы, скажем всего 10 3)-- > По окончанию теста выдается результат (оценка) ТЕСТЫ - ВОПРОСЫ - ОТВЕТЫ хранятся в базе Вот скрипт
Как сделать, чтобы вопросы выводились по очереди после нажатия кнопки? Как написать цикл который будет его обрабатывать? Это сообщение отредактировал(а) Kuliev - 3.5.2008, 11:16 |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
ужас. если у тебя проблемы с прохождением одного теста, то зачем приводить здесь код функции, которая выводит список тестов?
Ты и сам путаешься, и другим мешаешь разобраться. задачи надо решать по одной, разбивая на небольшие подзадачи. для начала не пихай все в один скрипт, а раздели на несколько. список тестов - в отдельный скрипт и вообще забудь про него. занимайся прохождением теста, с которым у тебя проблемы. зачем тебе цикл для обработки? цикл нужен, когда надо обрабатывать много входящих данных. а у тебя только один вопрос. напиши простой скрипт, который выводит вопрос, затем обрабатывает, и сохраняет результат Добавлено через 6 минут и 53 секунды а лучше выводи все вопросы теста на одной странице. так проще будет |
|||
|
||||
| Kuliev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Простите, действительно хочу многого и сразу
Буду исправляться. Действительно проблема стоит с выводом вопросов и ответов поочередно! Мне нужно чтобы юзер нажал на кнопку ДАЛЕЕ соответственно поменяется вопрос с ответами! Вот пример кода, только незнаю как его доработать до ума. Может кто подскажет как быть?
|
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Не нужно код дорабатывать. Код - это второй этап программирования. Первый - алгоритм.
Сначала надо понять - а чего мы вообще хотим, чтобы наш код делал. А потом уже дорабатывать. Прежде, чем выводить второй вопрос, надо сохранить ответ на первый. где обработка ответа? Это сообщение отредактировал(а) Feldmarschall - 3.5.2008, 16:16 |
|||
|
||||
| Kuliev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Feldmarschall,
Ща допишу! Минутку! |
|||
|
||||
| Kuliev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Чтото у меня совсем все не выходит!
|
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
что именно не выходит-то?
Добавлено через 38 секунд что за странный цикл? Ты решил все вопросы выводить на одной странице? |
|||
|
||||
| Kuliev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Feldmarschall,
Нужно чтобы сначала выводился один вопрос с 4 ответами, затем как юзер нажал кнопку ДАЛЕЕ нужно вывести второй ответ с 4 вопросами и т.д. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Мда. Тяжелый случай.
Может, тебе рано еще тесты писать? Потренируйся на гостевых книгах. При чем здесь цикл? Тебе надо вывести три разных страницы. по очереди. Одним и тем же скриптом. Вот у тебя есть функция TestList. Ты понимаешь, как она работает? Или просто содрал где-то? На разных страницах она выводит, между прочим, разный список вопросов. И где ты там цикл увидел? |
|||
|
||||
| Kuliev |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Да я понимаю как работает функция TestList потому что сам ее написал! У меня просто трудность в создании теста, делаю все это в первый раз, так что прошу сильно не критиковать! Мне просто нужен толчек в правильном направлении! А насчет разбивки страниц ЭТО ИДЕЯ надо попробывать! Мда. Кстати там есть цикл
|
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Если в списке тестов выводить по одному на страницу, то цикл там будет не нужен. потому что там совсем другой цикл. Он выводит то, что нужно вывести на одной странице. А не как у тебя - на одной вывести содержание всех.
Вывод вопросов НИЧЕМ не отличается от вывода тестов. Тебе не толчок нужен, а понять сначала, что такое веб-скрипт, и как он работает. По сути, вывод списка тестов - это тот же самый опрос. пользователь жмет кнопку ответа (с номером страницы) и перемещается к следующему. То есть, делаешь ты это не в первый раз. Только про "сам написал" по ушам ездить не надо. Я гуглем-то пользоваться умею. |
|||
|
||||
| Alukard |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 14.11.2006 Репутация: нет Всего: нет |
Из всего вышесказанного, понятно, что нужен алгоритм.
В любом варианте необходимо выводить по одному вопросу на страницу из БД, так же по 4 или сколько то ответов к вопросу. Во-первых, нужно учесть, что БД будет минимум 2 - БД с вопросами и БД с вариантами ответов, и соответственно они будут связаны. После ответа нужно сохранять ответ юзверя на предыдущий вопрос, выдавать следующий (также несколько вариантов, либо случайный, либо идущий по какому-либо алгоритму). В итоге выдавать результат. Главная проблема - собрать все ответы юзверя в конце теста и сделать вывод. Вывод вопроса и ответов к нему проблемой не считаю, так как тут алгоритма быть не может (только если алгоритм при случайном выводе чтобы не было одинаковых вопросов, но это элементарно). Впринципе есть несколько вариантов решения проблемы с передачей ответов: 1) С помощью сессий. Так мы можем передавать и хранить в памяти любое количество переменных, будь то массивов или других ( с массивами будет удобнее) а также давать им любые имена для удобства, и в конце теста допустим будет несколько массивов (1-с номером вопроса и правильностью ответа, 2-с номером вопроса и номером ответа, и тд). В итоге будет просто построить алгоритм аля (Колво правильных ответов)/(Колво вопросов)*100%....это и будет процент знаний так сказать. 2) С помощью временной БД. Завести 3-ю таблицу типа test_temp. С полями типа: ид_теста, номер_вопроса, номер_ответа,правильность_ответа и тд и тп. 3) С помощью переменных GET. Просто без сессий каждый раз при переходе на новый вопрос записывать (дополнять) в массив те значения, которые были получены от предыдущего. При этом нужно учесть, что придется всегда в скрытом поле передавать весь массив с уже записанными данными. Я не учитыал то, что тестовые вопросы могут иметь много варинтов ответа (всмысле 2 из 5, 3 из 4-х и тп) , но эта проблема так же решаема. К сожалению не смог найти исходники своего подобного проекта, включая тесты с многовариантными вопросами, давно это было) Если что, спрашивайте. А так я думаю просто сказывается нехватка опыта и знаний, вот некоторые доволно полезных ссылок: PHP.net Там же есть и описание функций для работы с БД. Сессии и переменные Здесь легко и просто описана работа с сессиями и переменными ) Формы Работы с формами из PHP... Почитай материал, затем будет проще понять свои алгоритмы) --------------------
Блог блогу рознь: Алукардные РецептыPHP, Операционные системы, Россия & США...etc. |
|||
|
||||
| Kuliev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Alukard, спасибо обязательно посматрю!
|
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
Kuliev, все намного проще чем кажется. допустим надо вывести 10 вопросов, так вот все что тебе нужно эт постраничная навигация. когда-то тоже делал тест на РНР и именно ее я и использовал...
-------------------- Amazing |
|||
|
||||
| Alukard |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 14.11.2006 Репутация: нет Всего: нет |
MoLeX, С таких подходом будет даже несколько лучше, ведь тогда у пользователя появится возможность вернуться к предыдущему вопросу, чтобы поменять ответ, если он может всмпомнил что ошибся)
Постраничная навигация Здесь подробно расписан алгоритм постраничности (на примере яндекса --------------------
Блог блогу рознь: Алукардные РецептыPHP, Операционные системы, Россия & США...etc. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |