Главная страница статей --> Хитрости при программировании php, заметки по базам данных

Постраничный вывод из MySQL

Источник: realcoding.net

Итак, вы много раз видели, как дынные выводятся постранично и вы всегда хотели сделать так на своем сайте. Сегодня я расскажу как сделать постраничный вывод из MySQL.

Для начала немного теории. Что надо сделать? Сначала, надо проверить выбрана ли страница просмотра. Потом надо подсчитать откуда выводить записи. Делается это просто: текущую страницу умножаем на количество записей на страницу. Наконец, надо сделать SQL-запрос к базе данных и вывести результат. И в конце концов написать нивигацию.

Приступим. Выполните SQL-запрос:

CREATE TABLE tbl_books (
 
book_id int(11) NOT NULL auto_increment,
 
book_name varchar(50) NOT NULL default ,
 
book_cash float NOT NULL default 0,
 
PRIMARY KEY  (book_id)
)
TYPE=MyISAM;
INSERT INTO tbl_books VALUES (1, Книга номер 1, 2);
INSERT INTO tbl_books VALUES (2, Книга номер 2, 3);
INSERT INTO tbl_books VALUES (3, Книга номер 3, 4);
INSERT INTO tbl_books VALUES (4, Книга номер 4, 5);
INSERT INTO tbl_books VALUES (5, Книга номер 5, 6);
INSERT INTO tbl_books VALUES (6, Книга номер 6, 7);
INSERT INTO tbl_books VALUES (7, Книга номер 7, 8);
INSERT INTO tbl_books VALUES (8, Книга номер 8, 9);
INSERT INTO tbl_books VALUES (9, Книга номер 9, 10);
INSERT INTO tbl_books VALUES (10, Книга номер 10, 11);
INSERT INTO tbl_books VALUES (11, Книга номер 11, 12);
INSERT INTO tbl_books VALUES (12, Книга номер 12, 13);
INSERT INTO tbl_books VALUES (13, Книга номер 13, 14);
INSERT INTO tbl_books VALUES (14, Книга номер 14, 15);
INSERT INTO tbl_books VALUES (15, Книга номер 15, 16);

Я предлагаю все оформить в виде функций обработчиков. Создадим функцию page(), которая обрабатывает данные о запрошенном номере страницы:

<?php
function page()
{
    if(empty(
$_GET[page])){
       
$page = 0;
    } else {
if(!
is_numeric($_GET[page])) die(Неправильный формат номера страницы!);
       
$page = $_GET[page];
    }
    return
$page;
}

Что она делает? Проверяет выбрана ли страница и если в ней присутствуют буквы, то выводит сообщение об ошибке. Далее сделаем SQL-запрос:

function sql_query($onpage, $page, $table)
{
   
$begin = $page*$onpage; // откуда начинать
   
$sql = SELECT * FROM .$table. LIMIT .$begin., .$onpage;
   
$result = mysql_query($sql) or die(mysql_error());
    return
$result;
}

Функция навигации:

function navigation($onpage, $page, $table)
{
   
$return = null;
   
$count = mysql_query(SELECT COUNT(*) FROM tbl_books) or die(mysql_error());
   
$count = mysql_fetch_array($count);
   
$count = $count[0];
   
$pages = $count/$onpage;
    if(
$page!==0){
       
$prev = <A HREF=?page=.($page-1).>&lt;</A>;
    } else {
       
$prev = <;
    }
    if(
$page<round($pages-1)){
       
$next = <A HREF=?page=.($page+1).>&gt;</A>;
    } else {
       
$next = >;
    }
    for(
$i=0;$i<$pages;$i++)
    {
        if(
$i==$page){
            
$return.=[.($i+1).];
        } else {
            
$return.=<A HREF=?page=.$i.>[.($i+1).]</A>;
        }
    }
    return
$prev.$return.$next;
}

С функциями покончили! Как ими пользоваться?

$onpage = 4; // записей на страницу
$table = tbl_books; // из какой таблицы
mysql_connect(localhost, root, pass) or die(mysql_error()); // коннект к БД
mysql_select_db(test); // выбор БД
$page = page(); // определяем страницу
$result = sql_query($onpage, $page, $table); // sql - запрос
while($data = mysql_fetch_array($result)) // цикл вывода
{
   
// шаблон вывода нужно изменить
    // $data[название_поля] - содержание поля
   
echo $data[book_id]. <B>.$data[book_name].</B><BR>;
    echo
$data[book_cash].$<P>;
}
$navigation = navigation($onpage, $page, $table); // определим навигацию
echo $navigation; // выведем ее
mysql_close(); // отключение от БД
?>



Похожие статьи:
- Проект “Ы”, Ruby on Rails, Acts as Taggable, скорость разработки
- Что нового будет в Rails 1.1 и немного секретов Prototype.js
- PHP5 - Новые возможности PHP5-Zend Engine 2_0
- Основы безопасности при работе с MySQL в PHP
- Сжатие данных на PHP
- Использование XML в PHP
- Оптимизация программ на PHP
- Растолкованный PageRank
- Сколько платить за раскрутку сайта
- Как запретить пользователю сохранять картинки?
- Передача и обработка данных средствами SSI
- Режем баннеры и popupы на бесплатных хостингах
- Меняемся баннерами и ссылками


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.002]