ООП   PHP   web   4GL - визуальные среды

Практика пограммирования скриптов на PHP

PHP и MySQL - рабочие инструменты сайтостроителя

Если раньше Web-мастеров в первую очередь волновали вопросы оформления страниц (какой редактор выбрать для верстки Web-страниц, применять ли модные "навороты" и т.п.), то сегодня на первый план выходят проблемы внутренней структуры сайта. Она должна быть такой, чтобы можно было изменить внешний вид сайта в соответствии с новыми шаблонами, не переверстывая десятки и сотни гипертекстовых файлов. Сегодня в моде так называемый инфодизайн — дизайн с минимальным количеством графических элементов оформления, но с понятной структурой, удобными навигацией по разделам и администрированием, а также с дополнительными сервисами (например, представлением документов в форматах для просмотра на экране и для печати, поиском информации на сайте, добавлением отзывов к статье и пр.).

Ни одну из этих задач невозможно решить без применения системы управления базами данных вместе со скриптовыми языками, исполняемыми на Web-сервере. Конечно, можно возразить, что, во-первых, Web-серверы понимают инструкции SSI (Server Side Include), в которых предоставляются команды для включения вспомогательных файлов в главный (обычно это index.html или index.shtml), а во-вторых, даже применяя скриптовые языки, всю информацию можно хранить в виде обыкновенных текстовых файлов, а затем обрабатывать ее построчно или даже пословно. Однако первый способ не позволяет создавать по настоящему динамические информационные ресурсы, а недостатки второго проявляются при увеличении объемов хранящейся на сервере информации. Нужные сведения с каждым разом становится все сложнее находить, обрабатывать и отображать.

СУБД понимают язык запросов SQL независимо от того, под управлением какой операционной системой они и Web-сервер работают. Хотя и есть определенные нюансы в использовании команд SQL различных баз данных, но зачастую они сводятся к различию в синтаксисе некоторых команд и их опциях; троица же ключевых команд — SELECT, INSERT и UPDATE, которые служат для выбора, добавления и обновления информации, обычно стандартна.

В этой статье из цикла, посвященного современному "сайтостроению", мы поговорим о популярной системе MySQL и языке программирования PHP, а также рассмотрим, как с их помощью можно решать задачи, с которыми сталкивается любой разработчик Интернет-сайта: подготовка и отображение новостей, ввод и отображение текстовой информации, поиск на сайте, организация дополнительных сервисов ("узнавания" посетителя, форумов, опросов и т.д.). Оба эти средства являются бесплатными и предоставляются всеми без исключения хостинг-провайдерами.

Конкретная задача — конкретные инструменты.

Поскольку журнал Hard’n’Soft является компьютерным изданием, пусть создаваемый сайт будет посвящен компьютерам, программному обеспечению и информационным технологиям. В качестве примера будет рассматриваться гипотетический сайт, включающий три ключевых раздела: новости, каталог программ и статьи. Отметим, что, прежде чем проектировать новый информационный ресурс, следует провести определенные исследования, подготовить, хотя бы в тезисном виде, бизнес-план, найти коллег, партнеров, которые помогут поддерживать ресурс в работающем состоянии, хостинг-провайдера, обеспечивающего приемлемые условия для функционирования сайта (с учетом планируемого трафика, канала и прочих факторов). Впрочем, рассмотрение всех этих маркетинговых и организационных мероприятий выходит за рамки статьи. Мы же сосредоточимся на главном — проектировании и разработке скриптов для функционирования сайта.

Страницы современных информационных сайтов, как правило, содержат три табличные колонки: при этом правая и левая узкие колонки служат для вывода новостной информации, списка разделов, форумов, рекламы, опросов, а центральная часть используется для отображения основных материалов. Впрочем, нередки случаи размещения только двух столбцов или, наоборот, увеличения их числа до четырех. Все зависит от объемов, структуры и формы подачи информации. В нашем примере компьютерного сайта используются три столбца: в одном столбце отображаются новости, во втором — статьи, в третьем — сравнительно постоянная часть сайта (наименования разделов, рекламные банеры, список форумов, информация о подписке и т.п.).

Для создания прототипа такого сайта можно воспользоваться любым редактором — это может быть даже обыкновенный "Блокнот", хотя при быстром макетировании сайта лучше все-таки работать с WYSIWYG-редакторами — все равно три четверти содержимого созданного гипертекстового файла будет изменено. Помимо общего дизайна следует подготовить и так называемую таблицу стилей, которая будет использоваться для оформления таблиц, заголовков, абзацев и ссылок на сайте. При создании шаблона главной страницы можно задействовать и графические элементы оформления: линии, отделяющие столбцы друг от друга, заголовки разделов, фон страницы и ячеек. Кроме того, следует определиться с последовательностью отображения информации. В принципе, даже для очень сложного сайта с десятками различных разделов достаточно одной-единственной страницы, поскольку ей (вернее, скрипту, который исполняется на сервере) можно передавать параметры. Так, указав ссылку index.php3?content=news или index.php3?content= article, можно из "кусочков" кода собрать соответственно страницу новостей или страницу для просмотра материалов. Если для представления разделов сайта используются отдельные гипертекстовые файлы, то каждый из них должен быть оформлен в едином для сайта стиле. Поэтому index.html или index.php3 следует разбить на части и поместить заголовок страницы в один файл, скрипты, формирующие новости — во второй, а статьи — в третий и т.д.

Определившись с примерным шаблоном страницы (это, впрочем, не означает, что он в дальнейшем не будет меняться), следует приступить к разработке его "внутренностей". Выбор языка PHP обусловлен тем, что это совсем несложное в изучении средство с синтаксисом, напоминающим C, но более простое в использовании. Его удобство заключается еще и в том, что код скриптов на PHP располагается непосредственно внутри гипертекстового файла, а соответствующий модуль на сервере, перед тем как передать данные на клиентскую машину, попросту выполняет инструкции PHP, заменяя их тегами HTML. Аналогичный способ используется и в системах Active Server Page и ColdFusion, с которыми читатели Hard’n’Soft уже знакомы. Но главное преимущество PHP в его доступности — для использования всех без исключения средств языка не нужно оплачивать лицензии. Более того, PHP распространяется методом Open Source, и вместе с интерпретатором можно загрузить и его исходный код.

PHP существует для многих платформ — Linux, FreeBSD, Windows, так что для создания сайта совершенно необязательно искать операционную систему Linux, устанавливать и настраивать ее. Версии PHP для Windows и Linux полностью идентичны друг другу — отладив скрипты в одной системе, можно без проблем запускать их в другой. То же самое касается и серверной СУБД MySQL, и Web-сервера Apache. Далее мы будем рассматривать работу в среде Windows.

По большому счету для отладки сайта в локальном режиме подойдет любой персональный Web-сайт, позволяющий обрабатывать нестандартные типы файлов (а файлы типа PHP3 или PHTML являются нестандартными), — он может быть создан на основе Personal Web Server, Internet Information Server, Apache или других свободно распространяемых программ. Для подключения к такому сайту PHP следует, во-первых, установить соответствие между файлом и приложением, во-вторых, сообщить Web-серверу о том, что соответствующий тип данных должен предварительно обрабатываться специальным препроцессором, и, в-третьих, указать, что файл index.php3 (или index.phtml) является основным. Кроме того, в настройках Web-сервера задается местоположение гипертекстовых файлов на жестком диске (для этого лучше завести отдельный каталог).

Настройка системы управления базами данных MySQL выполняется чуть сложнее. После ее установки на жесткий диск нужно составить несложный BAT-файл с двумя командами (первая служит для подавления выдачи сообщений на экран, вторая запускает базу данных с указанием, в каком каталоге планируется хранить данные):

@echo off
c:\mysql\bin\mysqld.exe
-- basedir c:/mysql

Этот BAT-файл следует запускать каждый раз в начале работы локального Web-сервера. Для удобства его можно поместить непосредственно на рабочий стол Windows.

В завершение работ по настройке следует включить загрузку библиотеки функций для обслуживания MySQL. В Windows для этого необходимо открыть файл PHP3.INI и убрать значок комментария (точку с запятой) для PHP3_MYSQL. DLL в разделе загружаемых модулей. После этого можно приступать к использованию PHP и MySQL.

Что может PHP.

PHP — язык написания скриптов, которые встраиваются непосредственно в гипертекстовые файлы и исполняются на Web-сервере. Программа на PHP заключается в теги , а интерпретатор обрабатывает команды между этой парой тегов и формирует окончательный файл, передающийся на локальную машину. Как уже упоминалось, язык PHP довольно простой и основные его конструкции (циклы, условия, функции) напоминают С.

В настоящее время выпущена четвертая версия PHP с улучшенными производительностью и возможностями. Так, в PHP 4 появились сессии, подобные Active Server Page и позволяющие манипулировать данными в течение всего сеанса доступа пользователя, расширены встроенные функции системы. Вместе с тем предыдущая, третья версия языка применяется достаточно широко, что объясняется ее прекрасной совместимостью с основными серверами реляционных систем управления базами данных (в PHP 4 на момент его выхода существовали проблемы совместимости с СУБД Interbase).

Пользователи, хотя бы немного знакомые с языком С, без проблем смогут работать и с PHP. Действительно, как и в С, каждая конструкция PHP заканчивается точкой с запятой, блоки программ выделяются фигурными скобками, для операций присваивания используется знак равенства ("="), а для сравнения — двойное равенство ("=="). Язык поддерживает унарные операции, наподобие "++", "—=", "+=" и др. Помимо большого числа встроенных функций для работы со строками, числами, датами, файлами и массивами можно объявлять дополнительные функции при помощи ключевого слова function. К особенностям PHP, пожалуй, относится формат записи переменных и массивов — каждый идентификатор переменной начинается со значка $.

Функции в PHP применяются так же, как и в аналогичных алгоритмических языках, хотя в большинстве конкретных областей применения PHP можно обойтись без функций. Их объявление и использование оказываются оправданными только в очень сложных случаях. PHP поддерживает рекурсивный вызов функций, но, поскольку эта система все-таки интерпретирующая, чрезмерная вложенность вызовов приведет к исчерпанию памяти и аварийному завершению скрипта (в окне Web-броузера появятся соответствующие сообщения об ошибке). Примеры рекурсивных функций, которые могут использоваться на сайте, мы рассмотрим, когда речь пойдет о форумах — вывод записей форума проще всего запрограммировать при помощи небольшой рекурсивной процедуры.

Массивы в PHP служат для хранения данных различных типов, и в отличие от синтаксически строгих языков программирования в них допускается присваивание элементам массива чисел, строк, дат и других типов данных. Переменные могут автоматически конвертироваться в массивы и обратно, например исполнение следующей конструкции не вызывает ошибок (правда, при преобразовании предыдущие значения переменной оказываются утерянными):

// переменной $myvar присваивается строковое выражение
$myvar="filename.txt";
// переменная $myvar преобразуется в массив, каждый элемент которого — отдельная строка файла
$myvar=File($myvar);
// переменной $myvar присваивается числовое значение
$myvar=0;

Массивы автоматически создаются при загрузке содержимого файла или при чтении строки таблицы, но их можно объявлять и при помощи функции array(), например:

$a=array();
$a[1]="январь";
$a[2]="февраль";
:
:
$a[12]="декабрь";

В квадратных скобках указывается индекс массива. Если он опускается, то массив считается динамическим. Так, можно написать:

$b=array(); $b[]=1;
$b[]=2;
$b[]=3;
$b[]=4;

При этом в элементе $b[0] будет храниться значение 1, а в $b[2] — значение 3.

Для вывода значений в PHP используются операторы echo, print и функция printf(). Как правило, конструкции echo и print делают одно и то же, а функция printf(), помимо выдачи строковых значений, выполняет их форматирование, например:

$name="Петров";
$name1="Петр";
print "<table>";
printf("<tr><td>%s</td><td>%s</td></tr>\n", $name, $name1);
print "</table>";

PHP тесно интегрирован с Web. Это, в частности, означает, что вносимые в формы значения, передаваемые гипертекстовому файлу параметры или "печенья" (cookies), сохраненные Web-броузером, автоматически конвертируются в переменные. Так, описав в форме поле ввода <input type="text" name="pdate" size="12" value="дата">, в скрипте можно манипулировать переменной $pdate. Интеграция с Web позволяет создавать динамические Web-страницы, зависящие от некоего параметра, например гиперссылки, по которой перешел пользователь, или введенного в форму значения. Скажем, задав в файле список тем опросов, можно вывести их в традиционной для сайтов форме.

<form method="POST" action="dovotes.php3">
<?
$votefile=File("votes.txt");
for ($i=0; $i<count
($votefile); $i++)
{
print "<p><input type=radio name=iselect value= $votefile[$i]>";
}
?>
<center><input type="submit" value="Готово" name="B1"></center>
</form>
ООП   PHP   web   4GL - визуальные среды

Знаете ли Вы, что, как ни тужатся релятивисты, CMB (космическое микроволновое излучение) - прямое доказательство существования эфира, системы абсолютного отсчета в космосе, и, следовательно, опровержение Пуанкаре-эйнштейновского релятивизма, утверждающего, что все ИСО равноправны, а эфира нет. Это фоновое излучение пространства имеет свою абсолютную систему отсчета, а значит никакого релятивизма быть не может. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 21.09.2019 - 11:41: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Галины Царёвой - Карим_Хайдаров.
21.09.2019 - 11:36: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
20.09.2019 - 19:50: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> ПРОБЛЕМА КРИМИНАЛИЗАЦИИ ЭКОНОМИКИ - Карим_Хайдаров.
20.09.2019 - 04:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
18.09.2019 - 12:08: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> ПРОБЛЕМА ИСКУССТВЕННОГО ИНТЕЛЛЕКТА - Карим_Хайдаров.
18.09.2019 - 06:01: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Л.Г. Ивашова - Карим_Хайдаров.
17.09.2019 - 05:51: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ФАЛЬСИФИКАЦИЯ ИСТОРИИ - Карим_Хайдаров.
17.09.2019 - 05:41: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Андрея Тиртхи - Карим_Хайдаров.
16.09.2019 - 03:11: СОВЕСТЬ - Conscience -> РУССКИЙ МИР - Карим_Хайдаров.
14.09.2019 - 18:23: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
13.09.2019 - 09:08: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
12.09.2019 - 17:47: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution