Web-Masteru.info

Постраничная навигация на PHP



      

Каталог статей / Статьи по PHP / Постраничная навигация на PHP

Пожалуй одна из самых распростанённых задач для веб-программистов. Большинство новичков сталкиваются с ней, я не был исключением. Попытаемся же разобраться с логикой скрипта и реализовать его. Приступим?

Первое, что нам нужно для этого иметь – это базу данных с несколькими десятками строк, например статей или комментариев к ним (что угодно). Мы будем рассматривать базу данных MySQL, она является самой популярной на данный момент. Естественно используемый язык – это PHP.

Есть? Отлично! Продолжаем…

1. Создаём для примера файл primer.php;
2. Создаём Базу данных primer (можете не создавать, если у вас уже есть подходящая);
3. Создаём таблицу primer вот такой структуры (опять же, если нет другой);


CREATE table primer (
id int auto_increment primary key key,
name varchar(100) NOT NULL,
text longtext NOT NULL
);

4. Набиваем её информацией. Я сделаю 20 записей, мне не день ;)
5. Набираемся терпения – сейчас будем кодить.



Сам код довольно небольшой и несложный, поэтому вылажу его сразу весь, пометки Вам помогут разобраться без проблем.

Запихиваем нижележаций код в primer.php и пытаемся понять как же он работает:

<?

$server = `localhost`; // ИМЯ СЕРВЕРА
$user = `root`; // ПОЛЬЗОВАТЕЛЬ - НЕ ИСПОЛЬЗУЙТЕ ROOT ДЛЯ ВАШЕЙ ЖЕ БЕЗОПАСНОСТИ
$pass = ``; // ПАРОЛЬ ПОЛЬЗОВАТЕЛЯ

$db = `primer`; // БАЗА ДАННЫХ
$table = `primer`; // НАЗВАНИЕ ТАБЛИЦЫ

$chislo = 5; // ЧИСЛО СООБЩЕНИЙ НА СТРАНИЦЕ

// ДЛЯ УДОБСТВА ОБОЗНАЧИМ ПЕРЕМЕННУЮ С ТЕКСТОМ ОШИБКИ
$text_error = `<br />Ошибочка вышла!`;

// СОЕДЕНИМСЯ С MySQL
$connect = mysql_connect ($server, $user, $pass);
if (!$connect) {
echo $text_error;
exit;
}

// СОЕДЕНИЯЕМСЯ С БАЗОЙ ДАННЫХ
$select = mysql_select_db($db);
if (!$select) {
echo $text_error;
exit;
}


// СОЗДАЁМ ЗАПРОС
$result = mysql_query("SELECT * from $table ORDER by id desc");
// СЧИТАЕМ КОЛЛИЧЕСТВО ЗАПИСЕЙ В ТАБЛИЦЕ - У МЕНЯ ИХ 20
$num_rows = mysql_num_rows($result);

// А ТЕПЕРЬ СЧИТАЕМ НА СКОЛЬКО СТРАНИЦ НАМ РАЗБИТЬ ЗАПИСИ И ВЫДЕЛЯЕМ ЦЕЛОЕ ЧИСЛО
$num_rows = round($num_rows/$chislo); // 20 ДЕЛИМ НА 5. СКОЛЬКО? :)


// ЗДЕСЬ МЫ ПРОВЕРЯЕМ НА КАКОЙ СТРАНИЦЕ СЕЙЧАС ПОЛЬЗОВАТЕЛЬ
if (isset($_GET[`str`])) {
$nav = $_GET[`str`];
}
else {
$nav = 0;
}
$nav = intval($nav); // ДЛЯ ЗАЩИТЫ ОТ НЕХОРОШИХ ДЯДЕНЕК МЫ ВЫДЕЛИМ ЦЕЛУЮ ЧАСТЬ $GET[`str`]
echo `Навигация: `;

// А ТЕПЕРЬ ВЫВОДИМ НОМЕРА СТРАНЦ
for ($i=1; $i<$num_rows; $i++) {
if ($i != $nav) {
echo `<a href="`.$PHP_SELF.`?str=`.$i.`">`.$i.`</a> `;
}
else {
// АКТИВНУЮ СТРАНИЦУ ДЕЛАЕМ НЕ ГИПЕРССЫЛКОЙ
echo `<span>`.$i.`</span> `;
}
}

echo `<hr />`; // ОТДЕЛИМ НАВИГАЦЮ ОТ КОНТЕНТА ДЛЯ НАГЛЯДНОСТИ

// НАЧИНАЕМ ВЫВОДИТЬ САМУ ИНФОРМАЦИЮ ПОСТРАНИЧНО :)
if (!isset($_GET[`str`])) {
$str = 0;
}
else {
$str = $_GET[`str`]*$chislo - $chislo;
}
$nomer = $str + 5;
// ФОРМИРУЕМ ЗАПРОС НУЖНОЙ НАМ ЧАСТИ ИНФОРМАЦИИ
$result = mysql_query("SELECT * from $table ORDER by id asc limit $str, $nomer");
// ИНАЧЕ ВЫВОДИМ ОШИБКУ
if (!$result) {
echo $text_error;
exit;
}

echo `<div style="width: 40%;">`;
while ($row = mysql_fetch_array($result)) {
echo `<p>`.$row[`id`].` - <strong>`.$row[`name`].`</strong>
<br />
`.substr($row[`text`],0,100).`.. <a href="text.php?nomer=`.$row[`id`].`">>></a></p>`;
}
echo `</div>`;

mysql_close($connect);

?>

Поясню лишь, что в переменной "str" передаётся номер страницы, на которой находится пользователь, в адрессной строке браузера это выглядит так:
1

Вот и всё, скрипт постраничного вывода у нас готов! Примерно, это должно выглядеть так:

2

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

Автор: Автор
Сайт автора: woolfs.ru
Источник: woolfs.ru
internet-technologies.ru

 

Комментарии пользователей:

2011-01-04 в 16:48    Написал: 458
7465
2011-01-04 в 16:49    Написал: 165
656
2012-01-05 в 5:32    Написал: роман
петушня все это, понакопировали весь материал с разных сайтов и управились, ошибки хотя бы исправили
2012-02-10 в 8:4    Написал: СЕРГЕЙ
Продвижение сайтов недорого. Скайп: SEOAPTEKA

Оставь свой комментарий:

Ваше имя:  
Комментарий:
Контрольное число:



      
Навигация


Авторизация
Логин:
Пароль:
Забыли пароль



Copyright © Web-Masteru.info 2008 - 2009
Powered by Beramb CMS