Создание голосования на PHP |
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Для начала надо определиться, о чем мы будем спрашивать посетителей. Например,
понравился им ваш сайт или нет. <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="Результаты голосования:/n"; // Переменная $rez будет содержать данные о голосовании, // которые затем запишем обратно в файл for($i=1;$i<$file_len;$i++) $rez.=$file[$i]."/n"; $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); // Здесь производим вывод полученной картинки в // стандартный поток вывода и уничтожаем идентификатор ?>В итоге получиться что-то типа: Ваше мнение о сайте:
| ||||||||||||||||||