7

I have a pagination and I want to achieve and limit it to 5 page numbers,

See below:

Examples:

 PREVIOUS 1 2 3 4 5 NEXT
 PREVIOUS 20 21 22 23 ... 39 NEXT
 PREVIOUS 59 ... 81 82 83 84 NEXT

Just five page number that they should be display.
Which part of the code should I alter and modify?

I am having trouble with the combination.

 <?php
 /* Setup page vars for display. */
if ($page == 0) $page = 1;                  //if no page var is given, default to 1.
$prev = $page - 1;                          //previous page is page - 1
$next = $page + 1;                          //next page is page + 1
$lastpage = ceil($total_pages/$limit);      //lastpage is = total pages / items per page, rounded up.
$lpm1 = $lastpage - 1;                      //last page minus 1

/* 
    Now we apply our rules and draw the pagination object. 
    We're actually saving the code to a variable in case we want to draw it more than once.
*/
    $pagination = "";
    if($lastpage > 1)
    {   
        $pagination .= "<div class=\"pagination\">";
    //previous buttons
        if ($page > 1) 
            $pagination.= "<a class='buttons' href=\"$targetpage?page=$prev\">previous</a>";
        else
            $pagination.= "<a class='disabled'><buttons disabled>previous</buttons></a>";   

    //pages 
    if ($lastpage < 7 + ($adjacents * 2))   //not enough pages to bother breaking it up
    {   
        for ($counter = 1; $counter <= $lastpage; $counter++)
        {
            if ($counter == $page)
                $pagination.= "<a class='current'><buttons style='background-color:#CEF6F5'>$counter</buttons></a>";
            else
                $pagination.= "<a class='buttons' href=\"$targetpage?page=$counter\">$counter</a>";                 
        }
    }
    elseif($lastpage > 5 + ($adjacents * 2))    //enough pages to hide some
    {
        //close to beginning; only hide later pages
        if($page < 1 + ($adjacents * 2))        
        {
            for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
            {
                if ($counter == $page)
                    $pagination.= "<a class='current'><buttons style='background-color:#CEF6F5'>$counter</buttons></a>";
                else
                    $pagination.= "<a class='buttons' href=\"$targetpage?page=$counter\">$counter</a>";                 
            }
            $pagination.= "...";
            $pagination.= "<a class='buttons' href=\"$targetpage?page=$lpm1\">$lpm1</a>";
            $pagination.= "<a class='buttons' href=\"$targetpage?page=$lastpage\">$lastpage</a>";       
        }
        //in middle; hide some front and some back
        elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
        {
            $pagination.= "<a class='buttons' href=\"$targetpage?page=1\"> 1 </a>";
            $pagination.= "<a class='buttons' href=\"$targetpage?page=2\"> 2 </a>";
            $pagination.= "...";
            for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
            {
                if ($counter == $page)
                    $pagination.= "<a class='current'><buttons style='background-color:#CEF6F5'>$counter</buttons></a>";
                else
                    $pagination.= "<a class='buttons' href=\"$targetpage?page=$counter\">$counter</a>";                 
            }
            $pagination.= "...";
            $pagination.= "<a class='buttons' href=\"$targetpage?page=$lpm1\">$lpm1</a>";
            $pagination.= "<a class='buttons' href=\"$targetpage?page=$lastpage\">$lastpage</a>";       
        }
        //close to end; only hide early pages
        else
        {
            $pagination.= "<a href=\"$targetpage?page=1\">1</a>";
            $pagination.= "<a href=\"$targetpage?page=2\">2</a>";
            $pagination.= "...";
            for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
            {
                if ($counter == $page)
                    $pagination.= "<a class='current'><buttons style='background-color:#CEF6F5'>$counter</buttons></a>";
                else
                    $pagination.= "<a class='buttons' href=\"$targetpage?page=$counter\">$counter</a>";                 
            }
        }
    }

    //next buttons
    if ($page < $counter - 1) 
        $pagination.= "<a class='buttons' href=\"$targetpage?page=$next\">next</a>";
    else
        $pagination.= "<a class='buttons'>next</a>";
    $pagination.= "</div>\n";       
}
?>

I am having problem tracing the limit for displaying page number.

0m3r
  • 12,286
  • 15
  • 35
  • 71

2 Answers2

6

This worked for me. You have to pass your current page number and total number of pages to the function.

function pageRange(page,pageCount){

var start = page-2,
    end = page+2;

if(end>pageCount){
    start-=(end-pageCount);
    end=pageCount;
}
if(start<=0){
    end+=((start-1)*(-1));
    start=1;
}

end = end>pageCount?pageCount:end;

return {start:start, end:end};
}

EDIT: check out this fiddle i made https://jsfiddle.net/qsLp6ajL/2/

Anand
  • 305
  • 1
  • 2
  • 9
  • So I am going to add this function inside my pagination code? –  Jul 06 '15 at 07:12
  • ya call this function passing the parameters. It works fine for me. – Anand Jul 06 '15 at 07:14
  • can you take a look my code above what represent the `pageCount` in your function? –  Jul 06 '15 at 07:18
  • Mind you, it calculates the start and end page range values for the page that you are currently in. Linking it with the pagination has to be done by you. – Anand Jul 06 '15 at 07:21
  • your $lastpage variable seems to store the pageCount value. – Anand Jul 06 '15 at 07:27
  • Yes I tried. `pageCount` $lastpage `start` $next `end`$previous –  Jul 06 '15 at 07:33
1

I used below code for my wordpress plugin to display pagination and display data in table. You can use this according to your mysql query.

<?php echo '<table width="100%" border="1" cellspacing="0" cellpadding="0">'; ?>
    <col width="10%" />
    <col width="25%" />
    <col width="25%" />
    <col width="30%" />
    <col width="10%" />

<?php 
        echo '<tr class="st_th" height="30px">';
        echo '<th class="th_id"> ID</th>';      
        echo '<th class="st_th1"> Name</th>';
        echo '<th class="st_th1"> Phone</th>';
        echo '<th class="st_th1">Address</th>'; 
        echo '<th class="st_th1">Details</th>'; 
        echo '</tr>';
        global $wpdb;
        $num_rec_per_page=4;

        if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; }; 
        $start_from = ($page-1) * $num_rec_per_page; 
        $sql = "SELECT * FROM {$wpdb->prefix}addressbook LIMIT $start_from, $num_rec_per_page"; 


        $result = $wpdb->get_results($sql); 

        foreach($result as $row)
        {
            echo '<tr height="25px">';
                echo '<td width="10%" class="fast_t">' . $row->id. '</td>'; 
                echo '<td class="st_th1" style="padding-left:5px; width:200px">' . $row->f_name, ' ', $row->m_name, ' ', $row->l_name . '</td>';
                echo '<td class="st_th1" style="padding-left:5px;width:200px">' . $row->phone . '</td>';        
                echo '<td class="st_th1" style="padding-left:5px;width:200px">' . $row->address . '</td>';
                //echo '<td style="padding-left:5px">' . $row->address . '</td>';

                $pages2 = get_pages(array(
                    'meta_key' => '_wp_page_template',
                    'meta_value' => 'user_list_page.php'
                ));
                foreach($pages2 as $page2){
                    //echo $page->ID.'<br />';

                }
                if ( is_user_logged_in() ) {
                 $user_ID = get_current_user_id();  
                }
                if ($user_ID==$row->id) {
                    # code...

                    echo '<td '.$attributes.'>';
                        //echo '<a href="'. get_permalink( $page1->ID).'&id=' . $row->id . '"> Edit</a>|';
                         if ( get_option('permalink_structure') ) { 
                        echo '<a href="'. get_permalink( $page->ID).'?id=' . $row->id . '"> Details</a>';
                        //echo 'permalinks enabled'; 
                    } else {
                        echo '<a href="'. get_permalink( $page->ID).'&id=' . $row->id . '"> Details</a>';
                    }
                 echo'</td>';
                }
                if ($user_ID!=$row->id) {
                     echo '<td '.$attributes.'><a href="'. get_permalink( $page->ID).'&id=' . $row->id . '"> Details</a></td>';
                }

            echo '</tr>';
 }
 echo '</table>';
 $sql = "SELECT * FROM " . $wpdb->prefix."addressbook"; 
 $rs_result = mysql_query($sql); //run the query
 $total_records = mysql_num_rows($rs_result);  //count number of records
 $total_pages = ceil($total_records / $num_rec_per_page); 
 $aaa = get_permalink( $page2->ID);?>
 <div class="pagination">
 <?php echo "<a href='".$aaa."&page=1'>".'|<'."</a> "; // Goto 1st page  
    for ($i=1; $i<=$total_pages; $i++) { 
         if ( get_option('permalink_structure') ) { 
                        echo "<a href='".$aaa."?page=".$i."'>".$i."</a> "; 
                        //echo 'permalinks enabled'; 
                    } else {
                        echo "<a href='".$aaa."&page=".$i."'>".$i."</a> "; 
                    }

    }; 
     if ( get_option('permalink_structure') ) { 
                        echo "<a href='".$aaa."?page=$total_pages'>".'>|'."</a> "; // Goto last page

                    } else {
                        echo "<a href='".$aaa."&page=$total_pages'>".'>|'."</a> "; // Goto last page
                    }

    echo '</div>';?>
    </div>
Lemon Kazi
  • 3,308
  • 2
  • 37
  • 67