Вы можете отредактировать этот
файл по своему усмотрению. Файл используется для импорта таблиц
CMS с помощью программы phpMyAdmin.
ГЛАВА 15
Дополнительные функции CMS
15.1. Вывод информации из таблицы static
В главе 14 мы совершенно забыли о таблице static и трех страницах (вы
можете добавить в нее столько страниц, сколько вам захочется), содержащихся
в ней.
Откройте шаблон page.tpl и добавьте три следующие ссылки:
r\naBHaH
Ilpaiicbi
KoHTaKTbi
Место добавления этих ссылок особого значения не имеет, но желательно
добавить их после строки {description}. Как обычно, на компакт-диске в
каталоге Glava_15 вы найдете измененную версию файла page.tpl.
Обратите внимание на формат ссылки:
index.php?p=static&id=HMH
Имя — это идентификатор страницы в таблице static. Теперь осталось
добавить код отображения страницы из таблицы static. Для этого после последней
закрывающей фигурной скобки файла index.php нужно добавить следующий
код:
elseif ($p==»staticM) {
$id = @htmlspecialchars($id);
$id = @strip_tags($id);
$q = «select * from static where id=\»$id\» limit 1″;
$r = mysql_query($q);
186
Часть IV. Разработка собственной CMS
$row = mysql_fetch_array($r);
$page = $row[content];
}
Но это еще не все. Найдите следующий фрагмент кода:
if (!isset($p)) {
$page = «Главная страница»;
$tpl->set_value(‘PAGE*,$page);
}
Замените его следующим фрагментом:
if (!isset($p)) {
$q = «select * from static where id=\»main\» limit 1″;
$r = mysql_query($q);
$row = mysql_fetch_array($r);
$page = $row[content];
}
Вот теперь все в порядке: если не указана переменная $р, будет выведено
содержимое страницы с идентификатором ‘main1, т. е. будет отображена
главная страница. Поскольку страницы из таблицы static не относятся ни к
одному разделу, меню сайта при выводе таких страниц раскрыто не будет.
Полную версию файла index.php (со всеми изменениями) вы найдете в
каталоге Glava_15. Так как на протяжении данной главы мы будем изменять
данный файл, наращивая возможности CMS, то версия с поддержкой таблицы
static будет называться index-static.php.
15.2. Постраничный вывод
В нашей CMS мы не будем использовать постраничный вывод из базы
данных. Но в некоторых случаях он будет очень кстати, поэтому вы должны
знать, как его реализовать.
Глава 15. Дополнительные функции CMS
187
Вывести информацию из базы данных в виде HTML-страницы достаточно
просто. Смотреться это тоже будет красиво. Но вот если выводится много
записей, скажем, больше 30, то читать такой вывод не очень удобно —
попробуйте просмотреть пару сотен записей на одной странице! А ведь в
таблице могут быть даже не сотни, а тысячи записей.
Выходом из данной ситуации может служить постраничный вывод из базы
данных (рис. 15.1). Отметим, что данная функция присутствует практически
во всех серьезных PHP-проектах, поэтому она обязательно должна быть и у
вас.
Рис. 15.1. Постраничный вывод форума phpBB
Существуют два алгоритма организации постраничного вывода:
нерациональный и рациональный. Первый заключается в том, что мы получаем все
записи, которые нужно вывести, а затем анализируем некую переменную $р,
содержащую смещение от начала таблицы. После вывода части записей мы
188
Часть IV. Разработка собственной CMS
увеличиваем переменную $р на величину, равную числу выведенных
записей, таким образом, при отображении следующей страницы на ней не
окажется уже выведенных ранее записей. Нерациональность данного способа
заключается в том, что мы получаем все записи таблицы, а это лишняя
нагрузка на сервер баз Данных, да и сам сценарий будет работать медленно,
особенно когда записей в таблице много.
Второй способ заключается в совместном использовании операторов limit и
select. Как мы уже знаем, оператор limit позволяет ограничить выбор
записей из базы данных (мы так уже делали при обновлении и удалении записей).
Рассмотрим синтаксис limit:
SELECT *
FROM
[WHERE ]
LIMIT ,
Здесь start — это номер начальной записи, a offset — это смещение,
данный параметр задает, сколько записей нужно вывести, начиная от начальной,
заданной параметром start.
5th Фев 2011
|
Теги:
|