Главная | Форум | Статьи | Фaйлы| Картинки WoW | Профиль | Регистрация | Вход

[ Новые сообщения · Правила форума · Поиск · RSS ]

WoW-Info — информационный World of Warcraft портал

Простой PHP Paginator - Форум

  • Сторінка 1 з 1
  • 1
Простой PHP Paginator
m[R]inoДата: Понеділок, 30.05.2011, 16:41 | Сообщение # 1



m[R]ino
Центурион
Группа: Пользователи
Сообщений: 388

Замечания:

Оффлайн
Если вы начинающий разработчик, то рано или поздно, вы столкнётесь с тем, что вам необходимо будет распределять информацию по страницам. Для этого нам понадобится язык PHP и база данных с информацией. Наверняка вы видели примеры подобного функционала. Его можно встретить на любом крупном сайте.
-----------------------------------------------------------------------------------

-----------------------------------------------------------------------------------
Для того чтобы начать, нам надо создать подключение к базе данных. Далее мы определим несколько переменных. ‘$tableName’ будет содержать имя таблицы, в которой хранится информация, которую мы будем распределять по разным страницам. Она будет содержать список стран - ‘countries_list’, ‘$targetpage’, ‘$limit’ это количество строк, которые должны отображаться на странице. В нашем случае мы будет выводить по 10 записей.

А теперь я приведу список того, что делает следующий код.

* Определяет три основные переменные, имя таблицы откуда будут извлекаться данные, название документа и количество отображаемых строк;
* Далее мы подключаемся к базе и считаем количество строк, для того, чтобы знать с каким объёмом информации нам предстоит работать;
* Если номер страницы передан нам как GET параметр то мы проверяем номер. Если он не валидный отправляем пользователя на первую страницу;
* Затем нам необходимо сделать выборку;
* Далее мы определяем номера для следующей и предыдущей страницы, а так же для первой и последней;
* Теперь у нас есть целый ряд выражений, которые вычисляют все необходимые данные. Общее число страниц и т.д.
* В конце мы выводим значение переменной ‘$paginate’ для отображения номеров страниц
* Затем в цикле выводим записи
Code
<?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>
[color=red]Добовляем стиль.

Code
01    .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    }


Источник урока: www.papermashup.com/easy-php-pagination/

Добавлено (30.05.2011, 16:41)
---------------------------------------------
Хочу дполнить это не постраничное деление страниц на PHP ,это гароздо сложнее. но в ЮЗАБЕЛИТИ PHP PAGINATOR выигрывает по всем пораметрам.
---------------------------------------



Сообщение отредактировал m[R]ino - Понеділок, 30.05.2011, 16:33
 
PointДата: Субота, 11.06.2011, 05:53 | Сообщение # 2



Point
Скаут
Группа: Пользователи
Сообщений: 2

Замечания:

Оффлайн
Берешь Движек SMS,и не заморачиваещься со скриптами.
То что тут,ты выложил не кому не надо.


СОЗДАЮ САЙТЫ ЛЮБОЙ ТЕМАТИКИ,НАПОЛНЯЮ ТЕКСТАМИ.(ДЕШЕВО)ХОТИТЕ СВОЙ ЛИЧНЫЙ САЙТ?? ПИШИТЕ МНЕ В ЛС.
Устанавливаю и настраиваю движки для сайтов «Дёшево»
Устоновка шаблонов,модулей за дополнительную оплату.
Продюсирую инфопродукты,есле у Вас есть что показать или расказать людям Обращайтесь ко мне!Оплата гарантирована.
 
DiyvolДата: Субота, 11.06.2011, 07:48 | Сообщение # 3



Diyvol
ЗлОй-АйТИшник
Центурион
Группа: Best of the Best user Wow-info
Сообщений: 356

Замечания:

Оффлайн
Point Вот прошу не надо судить людей по себе.
брать чужое и использовать да для вас Школьников это самый Слак.

Автору скажу что Молодец тем кто Увлекается веб программированием это будет полезно.
так как своё всегда луче чем чужое.



Веб-дизайнер.
Работа, учеба и тренажерный зал. Жизнь это когда ты рад тому, что ты устал. Я не вижу смысла в жизни наркоманов. Наркотик в роли пастуха для всех этих баранов. Я иду вперед и не думаю сворачивать.
 
PointДата: Вівторок, 14.06.2011, 10:20 | Сообщение # 4



Point
Скаут
Группа: Пользователи
Сообщений: 2

Замечания:

Оффлайн
Diyvol, в первых на счет школьников ты ошибаешься, типо ты меня обидеть хотел! ахах! мда....
А тем кто увлекается веб программированием, для тех есть специально отведенные форумы и сайты! а не сайт на тематику world of warcraft,есть специальные сайты!!!Ты понимаешь что ты написал! причем тут судить людей?? ты не отчем поц!
еще скажу что большая часть людей тех кто занимается веб программированием это лошаки в очках, дальше идут люди которые любят халяву и не тратят годы на совершенно не нужную литературу по языкам программирования. Я лучше потрачу день на установку готового движка и за день наполню его контентом по горло, чем буду заниматься изучением языков программирования и только через год-два я напишу скрипт движка. Так что ты заблуждаешься в своих словах и несешь откровенную чушь!
Ладно соглашусь с тем что свое всегда лучше чем чужое,тк.в продукте сделанным своими руками ты уверен за его работоспособность на 100% и что этот продукт тебя не подведет.
Все-таки люди любят халяву правильно?.. Вот именно я лучше воспользуюсь чужим трудом,пох кто там потел над этим продуктом, зато я доволен.
Вывод токов: ты просто не прав.


СОЗДАЮ САЙТЫ ЛЮБОЙ ТЕМАТИКИ,НАПОЛНЯЮ ТЕКСТАМИ.(ДЕШЕВО)ХОТИТЕ СВОЙ ЛИЧНЫЙ САЙТ?? ПИШИТЕ МНЕ В ЛС.
Устанавливаю и настраиваю движки для сайтов «Дёшево»
Устоновка шаблонов,модулей за дополнительную оплату.
Продюсирую инфопродукты,есле у Вас есть что показать или расказать людям Обращайтесь ко мне!Оплата гарантирована.
 
  • Сторінка 1 з 1
  • 1
Пошук:

Новые сообщения в темах
Сдам в аренду сервер и хостинг · (Хост Предложения)
Автор: redlaine
Последнее сообщение в 23:53
хаха :D · (Приколы)
Автор: [N1ke]Medved
Последнее сообщение в 18:40
Autobattle - новый боевой бот ... · (Боты для WoW)
Автор: terrikon
Последнее сообщение в 18:39
PvE руководство для Чернокнижн... · (Чернокнижник)
Автор: Darkensand
Последнее сообщение в 18:38
Пустой свиток (Часть 11) · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:37
Друиды в Катаклизме: Официальн... · (Друид)
Автор: Darkensand
Последнее сообщение в 18:37
[Баг 3.3.5] Фарм ледяных бадже... · (Читы для WoW)
Автор: Darkensand
Последнее сообщение в 18:35
FarmBot (Бот для фарма руды и ... · (Боты для WoW)
Автор: homma
Последнее сообщение в 18:34
Почему мы сражаемся: ролевая и... · (Воин)
Автор: Darkensand
Последнее сообщение в 18:34
Книги по Wold of Warcraft · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:33
Маг огня в Cataclysm · (Маг)
Автор: Darkensand
Последнее сообщение в 18:33
Как начать играть в World of W... · (Полезно знать)
Автор: Belkmondesh
Последнее сообщение в 18:32
Характеризация профессий · (Профессии)
Автор: Darkensand
Последнее сообщение в 18:31
Что значит для арканов бета те... · (Маг)
Автор: Darkensand
Последнее сообщение в 18:31

Контакты Контакты Copyright WoW-Info — World of Warcraft портал © 2025 | Условия и правила использования ресурса | Реклама / Услуги
WoW-Info портал.World of Warcraft портал — готовые сервера, сайты, картинки, аддоны, патчи, читы, баги, mangos, ArcEmu, TrinityCore, Warcraft 3, новости, Cataclysm...
Яндекс.Метрика Хостинг від uCoz