2.2 Написание скрипта для интернет-голосования

В качестве инструментов я предлагаю выбрать язык программирования PHP. Язык PHP уже достаточно распространен среди хостинг-провайдеров как в России, так и за рубежом. Он был создан специально для написания скриптов, исполняемых на стороне сервера. Для сервера Apache он работает в виде дополнительного модуля, обеспечивая высокую скорость работы и удобство программирования.

Программа на PHP представляет собой файл на языке HTML с включенными в него тегами PHP, которые выглядят следующим образом:

<? команды ?>

Таким образом, вы можете легко подготовить весь дизайн страницы в любимом редакторе HTML, а затем вставить в него необходимые команды PHP.

Для работы нам понадобится три файла. В первом файле будем спрашивать посетителя о его мнении, во втором – хранить результаты и в третьем – выводить их и обрабатывать.

Острой необходимости сохранять все эти функции в разные файлы нет, но для простоты и удобства сделали именно так. Первый файл мы назвали index.phtml, второй – golos.txt и третий – golos.phtml.

В файле index.phtml создали форму. Для этого мы использовали язык гипертекстовой разметки HTML.

<form method=”POST” action=”golos.phtml”>

<table border=”1”><tr><td><table border=”0”>

<tr bgcolor="6ff392"><td bgcolor="6ff392">Чья работа вам понравилась больше?</td></tr>

<tr><td bgcolor="e261b3"><input type=”radio” name=”answer” value=1>Компаниец Татьяна Сергеевна

</td></tr>

<tr><td bgcolor="61b9e2"><input type=”radio” name=”answer” value=2> Прилепко Максим Анатольевич </td></tr>

<tr><td bgcolor="92ea3c"><input type=”radio” name=”answer” value=3> Козерук Алексей Сергеевич </td></tr>

<tr><td bgcolor="edf56e"><input type=”radio” name=”answer” value=4> Кудрявцев Никита Андреевич </td></tr>

<tr><td bgcolor="b695f2"><input type=”radio” name=”answer” value=5>Пуртова Алена Сергеевна

 </td></tr>

<tr><td bgcolor="fa58e9"><input type=”radio” name=”answer” value=6> Степаненко Алексей Николаевич </td></tr>

<tr><td bgcolor="FF6633"><input type=”radio” name=”answer” value=7> Парначева Екатерина Евгеньевна</td></tr>

<tr><td bgcolor="00CC99"><input type=”radio” name=”answer” value=8>Каршков Илья Сергеевич

</td></tr>

<tr><td bgcolor="99FF66"><input type=”radio” name=”answer” value=9> Соломин Андрей Александрович </td></tr>

<tr><td bgcolor="0066CC"><input type=”radio” name=”answer” value=10> Свидерская Алина Сергеевна </td></tr>

<tr><td bgcolor="FF6666" ><input type=”radio” name=”answer” value=11> Будик Вергиния Игоревна </td></tr>

<tr><td bgcolor="9933FF"><input type=”radio” name=”answer” value=12> Карманова Юлия Михайловна </td></tr>

<tr><td bgcolor="CC0033"><input type=”radio” name=”answer” value=13> Илиенко Екатерина Игоревна </td></tr>

<tr><td bgcolor="FF9933"><input type=”radio” name=”answer” value=14> Волкова Татьяна Сергеевна </td></tr>

<tr><td bgcolor="6ed4f5"><input type=”radio” name=”answer” value=15> Радченко Юлия Игоревна </td></tr>

<tr><td bgcolor="CC9999"><input type=”radio” name=”answer” value=16> Бауэер Антон Александрович </td></tr>

<tr><td bgcolor="1eb1c7"><input type=”radio” name=”answer” value=17> Инголычев Дмитрий Леонидович </td></tr>

<tr><td bgcolor="FFFF00"><input type=”radio” name=”answer” value=18> Хорошун Ирина Валентиновна </td></tr>

<tr><td bgcolor="6ff392"><input type-“Submit” name=”vote” value=”Отправить”></td></tr>

<tr"><td td bgcolor="6ff392"><input type-“Submit” name=”result” value=”Смотреть результаты”></td></tr><tablex/td></tr></table></form>

Здесь нет ни строчки кода PHP, но мы задали файлу расширение PHTML, чтобы в дальнейшем в этот файл можно было вставить PHP-код. У нас получилась простая форма (приложение)

В HTML-коде всё просто, мы предлагаем указать с помощью переключателя нужный вариант ответа и нажать на кнопку «Отправить».

Этот код можно легко вставить на любую страницу и внести в него нужные изменения. И самое главное – данные из формы должны передаваться PHP-скрипту, обрабатывающему результаты, поэтому имя файла, присеваемое атрибуту action, должно соответствовать имени файла со скриптом.

Все имена форм, присвоенные в этом файле, станут соответствующими переменными в скрипте PHP, в который отправляются данные формы.

Файл golos.txt. В этом файле необходимо определиться, в каком формате мы будем хранить вводимую информацию. Проще всего организовать строки (по количеству вариантов ответов), номера которых будут соответствовать номеру выбранного варианта ответа. Информацию из файла golos.txt можно считывать с помощью команды PHP ввода файла в массив – file ($array). Массив всегда начинается с нулевого индекса, поэтому первая строка нашего файла не будет использована и в нее можно ввести все, что угодно, например строку «Результаты голосования». Далее введите ещё четыре строки с нолями. Не забывайте нажимать ввод для перевода строки.Это – результаты (начальные) нашего голосования и, пока никто не проголосовал, они нулевые.

Файл golos.phtml. Сначала мы задаём имя файла результатов и считываем результаты голосования в массив данных с именем $a. Дальше идёт цикл, в котором мы обрабатываем полученный массив таким образом, чтобы он не содержал символов перевода строки и пробелов. Удалять символы ввода и пробела необходимо для преобразования считанных данных из символьной строки в целое число. Это можно сделать разными методами, но в этом случае просто удаляются символы “/n” (что в PHP соответствует переводу строки) и обрезаются пробелы с начала и с конца строки функцией trim (). Результаты заносятся назад в массив, но уже в виде целочисленного значения, которое можно суммировать, увеличить на единицу, делить и т.д. Нас будет интересовать увеличение на единицу определённого элемента массива, индекс которого хранится в переменной $anawer, которая пришла кнам по наследству из формы. Паралельно ведем подсчет количества проголосовавших, что несложно, так как это просто сумма значений нашего массива.

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

Когда нужная ячейка массива увеличена, нужно записать результаты в файл. Для этого сначала открывается соединение с файлом. Символ w указывает на необходимость очистки содержимого файла перед записью. Если соединение с файлом установлено, в файл записывается предварительно отформатированное значение переменной $rez, а если не установлено – выводиться сообщение об ошибке.

Переменна $rez формируется следующим образом: значение всех ячеек массива (кроме самой первой – нулевой, которая не используется) объединяется таким образом, чтобы разделителем был символ перевода строки. Это позволит в дальнейшем корректно считать полученные таким образом файл.

Для объединения строк PHP применяется точка. Наш массив из целочисленного перешел в разряд символьных. И наконец, пришла пора вывести результаты на экран. Перевод строки в HTML осуществляется при помощи тега <br>.

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

<?php

$file = “golos.txt”;

$a = file ($file);

$i = 1 $fi = count ($a);

$n = 0;

while ($i <=$fi):

$a [$i] = trim (str_replase (“\n”,””, $a[Si]));

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

$i++;

endwhile;

if ($answer !=”“) {

echo “<br>Спасибо, Ваше мнение учтено”;

$a [$answer]++; $n++;

$rez =”Результаты голосования \n”. $a [1].

“n\”.$a[2]. “\n” . $a[3]. “n\” . $a[4];

$fp = @fopen ($file, “w”);

If ($fp) {$counter = fputs {$fp,$rez); fclose ($fp); }

else {echo “Произошла ошибка записи результатов!“;}

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

echo "<br> Компаниец Татьяна Сергеевна – <br> ".$a[1]. "</b> ";

echo "<br> Прилепко Максим Анатольевич – <br> ".$a[2]. "</b> ";

echo "<br> Козерук Алексей Сергеевич – <br> ".$a[3]. "</b> ";

echo "<br> Кудрявцев Никита Андреевич – <br> ".$a[4]. "</b> ";

echo "<br> Пуртова Алена Сергеевна – <br> ".$a[5]. "</b> ";

echo "<br> Степаненко Алексей Николаевич – <br> ".$a[6]. "</b> ";

echo "<br> Парначева Екатерина Евгеньевна – <br> ".$a[7]. "</b> ";

echo "<br> Каршков Илья Сергеевич – <br> ".$a[8]. "</b> ";

echo "<br> Соломин Андрей Александрович – <br> ".$a[9]. "</b> ";

echo "<br> Свидерская Алина Сергеевна – <br> ".$a[10]. "</b> ";

echo "<br> Будик Вергиния Игоревна – <br> ".$a[11]. "</b> ";

echo "<br> Карманова Юлия Михайловна – <br> ".$a[12]. "</b> ";

echo "<br> Илиенко Екатерина Игоревна – <br> ".$a[13]. "</b> ";

echo "<br> Волкова Татьяна Сергеевна – <br> ".$a[14]. "</b> ";

echo "<br> Радченко Юлия Игоревна – <br> ".$a[15]. "</b> ";

echo "<br> Бауэер Антон Александрович – <br> ".$a[16]. "</b> ";

echo "<br> Инголычев Дмитрий Леонидович – <br> ".$a[17]. "</b> ";

echo "<br> Хорошун Ирина Валентиновна – <br> ".$a[18]. "</b> ";

echo "<br><br>Всего проголосовало: ".$n;

?>



Информация о работе «Разработка системы электронного голосования на странице промо-сайта олимпиады "Мастера Photoshop"»
Раздел: Информатика, программирование
Количество знаков с пробелами: 75031
Количество таблиц: 0
Количество изображений: 0

0 комментариев


Наверх