В своей жизни я видел несколько подобных скриптов, но с вами решил поделиться тем, который использую в своих проектах. Если вы начинающий разработчик, то рано или поздно, вы столкнётесь с тем, что вам необходимо будет распределять информацию по страницам. Для этого нам понадобится язык PHP и база данных с информацией. Наверняка вы видели примеры подобного функционала. Его можно встретить на любом крупном сайте.[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
Для того чтобы начать, нам надо создать подключение к базе данных. Далее мы определим несколько переменных. ‘$tableName’ будет содержать имя таблицы, в которой хранится информация, которую мы будем распределять по разным страницам. Она будет содержать список стран - ‘countries_list’, ‘$targetpage’, ‘$limit’ это количество строк, которые должны отображаться на странице. В нашем случае мы будет выводить по 10 записей.
А теперь я приведу список того, что делает следующий код.
Определяет три основные переменные, имя таблицы откуда будут извлекаться данные, название документа и количество отображаемых строк;
Далее мы подключаемся к базе и считаем количество строк, для того, чтобы знать с каким объёмом информации нам предстоит работать;
Если номер страницы передан нам как GET параметр то мы проверяем номер. Если он не валидный отправляем пользователя на первую страницу;
Затем нам необходимо сделать выборку;
Далее мы определяем номера для следующей и предыдущей страницы, а так же для первой и последней;
Теперь у нас есть целый ряд выражений, которые вычисляют все необходимые данные. Общее число страниц и т.д.
В конце мы выводим значение переменной ‘$paginate’ для отображения номеров страниц
Затем в цикле выводим записи001 <?php
002 include('connect.php');
003
004 $tableName="countries_list";
005 $targetpage = "index.php";
006 $limit = 10;
007
008 $query = "SELECT COUNT(*) as num FROM $tableName";
009 $total_pages = mysql_fetch_array(mysql_query($query));
010 $total_pages = $total_pages[num];
011
012 $stages = 3;
013 $page = mysql_escape_string($_GET['page']);
014 if($page){
015 $start = ($page - 1) * $limit;
016 }else{
017 $start = 0;
018 }
019
020 $query1 = "SELECT * FROM $tableName LIMIT $start, $limit";
021 $result = mysql_query($query1);
022
023 if ($page == 0){$page = 1;}
024 $prev = $page - 1;
025 $next = $page + 1;
026 $lastpage = ceil($total_pages/$limit);
027 $LastPagem1 = $lastpage - 1;
028
029 $paginate = '';
030 if($lastpage > 1)
031 {
032
033 $paginate .= "<div class='paginate'>";
034 if ($page > 1){
035 $paginate.= "<a href='$targetpage?page=$prev'>previous</a>";
036 }else{
037 $paginate.= "<span class='disabled'>previous</span>"; }
038
039 if ($lastpage < 7 + ($stages * 2))
040 {
041 for ($counter = 1; $counter <= $lastpage; $counter++)
042 {
043 if ($counter == $page){
044 $paginate.= "<span class='current'>$counter</span>";
045 }else{
046 $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
047 }
048 }
049 elseif($lastpage > 5 + ($stages * 2))
050 {
051 if($page < 1 + ($stages * 2))
052 {
053 for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
054 {
055 if ($counter == $page){
056 $paginate.= "<span class='current'>$counter</span>";
057 }else{
058 $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
059 }
060 $paginate.= "...";
061 $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1 </a>";
062 $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
063 }
064 elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
065 {
066 $paginate.= "<a href='$targetpage?page=1'>1</a>";
067 $paginate.= "<a href='$targetpage?page=2'>2</a>";
068 $paginate.= "...";
069 for ($counter = $page - $stages; $counter <= $page + $stages; $counter++)
070 {
071 if ($counter == $page){
072 $paginate.= "<span class='current'>$counter</span>";
073 }else{
074 $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
075 }
076 $paginate.= "...";
077 $paginate.= "<a href='$targetpage?page=$LastPagem1'>$LastPagem1 </a>";
078 $paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";
079 }
080 else
081 {
082 $paginate.= "<a href='$targetpage?page=1'>1</a>";
083 $paginate.= "<a href='$targetpage?page=2'>2</a>";
084 $paginate.= "...";
085 for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++)
086 {
087 if ($counter == $page){
088 $paginate.= "<span class='current'>$counter</span>";
089 }else{
090 $paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
091 }
092 }
093 }
094
095 if ($page < $counter - 1){
096 $paginate.= "<a href='$targetpage?page=$next'>next</a>";
097 }else{
098 $paginate.= "<span class='disabled'>next</span>";
099 }
100
101 $paginate.= "</div>";
102
103 }
104 echo $total_pages.' Results';
105 echo $paginate;
106 ?>
107
108 <ul>
109
110 <?php
111
112 while($row = mysql_fetch_array($result))
113 {
114
115 echo '<li>'.$row['country'].'</li>';
116
117 }
118
119 ?>
120 </ul>