ГлавнаяРегистрацияВход Приветствую Вас Гость | RSS
   
Меню сайта
Разделы новостей
mp3player
Главная » 2007 » Июль » 7 » Создание голосования на PHP
Создание голосования на PHP
15:34
Для начала надо определиться, о чем мы будем спрашивать посетителей. Например, понравился им ваш сайт или нет. для нашего голосования нам потребуются четыре файла: В первом будет находиться форма с голосованием (form.html). Второй файл будет отвечать за обработку результатов (golos.php). В третьем будут храниться данные голосования (data.txt). Четвертый будет отвечать за выдачу графической информации (img.php).

Например мы хотим задать посетителям следующие вопросы:
Ваше мнение о сайте: просто супер, нормальный, так себе, мне все равно, плохой, хуже не видел.
В файл form.html запишем:
<form action=golos.php method=post>
<table cellspacing cellpadding=0 border=0>
<tr><td align=center colspan=2><B>Голосование:</B></td></tr>
<tr><td align=center colspan=2><B>Ваше мнение о сайте:</B></td></tr>
<tr><td><input type=radio name=otv value=1 checked></td>
<td>Просто супер!</td></tr>
<tr><td><input type=radio name=otv value=2></td>
<td>Нормальный.</td></tr>
<tr><td><input type=radio name=otv value=3></td><
td>Так себе.</td></tr>
<tr><td><input type=radio name=otv value=4></td><
td>Мне все равно.</td></tr>
<tr><td><input type=radio name=otv value=5></td><
td>Плохой.</td></tr>
<tr><td><input type=radio name=otv value=6></td><
td>Хуже не видел!</td></tr>
<tr><td colspan=2 align=center>
<input type=submit name=golos value="Голосовать"></td></tr>
</table</form>
После нажатия кнопки Голосовать переменная otv перейдет на обработку сценарием в файле golos.php
В файл data.txt надо записать начальные данные, которые затем будут оттуда считаны и обработаны.
Создайте в файл data.txt и в текстовом редакторе запишите в него следующие строки:
Результаты голосования:
0
0
0
0
0
0
Первая строка у нас учитываться не будет.
В остальные шесть строк надо ввести нули, нажимая после каждой цифры клавишу Enter.
В файле golos.php, который у нас отвечает за обработку результатов, напишем следующее:
<html>
<head>
<title>Обработка голосования</title>
</head>
<body>
<?
if(@$golos) {
// Здесь мы запускаем обработку данных только если 
// была нажата клавиша Голосовать
 $file_name="data.txt";
 // Переменная $file_name задает имя файла с результатами
 $file=file($file_name);
 // Записываем файл с данными в массив $file
 $file_len=count($file);
 // $file_len - количество строк в файле data.txt
 for($i=1,$n=0;$i<$file_len;$i++) {
 $file[$i]=trim($file[$i]);
 $n=$n+$file[$i];
 };
 // В этом цикле мы убираем символы перевода строки и записываем в 
 // переменную $n сколько человек уже проголосовало
 echo "<center><h2>Спасибо, Ваше мнение учтено!</h2></center>";
 $file[$otv]++;
 $n++;
 // Здесь мы учитываем номер ответа, который пришел к нам из формы,
 // увеличив соответствующее значение в массиве и число проголосовавших на 1
 $rez="Результаты голосования:
";
 // Переменная $rez будет содержать данные о голосовании,
 // которые затем запишем обратно в файл
 for($i=1;$i<$file_len;$i++) $rez.=$file[$i]."
";
 $rez=trim($rez);
 $file_rec=@fopen($file_name,"w");
 // Здесь мы создаем новый файл, в который затем запишем обновленные данные
 if($file_rec) {
 $counter=fputs($file_rec,$rez);
 // Запись обновленных данных в файл data.txt
 fclose($file_rec);
 }
 else echo "Произошла ошибка записи результатов!";
 for($i=1;$i<$file_len;$i++) $pr[$i]=round(($file[$i]/$n)*100);
// Записали в массив $pr, сколько процентов от общего числа голосовавших
// занимает каждый ответ
// Далее идет кусок HTML-кода, который
// отвечает за вывод наших данных на экран
?>
<center><h2>Ваше мнение о сайте:</h2></center><BR>
<table border=1 align=center>
<tr><td>
<B>Просто супер! (<?echo $file[1];?>):</B>
</td><td>
<img src="img.php?pr=<?echo $pr[1];?>" height=15>
</td></tr>
<tr><td>
<B>Нормальный. (<?echo $file[2];?>):</B>
</td><td>
<img src="img.php?pr=<?echo $pr[2];?>" height=15>
</td></tr>
<tr><td>
<B>Так себе. (<?echo $file[3];?>):</B>
</td><td>
<img src="img.php?pr=<?echo $pr[3];?>" height=15>
</td></tr>
<tr><td>
<B>Мне все равно. (<?echo $file[4];?>):</B>
</td><td>
<img src="img.php?pr=<?echo $pr[4];?>" height=15>
</td></tr>
<tr><td>
<B>Плохой. (<?echo $file[5];?>):</B>
</td><td>
<img src="img.php?pr=<?echo $pr[5];?>" height=15>
</td></tr>
<tr><td>
<B>Хуже не видел! (<?echo $file[6];?>):</B>
</td><td>
<img src="img.php?pr=<?echo $pr[6];?>" height=15>
</td></tr>
</table>
<table border=1 align=center>
<tr><td align=center><B>Всего проголосовало:</B></td></tr>
<tr><td align=center><?echo $n." человек";?></td></tr>
</table>
<?
};
?>
</body>
</html>
Записав в атрибут SRC тега <IMG> значение "img.php?pr=количество процентов" мы тем самым передаем файлу img.php (который отвечает за вывод графической информации) значение, на основании которого будет на лету сгенерировано изображение голосования. Далее приведу листинг файла img.php:
<?
 $otstup=35;
 // $otstup - задает отступ, в прелелах которого
 // в картинку впишем процентное значение
 $string=$pr."%";
 // $string - содержит значение процентов плюс знак процента
 $im=imageCreate($pr*2+$otstup,15);
 // Здесь создаем идентификатор, при помощи 
 // которого мы будем работать с картинкой
 $fon=imageColorAllocate($im,220,20,60);
 $fon1=imageColorAllocate($im,255,20,147);
 // Задаем цвет фона
 $col_b=imageColorAllocate($im,0,0,0);
 // Задаем цвет обводки
 $shrift=imageColorAllocate($im,255,255,255);
 // Цвет вывода процентного значения
 imageFill($im,2,2,$fon);
 // Заполнили наш прямоугольник основным фоном
 $x1=0;$x2=$pr*2+$otstup-1;
 $y1=0;$y2=14;
 // Формирование улов для обводки контуром
 imageLine($im,$x1,$y1,$x2,$y1,$col_b);
 imageLine($im,$x2,$y1,$x2,$y2,$col_b);
 imageLine($im,$x2,$y2,$x1,$y2,$col_b);
 imageLine($im,$x1,$y1,$x1,$y2,$col_b);
 imageLine($im,$x1+$otstup,$y1,$x1+$otstup,$y2,$col_b);
 // Создание контура и разделяющей полосы
 if($pr!=0) imageFill($im,$otstup+1,2,$fon1);
 // Если значение процента не равно 0, то заполняем 
 // правую часть цветом $fon1
 imageString($im,3,5,1,$string,$shrift);
 // Пишем в правую часть картинки процентное значение
 header("Content-type: image/png");
 imagePng($im);
 imageDestroy($im);
 // Здесь производим вывод полученной картинки в 
 // стандартный поток вывода и уничтожаем идентификатор
?>
В итоге получиться что-то типа:
Материал взят с сайта http://free-php.net.ru/
Категория: PHP | Просмотров: 588 | Добавил: VVS | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Форма входа
Наш опрос
Чего Вам не хватает на сайте?
Всего ответов: 21
Друзья сайта
Статистика
Возраст