Консультация № 69822
07.01.2007, 02:16
0.00 руб.
0 1 1
Вопрос таков:

нужно сделать голосование как на данном сайте. при этом формы с голосованием будут рандомно подключаться в шаблон(с этим всё понятно).
Кто делал голосование, скажите как лучше сделать: с помощью файлов или писать в БД.
Если писать в базу данных, то напишите кратко структуру таблицы в БД для голосования.

Мой вариант:

id | nazvanie_golosovaniya | golos_za_punkt_1 | golos_za_punkt_2 |golos_za_punkt_3 | golos_za_punkt_4 | golos_za_punkt_5

Вот так. Сложность заключается в том, что не удобно использовать эту таблицу для других голосований. Ещё одна сложность - учёт проголосовавших IP-адресов - не понятно куда их записывать, отводить для них полу в строке? и писать их через запятую?, а потом резать эксплойдом эту строку?. Совсем не удобно. Раньше я делал с помощью 2-х файлов на одно голосование. Первый в столбец содержит id варианта ответа, второй в столбец содержит IP голосовавших.

Как реализовать голосование по средствам БД? и чтобы это было удобно. Напишите структуру таблицы, которую вы считаете оптиальной.

Обсуждение

Неизвестный
07.01.2007, 02:40
общий
это ответ
Здравствуйте, PetrKi.!

Лучше использовать БД и не одну таблицу, а 2-е, т.к. на лицо отношение один (1 голосование) ко многим (много вариантов ответа), что бы не было привязки к кол-ву вариантов ответа (т.е. что бы было возможно сделать голосование и с 2-мя вариантами ответа и со 100).

таблица Голосования:
id int - autoincrement, primary key
title varchar(100) - название голосования

таблица Варианты ответа:
id int - autoincrement, primary key
decr text - описание пункта варианта ответа
id_gol int - id голосования, к которому относится вариант ответа.

А вот и 3-я таблица для хранения ответов, я бы сделал так (без избыточности данных):
id int - autoincrement, primary key
id_var int - id варианта ответа
ip varchar(15) - ip-адрес - при голосовании нужно проверять, что бы не шалили.

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

С уважением,
Антон Цепковский
Форма ответа