Вход Регистрация
* znaytvse

Универсальный постраничный вывод на PHP из MySQL

  1. <?php
  2.  
  3. function link_bar($page, $pages_count)
  4.  
  5. {
  6.  
  7. for ($j = 1; $j <= $pages_count; $j++)
  8.  
  9. {
  10.  
  11. // Вывод ссылки
  12.  
  13. if ($j == $page) {
  14.  
  15. echo ' <a style="color: #808000;" ><b>'.$j.'</b></a> ';
  16.  
  17. } else {
  18.  
  19. echo ' <a style="color: #808000;" href='.$_SERVER['php_self'].'?page='.$j.'>'.$j.'</a> ';
  20.  
  21. }
  22.  
  23. // Выводим разделитель после ссылки, кроме последней
  24.  
  25. // например, вставить "|" между ссылками
  26.  
  27. if ($j != $pages_count) echo ' ';
  28.  
  29. }
  30.  
  31. return true;
  32.  
  33. } // Конец функции
  34.  
  35.  
  36.  
  37. // Подключение к базе данных
  38.  
  39. mysql_connect('localhost', 'root', '') or die('error! Нет соединения с сервером mysql!');
  40.  
  41. mysql_select_db('data_base') or die('error! Нет соединения с базой данных!');
  42.  
  43.  
  44.  
  45. // Подготовка к постраничному выводу
  46.  
  47. $perpage = 10; // Количество отображаемых данных из БД
  48.  
  49.  
  50.  
  51. if (empty(@$_GET['page']) || ($_GET['page'] <= 0)) {
  52.  
  53. $page = 1;
  54.  
  55. } else {
  56.  
  57. $page = (int) $_GET['page']; // Считывание текущей страницы
  58.  
  59. }
  60.  
  61. // Общее количество информации
  62.  
  63. $count = mysql_numrows(mysql_query('select * from table')) or die('error! Записей не найдено!');
  64.  
  65. $pages_count = ceil($count / $perpage); // Количество страниц
  66.  
  67.  
  68.  
  69. // Если номер страницы оказался больше количества страниц
  70.  
  71. if ($page > $pages_count) $page = $pages_count;
  72.  
  73. $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД
  74.  
  75.  
  76.  
  77. // Вызов функции, для вывода ссылок на экран
  78.  
  79. link_bar($page, $pages_count);
  80.  
  81.  
  82.  
  83. // Вывод информации из базы данных
  84.  
  85. echo '<p><b>Постраничный вывод информации</b></p>';
  86.  
  87. $result = mysql_query('select * from table limit '.$start_pos.', '.$perpage) or die('error!');
  88.  
  89. while ($row = mysql_fetch_array($result)) {
  90.  
  91. echo '<p>'.$row['some_field'].'</p>';
  92.  
  93. }
  94.  
  95. ?>
  96.  
  97.  
  98. <?php
  99.  
  100. function universal_link_bar($page, $count, $pages_count, $show_link)
  101.  
  102. {
  103.  
  104. // $show_link - это количество отображаемых ссылок;
  105.  
  106. // нагляднее будет, когда это число будет парное
  107.  
  108. // Если страница всего одна, то вообще ничего не выводим
  109.  
  110. if ($pages_count == 1) return false;
  111.  
  112. $sperator = ' '; // Разделитель ссылок; например, вставить "|" между ссылками
  113.  
  114. // Для придания ссылкам стиля
  115.  
  116. $style = 'style="color: #808000; text-decoration: none;"';
  117.  
  118. $begin = $page - intval($show_link / 2);
  119.  
  120. unset($show_dots); // На всякий случай :)
  121.  
  122. // Сам постраничный вывод
  123.  
  124. // Если количество отображ. ссылок больше кол. страниц
  125.  
  126. if ($pages_count <= $show_link + 1) $show_dots = 'no';
  127.  
  128. // Вывод ссылки на первую страницу
  129.  
  130. if (($begin > 2) && !isset($show_dots) && ($pages_count - $show_link > 2)) {
  131.  
  132. echo '<a '.$style.' href='.$_SERVER['php_self'].'?page=1> |< </a> ';
  133.  
  134. }
  135.  
  136.  
  137.  
  138. for ($j = 0; $j < $page; $j++) {
  139.  
  140. // Если страница рядом с концом, то выводить ссылки перед идущих для того,
  141.  
  142. // чтобы количество ссылок было постоянным
  143.  
  144. if (($begin + $show_link - $j > $pages_count) && ($pages_count-$show_link + $j > 0)) {
  145.  
  146. $page_link = $pages_count - $show_link + $j; // Номер страницы
  147.  
  148. // Если три точки не выводились, то вывести
  149.  
  150. if (!isset($show_dots) && ($pages_count-$show_link > 1)) {
  151.  
  152. echo ' <a '.$style.' href='.$_SERVER['php_self'].'?page='.($page_link - 1).'><b>...</b></a> ';
  153.  
  154. // Задаем любое значение для того, чтобы больше не выводить в начале "..." (три точки)
  155.  
  156. $show_dots = "no";
  157.  
  158. }
  159.  
  160. // Вывод ссылки
  161.  
  162. echo ' <a '.$style.' href='.$_SERVER['php_self'].'?page='.$page_link.'>'.$page_link.'</a> '.$sperator;
  163.  
  164. } else continue;
  165.  
  166. }
  167.  
  168. for ($j = 0; $j <= $show_link; $j++) // Основный цикл вывода ссылок
  169.  
  170. {
  171.  
  172. $i = $begin + $j; // Номер ссылки
  173.  
  174. // Если страница рядом с началом, то увеличить цикл для того,
  175.  
  176. // чтобы количество ссылок было постоянным
  177.  
  178. if ($i < 1) {
  179.  
  180. $show_link++;
  181.  
  182. continue;
  183.  
  184. }
  185.  
  186. // Подобное находится в верхнем цикле
  187.  
  188. if (!isset($show_dots) && $begin > 1) {
  189.  
  190. echo ' <a '.$style.' href='.$_SERVER['php_self'].'?page='.($i-1).'><b>...</b></a> ';
  191.  
  192. $show_dots = "no";
  193.  
  194. }
  195.  
  196. // Номер ссылки перевалил за возможное количество страниц
  197.  
  198. if ($i > $pages_count) break;
  199.  
  200. if ($i == $page) {
  201.  
  202. echo ' <a '.$style.' ><b>'.$i.'</b></a> ';
  203.  
  204. } else {
  205.  
  206. echo ' <a '.$style.' href='.$_SERVER['php_self'].'?page='.$i.'>'.$i.'</a> ';
  207.  
  208. }
  209.  
  210. // Если номер ссылки не равен кол. страниц и это не последняя ссылка
  211.  
  212. if (($i != $pages_count) && ($j != $show_link)) echo $sperator;
  213.  
  214. // Вывод "..." в конце
  215.  
  216. if (($j == $show_link) && ($i < $pages_count)) {
  217.  
  218. echo ' <a '.$style.' href='.$_SERVER['php_self'].'?page='.($i+1).'><b>...</b></a> ';
  219.  
  220. }
  221.  
  222. }
  223.  
  224. // Вывод ссылки на последнюю страницу
  225.  
  226. if ($begin + $show_link + 1 < $pages_count) {
  227.  
  228. echo ' <a '.$style.' href='.$_SERVER['php_self'].'?page='.$pages_count.'> >| </a>';
  229.  
  230. }
  231.  
  232. return true;
  233.  
  234. } // Конец функции
  235.  
  236.  
  237.  
  238. // Подключение к базе данных
  239.  
  240. mysql_connect('localhost', 'root', '') or die('error! Нет соединения с сервером mysql!');
  241.  
  242. mysql_select_db('data_base') or die('error! Нет соединения с базой данных!');
  243.  
  244.  
  245.  
  246. // Подготовка к постраничному выводу
  247.  
  248. $perpage = 10; // Количество отображаемых данных из БД
  249.  
  250. if (empty($_GET['page']) || ($_GET['page'] <= 0)) {
  251.  
  252. $page = 1;
  253.  
  254. } else {
  255.  
  256. $page = (int) $_GET['page']; // Считывание текущей страницы
  257.  
  258. }
  259.  
  260. // Общее количество информации
  261.  
  262. $count = mysql_numrows(mysql_query('select * from table')) or die('error! Записей не найдено!');
  263.  
  264. $pages_count = ceil($count / $perpage); // Количество страниц
  265.  
  266. // Если номер страницы оказался больше количества страниц
  267.  
  268. if ($page > $pages_count) $page = $pages_count;
  269.  
  270. $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД
  271.  
  272. // Вызов функции, для вывода ссылок на экран
  273.  
  274.  
  275.  
  276. universal_link_bar($page, $count, $pages_count, 10);
  277.  
  278.  
  279.  
  280. // Вывод информации из базы данных
  281.  
  282. echo '<p><b>Постраничный вывод информации</b></p>';
  283.  
  284. $result = mysql_query('select * from table limit '.$start_pos.', '.$perpage) or die('error!');
  285.  
  286. while ($row = mysql_fetch_array($result)) {
  287.  
  288. echo '<p>'.$row['some_field'].'</p>';
  289.  
  290. }
  291.  
  292. ?>
  293.  
  294.  
  295. <?php
  296.  
  297. function yandex_link_bar($page, $count, $pages_count, $show_link)
  298.  
  299. {
  300.  
  301. // $show_link - это количество отображаемых ссылок;
  302.  
  303. // нагляднее будет, когда это число будет парное
  304.  
  305. // Если страница всего одна, то вообще ничего не выводим
  306.  
  307. if ($pages_count == 1) return false;
  308.  
  309. $sperator = ' '; // Разделитель ссылок; например, вставить "|" между ссылками
  310.  
  311. // Для придания ссылкам стиля
  312.  
  313. $style = 'style="color: #808000; text-decoration: none;"';
  314.  
  315. $begin = $page - intval($show_link / 2);
  316.  
  317. unset($show_dots); // На всякий случай :)
  318.  
  319. // Сам постраничный вывод
  320.  
  321. // Если количество отображ. ссылок больше кол. страниц
  322.  
  323. if ($pages_count <= $show_link + 1) $show_dots = 'no';
  324.  
  325. // Вывод ссылки на первую страницу
  326.  
  327. if (($begin > 2) && ($pages_count - $show_link > 2)) {
  328.  
  329. echo '<a '.$style.' href='.$_SERVER['php_self'].'?page=1> |< </a> ';
  330.  
  331. }
  332.  
  333. for ($j = 0; $j <= $show_link; $j++) // Основный цикл вывода ссылок
  334.  
  335. {
  336.  
  337. $i = $begin + $j; // Номер ссылки
  338.  
  339. // Если страница рядом с началом, то увеличить цикл для того,
  340.  
  341. // чтобы количество ссылок было постоянным
  342.  
  343. if ($i < 1) continue;
  344.  
  345. // Подобное находится в верхнем цикле
  346.  
  347. if (!isset($show_dots) && $begin > 1) {
  348.  
  349. echo ' <a '.$style.' href='.$_SERVER['php_self'].'?page='.($i-1).'><b>...</b></a> ';
  350.  
  351. $show_dots = "no";
  352.  
  353. }
  354.  
  355. // Номер ссылки перевалил за возможное количество страниц
  356.  
  357. if ($i > $pages_count) break;
  358.  
  359. if ($i == $page) {
  360.  
  361. echo ' <a '.$style.' ><b>'.$i.'</b></a> ';
  362.  
  363. } else {
  364.  
  365. echo ' <a '.$style.' href='.$_SERVER['php_self'].'?page='.$i.'>'.$i.'</a> ';
  366.  
  367. }
  368.  
  369. // Если номер ссылки не равен кол. страниц и это не последняя ссылка
  370.  
  371. if (($i != $pages_count) && ($j != $show_link)) echo $sperator;
  372.  
  373. // Вывод "..." в конце
  374.  
  375. if (($j == $show_link) && ($i < $pages_count)) {
  376.  
  377. echo ' <a '.$style.' href='.$_SERVER['php_self'].'?page='.($i+1).'><b>...</b></a> ';
  378.  
  379. }
  380.  
  381. }
  382.  
  383. // Вывод ссылки на последнюю страницу
  384.  
  385. if ($begin + $show_link + 1 < $pages_count) {
  386.  
  387. echo ' <a '.$style.' href='.$_SERVER['php_self'].'?page='.$pages_count.'> >| </a>';
  388.  
  389. }
  390.  
  391. return true;
  392.  
  393. } // Конец функции
  394.  
  395.  
  396.  
  397. // Подключение к базе данных
  398.  
  399. mysql_connect('localhost', 'root', '') or die('error! Нет соединения с сервером mysql!');
  400.  
  401. mysql_select_db('data_base') or die('error! Нет соединения с базой данных!');
  402.  
  403.  
  404.  
  405. // Подготовка к постраничному выводу
  406.  
  407. $perpage = 10; // Количество отображаемых данных из БД
  408.  
  409. if (empty($_GET['page']) || ($_GET['page'] <= 0)) {
  410.  
  411. $page = 1;
  412.  
  413. } else {
  414.  
  415. $page = (int) $_GET['page']; // Считывание текущей страницы
  416.  
  417. }
  418.  
  419. // Общее количество информации
  420.  
  421. $count = mysql_numrows(mysql_query('select * from table')) or die('error! Записей не найдено!');
  422.  
  423. $pages_count = ceil($count / $perpage); // Количество страниц
  424.  
  425. // Если номер страницы оказался больше количества страниц
  426.  
  427. if ($page > $pages_count) $page = $pages_count;
  428.  
  429. $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД
  430.  
  431. // Вызов функции, для вывода ссылок на экран
  432.  
  433.  
  434.  
  435. yandex_link_bar($page, $count, $pages_count, 10);
  436.  
  437.  
  438.  
  439. // Вывод информации из базы данных
  440.  
  441. echo '<p><b>Постраничный вывод информации</b></p>';
  442.  
  443. $result = mysql_query('select * from table limit '.$start_pos.', '.$perpage) or die('error!');
  444.  
  445. while ($row = mysql_fetch_array($result)) {
  446.  
  447. echo '<p>'.$row['some_field'].'</p>';
  448.  
  449. }
  450.  
  451. ?>
» Описание: Статей, как сделать постраничный вывод много, но если информации будет очень много, на пример поиск
» Время добавления: 11 Авг 2014 в 10:02
» Посмотров: 1192
» textarea
» Рейтинг: [+0 | -0]
Комментарии [0]
Онлайн: 3
Реклама