Иллюстрированный самоучитель по PHP

Гостевая книга

Содержимое же файла niz.php (см. рис. 9.2) может быть таким (пояснения относятся к коду под ними):

<?php

Укажем имя папки, в которой будут сохраняться отзывы (ее, разумеется, вначале надо будет создать на аккаунте сайта вручную). Само имя может быть любым – важно лишь, чтобы оно не содержало пробелов или специальных символов:

$dirct="gb";

Ну а далее следует уже знакомый вам сценарий "Папкопотрошилки" (см. гл. 6), применяемый к этой самой папке с отзывами. Вот практически точно такой же, как и в "Папкопотрошилке", код, записывающий в массив $а[] имена всех файлов, в имени которых содержится указанный выше индекс книги:

$hdl=opendir($dirct);
while ($file = readdir($hdl))
if (strstr($file, $nom)!=False)
$a[]=$file;
closedir($hdl);

Примечание
Функция strstr ищет в своем первом аргументе строку, указанную вторым аргументом, и возвращает True, если ее там находит
.

Теперь отсортируем полученный массив. Для этого сначала узнаем количество сообщений книги:

$l=sizeof($a);

…а затем, в том случае, если сообщения в книге есть, произведем сортировку (если сообщений нет, т. е. массив $а пуст, то функция сортировки выдаст ошибку, а дальнейшая работа с элементами массива вообще бессмысленна – поэтому нужна проверка размера массива):

if ($l!=0)
{
rsort($a);

Теперь массив $а содержит имена файлов с сообщениями, причем в первых элементах массива содержатся имена файлов с наибольшими номерами (т. е. самые новые – как и следует из приведенного выше алгоритма). Если же требуется обратный порядок (т. е. чтобы новые сообщения помещались в конец страницы), то вместо функции rsort (сортировка по убыванию) следует использовать функцию sort (т. е. сортировка по возрастанию).

Ну и, наконец, вставим все файлы с сообщениями в страницу с гостевой книгой с помощью оператора include, перебрав последовательно элементы массива с именами этих файлов конструкцией foreach:

foreach ($a as $value)
{
include ("$dirct/$value");
echo ("<br>(разделитель сообщений)");

Как уже говорилось, foreach считывает в указанную в его параметрах переменную – в данном случае $value – все элементы массива – в данном случае – по очереди, выполняя каждый раз указанный после него в фигурных скобках код, в котором указанная переменная может использоваться. Поскольку в массиве первыми идут элементы с именами файлов с наиболее новыми сообщениями, то и на странице эти сообщения появятся сверху.

Комментарий
Оператор foreach будет работать только в РНР 4.0 и выше. Если вы можете использовать лишь РНР3, то вместо него можно использовать цикл for, указав в его параметрах величину массива $1:

for ($k = 1; $k < $1; $k++) {

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

$value=$a[$k];

Все – код вывода имеющихся сообщений завершен!

}>
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.