Добрый день. Подскажите, как лучше делать. Есть две таблицы, в одной вопросы, во второй ответы. Я создаю страницу, на которой выпадает первый вопрос (к примеру - ну что, приступаем к работе?), и несколько вариантов ответов (вывожу как кнопки). Все это я делаю в классе. Как построить вывод, чтобы по нажатию кнопки, у меня менялся вопрос и, соответственно и ответы?
В вариантах ответов, у меня хранится информация, какой id следующего вопроса. Но можно ли метод вызывать внутри себя?
1. Angel_D13 - 12 Сентября, 2018 - 22:01:39 - перейти к сообщению
2. miketomlin - 13 Сентября, 2018 - 10:41:29 - перейти к сообщению
Angel_D13 пишет:
А что след. вопрос связан с ответом на предыдущий?В вариантах ответов, у меня хранится информация, какой id следующего вопроса.
id след. вопроса можно хранить в текущем вопросе. Или вообще не хранить, а, например, использовать сортировку и выбор вопросов по порядковому номеру. Кстати, если вопросы не перемешиваются, можно номер хранить явно прямо в вопросе и даже заменить им id, а если тестов много, сделайте групповой ключ из номера/id теста и номера вопроса.
Ни о каком циклическом вызове тут речи не идет. Каждый вопрос – это отдельная страница по адресу вроде /question/тут_номер_или_id_вопро са – используйте код повторно с соотв. входным параметром.
3. Angel_D13 - 13 Сентября, 2018 - 15:41:29 - перейти к сообщению
Таблицы у меня такого плана:
CODE (SQL):
скопировать код в буфер обмена
скопировать код в буфер обмена
- * Создаем таблицу la_question с вопросами*/
- CREATE TABLE IF NOT EXISTS la_question (
- id INT AUTO_INCREMENT NOT NULL,
- question VARCHAR(1000), /* Вопрос */
- meta VARCHAR(100), /* Служебная информация */
- PRIMARY KEY (id)
- ) ENGINE=InnoDB CHARACTER SET=UTF8;
- /* Создаем таблицу la_answer с вариантами ответов*/
- CREATE TABLE IF NOT EXISTS la_answer (
- id INT AUTO_INCREMENT NOT NULL,
- id_question INT NOT NULL, /* Ссылка на таблицу la_question "один вопрос - много ответов */
- id_next_question INT, /* ссылка куда ведет тот или иной вариант ответа в la_question*/
- answer VARCHAR(1000), /* Ответ */
- meta VARCHAR(100), /* Служебная информация */
- PRIMARY KEY (id),
- FOREIGN KEY (id_question) REFERENCES la_question(id), /* Связь вопрос-ответ*/
- FOREIGN KEY (id_next_question) REFERENCES la_question(id) /* Связь ответ-следующийвопрос*/
- ) ENGINE=InnoDB CHARACTER SET=UTF8;
Потому как тут дерево может быть абсолютно любое, то я храню в каждом ответе вариант следующего вопроса. Может и есть чуть излишек, но я так на будущее уже таблицы делал. Тут, я бы сказал проблем нет, с реализацией на php больше вопросов.
А вот про отдельную страницу я не понял. Мне нужно веб приложение, а не сайт, у меня всего одна страница, в теории. Потом может расширю, но сейчас суть в том, чтобы сделать все на одной странице. Неужели такая проблема? Почему по обработке кнопки я не могу перерисовать всю форму?