Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Пагинация

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Лишние страницы
naciya
Отправлено: 24 Ноября, 2015 - 23:55:18
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




Признаюсь честно код взял в интернете, он работает, но проблема в том что он берет все записи c бд и делит на лимит выводимых записей на странице, то есть если на главной выбирает все записи (в моем случае 20 штук), то получается 20 страниц (если лимит равен 1), а на категориях там где идет выборка он все равно берет общее число записей, а не количество которых мне надо, вот можете посмотреть http://zena[dot]hol[dot]es , и получается что в категориях 20 страниц, а записей меньше,а то и вовсе нету. Как сделать что бы количество страниц соответствовало количеству ВЫВОДИМЫХ записей
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3.         $tableName="films";            
  4.         $targetpage = "index.php?id=ganre&ganre=$ganre";        
  5.         $limit = 4;
  6.        
  7.         $query = "SELECT COUNT(*) as num FROM $tableName";
  8.         $total_pages = mysqli_fetch_array(mysqli_query($bd, $query));
  9.         $total_pages = $total_pages[num];
  10.        
  11.         $stages = 3;
  12.         $page = mysqli_escape_string($bd, $_GET['page']);
  13.         if($page){
  14.                 $start = ($page - 1) * $limit;
  15.         }else{
  16.                 $start = 0;    
  17.                 }      
  18.        
  19.     // Get page data
  20.         $query1 = "SELECT * FROM $tableName WHERE ganre LIKE '%$ganre%' order by id desc LIMIT $start, $limit";
  21.         $result = mysqli_query($bd, $query1);
  22.                
  23.         // Initial page num setup
  24.         if ($page == 0){$page = 1;}
  25.         $prev = $page - 1;     
  26.         $next = $page + 1;                                                     
  27.         $lastpage = ceil($total_pages/$limit);         
  28.         $LastPagem1 = $lastpage - 1;                                   
  29.        
  30.        
  31.         $paginate = '';
  32.         if($lastpage > 1)
  33.         {      
  34.        
  35.  
  36.        
  37.        
  38.                 $paginate .= "<div class='paginate'>";
  39.                 // Previous
  40.                 if ($page > 1){
  41.                         $paginate.= "<a href='$targetpage&page=$prev'>Предыдущая</a>";
  42.                 }else{
  43.                         $paginate.= "<span class='disabled'>Предыдущая</span>"; }
  44.                        
  45.  
  46.                
  47.                 // Pages       
  48.                 if ($lastpage < 7 + ($stages * 2))      // Not enough pages to breaking it up
  49.                 {      
  50.                         for ($counter = 1; $counter <= $lastpage; $counter++)
  51.                         {
  52.                                 if ($counter == $page){
  53.                                         $paginate.= "<span class='current'>$counter</span>";
  54.                                 }else{
  55.                                         $paginate.= "<a href='$targetpage&page=$counter'>$counter</a>";}                                       
  56.                         }
  57.                 }
  58.                 elseif($lastpage > 5 + ($stages * 2))   // Enough pages to hide a few?
  59.                 {
  60.                         // Beginning only hide later pages
  61.                         if($page < 1 + ($stages * 2))          
  62.                         {
  63.                                 for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
  64.                                 {
  65.                                         if ($counter == $page){
  66.                                                 $paginate.= "<span class='current'>$counter</span>";
  67.                                         }else{
  68.                                                 $paginate.= "<a href='$targetpage&page=$counter'>$counter</a>";}                                       
  69.                                 }
  70.                                 $paginate.= "...";
  71.                                 $paginate.= "<a href='$targetpage&page=$LastPagem1'>$LastPagem1</a>";
  72.                                 $paginate.= "<a href='$targetpage&page=$lastpage'>$lastpage</a>";              
  73.                         }
  74.                         // Middle hide some front and some back
  75.                         elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
  76.                         {
  77.                                 $paginate.= "<a href='$targetpage&page=1'>1</a>";
  78.                                 $paginate.= "<a href='$targetpage&page=2'>2</a>";
  79.                                 $paginate.= "...";
  80.                                 for ($counter = $page - $stages; $counter <= $page + $stages; $counter++)
  81.                                 {
  82.                                         if ($counter == $page){
  83.                                                 $paginate.= "<span class='current'>$counter</span>";
  84.                                         }else{
  85.                                                 $paginate.= "<a href='$targetpage&page=$counter'>$counter</a>";}                                       
  86.                                 }
  87.                                 $paginate.= "...";
  88.                                 $paginate.= "<a href='$targetpage&page=$LastPagem1'>$LastPagem1</a>";
  89.                                 $paginate.= "<a href='$targetpage&page=$lastpage'>$lastpage</a>";              
  90.                         }
  91.                         // End only hide early pages
  92.                         else
  93.                         {
  94.                                 $paginate.= "<a href='$targetpage&page=1'>1</a>";
  95.                                 $paginate.= "<a href='$targetpage&page=2'>2</a>";
  96.                                 $paginate.= "...";
  97.                                 for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++)
  98.                                 {
  99.                                         if ($counter == $page){
  100.                                                 $paginate.= "<span class='current'>$counter</span>";
  101.                                         }else{
  102.                                                 $paginate.= "<a href='$targetpage&page=$counter'>$counter</a>";}                                       
  103.                                 }
  104.                         }
  105.                 }
  106.                                        
  107.                                 // Next
  108.                 if ($page < $counter - 1){
  109.                         $paginate.= "<a href='$targetpage&page=$next'>Следующая</a>";
  110.                 }else{
  111.                         $paginate.= "<span class='disabled'>next</span>";
  112.                         }
  113.                        
  114.                 $paginate.= "</div>";          
  115.        
  116.        
  117. }
  118.  
  119.  

(Отредактировано автором: 24 Ноября, 2015 - 23:57:36)

 
 Top
andrewkard
Отправлено: 25 Ноября, 2015 - 10:51:12
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




naciya пишет:
а на категориях там где идет выборка он все равно берет общее число записей, а не количество которых мне надо

naciya пишет:
Как сделать что бы количество страниц соответствовало количеству ВЫВОДИМЫХ записей

добавить id категории в запрос.
 
 Top
naciya
Отправлено: 25 Ноября, 2015 - 17:15:02
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




andrewkard пишет:

добавить id категории в запрос.

не совсем понял к какому запросу. если на выборку, то у меня стоит "ganre LIKE '%$ganre%'". или я не правильно Вас понял?
 
 Top
andrewkard
Отправлено: 25 Ноября, 2015 - 17:23:55
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




naciya
Тут тоже нужно : $query = "SELECT COUNT(*) as num FROM $tableName";
 
 Top
naciya
Отправлено: 25 Ноября, 2015 - 17:46:46
Post Id


Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




andrewkard пишет:
naciya
Тут тоже нужно : $query = "SELECT COUNT(*) as num FROM $tableName";

Огромное спасибо! Очень выручили!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB