Анкета имеет вид.
Цитата |
1. Вопрос вопрос вопрос? - Вариант ответа 1 - Вариант ответа 2 - Вариант ответа 3 2. Вопрос вопрос вопрос? - Вариант ответа 1 - Вариант ответа 2 - Другое (написать) - тут нужно текстовое поле 3. Вопрос вопрос вопрос? - Вопрос вопрос? ----- Да ----- Нет - Вопрос вопрос? ----- Да ----- Нет 4. Данные о себе: - Возраст - Пол ---- М ---- Ж - Род занятий - Место жительства |
Цитата |
3. Вопрос вопрос вопрос? - Вопрос вопрос? ----- Да ----- Нет - Вопрос вопрос? ----- Да ----- Нет |
Цитата |
3. Где ты был? - В Испании - Во Франции - В Германии - Нигде не был |
Цитата |
id - ид вопроса id2 - ид подвопроса param - либо 1 вариант ответа можно выбрать либо несколько (выставлять либо 1 либо 0) |
Цитата |
id - ид ответа idq - ид вопроса golos - количество голосов txt_act - если 1, то выводим текстовое поле, если 0 то не выводим text - это текст который может вписать пользователь, например если выберет "Другое" (указать что) |
Цитата |
name - имя sex - пол address - адрес |
Цитата |
пользователя отменяем =) уже не нужен. |
Цитата |
пользователь: name - имя sex - пол address - адрес |
Цитата |
<input type="checkbox" name="variant[534]" value="1"> Франция<br/> <input type="checkbox" name="variant[534]" value="2"> Англия<br/> <input type="radio" name="variant[534]" value="3"> Нигде не был<br/> |
Цитата |
id - ид ответа idq - ид вопроса golos - количество голосов txt_act - если 1, то выводим текстовое поле, если 0 то не выводим text - это текст который может вписать пользователь, например если выберет "Другое" (указать что) |
Цитата |
Одинаковые ли у вас уровни вложенности - вопрос/подвопрос |
Цитата |
Для каких целей у вас сделана статистика кто ответил - мужчина или женщина и таблица юзер - если вы никаким образом не привязываете ответы к юзерам? |
Цитата |
Как часто ваша анкета будет подвергаться модификациям? |
Цитата |
И как вы хотите выводить переключатели - в автоматическом режиме? |
Цитата |
ИМХО, 4 таблицы. Таким образом, максимум 3 джойна в запросах - нормально по нагрузке. Таблица вопросов: айдишник по инкременту, айдишник родительского вопроса (для вложенных), текст вопроса. Таблица ответов: айдишник по инкременту, айдишник вопроса, текст ответа. Таблица юзеров: айдишник юзера по инкременту, данные юзера. Таблица анкет: айдишник заполнения по инкременту, time() заполнения, айдишник юзера, айдишник вопроса, айдишник ответа. |
Цитата |
(если родительский ответ радио, то к этому же вопросу нельзя сделать чекбокс родительским) |
Цитата |
почему ? |
Цитата |
лучше добавить столбец с id ответа родителя |
Цитата (HardWoman @ 13.09.2009 - 16:17) |
Одинаковые ли у вас уровни вложенности - вопрос/подвопрос Или для разных вопросов будут разные? Допустим для одного 3 уровня, для другого два. |
Цитата (HardWoman @ 13.09.2009 - 16:17) |
А то как то помежду прочим прозвучало - чтоб мог редактировать вопросы - подвопросы, создавать новые. |
PHP |
// Параметры: переменная, куда будем формировать контент $content (по ссылке), массив из которого формируем (должен быть в специально форме) |
Цитата |
Мне всегда казалось что если можно обойтись без циклов - нужно обходиться без них. |
Цитата |
element_id | element_name +++++++++++++++++++++++ 1 Где вы были? 2 А я был здесь: 3 Нигде не был 4 Франция 5 Германия 6 Порекомендуете ли вы нас друзьям? 7 Да 8 Нет |
Цитата |
table_id | table_element | parent_id ++++++++++++++++++++++++++ 1 1 0 2 2 1 3 3 1 4 4 2 5 5 2 6 6 0 7 7 6 8 8 6 |
Цитата |
Во первых - у вас будут много незаполненных полей текст - что противоречит полностью нормализации таблиц (есть такое понятие в архитектурах баз данных) Для текста - нужно делать отдельную таблицу. |
Цитата |
id - ид ответа idq - ид вопроса golos - количество голосов txt_act - если 1, то выводим текстовое поле, если 0 то не выводим text - это текст который может вписать пользователь, например если выберет "Другое" (указать что) |
Цитата |
у меня варианта 2. Либо надо JS менять, либо дальше думать чем отличается " Нигде не был" от "Да" и "Нет". Оба пункта имеют радиокнопки и оба |
Цитата |
id | type | value | text | parent_id +++++++++++++++++++++++++++++++++++++++++++++ 5 0 0 Бывали ли Вы на мероприятиях музея? 0 6 1 7 Да 5 7 1 2 Нет 5 8 2 0 Рождество в музее 6 9 2 2 Сударыня-масленица 6 10 2 2 Остров детства 6 |
PHP |
foreach($menu as $value) { |
Цитата |
<li> <b>Бывали ли Вы на мероприятиях музея?</b> <ul> <li>Да <ul> <li>Рождество в музее</li> <li>Сударыня-масленица </li> <li>Остров детства </li> <li>День Военно-Морского флота </li> </ul> </li> <li>Нет</li> </ul> </li> |
Цитата |
просто мне захотелось чтобы второй уровень ответов отображался другим цветом. |
Цитата |
Ну так и добавь еще столбец уровень. И введи в запрос. |