2.09.04 Добавлено новое в раздел "Статьи". 29.08.04 Появилось руководство по PHP в разделе "Статьи".
Голосование на Вашем сайте:
Добрый день уважаемые подписчики.
Сегодня мы создадим голосование для сайта. Оно поможет Вам узнать мнения посетителей Вашего сайта на разные темы. Например, как им нравиться Ваш сайт. Не буду ударяться в подробности, т. к. это уже многие видели и знают. А для тех, кто не знает, зайдите на сайт там оно есть. Заодно и проголосуете. Ну вот, перехожу к делу. Нам опять нужны форма и скрипт-обработчик (файл voit.php). Форму Вы можете добавить куда угодно на сайт. Форма пускай будет выглядеть примерно так:
И ее код:
<form method="post" action="voit.php"> <b>Вопрос:</b> Как Вам нравиться эта рассылка?
<br><table> <tr><td>Очень! Просто супер.</td><td><input type=radio name=answer value=1 checked></td></tr> <tr><td>Неплохо.</td><td><input type=radio name=answer value=2></td></tr> <tr><td>Мне это не надо.</td><td><input type=radio name=answer value=3></td></tr> <tr><td colspan=2><div align="right"><input type="submit" value="Ок"></div></td></tr> </table></form>
Итак, нажав кнопку "Ок", мы отправляем данные. Если поглядеть внимательнее, то можно заметить, что все 3 <input type=radio> имеют одно имя (name=answer), но разные значения (value=1, value=2, value=3). При выборе одного из предложенных ответов определяется то значение, которое мы выбрали. Например, если мы выбрали "Очень! Просто супер.", то определилось значение 1 у переменной answer в скрипте. А если "Мне это не надо.", то значение 3. Это удобно.
Теперь их нужно обработать и записать. Записывать будем в файл voit1.dat, voit2.dat и voit3.dat. Так мы выяснили, что будет передаваться только значение одной переменной answer. Значит нужно определить какое именно значение передано и прибавить к счетчику. Определить какое значение передано можно с помощью функции if. Узнать об этой функции Вы можете из руководства по PHP, которое Вы можете скачать с сайта рассылки в разделе "Скачать". У нас это будет выглядеть так:
Таким образом мы можем определить значение. Осталось определить какое число в файле и заменить, предварительно увеличив на единицу. Открываем на чтение через функцию file(путь к файлу). Чтение файла происходит в массив. Массив - это набор значений, присвоенных одной переменной. Чтобы обратиться к какому-либо значению, нам нужно ввести порядковый номер массива. Например, в нашем случае каждому элементу массива своя строка. А поскольку всего одна строка, то нам нужен всего лишь 1-ый элемент. Элемент пишем так: $название массива [порядковый номер]. Например, $voit1[0]. Счет начинается с 0.
$voit1=file("voit1.dat");
$voit1[0]++;// Мы выбираем значение 1 строки и увеличиваем на 1 спомощью оператора "++"; анологично уменьшаем - "--".
Запись происходит по следующему сценарию: отрываем файл для записи, записываем и закрываем. Открываем с помощью функции fopen(путь к файлу, тип записи), добавляем fputs(переменная функции fopen, текст для записи), закрываем fclose(переменная функции fopen). У нас это будет выглядеть так:
$file=fopen("voit1.dat", "w+"); // присваиваем переменной файл для перезаписи
fputs($file, "");// добавляем текст, который находится между кавычками ("")
fclose($file);// закрываем
Параметр w+ обозначает, что файл открывается для перезаписи (все старое стирается, начинается запись в первую строку). Подробнее узнать можно в статье "Работа с файлами" в разделе Статьи. В тексте для записи указываем число увеличенное на 1 и закрываем файл. Вот примерный вид записи в скрипте voit.php:
Осталось создать 3 файла voit1.dat, voit2.dat и voit3.dat и записать в них начальное значение, т. е. 0. Вот и все. Голосование готово.
Я очень надеюсь, что изложил материал достаточно понятно, и Вы сможете разобраться в нем. Если нет, пожалуйста, по всем вопросам в раздел ВОПРОС-ОТВЕТ. В следующем выпуске я напишу, как сделать голование более компактным (запись результатов происходит всего в один файл).
Постарайтесь усовершенствовать программу и добавить в вывод на экран еще и подсчет процентов (+ - складывать, - вычитать, * - умножить, / - делить), как на моем сайте, и ссылку результаты (просмотр результатов без добавления своего мнения). Ваши варианты присылайте на наш e-mail. Все они будут опубликованы в следующем выпуске рассылки. Удачи!