![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| welt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 21.5.2005 Где: UnderGround Репутация: нет Всего: нет |
Приветствую всех.
я пишу систему тестирования на php и ...как-то неочень получается. Я использую бд. Таблица такая: ----------------------------------------------------------------- id | question | ans1 | ans2 | ans3 | ans4 | number | ----------------------------------------------------------------- где question-вопрос; ans1, ans2, ans3, ans4-варианты ответа. Праильным ответом может быть только один из четырех. number-это номер правильного ответа.(1, 2, 3 или 4). Вопросы заносятся в бд через форму для добавления вопросов, куда вписывается сам вопрос, варианты ответов и номер правильного ответа. Вывод теста такой: на страницу выводятся один за другим по одному вопросы(т.е. на странице один вопрос ), напротив каждого вариаента ответа стоит checkbox, причем моно поставить только одну галку. Проблема такая: как реализовать обработку галок, т.е. как связать номер галки с номером, который находится в поле number? (можно ли как-нибудь получить номер столбца из бд? т.е. для ans1-номер столбца 3, для ans2- номер стольбца 4 и т.д. ?). т.е вот 4-е галки, например такие.
Как "научить" скрипт понимать правильно ли выбран ответ или нет. И если правильно, то в переменную $s накапливать количество правильных ответов? Подскажите именно как это программно реализовать. Это сообщение отредактировал(а) welt - 9.6.2006, 12:06 |
|||
|
||||
| HuKoLaU |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 30.4.2006 Где: Беларусь, г.Бобр уйск Репутация: нет Всего: нет |
Можно имя задать в checkbox одинаковое, без массива, так как надо всего один вариант.
Получаешь значение checkboxа,
Получаешь из БД вариант правильного ответа
Это сообщение отредактировал(а) HuKoLaU - 8.6.2006, 23:21 |
||||||
|
|||||||
| BobiKK |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 655 Регистрация: 1.12.2005 Где: Essen, Deutschlan d Репутация: 4 Всего: 16 |
Если у тебя возможны несколько вариантов ответа, то пройтись в цикле foreach по массиву $_POST['selected']
|
|||
|
||||
| welt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 21.5.2005 Где: UnderGround Репутация: нет Всего: нет |
HuKoLaU, у меня же id - это номер вопроса. т.е. id одинаков для четырех вариатнтов ответа:
для вариантов к 1-ому вопросу id=1 для вариантов ко 2-ому вопросу id=2 и т.д. можно ли как-нибудь получить номер столбца из бд? т.е. для ans1-номер столбца 3, для ans2- номер стольбца 4 и т.д. ? внимательно читай мое первое сообщение. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
welt, измени структуру базы.
idquestion titleQuestion - это хранятся вопросы(questions). idanswer idqeustion TitleAnswer - это храняться варианты ответов(answers) idquestion idanswer - это хранятся правильные ответы для вопросов. |
|||
|
||||
| Endeveit |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 2.6.2006 Репутация: 4 Всего: 7 |
welt, у тебя неверно спроектирована база данных, отсюда и куча проблем.
|
|||
|
||||
| HuKoLaU |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 30.4.2006 Где: Беларусь, г.Бобр уйск Репутация: нет Всего: нет |
Так, а я что написал? Этим запросом определяем правильный вариант ответа для вопроса id которого равно номеру вопросу, на который был только что дан ответ, а number столбец где храниться правильный ответ.
|
||||
|
|||||
| Drache |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 31.3.2006 Репутация: 1 Всего: 3 |
С базой здесь как раз все нормально. Просто используешь ее как-то непонятно наверно...
Думаю, такое решение подойдет: форма
Ключ массива variant - это id каждого вопроса. Value - соответственно к этому вопросу номер ответа(1 - ans1, 2 - ans2, 3 - ans3, 4 - ans4). В скрипте определяешь какой ключ массива variant существует (например с помощью array_key() или с помощью foreach - пройдешься в цикле только один раз, но получишь сразу и ключ и значение), потом ищешь в БД к нему правильный ответ (как описывали выше) и сравниваешь со значением этого массива. Ну а дальше уже понятно |
|||
|
||||
| Штык |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 206 Регистрация: 9.5.2005 Где: Москоу Репутация: нет Всего: 1 |
хммм.. а если допустим надо будет исаользовать 5 вариантов ответа то что отгда?
еще продумай вариант чот в одном вопросе может быть два ответа или три ведь такое то дже бывает.. --------------------
Lachetes familieresQui nous rendent guerrieres |
|||
|
||||
| slang |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 455 Регистрация: 7.3.2004 Репутация: -1 Всего: 0 |
В таком варианте БД не подойдет точно, нужно или разбивать на несколько таблиц (тесты/вопросы/ответы) или делать в одной таблице, но с разделением.
Например у меня сделано так:
Т.е. все собрано в одной таблице, раньше использовал несколько таблиц, но в этом случае они (данные/тесты) были не столь мобильны. Мне иногда приходится выкладывать только один конкретный тест, а затем возвращать обычные (повседневные) тесты. Таким образом мне достаточно уничтожить и создать таблицу из архива. -------------------- Запчасти на иномарки www.avtograd55.ru. Если есть время - зайдите и посоветуйте что исправить и что доработать. |
|||
|
||||
| Drache |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 31.3.2006 Репутация: 1 Всего: 3 |
я отвечала именно по конкретному вопросу И причем здесь сколько вариантов ответа? Если их может быть разное количество, то тогда и БД действительно нужно переделывать. А если только 4 как и было в задаче, то и так нормально, по-моему. Если все будет действительно посложнее, то тогда возможно стоит разделить эту таблицу на две: questions id question (текст) answer_id (номер правильного ответа) answers id question_id answer (текст) тогда формочка выглядела бы примерно так:
Здесь правда все не очень надежно, главное не перепутать ответы от разных вопросов Это сообщение отредактировал(а) Drache - 26.6.2006, 10:15 |
||||||
|
|||||||
![]()
|
| Правила форума "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. |