На этой странице речь пойдет о web-программировании. Не надо переворачивать страницу! Даже если ты и не программист, тебе может понравиться. Сделаем полезную программу (скрипт) для твоего сайта. Это будет программа опроса посетителей. Пользователь заполнит маленькую формочку, а также сможет увидеть результаты голосования. А суть нашего будущего скрипта как раз и будет заключаться в том, как выводится результат. Заинтриговал? Читай дальше.
Что нам нужно?
Начинаем работу. Писать будем на РНР (Personal Home Page — см. цикл Артема Шманцырева «Сервер племени апачей»). Давай сначала более конкретно разберем поставленную перед нами задачу.
Нам нужно поместить на страницу небольшую форму, которая будет представлять собой набор переключателей и кнопку submit.
Предположим, мы срочно хотим узнать от посетителей, какой сорт колбасы им нравится больше всего. Предоставим им на выбор четыре: «Докторская», «Салями», «Кровянка», «Ливерная».
Что нужно нашему скрипту для работы? Во-первых, ему нужно где-то хранить результаты опроса. Где? Нет, холодильник для этого не подойдет. Мы будем хранить результаты в файле. А назовем его stat.dat. Его структура крайне проста: четыре строчки, в каждой из которых будет записана цифра. Эта цифра и есть количество голосов, отданных за каждый из вариантов ответа.
Далее следует заметить, что мы делаем честную систему опроса, а не что-то там в духе судейства на футбольном чемпионате. Поэтому следует сделать так, чтобы один и тот же посетитель не мог проголосовать дважды. К сожалению, мы не можем проследить за каждым интернет-пользователем (уж очень их много). Зато мы можем проконтролировать, чтобы один посетитель не отдавал свой голос два раза подряд. Как? Ты должен знать, что у каждого путешествующего по сети есть свой IP-адрес. Из своего скрипта мы будем его получать и сравнивать с IP-адресом предыдущего зашедшего на страницу. Если они совпадут, то голос не засчитается. Естественно, нам нужно где-то хранить тот самый «IP-адрес предыдущего зашедшего на страницу». Его будем хранить… Да нет же! Не в холодильнике — в файле! Этот файл назовем lastip.dat. Он должен размещаться в той же директории, что и stat.dat. Его структура будет еще проще, чем у предыдущего файла. Он будет состоять из одной строчки: в ней и будет записан IP-адрес. Какие же действия будет выполнять наш скрипт? А вот какие:
получить информацию, за какой вариант отдан голос;
увеличить общее количество голосов за этот вариант на единицу;
сохранить изменения в файле stat.dat;
вывести результат.
А? А-а! Руки от нетерпения чешутся? Хочешь узнать, как будет выводиться результат? Он будет выводиться в виде .jpeg-картинки. Чего руки распустил? Ты дослушай сперва. Эта самая картинка будет генерироваться скриптом автоматически, а выглядеть будет столбиковой диаграммой (она же гистограмма) процентного соотношения голосов. Еще на каждом столбике будет подписано, сколько процентов голосов было отдано за этот вариант ответа. Где-то в сторонке подпишем общее количество проголосовавших... Мне тоже понравилось, когда придумал.
Практическая и умеющая считать
Еще нам необходимы сами файлы скрипта. Их будет два: первый — для сбора статистики и изменения файлов, а второй будет собственно рисовать. Сразу отвечу на пока еще не заданный вопрос: почему нельзя объединить обе части в один файл? Все просто. Как правило, для того чтобы собрать статистику, выделяется отдельная страница с формой, а результаты (еще и в виде баннера) иногда хочется разместить на нескольких (а то и на всех) страницах сайта. Именно для этого мы их и разделили. Первая часть скрипта — та, которая обрабатывает данные, переданные формой, будет находиться в файле stat.php. Код второй части, той, что будет рисовать изображение, должен находиться в файле draw.php. Открывай первый файл своим любимым текстовым редактором (лучше всего notepad) и записывай в него такой текст:
``
Этим мы уведомляем интерпретатор о том, что код PHP закончился.
Настала пора создания формы, которая будет вызывать скрипт. Вот она:
<form action="stat.php"> Какую колбасу вы предпочитаете?<br> "Докторская" <input type="radio" name="mark" checked="" value="0"><br> "Салями" <input type="radio" name="mark" value="1"><br> "Кровянка" <input type="radio" name="mark" value="2"><br> "Ливерная" <input type="radio" name="mark" value="3"><p> <input type="submit" value="Голосовать"> </p></form>
Здесь все понятно? Эту форму ты сможешь помещать в любую страницу своего сайта. Только в случае, если она лежит не в одном каталоге с файлом stat.php, в параметре action измени адрес так, чтобы он соответствовал реальному размещению файла.
(Продолжение следует)
