2013-04-15 11 views
6

Witam wszystkich Próbuję utworzyć mój paginacji w poniżej formatuJak naprawić Pagination pomocą PHP

Idź do strony 3 [text-box] Poprzednia 1 2 3 4 5 .... 400 Następna

i poniżej jest mój kod

   if(isset($_REQUEST['limit_start']) && $_REQUEST['limit_start'] > 0) $limit_start = $_REQUEST['limit_start']; 
     else $limit_start = 0 ; 
     if(isset($_REQUEST['results_to_show'])) $results_to_show= $_REQUEST['results_to_show']; 
     else $results_to_show = 100; 

     if(($limit_start-$results_to_show)>=0) 
     $pagination.='<a href="details-inventory.php?limit_start='.($limit_start-$results_to_show).'&&results_to_show='.$results_to_show.'" >Previous</a> | '; 

      if (isset($_REQUEST['submit']) && $_REQUEST['submit'] != "")$search_limited = 1; 
      else $search_limited = 0; 

     global $wpdb; 
     $sql='SELECT count(*) 
     FROM `inventory_location` '; 

     $data= $wpdb->get_results($sql,ARRAY_A); 
     $row_count= $data[0]['count(*)']; 

     for($number=(($limit_start/$results_to_show)+1);$number<($row_count/$results_to_show);$number++)//($row_count/$results_to_show);$number++)($limit_start/$results_to_show)+ 
     $pagination.= '<a href="details-inventory.php?limit_start='.($number*$results_to_show).'&&results_to_show='.$results_to_show.'" >'.$number.'</a> | '; 

     $pagination.= ' <a href="details-inventory.php?limit_start='.($limit_start+$results_to_show).'&&results_to_show='.$results_to_show.'" >Next </a> <br />'; 

teraz problemem jest to ..... wykazać wszystkie numery od 1 do ostatniej strony ... chcę podzielić go poniżej w stylu

1 2 3 4 5 ....400 

thanx

+0

'&& results_to_show' jest to literówka? użyłeś całego – Fabio

+1

@Atif Azad używasz WordPressa – Sabari

+0

tak, używam wordpress –

Odpowiedz

3

Jeśli korzystasz z WordPress, istnieje wbudowana funkcja paginate_links dla stronicowania.

Możesz zobaczyć więcej informacji na ten sam tutaj: http://codex.wordpress.org/Function_Reference/paginate_links.

Zamiast tworzyć własne, dobrze będzie korzystać z wbudowanej funkcji, która zapewnia tę samą funkcjonalność, której potrzebujesz.

Pomoże ci to dostosować się do twoich potrzeb. Musisz tylko podać prawidłowe argumenty. mid_size jest argumentem, którego potrzebujesz, aby określić, ile numerów stron ma być wyświetlanych po obu stronach bieżącej strony, ale bez uwzględniania bieżącej strony.

UPDATE:

kod można uprościć jak poniżej:

global $wpdb; 

//get the total count 
$total_count = $wpdb->get_var('SELECT count(*) FROM `inventory_location`'); 

//number of results to be shown per page 
$results_to_show_per_page = 100; 

//specify the number of page numbers to be shown on each side of the current page 
$mid_size = 3; 

//check whether the query argument page is set and get the current page 
if (isset($_GET['page'])) 
    $page = abs((int)$_GET['page']); 
else 
    $page = 1; 

//generate page links 
$pagination_links = paginate_links(array(
          'base' => add_query_arg('page', '%#%'), 
          'total' => ceil($total_count/$results_to_show_per_page), 
          'current' => $page, 
          'mid_size'=> $mid_size 
        )); 


echo $pagination_links; 

Hope this helps :)

+0

thanx sabari faktycznie jestem nowy z wordpress ... nie wiem jak z niego korzystać. czy mógłbyś mi powiedzieć, jak bym użył tutaj w moim kodzie kod paginate_links z twojego podanego linku –

+0

@AtifAzad Proszę sprawdź moją aktualizację – Sabari

+0

sssshhhhhh ....... thanx Sabari ... działa –