2013-03-06 2 views
2
остальное

Сейчас моя пагинация бы показать что-то вроде этогоРазбивка, чтобы показать максимальное значение и ограничить

[1] [2] [3] [4] [5] [6] [7] [8] [9]

Как бы я сделать это показать, как это

[1] [2] [3] [4] [5] ... [9]

<?php 
$per_page = 10; 
$pages_query = mysql_query ("SELECT COUNT(`message_id`) FROM `messages`") or die(mysql_error()); 
$pages = ceil(mysql_result ($pages_query, 0)/$per_page); 
$page = (isset ($_GET['page'])) ? (int) $_GET['page'] : 1; 
$start = ($page - 1) * $per_page; 
?> 

Соответствующие если заявление, которое отображает разбивку на страницы

<?php 
    if ($pages >=1 && $page <= $pages) { 
     for ($x=1; $x<=$pages;$x++) { 
      echo "<a href=\"?page=" .$x."\">".$x."</a>"; 
     } 
    } 
?> 
+0

[оффтоп] Если у вас есть огромные данные для управления, а затем положить их в несколько страниц, положить их в на одной странице, но показывается только небольшое количество результатов, например, 10. Когда пользователь прокручивается вниз, загружайте другие вещи с помощью XMLHttpRequest асинхронно. Точно так же, как Google делает поиск изображений или, как DuckDuckGo. [/ Offtopic]. – ShuklaSannidhya

ответ

5

Попробуйте это:

<?php 
     $link = ""; 
// $page = $_GET['page']; 
// $pages=20; // Hardcoded for testing purpose 
    $limit=5 ; 
    if ($pages >=1 && $page <= $pages) 
    { 
     $counter = 1; 
     $link = ""; 
     if ($page > ($limit/2)) 
      { $link .= "<a href=\"?page=1\">1 </a> ... ";} 
     for ($x=$page; $x<=$pages;$x++) 
     { 

      if($counter < $limit) 
       $link .= "<a href=\"?page=" .$x."\">".$x." </a>"; 

      $counter++; 
     } 
     if ($page < $pages - ($limit/2)) 
     { $link .= "... " . "<a href=\"?page=" .$pages."\">".$pages." </a>"; } 
    } 

    echo $link; 
?> 

ВЫВОД:

//At page=1 
1 2 3 4 ... 20 

//At page=12 
1 ... 12 13 14 15 ... 20 

//At page=18 
1 ... 18 19 20 
3
<?php 
    if ($pages >=1 && $page <= $pages) { 
     $counter = 1; 
     $link = ""; 
     for ($x=1; $x<=$pages;$x++) { 
      if($counter < 5) 
       $link .= "<a href=\"?page=" .$x."\">".$x."</a>"; 

      $counter++; 
     } 
     $link .= "..."; 
     $link .= "<a href=\"?page=" .$pages."\">".$pages."</a>"; 
    } 
    echo $link; 
?> 
+0

Эта строка имеет синтаксическую ошибку, я попытаюсь ее исправить, но знаете ли вы, что ее вызывает? $ link. = "...". ".$pages."; – thedullmistro

+0

Кажется неправильным ... Он всегда будет показывать 1234..20, независимо от того, на какой странице вы окажетесь в – Makesh

+0

@Makesh - да, вы правы, нам также нужно будет проверить это условие. но здесь просто спрашивают о том, чтобы показать, что длинный список элементов в этом формате «...» –

Смежные вопросы