Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PHP: создать опросник
 
 автор: mozhunt   (05.06.2007 в 12:37)   письмо автору
 
 

Народ, помогите,плз. не понимаю нифига

Требуется создать опросник на PHP . Т.е. Есть база вопросов (которая может изменяться с помощью админки,по всей видимости) и есть клиентская часть,которая,собственно,выдает вопросы с вариантами ответов. Рандомно. Количество выдаваемых вопросов меньше,чем всего в базе.

Т.е. как это вижу я:
препод запускает файлик admin.php , вводит туда вопрос и варианты ответов,потом еще вопрос и еще варианты ответов. Жмет кнопку "сохранить". Все вопросы сохраняются в базе MySQL.

студент приходит и запускает файлик test.php . Ему выдается некоторое количество вопросов,меньшее,чем всего в базе. и варианты ответа. Человек отвечает, после чего,ему пишется,сколько было верных,а сколько нет.


Как это сделать?

да,можете скинуть мне ссылку на сайт,где могут помочь или можно посмотреть подобное...

   
 
 автор: CrazyAngel   (05.06.2007 в 12:48)   письмо автору
 
   для: mozhunt   (05.06.2007 в 12:37)
 

http://softtime.ru/info/polls.php

   
 
 автор: bronenos   (05.06.2007 в 12:49)   письмо автору
 
   для: mozhunt   (05.06.2007 в 12:37)
 

-

   
 
 автор: Temnovit   (05.06.2007 в 12:52)   письмо автору
 
   для: mozhunt   (05.06.2007 в 12:37)
 

Для начала определитесь со структурой базы данных. Я бы сделал 2 таблицы
1. вопросы
2. варианты ответов
Связь один ко многим (у одного вопроса несколько вариантов)

В админке удобно организовать ввод вариантов в <textarea> в столбик, и разбивать строку при помощи explode() дабы получить эти варианты.

Что касаеться ответов на вопросы, то тут есть несколько вариантов. Получаете, скажем, 20 вопросов из базы

ORDER BY RAND() LIMIT 20

а потом можно хранить промежуточные данные в базе, передавая через сессию уникальный id сеанса вопросов.
Примерно так:
Выбираем из базы 20 вопросов и записываем их во временную таблицу в которой есть поле SID определяющее к какому сеансу относятся эти вопросы и ANSWER - ответ пользователя на вопрос. Выбираем по одному вопросу, заполняя таблицу ответами до тех пор, пока не останиться вопросов с текущим SID и пустым полем ANSWER, а потом подсчитываем результаты.

   
 
 автор: mozhunt   (05.06.2007 в 16:24)   письмо автору
 
   для: Temnovit   (05.06.2007 в 12:52)
 

из примеров,что есть по ссылке - нет нормальных опросников - есть один,но выдается только 1 вопрос.

а как описал последний человек - я ничего не понимаю :(

   
 
 автор: elenaki   (05.06.2007 в 17:51)   письмо автору
 
   для: mozhunt   (05.06.2007 в 16:24)
 

ищите по слову "голосование". выбор одного варианта из нескольких предложенных - это, по сути, и есть голосование.

   
 
 автор: mozhunt   (05.06.2007 в 18:19)   письмо автору
 
   для: elenaki   (05.06.2007 в 17:51)
 

должен быть не один вопрос,а несколько...

   
 
 автор: elenaki   (05.06.2007 в 19:31)   письмо автору
 
   для: mozhunt   (05.06.2007 в 18:19)
 

в чем проблема? у меня по 30-60 вопросов каждый день в голосовании (это по предсказаниям результатов игр, но все равно очень похоже - вопрос, 3-5 вариантов ответа, 30-60 вопросов).

   
 
 автор: mozhunt   (07.06.2007 в 01:01)   письмо автору
 
   для: elenaki   (05.06.2007 в 19:31)
 

А как сделать чтобы вопросы хотя бы один за другим шли?
и как проверять на правильность ответов?
как реализовать систему тестирования,а не просто опрос?

   
 
 автор: elenaki   (07.06.2007 в 15:34)   письмо автору
 
   для: mozhunt   (07.06.2007 в 01:01)
 

1. что значит "один за другим шли"? куда? в смысле - появлялись бы поочереди? это надо
Java-script' ом делать - задержку вывода. или после вопроса ставить линк на следующий.
2. правильность тоже лучше JS- ом проверять или еще лучше - AJAX' ом. по клику на радио-
баттоне (т.е. при выборе варианта ответа) функции передавать номер вопроса и номер
ответа. AJAX делает запрос к базе, сверяет и возвращает ответ. или записывает его в базу,
если не надо показывать.
3. неплохо было бы еще запоминать имя отвечавшего :) или id его. потом препод сможет весь
список из базы вывести.

   
 
 автор: mozhunt   (07.06.2007 в 23:43)   письмо автору
 
   для: elenaki   (07.06.2007 в 15:34)
 

мда..сложноватая тема светит :) разбираться полгода :)

   
 
 автор: Lotanaen   (08.06.2007 в 03:21)   письмо автору
 
   для: mozhunt   (07.06.2007 в 23:43)
 

По хорошему ее не спеша за день можно сделать - это еще если и авторизацию-регистрацию вставлять надо будет. А вообще-то формулировка вопроса довольно расплывчата.

   
 
 автор: elenaki   (08.06.2007 в 15:43)   письмо автору
 
   для: Lotanaen   (08.06.2007 в 03:21)
 

я скоро буду делать опросник. и как раз на основе уже сделанной мной системе голосования.
по сути, это то же голосование, только будет еще таблица правильных ответов, с которой
надо будет сверяться. проблема в том, что делать все это придется в Firebird. и наверно, не
знаю пока, я заленюсь переделывать скрипт под MySQL... если только кто-то другой не
закажет тоже самое для MYSQL. программисты - народ ленивый :)

   
 
 автор: Гончий пёс   (12.06.2007 в 19:16)   письмо автору
 
   для: mozhunt   (05.06.2007 в 12:37)
 

О-ля-ля! Бывают в жизни совпадения=)
В аттаче скрипты и дамп БД.

Краткое описание:
При обращении к папке (или /index.php) вылезает опросник. Вопросов несколько, количество выводимых вопросов (файл limit.php) меняется в админке (о ней позже). Все вопросы выводятся одновременно. После выбора вариантов пользователь нажимает на "Сабмит" и данные отправляются на проверку. Результаты (файл results.php) отображаются в формате:
"Вопрос: Почем опиум для народа?
Ответ: 300рублей (ответ данный пользователем)
Правильный!
"
Через админку (admin.php) можно: добавить вопрос, изменить вопрос и варианты ответа на него(переопредилить правильный вариант), удалить вопрос, изменить количество единовременно выводимых вопросов.

Принятые ограничения:
1. Вариантов ответа от 2-х (напр. Да-Нет) до 4-х
2. Только один вариант правильный (радио-кнопки)

Файловый набор:
admin.php - админка
config.php - общие параметры соединения сБД
limit.php - файл с настройками (кол-во выводимых вопросов)
index.php - опросник
result.php - результаты теста

Отлавливает ошибки:
При ответах - если на как минимум один вопрос нет ответа
При создании/редактировании вопросов и вариантов - если отсутствует вопрос и/или как минимум два варианта ответа, или если вариант, отмеченный как правильный не существует (т.е. не заполнен. Например, есть ответы 1-Да, 2-Нет, а правильным указывается четвертый, которого нет) или если среди вариантов ответа не указан правильный
При изменении числа выводимых вопросов - если поле пустое или значение больше числа вопросов в БД.

Структура БД:
1)Таблица "questions" - id, question
Где "id" - первичный ключ, а "question" - текст вопроса

2)Таблица "answers" - id, answer, question, is_true
Где "id" - первичный ключ, "answer" - текст ответа, "question" - внешний ключ на вопрос к котрорму относится ответ, а "is_true" - поле, значения которого могут быть "y" или "n" - определяет верность ответа

Для желающих оттестить прям щас:
http://canis.jino-net.ru/testing/index.php - сам тест
http://canis.jino-net.ru/testing/admin.php - админка

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования