Оцените пожалуйста алгоритм скрипта на PHP

Yastroitel

Новичок
Оцените пожалуйста алгоритм скрипта на PHP

Добрый день.
Задача такая - при регистрации пользователя на сайте задавать вопрос на который может быть более чем один ответ с помощью checkbox'а формы. Если точнее то от 1 до 3.
Пример:
Какой(ие) цвета вам нравятся?
1. Красный
2. Оранжевый
3. Желтый
4. Зеленый
5. Голубой
6. Синий
7. Фиолетовый.

Вот здесь и возникают вариации алгоритма.
Я опираюсь на такой вариант - в таблице БД на каждого пользователя предусмотрено три поля для внесения цифрового номера его ответа или внесения значения 0 если ответа не было.
Реализация следующая - после отправки формы считываются все значения чекбоксов, далее скрипт выбирает из них не нулевые значения и вписывает в БД.

Что мне не нравится в этом алгоритме?
Я не знаю как мне добиться универсальности - вариантов ответа может быть не 7, а 27.
Мне не нравится сам механизм - что перед записью в БД, необходим дополнительный скрипт перебора.

Чувствую, что есть еще варианты, причем какие то типовые. Никто не может подсказать что почитать на эту тему?
Пример реализации похожего алгоритма видел в PHPBB пи создании опроса форум позволяет указать возможное количество ответов. Как это там реализовано - не представляю.

Заранее спасибо.
 

dimagolov

Новичок
таблица посетителей, таблица вопросов, таблица ответов (ссылавется на вопрос), таблица ответов посетителей (ссылка на посетителя и ответ)
для того, чтобы вывести ответы посетителя на вопрос получаем запрос:
[sql]SELECT RespondName
FROM tbl_user
INNER JOIN tbl_user_respond ON tbl_user.UserID = tbl_user_answer.UserID
INNER JOIN tbl_respond ON tbl_respond.RespondID = tbl_user_answer.RespondID
WHERE tbl_user.UserID = ? AND tbl_respond.QuestionID = ?[/sql]
можно сделать денормализацию и в tbl_user_answer хранить и QuestionID (тогда можно делать составную связь (QuestionID, RespondID) между tbl_user_answer и tbl_respond
 

Yastroitel

Новичок
Спасибо за ответ.
Если честно то в силу своей юности - ничего не понял:)
Но это ничего - сейчас буду гуглить и разбираться.

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

dimagolov

Новичок
Единственное что вопрос у меня будет всегда один и тот же. Просто точное количество ответов на сегодня неизвестно и будет скорее всего меняться. Исходя из этого таблица вопросов не нужна наверно и сам вопрос можно хранить внутри скрипта.
то есть ты оракул, заглянул в будущее и узнал, что второго вопроса никогда не появится? ну-ну :)
даже если он и будет только один, то его стоит хранить в базе, просто ради разделения данных и кода.
 

Yastroitel

Новичок
:)
Я не оракул - просто по задаче скрипта вопрос будет один.
А вот насчет хранения в базе - спасибо за совет.
Недавно работаю с MySql поэтому по привычке все данные стараюсь хранить в отдельном конфигурационном файле.

А насчет первого поста - все кажется дошло до нужной клетки мозга.
Еще раз спасибо
 
Сверху