Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Ответ
 
Опции темы
Старый 11.06.2011, 21:07   #1
Заблокирован
 Разведчик
Аватар для Я убью:Frost:DD
 
Я убью:Frost:DD на правильном пути
Регистрация: 06.06.2011
Сообщений: 20
Популярность: 74
Сказал(а) спасибо: 65
Поблагодарили 32 раз(а) в 22 сообщениях
 
По умолчанию Простой PHP Paginator

В своей жизни я видел несколько подобных скриптов, но с вами решил поделиться тем, который использую в своих проектах. Если вы начинающий разработчик, то рано или поздно, вы столкнётесь с тем, что вам необходимо будет распределять информацию по страницам. Для этого нам понадобится язык 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>

Добавим немного стиля

Давайте теперь немного оформим наш paginator01 .paginate {
02 font-family:Arial, Helvetica, sans-serif;
03 padding: 3px;
04 margin: 3px;
05 }
06
07 .paginate a {
08 padding:2px 5px 2px 5px;
09 margin:2px;
10 border:1px solid #999;
11 text-decoration:none;
12 color: #666;
13 }
14 .paginate a:hover, .paginate a:active {
15 border: 1px solid #999;
16 color: #000;
17 }
18 .paginate span.current {
19 margin: 2px;
20 padding: 2px 5px 2px 5px;
21 border: 1px solid #999;
22
23 font-weight: bold;
24 background-color: #999;
25 color: #FFF;
26 }
27 .paginate span.disabled {
28 padding:2px 5px 2px 5px;
29 margin:2px;
30 border:1px solid #eee;
31 color:#DDD;
32 }
33
34 li{
35 padding:4px;
36 margin-bottom:3px;
37 background-color:#FCC;
38 list-style:none;}
39
40 ul{margin:6px;
41 padding:0px;
42 }
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
простой обход! popika Общение и обсуждение CrossFire 19 12.06.2011 01:08
[Помогите!] Простой вопрос!? russianMc Общение и обсуждение Counter-Strike 7 08.02.2011 15:31

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 23:30.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net