Своя система голосования
Дмитрий Меладзе
Вы когда-нибудь хотели узнать мнение своих
посетителей по тому или иному поводу? Например, "что Вы хотите
видеть на
сайте" или "нравиться ли Вам наш новый дизайн" ? Уверен,
что такое желание
возникало. Действительно, установка на сайте
собственного опроса или системы
голосования позволяет не только копить бесценную информацию о том, что
думают Ваши посетители, но и придать сайту нелишнюю интерактивность.
В общем, достоинства собственной системы голосования очевидны. Но
что делать, когда под рукой нет необходимого скрипта? Можно, конечно,
воспользоваться бесплатными системами голосования, которые позволяют Вам
установить форму с несколькими вопросами на свой сайт. В этом случае сам
скрипт находиться на удаленном сервере и выполняет всю работу. Но, на мой
взгляд, это не очень подходящий вариант: во-первых, эти системы
вставляют свой баннер в голосование, во-вторых, работоспособность
системы от Вас совершенно никаким образом не зависит. Также, некоторые
системы требуют довольно продолжительного нахождения в Сети, поскольку вся
настройка голосования происходит обычно on-line. А для некоторых
пользователей это совсем немаловажный момент.
Итак, лучше всего
создать свой собственный скрипт. Конечно, это потребует от Вас кое-какой
работы, но зато с лихвой окупиться за счет полной конфигурируемости,
тонкости настройки и полностью своего интерфейса. Да и позволит лишний раз
попрактиковаться в программировании, что обычно не является лишним занятием
для труженика сети :)
В этой статье я хочу показать Вам, как
несложно сделать столь полезный скрипт голосования своими силами. Эта
система реализует практически все необходимые функции. Все, что от
Вас потребуется - это начальные (буквально азы) знания PHP и хостинг с
поддержкой этого языка. Данный скрипт сейчас успешно работает на площадке
провайдера http://www.eserver.ru/, чего и Вам
настоятельно рекомендую. Кстати, в написании этой системы мне помогали
бесценными советами ребята из службы поддержки eServer, за что им отдельная
огромная благодарность. Сам будучи новичком в программировании я не только
добился-таки правильной работы своего творения, но и поимел неплохой
практический опыт благодаря этой компании, персонал которой с неумолимой
чуткостью отвечал на все мои глупые вопросы. В общем, хостинг в eServer на
уровне.
Итак, начнем.
Давайте представим, что мы на сайте
хотим объявить следующее голосование:
ВАШЕ МНЕНИЕ: Как
Вам наш новый дизайн? 5 - Отлично! 3 - Так себе, потянет... 1 -
Ужасно!!!
Пусть Вас не смущает количество вариантов ответов,
на конфигурируемости это никак не отражается. Вы сможете задать любое
количество вопросов (равно как и любой вопрос в принципе) - от одного и до
бесконечности безо всяких проблем.
Двигаемся дальше. Для начала нам
нужно сделать этот опрос в виде HTML, определив имена для переменных.
<form action="/php/vote.php" method="get"
target="_blank"> <input type="Hidden" name=id value=1> Как
Вам наш новый дизайн? <input type="Radio" name=vote value=1
checked>Отлично!<br> <input type="Radio" name=vote
value=2>Так себе, потянет...<br> <input type="Radio"
name=vote value=3>Ужасно!!!<br> <input type="Submit"
value=" Голосовать!"><br> <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я строка: это сам
вопрос, остальные
строки - пара "количество_мнений~ответ", как Вы
поняли, разделенных тильдой
"~". Теперь все, что нам осталось, это обрабатывать результаты.
Это
делает следующий скрипт:
<? // файл с конкретным
голосованием $data = File("$id.dat"); // выводим благодарности, //
если это не просто просмотр результатов if ($vote) echo
"<b><font color=red> Спасибо за Ваше
мнение! </font></b>"; // выводим заголовок голосования
- 1я строка файла echo "<b>$data[0]</b>"; // печатаем
список ответов и результатов - остальные строки for
($i=1;$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 $votes = split("~",
$data[$i]); if ($i==$vote)
$votes[0]++; fputs($f,"$votes[0]~$votes[1]"); } fclose($f); } ?>
Собственно, это все, что требуется. Как видите, скрипт достаточно прост,
не выполняет каких-либо специфический действий, да и ресурсов много не
потребляет. Конечно, сюда можно добавить многие другие полезные функции,
например, сделать администраторский интерфейс для управления голосованиями
через броузер и держать все данные по голосованиям в одном файле, чтобы не
возиться каждый раз с $id.dat. Но это - в следующий раз, а пока моей целью
было показать Вам, что столь полезная система голосования очень просто
реализуется. Теперь Вы можете создать свой собственный дизайн,
поправив html код формы и код, выводимый в скрипте. Здесь очень просто
что-либо изменить.
Источник: http://www.comprice.ru/
|