Гостевая книга
Содержимое же файла 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];
Все – код вывода имеющихся сообщений завершен!
}>