Intereting Posts
Как сбросить CURLOPT_CUSTOMREQUEST Важно ли проверять, является ли загруженный файл фактическим файлом изображения? htaccess переписать url как stackoverflow Как создать макет объекта сущности доктрины? Условные вставки специальных символов PHP / Mysql PHP: синтаксическая ошибка, неожиданное «&» в /etc/php5/cli/php.ini в строке 107 проверить, не вызвал ли запрос пустую строку mysqli Ошибка Laravel Route не работает. Пытается получить свойство не объекта PHP build для Jenkins с ошибкой: «Не удается запустить программу phploc», получение значения из столбца, но возвращает null? PHP-массив не-примитивного класса в качестве параметра функции Рассчитайте расстояние Google от входного адреса и всего адреса от сервера MySQL с помощью jQuery ajax.get PHP preg_match необходимо для обеспечения только одного символа пробела между словами Номер формата в PHP Что такое кеш байт-кода и как его использовать в PHP?

Система голосования с использованием PHP + MySql?

Мы должны создать систему голосования, которая заставляет пользователей голосовать за разных кандидатов на разных должностях. Для избирателей есть логин. Как вы храните голосование одного избирателя, а затем получаете этот голос, добавленный к предыдущим голосам? Единственный возможный способ – сохранить все голоса в базе данных прямо? Но как выглядит структура базы данных? И как вы считаете это?

редактировать:
В системе голосования нет только одной группы кандидатов для голосования. У него есть мэр, вице-мэр, сенатор и т. Д. Их слишком много. вот почему я смущен. Если бы это была просто система голосования президента, было бы легче. Поэтому, если у меня есть таблица для избирателя, со столбцом его / ее избранного кандидата, это невозможно, поскольку избиратель голосует за многих кандидатов.

Лучше всего было бы иметь другую таблицу для хранения голосов. И эта таблица будет иметь два атрибута (VoterId, CandidateId). И вы можете получить подсчет голосов, если вы разрешаете несколько голосов из этой таблицы.

Но было бы лучше сделать VoterId основным ключом в этой таблице. Чтобы избежать множественного голосования

CandidateType : – (TypeId (PK), typeName, maxVotePerVoterForThisType)

Таблица избирателей : – (voterId (PK), voterName, otherInfo)

Таблица кандидатов : – (кандидат (PK), кандидатName, избирательный округ, otherInfo, TypeId (FK))

Голосов : – (voterId (PK, FK), TypeId (PK, FK), кандидатId (FK))

* EDIT: – схема отредактирована с измененным требованием в исходном сообщении

* EDIT: – Добавлено поле в таблице CandidateType, чтобы разрешить multiple votes . (Например: теперь избиратель может голосовать за 10 Senators , если для maxVotePerVoter для этого типа установлено значение 10 ..)

Вы должны хранить каждого кандидата в таблице, позиции в другой таблице, а затем создавать отношения на основе идентификатора, система голосования относительно проста:

база данных:

 id, position_id, candidate_id, votes 

затем PHP

 $query = "UPDATE `votes` SET `votes`=`votes`+1 WHERE `position_id`=1 AND candidate_id=1"; // adds 1 vote where position_id is 1 and candidate_id is 1 

Эти 3 таблицы необходимы для ваших учетных записей (избирателей) и кандидатов.

 Account: Id (PK), Name, Password Candidates: Id (PK), Name Votes: AccountId (PK), CandidateId (PK) 

Вставьте строку в голоса при подаче голоса. Это предотвращает дублирование голосования из-за ПК.

Я просто говорю, что могу хранить голосующих пользователей в таблице, называемой пользователями, и вы можете использовать vaotecount (int) типа initilize с нулем и отслеживать их ip и голосовать за идентификатор темы, на который они проголосовали, и когда они проголосовали за вас можно проверить с помощью IP и topic_id, что они не голосуют дважды, и если они vaotecount вы можете vaotecount поле vaotecount на один

и пока вы рассчитываете на подсчет голосов, пользователи с идентификатором темы, для которого вы подсчитываете голоса. Простой: D

Из объяснения проблемы я могу предложить вам следующую структуру базы данных:

tlbUserVote:

 UserID(PK) | UserName | Vote | CandidateId(FK) 

tlbCandidate:

 CandidateId(PK) | CandidateName | TotalVotes 

По этой структуре вы можете добавлять текущие голоса с предыдущими (сначала беря предыдущие голоса и добавляя их к текущему).

Также будут обновлены итоговые голоса кандидатов.