Страница, показанная в листинге 26.3, представляет собой простейшую форму ввода. Каждый тег ввода после щелчка на кнопке ввода (submit) преобразуется в массив _REQUEST, и вызывается сценарий, приведенный в листинге 26.4. Этот сценарий открывает файл requests.txt для добавления и записывает в него все поля. Поля разделяются символами табуляции, что упрощает последующий ввод данных файла в электронную таблицу.
Листинг 26.4. Вывод формы
<html> <head>
^^^^Листинг 26.4</title>
</head>
<body>
<?
/*
** обработка ввода из формы и добавление его в файл */
$fp = fopen("/tmp/requests.txt", "a");
if($fp)
{
//ввод пользователя
$_REQUEST['name'] = substr(0, 16, $_REQUEST['name']); $_REQUEST['address'] = substr(0, 32, $_REQUEST['address']); $_REQUEST['city'] = substr(0, 16, $_REQUEST['city']); $_REQUEST['state'] = substr(0, 2, $_REQUEST['state']); $_REQUEST['zip'] = substr(0, 10, $_REQUEST['zip']); //заблокировать файл flock($fp, (LOCK_SH)); //записать запрос
fputs($fp, $_REQUEST['name'] . "t" . $_REQUEST['address'] . "t" . $_REQUEST['city'] . "t" . $_REQUEST['state'] . "t" . $_REQUEST['zip'] . "n"); //release lock
flock($fp, LOCK_UN); //close the file fclose($fp);
}
<p>
Спасибо за запрос каталога! </p>
<p>
<a href="2 6-3.html">Возвратиться на страницу</a>
</p>
</body>
</html>
26.2. Использование PHP-кода для вывода всего HTML-кода
Любой пример из предыдущего раздела можно считать отличным первым шагом интеграции PHP-кода в Web-узел. Его вклад в нагрузку на сервер очень незначителен. Web-узлы, использующие подобную методику, можно классифицировать как Web-узлы с возможностями PHP. Небольшое добавление PHP-кода позволяет выделить их в отдельную категорию. Дальнейшим шагом будет усиление PHP-кода: Web-узел, полностью созданный с использованием PHP-кода. При таком подходе каждый выводимый байт создается с помощью PHP. Функция print отсылает HTML-теги. Страницы являются сценариями, заключенными между парой PHP-тегов.
Вероятно, вы уже обратили внимание, что в большинстве примеров, приведенных в этой книге, используется именно такой подход. Я обнаружил, что, несмотря на то что при таком подходе требуется больше времени, таким кодом лучше управлять. Поскольку информация помещается в PHP-переменные, позднее будет просто добавить к ней что-то динамически. Это также улучшает читаемость, несмотря на усложнение страниц. Сравните простой пример, приведенный в листинге 26.5, с примером из листинга 26.6. Но при этом цвет фона меняется в зависимости от времени суток.
| Листинг 26.5. Смешение PHP- и HTML-кода_
<html> <head>
^^^^Листинг 26.5</title>
</head>
<?php
$Hour = date("H");
$Intensity = round(($Hour/24.0)*(0xFF)); $PageColor = dechex($Intensity) .
dechex($Intensity) .
dechex($Intensity);
?>
<body bgcolor="#<?php print($PageColor); ?>">
<111>Листинг 26.5</h1>
</body>
</html>
I Листинг 26.6. Преобразование сценария в PHP-код
<?php
//начало документа print("<html>n"); print("<head>n");
print("<title> Листинг 26.6</title>n"); print("</head>n");
$Hour = date("H");
$Intensity = round(($Hour/24.0)*(0xFF)); $PageColor = dechex($Intensity) .
dechex($Intensity) .
dechex($Intensity); // отобразить тело
print("<body bgcolor="#$PageColor">n"); print("<h1>Листинг 26.6</h1>n"); print("</body>n");
print("</html>n");
Мой опыт свидетельствует о том, что хранение HTML-кода в сценарии PHP позволяет очень легко и быстро вносить изменения. Не нужно искать открывающие и закрывающие теги в HTML-коде, как в листинге 26.5, что позволяет разбить код на отдельные строки, которые в выводимых на экран браузера строках будут объединены (в качестве примера можно привести текст заголовка). При этом можно улучшить читаемость кода не в ущерб представлению. Таким образом, упрощается работа с таблицами. Наличие пробела между тегом td и изображением приводит к появлению дополнительного пикселя. Для HTML-кода решение заключается в переделке всей строки. В сценарии PHP можно иметь множество вызовов print и отправить завершение строки только в конце. В результате получим одну строку вывода при читаемом исходном коде.
Польза этого метода возрастает по мере увеличения объема проекта. Я создал 50-страничные приложения с использованием обоих подходов и могу ручаться за ценность метода помещения всего HTML-кода в PHP-коде.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Интегрирование в HTML-код. Часть Третья.
19-06-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Интегрирование в HTML-код. Часть Вторая. | PHP. Интегрирование в HTML-код. Часть Четвёртая. |