ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

Серверные сценарии на РНР. Динамическое создание страниц

Серверные сценарии

В этом разделе сайта будут рассмотрены основные принципы и примеры создания серверных сценариев на языке РНР для решения типичных задач разработки веб-сайтов.

Здесь мы рассмотрим каким образом можно модифицировать содержимое веб-страниц и осуществлять навигацию при помощи ссылок и различных стандартных функций.

Простые ссылки

По ссылкам пользователь может переходить как на обычные страницы HTML, так и на страницы, содержащие код РНР.

Пример:

<?php
$link="../phppage20.php";
echo "<a href='$link'>Дата и время</a>";
?>

Для быстрого вывода списка ссылок в браузере можно воспользоваться массивом:

<?php
// Создать массив разделов
$cont=array("../phppage1", "../phppage2", "../phppage3", "../phppage4");

// Перебрать и последовательно вывести каждый элемент массива
for($i=0; $i<count($cont); $i++)
print " <a href = '$cont[$i].php'>$cont[$i]</a><br>\n";
?>

В окне веб-браузера это будет выглядеть ТАК.

Шаблоны

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

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

Включение одного или нескольких файлов в сценарий осуществляется стандартными функциями РНР require() и include().

Функции для включения файлов в сценарии РНР:

  • include(имя_файла) — включает содержимое файла в сценарий.
  • У функции include() есть одна интересная особенность — ее можно выполнять условно. Например, если вызов функции включен в блок команды if то файл включается в программу лишь в том случае, если условие if истинно. Если функция include() используется в условной команде, то она должна быть заключена в фигурные скобки или в альтернативные ограничители.

    Пример:

    <?php
    if (some_conditional) {

    include("2.php");
    }
    else {

    include("1.html");
    }
    ?>

    В окне веб-браузера это будет выглядеть ТАК.

  • include_once(имя_файла) — делает то же, что и include(), за одним исключением: прежде чем включать файл в программу, она проверяет, не был ли он включен ранее. Если файл уже был включен, вызов include_once() игнорируется, а если нет — происходит стандартное включение файла. Во всем остальном include_once() ничем не отличается от include().
  • require(имя_файла) — похожа на include() — она тоже включает шаблон в тот файл, в котором находится вызов require(). Тем не менее, между функциями require() и include() существует одно важное различие. Файл, определяемый параметром require(), включается в сценарий независимо от местонахождения require() в сценарии. Например, при вызове requiге() в блоке if при ложном условии файл все равно будет включен в сценарий!
  • Во многих ситуациях бывает удобно создать файл с переменными и другой информацией, которая используется в масштабах сайта, и затем подключать его по мере необходимости. Имя этого файла выбирается произвольно. Назовем его 80.php.

    Пример:

    <?php
    $site_title = "Основы РНР";

    $contact_email = "sevidi@yndex.ru";

    $contact_name = "Sevidi";

    ?>

    Пример использования этого файла:

    <?php require('80.php ');?>
    <html>
    <head>
    <meta charset="utf-8">
    <title><? print $site_title; ?></title>
    </head>

    <body>
    <?php
    print "Добро пожаловать на сайт. Контакты: <a href = mailto:$contact_email; > $contact_name</a>.";
    ?>

    </body>
    </html>

    В окне веб-браузера это будет выглядеть ТАК.

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

  • require_once(имя_сайта) — гарантирует, что файл будет включаться в сценарий всего один раз. После вызова requirе_оnсе() все дальнейшие попытки включения того же файла игнорируются. Если не считать дополнительной проверки, в остальном эта функция аналогична require().

Построение компонентов

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

Создадим файл-заголовок.

<?
// Файл: 228.php
// Назначение: заголовочный файл для сайта sevidi
// Дата: 28 января 2009 г.
//////////////////////////////////////////////////////////////////////
$site_name = "Основы РНР";
$site_title = "Динамическое создание страниц";
$site_email= "sevidi@yndex.ru";
$site_path = "..";
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title><? print $site_title; ?></title>
<style type="text/css">
<!--
table{font-size:14px;
font-family:Verdana, Geneva, sans-serif;
color:#000000;
}
h1{ font-size:18px;
color: #CC0000;
text-align:center
}
.bottom{ font-size:12px; color:#0000FF}
-->
</style>
</head>
<body>
<table width="950" border="1" cellpadding="5" >
<tr>
<td valign="top" bgcolor="#3300FF">
<h1><?php print $site_name?></h1></td>
</tr>
<tr>

<td valign="top">
<?php
// Вывести текущую дату и время
print date ("F d, h:i a");
?>
</td>
</tr>
</table>

А теперь создадим файл-колонтитул. Колонтитулом обычно называется информация, расположенная в нижней части страниц сайта, — контактные данные, ссылки и информация об авторских правах. Эту информацию можно разместить в отдельном файле и включать в качестве шаблона так же, как это делается с заголовком. Допустим, c наступлением нового года вам потребовалось изменить информацию об авторских правах и привести ее к виду «Copyright © 2000-2001».

<table width="950" border="1" cellpadding="5" >
<tr>
<td valign="top" align="left"><span class="bottom">© Смирнов В.И.  2008-2009</span>| <a href = "mailto:<?=$site_email;?>" target="_blank">Контакты </a>|<a href =
"<?=$site_path;?>/phpstage24.html" target="_blank">Основы РНР</a></td>
</tr>
</table>
</body>
</html>

Создаем основную часть файла. К основной части страницы подключается содержимое заголовка и колонтитула. В сущности, именно основная часть содержит информацию, интересующую посетителей сайта. Заголовок эффектно выглядит, колонтитул содержит полезные сведения, но именно ради основной части страницы пользователи снова и снова возвращаются на сайт.

<table width="950" border="1" cellpadding="5">
<tr>
<td valign="top">
<a href = "<?=$site_path;?>/phppage4.php">Пример PHP-программы</a> <br>
<a href = "<?=$site_path;?>/phppage5.php">Типы данных</a> <br>
<a href = "<?=$site_path;?>/phppage6.php">Переменные, константы,
выражения</a> <br>
<a href = "<?=$site_path;?>/phppage7.php">Ссылочные переменные</a> <br>
<a href = "<?=$site_path;?>/phppage8.php">Выражения</a> <br>
</td>
</tr>
</table>

А теперь соединим все вместе в один файл

<?php
// Файл: 85.php
// Назначение: домашняя страница
// Дата: 28 января 2009 г
// Вывести заголовок
include ("82.php");
// Вывести основную часть
include ("84.php");
// Вывести колонтитул
include ("83.php");
?>

В окне веб-браузера это будет выглядеть ТАК.