Главная

Программирование на PHP для начинающих

Написание скрипта на PHP

Прежде чем написать сам скрипт, мы должны понять, что он будет делать. Так удобнее будет программировать - мы выделим задачи и будем их поэтапно выполнять.

Первое - шаблон. Второе - данные. Третье - скрипт. Сам скрипт должен обрабатывать события. Событиями мы будем считать запрос информации о конкретном писателе, запрос без указания писателя, запрос информации о несуществующем писателе. В каждом из случаев мы обязательно формируем меню, в котором выводим ссылки на имеющихся писателей.

Ваша задача: 1) неспеша познакомиться с шаблоном и объяснениями к нему; 2) познакомиться с массивом; 3) разобраться в скрипте.

Итак, считаем, что с шаблоном Вы разобрались и с массивом познакомились. Перейдем к скрипту. Первым событием будет запрос самой страницы без дополнительных параметров (обзовем страницу writers.php). Мы должны будем выдать список писателей в виде ссылок, которые мы сформируем скриптом из массива; ссылки будут вида: <a href="?writer=имя"></a>. При переходе по ссылке, скрипт выдает информацию о писателе.

Ссылки

Наша задача сформировать ссылки, для этого мы объявим массив $links = array(); и пройдемся циклом по массиву писателей, чтобы заполнить массив ссылок.

foreach ($writers as $key => $value) {    
  $links[] = '<a href="?writer='.$key.'">'
  .$writers[$key]['name'].'</a>';         
}                                         

Замена "переменных" в шаблоне

Теперь подготовим "переменные" для шаблона. Нам понадобиться массив, где мы будем хранить "переменные" по мере их формирования:

$vars    = array();                           
$vars['{H2}'] = 'Русские писатели';           
$vars['{COPYRIGHTYEAR}'] = '2009';            
$vars['{COPYRIGHTTEXT}'] = 'Русские писатели';

Сперва мы сформировали "переменные", которые выводятся всегда. Дальше, нам необходимо сначала проверить условия, и в зависимости от них, сформировать остальные переменные. Главным "условием" в нашем скрипте будет наличие переменной "писатель", мы создали ее формируя массив ссылок. Переменные, которые присутствую в ссылке в виде пар var=value (имя переменной=значение переменной), доступны в скрипте в специальном массиве $_GET. Поскольку в ссылках мы использовали переменную writer, то нам и надо проверить ее значение, а именно: $_GET['writer'].
Первая проверка - задана ли переменная вообще:
if (!$_GET['writer']) (символ ! = "не").
Если переменная задана, то надо убедиться, что она есть в нашем массиве:
else if (in_array($_GET['writer'], array_keys($writers)))
in_array - функция позволяет узнать, есть ли переменная ($_GET['writer']) в массиве, но мы к тому же в качества массива берем не весь массив $writers, а только его "ключи":
array_keys($writers).
Ну, а если переменная задана, но у нас нет для нее соответствия, то это будет другое условие.

Теперь в зависимости от результата проверки условий формируем "переменные".
Для первого случая (писатель не указан):

$vars['{MENU}']  = '';
$vars['{TITLE}'] = 'Русские писатели';
$vars['{H3}']    = 'Список писателей';
$vars['{DATE}']  = '';
$vars['{BIOG}']  = '<p>'
                   .implode('<br>',$links).'</p>';
$vars['{BIBL}']  = '';

Для второго случая (писатель есть в базе):

$vars['{MENU}']  = '<p>'.implode(' | ',$links).'</p>';
$vars['{TITLE}'] = 'Русский писатель '
                   .$writers[$_GET['writer']]['name'];
$vars['{H3}']    = $writers[$_GET['writer']]['name'];
$vars['{DATE}']  = '<p>Годы жизни: '
                   .$writers[$_GET['writer']]['born'].'-'
                   .$writers[$_GET['writer']]['dead']
                   .'</p>';
$vars['{BIOG}']  = $writers[$_GET['writer']]['biog'];
$vars['{BIBL}']  = '<p><b>Произведения</b>: '
                   .$writers[$_GET['writer']]['bibl']
                   .'</p>';

Для третьего случая (писателя нет в базе):

$vars['{MENU}']  = '';
$vars['{TITLE}'] = 'Русские писатели';
$vars['{H3}']    = 'Такого писателя нет';
$vars['{DATE}']  = '';
$vars['{BIOG}']  = '<p>'.implode('<br>',$links).'</p>';
$vars['{BIBL}']  = '';

После заполнения массива $vars, нам остается "взять" шаблон и подставить в него переменные. Код шаблона мы получаем с помощью небольшой функции

function content( $file ){
  if ( is_file( $file ) ){
     $f       = fopen( $file, 'r' );
     $content = fread( $f, filesize( $file ) );
     fclose( $f );
     return $content;
  }
}

Завершающий этап

Функция content() возвращает нам html-код шаблона:
$shablon = content('./writers.html');
затем мы производим замену переменных (имена ключей массива $vars и служат "переменными", поэтому мы меняем ключи array_keys($vars) на значения самого массива в переменной $shablon)
$html = str_replace(array_keys($vars), $vars, $shablon);
остается вывести страницу пользователю
echo $html;.

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

Скачать архив скрипта (2Kb). Вопросы и пожелания по адресу: php-tips@yandex.ru

Hosted by uCoz