Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Сборник статей
 
 

Своя система голосования

Автор: Дмитрий Меладзе

Вы когда-нибудь хотели узнать мнение своих посетителей по тому или иному поводу? Например, "что Вы хотите видеть на сайте" или "нравиться ли Вам наш новый дизайн" ? Уверен, что такое желание возникало. Действительно, установка на сайте собственного опроса или системы голосования позволяет не только копить бесценную информацию о том, что думают Ваши посетители, но и придать сайту нелишнюю интерактивность.

В общем, достоинства собственной системы голосования очевидны. Но что делать, когда под рукой нет необходимого скрипта? Можно, конечно, воспользоваться бесплатными системами голосования, которые позволяют Вам установить форму с несколькими вопросами на свой сайт. В этом случае сам скрипт находиться на удаленном сервере и выполняет всю работу. Но, на мой взгляд, это не очень подходящий вариант: во-первых, эти системы вставляют свой баннер в голосование, во-вторых, работоспособность системы от Вас совершенно никаким образом не зависит. Также, некоторые системы требуют довольно продолжительного нахождения в Сети, поскольку вся настройка голосования происходит обычно on-line. А для некоторых пользователей это совсем немаловажный момент.

Итак, лучше всего создать свой собственный скрипт. Конечно, это потребует от Вас кое-какой работы, но зато с лихвой окупиться за счет полной конфигурируемости, тонкости настройки и полностью своего интерфейса. Да и позволит лишний раз попрактиковаться в программировании, что обычно не является лишним занятием для труженика сети :)

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

Все, что от Вас потребуется - это начальные (буквально азы) знания PHP и хостинг с поддержкой этого языка. Данный скрипт сейчас успешно работает на площадке провайдера http://www.eServer.ru.

Итак, начнем.

Давайте представим, что мы на сайте хотим объявить следующее голосование:

ВАШЕ МНЕНИЕ:
Как Вам наш новый дизайн?
5 - Отлично!
3 - Так себе, потянет...
1 - Ужасно!!!

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

Двигаемся дальше. Для начала нам нужно сделать этот опрос в виде HTML, определив имена для переменных.

<form action="/php/vote.php" method="get" target="_blank">
<input type="Hidden" name=id value=1>
<b>Как Вам наш новый дизайн?</b><p>
<input type="Radio" name=vote value=1 checked>Отлично!<br>
<input type="Radio" name=vote value=2>Так себе, потянет...<br>
<input type="Radio" name=vote value=3>Ужасно!!!<p>
<input type="Submit" value=" Голосовать! "><p>
<a href="/php/vote.php?id=1" target="_blank">Текущие результаты</a>
</form>

Это все. Теперь можно приступить к самому скрипту. Как видно из формы, нашему скрипту передается две переменных:

  • id=1: это номер голосования. Дальше Вы увидите, как он используется для создания нескольких независимых голосований.
  • vote=1: номер ответа, то есть конкретно выбранный вариант ответа Вашим посетителем.

Также к нашему скрипту ведет ссылка "Текущие результаты", указывающая только параметр id, без номера ответа. Дело в том, что скрипт при отсутствии параметра vote просто выводит результаты, без сопутствующей благодарности "Спасибо за Ваше мнение!" и каких-либо действий по учету голосования.

Продолжаем. Нашему скрипту потребуется собственная база данных с текстами вопросов и ответом к ним. Конкретное голосование - это один вопрос и набор ответов к нему, а также количество мнений на каждый ответ. Все голосования хранятся в отдельных текстовых файлах и определяются по переменной id, передаваемой через форму. В примере id - это цифра (или что угодно другое), которая является первой частью имени файла. Для примера, если id=1, значит база данных голосования лежит в таком файле: 1.dat или, в терминах PHP, $id.dat.
Впрочем, Вы увидите это далее на конкретном примере. Отсюда получается, что для создания голосования Вам достаточно создать новый файл в очень простом формате (см. далее) и html-форму, содержащую тексты вопросов и id голосования.

Итак, раз уж мы с Вами определились, что данные голосования хранятся в отдельных файлах, давайте рассмотрим формат конкретного файла. Он имеет такой вид:

Как Вам наш новый дизайн?
5~Отлично!
3~Так себе, потянет...
1~Ужасно!!!

Где 1я строка: это сам вопрос, остальные строки - пара "количество_мнений~ответ", как Вы поняли, разделенных тильдой "~". Теперь все, что нам осталось, это обрабатывать результаты.

Это делает следующий скрипт:

<?php
// файл с конкретным голосованием
$data = File("$id.dat");

// выводим благодарности,
// если это не просто просмотр результатов
if ($vote) echo "<b><font color=red> Спасибо за Ваше мнение! </font></b><p>"; // выводим заголовок голосования - 1я строка файла echo "<b>$data[0]</b><p>"; // печатаем список ответов и результатов - остальные строки for ($i=1;$i<count($data);$i++) { $votes = split("~", $data[$i]); // значение~ответ echo "$votes[1]: <b>$votes[0]</b><br>"; } // если это не просмотр результатов, а голосование, // производим необходимые действия для учета голоса if ($vote) { $f = fopen("$id.dat","w"); fputs($f, "$data[0]"); for ($i=1;$i<count($data);$i++) { $votes = split("~", $data[$i]); if ($i==$vote) $votes[0]++; fputs($f,"$votes[0]~$votes[1]"); } fclose($f); } ?>

Собственно, это все, что требуется. Как видите, скрипт достаточно прост, не выполняет каких-либо специфический действий, да и ресурсов много не потребляет. Конечно, сюда можно добавить многие другие полезные функции, например, сделать администраторский интерфейс для управления голосованиями через броузер и держать все данные по голосованиям в одном файле, чтобы не возиться каждый раз с $id.dat. Но это - в следующий раз, а пока моей целью было показать Вам, что столь полезная система голосования очень просто реализуется.

Теперь Вы можете создать свой собственный дизайн, поправив html код формы и код, выводимый в скрипте. Здесь очень просто что-либо изменить.

Надеюсь, мой материал сможет быть Вам полезен и пригодиться на практике. При возникновении любых вопросов, пишите мне на e-mail.
dima@eserver.ru

 
 » Обсудить эту статью на форуме

 
 Сборник статей 
 Содержание раздела 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS