Вторник, 17.06.2025, 05:44
Приветствую Вас Гость | Регистрация | Вход
|
Интернет технологии |
Статистика |
---|
|
|
Каталог статей
Постраничная навигация на 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 = ' Ошибочка вышла!';
// СОЕДЕНИМСЯ С 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 ''.$i.' '; } else { // АКТИВНУЮ СТРАНИЦУ ДЕЛАЕМ НЕ ГИПЕРССЫЛКОЙ echo ''.$i.' '; } }
echo ' '; // ОТДЕЛИМ НАВИГАЦЮ ОТ КОНТЕНТА ДЛЯ НАГЛЯДНОСТИ
// НАЧИНАЕМ ВЫВОДИТЬ САМУ ИНФОРМАЦИЮ ПОСТРАНИЧНО :) 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 ''; while ($row = mysql_fetch_array($result)) { echo ' '.$row['id'].' - '.$row['name'].'
'.substr($row['text'],0,100).'.. >> '; } echo ' ';
mysql_close($connect);
?>
Поясню лишь, что в переменной "str" передаётся номер страницы, на которой находится пользователь, в адрессной строке браузера это выглядит так:
Вот и всё, скрипт постраничного вывода у нас готов! Примерно, это должно выглядеть так:
Если это необходимо, редактируем скрипт (например, сделаем его функцией и будем использовать каждый необходимый нам раз) и влепляем его в Ваш дизайн на странице...
|
Категория: php | Добавил: freeonex (09.02.2009)
|
Просмотров: 717
| Рейтинг: 0.0/0 |
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
|