Главная » Полезные статьи » Язык PHP » Постраничный вывод из MySQL
Распечатать статью

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

Итак, вы много раз видели, как дынные выводятся постранично и вы всегда хотели сделать так на своем сайте. Сегодня я расскажу как сделать постраничный вывод из 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(); // отключение от БД ?>
Источник: internet-technologies.ru
Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

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

Похожие статьи