【问题标题】:How to show at most 5 numbers in a pagination?如何在分页中最多显示 5 个数字?
【发布时间】:2015-07-08 15:21:30
【问题描述】:

我有一个分页,我想实现并将其限制为 5 个页码,

见下文:

例子:

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

它们应该显示的只有五个页码。
我应该更改和修改代码的哪一部分?

我遇到了组合问题。

 <?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";       
}
?>

我在跟踪显示页码的限制时遇到问题。

【问题讨论】:

  • 注释后需要修改代码//enough pages to hide some
  • 你能说得更具体点吗?我在几天内完成它,我无法弄清楚。雅罗曼达
  • “仅固定”?修复了什么?
  • 哦,由于问题中没有javascriptjquerymysql,因此我删除了这些标签。
  • 固定意味着..它的分页显示5页码只有当有很多记录要显示.. Cerbus

标签: php pagination


【解决方案1】:

这对我有用。 您必须将当前页码和总页数传递给函数。

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};
}

编辑:看看我制作的这个小提琴https://jsfiddle.net/qsLp6ajL/2/

【讨论】:

  • 所以我要在我的分页代码中添加这个函数?
  • 你调用这个函数传递参数。它对我来说很好。
  • 你能看看我上面的代码,代表你函数中的pageCount吗?
  • 请注意,它会计算您当前所在页面的开始和结束页面范围值。将其与分页链接必须由您完成。
  • 您的 $lastpage 变量似乎存储了 pageCount 值。
【解决方案2】:

我为我的 wordpress 插件使用了以下代码来显示分页并在表格中显示数据。你可以根据你的mysql查询使用这个。

<?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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多