Предположим, что у вас есть база данных с большим количеством записей. Выводя их все на одну страницу, вы затрудняете их просмотр, а так же уменьшаете скорость загрузки и просмотра страниц. Решение – разбить данные на страницы, предположим по 30 записей за просмотр.
Преступим к написанию скрипта. Допустим, что общее количество записей будет храниться в .txt файле. Это ускорит работу скрипта, нежели при большом количестве записей обращаться к БД. (Но это дело вкуса =)).
Разделим нашу работу на 3 части. 1 часть – получение информации о количестве записей. 2 часть – собственно вывод самой информации. Ну а 3 часть – создание ссылок для перехода между страницами.
Файл how_many.txt: общее количество записей (цифрами). Например – 359.
Файл index.php: собственно сам скрипт. Ну-с начнем-с:
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $all_fields = file("how_ many.txt"); //Cчитываем с файла количество записей $on_page = 30; //Количество вывода записей на страницу if(isset($_GET[page])){ $page = $_GET[page]; //Если в адресе уже введена страница то мы извлекаем номер страницы из адреса и присваиваем его переменной $page }else{ $page = 1; //Если до этого страницы не открывались то по умолчанию страница 1 } $pages = $all_fields[0] / $on_page; //Подсчитываем общее количество страниц $pages = ceil($pages); //Округляем в большую сторону $begin = $pages * $on_page - $on_page; //С каких записей начинать отсчет в MySQL $q = mysql_query("SELECT * FROM table LIMIT $begin |
Вот и всё. Таким простым способом можно разделить информацию из БД. Незабудте что работать с MySQL небезопасно, когда не знаешь что это. В первую очередь стоить вспомнить о MySQL иньекциях. Суть их в том, что нельзя доверять данным которые приходят от пользователя. А именно в нашем случае, злоумышленник может ввести вредоносный код в адресную строку. В результате переменная $page будет не числовым значение которое нам необходимо, но так как она в запросе не учавствует, то опасаться нечего. В крайнем случае скрипт выведет ошибку. Однако если таким же методом ($_GET['page']) изменять количество выводов записей, то следует ввести проверку по типу данных.
Спасибо за внимание..
Разделение на страницы