Как создать голосование на сайте
Меня совсем недавно попросил один из посетителей рассказать о том, как создать голосование на сайте. Я решил, что это будет многим интересно, тем более, что сделать голосование у себя на сайте сможет даже начинающий PHP-программист.
Я не буду разбирать HTML-код блока с голосованием, тем более, что у каждого будет ещё свой дизайн, а разберу только алгоритм, по которому можно легко написать PHP-код:
- Создать таблицу вариантов ответов в базе данных со следующими полями:
- id - уникальный идентификатор варианта ответа.
- variant - текст варианта ответа.
- count_vote - количество пользователей, выбравших данный вариант ответа.
- Получить от пользователя из формы id варианта ответа.
- Получить количество голосов (count_vote) у записи с полученным id, увеличить его на 1 и записать обратно.
- Дополнительно: сделать редирект на страницу с результатами голосования.
Данного алгоритма вполне достаточно, чтобы без проблем написать PHP-код. Вам остаётся только "нарисовать" форму голосования и реализовать простой вывод результатов на HTML-страницу.
-
- Михаил Русаков
Комментарии (12):
Скажите пожалуйста, как сделать вывод как у вас? Всмысле полосы которые соответсвуют процентам, и скажите как распределить результаты по процентам?
Ответить
Такая полоска делается в процентном отношении. Например, если у варианта 17%, то блок с полоской имеет ширину 17%. Если 20%, то и ширина 20%.
Ответить
А как узнать эти проценты? Тоесть как преобразовать в проценты?
Ответить
Считается суммарное количество голосов, затем количество голосов за данный вариант делится на эту сумму и умножается на 100%.
Ответить
Извините за непонятный вопрос, но как сложить количество всех голосов, если таблица из этой статьи?
Ответить
SELECT SUM(`count_vote`) FROM `table`
Ответить
Спасибо, получилось, но элемент массива какой-то странный, никогда таких не видел $count['SUM(`count_vote`)']
Ответить
Михаил, у меня возникла проблема. Я сделал так, что форма считывает значение, затем их отсылает в БД(таблица имеет два поля - id и variant). Если человек проголосовал ему выводится результаты, которые есть в таблице. Мой михонизм выглядит так:"if ($_SESSION['reg_success'] == 1) { echo"<p>Жахливо: <b><?php echo $_zax;?></b></p>";}... $_zax = zagetGol();... function zagetGol() { global $mysqli; connectDB(); $result_set = $mysqli->query("SELECT COUNT(variant) AS variantzax FROM variant WHERE variant='zax';"); closeDB(); }". Скажите пожалуйста, где ошибка, почему мне не выводятся результаты?
Ответить
http://myrusakov.ru/php-finderror.html - без всего кода найти ошибку будет крайне трудно, а во всём коде проще копаться Вам, а данная статья поможет в поиске ошибки.
Ответить
Михаил, подскажите функцию для выведение количества одного слова(например, яблоко) из таблицы БД.
Ответить
http://myrusakov.ru/sql-count.html
Ответить
Михаил, а как сделать такой тип голосования - на странице имеется 4 окна для загрузки фотографий (квадрат, в котором 4 квадрата поменьше с возможностью загрузить фотку). При клике на фотографию осуществляется голосование, результаты которого показываются под фотками в виде горизонтальной диаграммы. Не обязательна загрузка всех 4 фотографий, можно от 2-4. Еще такой момент - фотки идут в файловую систему, а ВСЕ ссылки на них должны быть в одном поле в таблице БД.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.