Пятница, 19.06.2026, 12:26
Приветствую Вас Гость | RSS
Поиск по каталогу
Главная страница | Каталог статей | Регистрация | Вход

Информационные технологии
Форма входа
Меню сайта

Категории каталога
php [246]
perl [1]
perl
ASP [1]
AJAX [0]

Друзья сайта

Наш опрос
Оцените мой сайт
Всего ответов: 69

Начало » Статьи » Web программирование » php

Голосование на PHP своими руками
Один из самых частых вопросов начинающих веб-программистов является вопрос "А как сделать онлайн голосование?". Очень просто! И даже если сейчас Вам так не кажется, уверяю Вас, стоит лишь вдумчиво прочитать данную статью, и Вы забудете про вопросы о голосования раз и навсегда.

Бредисловие: если вдруг Вы являетесь не новичком в PHP, советую не кидать статью дочитав до середины, чертыхаясь на автора, а прочитать данный небольшой материальчик полностью.

Для начала давайте определимся, что нам нужно для создания голосования.

Итак, первое что понадобиться - форма для отображения пунктов голосования и передачи результатов на сервер соответствующему скрипту для сохранения. Сразу выделяются два новых объекта - скрипт для приема, обработки и сохранения результатов и место для хранения этих самых результатов голосования. Местом для хранения данных спокойно может быть обычный файл. Чего-то не хватает? Ах, да! Нам же нужно еще отображать результаты голосования. Эту функцию можно спокойно исполнить в нашем едином скрипте.

Ну что же, приступим. Начнем, конечно же, с формы для отображения пунктов голосования и передачи данных на сервер. В нем нет ничего сложного:

Как Вам мой сайт?
Супер!
Хорошо
Нормально
Слабо
Лажа!

Как Вы видите, обычная форма, которая передает данные методом POST скрипту golos.php, имеется 5 вариантов ответа, кнопка Голосовать - для голосования и Результаты - просмотр результатов голосования без участия в самом голосовании.

Что дальше? Скрипт? Нет, в начале нужно определиться как мы будим хранить данные. Первое что приходит в голову - в каждой строчке по значению. Довольно удобно - все сразу можно считать в массив. Однако, не стоит забывать что при этом первая строка примет индекс 0 - тут начинающие программисты часто путаются. Я советую не использовать первую строку для хранения результатов голосования, а написать там какой-нибудь комментарий, например, что это файл для хранения результатов такого-то голосования.

Самое время перейти к скрипту голосования. Он не такой тяжелый, так что я напишу весь скрипт сразу, а уже в нем буду давать комментарии каждой строчке.

//имя файла с результатами голосования:

$file = "golos.dat";

//считываем данные голосования в массив:

$a = file($file);

//инициализируем переменные:

$i = 1;

$n = 0;

//получаем количество элементов в массиве голосований:

$fi = Count($a);

//в цикле обрабатываем каждый элемент массива:

while ($i <= $fi):

//удаляем переносы строк:

$a[$i] = trim(str_replace ("\n","", $a[$i]));

//считаем количество голосов:

$n = $n+$a[$i];

$i++;

endwhile;

//если был дан голос:

if ($otvet!= "")

{

  //выводим соотв. сообщение:

  echo "
Спасибо, Ваш голос принят";

  //увеличиваем на 1 соотв. пункт голосования:

  $a[$otvet]++;

  //и общее количество голосов:

  $n++;

  //подготавливаем данные для записи в файл:

  $rez = "Опрос на сайте - это комментарий в файле\n".$a[1]."\n".$a[2]."\n".$a[3]."\n".$a[4];

  //открываем файл для записи:

  $fp = @fopen($file,"w");

  //если успешно:

  if ($fp)

  {

     //записываем данные в файл:

     fputs($fp,$rez); //и закрываем его:

     fclose($fp); }

     //если произошла ошибка:

     else { echo "Ошибка при открытии файла"; }

}

//выводим результаты:

else { echo "
Результаты голосования"; }

echo "
Супер! — ".$a[1]."";

echo "
Хорошо — ".$a[2]."";

echo "
Нормально — ".$a[3]."";

echo "
Слабо — ".$a[4]."";

echo "
Лажа! — ".$a[5]."";

echo "

Всего голосов: ".$n;

?>

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

Ну что же. Вот и все! Вы уже побежали ставить себе на сайт голосование? А зря! Ведь данный код лишь демонстрация алгоритма, слабого алгоритма, я уже молчу про возможности самого кода. Он даже не сможет обеспечить надежной работы - при большом количестве обращений файл голосований будет периодически обнуляться. Или, например, у нас нет абсолютно никакой защиты от многократных голосований - один человек может голосовать столько раз, сколько ему захочется. Я уже молчу про недоработанный алгоритм скрипта - посмотрите в первой части мы очень неплохо используем цикл, который не зависит от количества пунктов голосования, а вот при выводе результатов - мы жестко привязаны к этому числу. А вывод результатов? Куда это годиться...

В общем, продолжать перечислять недостатки скрипта можно долго.

Категория: php | Добавил: freeone (09.05.2007) | Автор: Vladislav Putyak
Просмотров: 843 | Рейтинг: 5.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:

Copyright Информационные технологии © 2006