分页功能页面的限制

时间:2015-05-24 04:16:36

标签: php pagination

所以,我有这个分页代码打破了一个包含页面的表格,它一切正常...... p1

但是......如果有太多页面,它看起来很难看,就像这样: enter image description here

我是PHP新手,这是我目前的代码:

<?php
        function pagination($page,$num_page)
        {
            $max_pages = 15;
            echo'<ul class="pagination" style="list-style-type:none; text-align: center;">';
            $prevpage = $page-1;
            if ($page != 1) {
                echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=1" class="first"></a></li>';
                echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $prevpage . '"><i class="fa fa-chevron-left"></i></a></li>';
            }
            for($i=1; ($i<=$num_page)/* && ($i<=$max_pages)*/;$i++)
            {

                if($i==$page)
                {
                    echo'<li style="padding:5px;">'.$i.'</li>';
                }

                else
                {
                    echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$i.'">'.$i.'</a></li>';
                }
            }
            $nextpage = $page+1;
            if ($page != $num_page)
            {
                echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$nextpage.'"><i class="fa fa-chevron-right"></i></a></li>';
                echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p='.$num_page.'" class="last"></a></li>';
            }
            echo'</ul>';
        }
        if($num_page>1)
        {
            pagination($page,$num_page);
        }
        ?>

我只是想改变它,所以它看起来像这样:

$max_pages=10;
if ($num_pages > $max_pages)
echo "<< < 1 ... 3 4 5 6 7 8 9 10 ... 81 > >>"

我该怎么办?我现在不知道如何以一种很好的方式做到这一点= X. 但我不想只是一个给定的代码,我想了解它是如何工作的,为什么我应该这样做。

顺便说一句,

$num_pages是表格所包含的页数。

$page是当前页面

$max_pages将是要显示的最大页数。

2 个答案:

答案 0 :(得分:1)

<?php
    function pagination($page,$num_page)
    {
        $max_pages = 15;
        //Set a start and end point for page links
            $start= $page-5;
            $end= $page+5;
            if($start < 1) $start= 2;
            if($end > $num_page) $end= $num_page -1;
        //
        echo'<ul class="pagination" style="list-style-type:none; text-align: center;">';
        $prevpage = $page-1;
        if ($page != 1) {
            echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=1" class="first"></a></li>';
            echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $prevpage . '"><i class="fa fa-chevron-left"></i></a></li>';
            echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=1">1</a></li> &nbsp;$nbsp ...  &nbsp;$nbsp ';//Add first page link and ...
        }
        //Change the starting value of $i to start and end were you want it.
        for($i=$start; ($i<=$end)/* && ($i<=$max_pages)*/;$i++)
        {

            if($i==$page)
            {
                echo'<li style="padding:5px;">'.$i.'</li>';
            }

            else
            {
                echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$i.'">'.$i.'</a></li>';
            }
        }
        $nextpage = $page+1;
        if ($page != $num_page)
        {
            echo ' &nbsp;$nbsp ...  &nbsp;$nbsp <li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $num_page . '">' . $num_page . '</a></li>'; //Add last page link and ...
            echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$nextpage.'"><i class="fa fa-chevron-right"></i></a></li>';
            echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p='.$num_page.'" class="last"></a></li>';
        }
        echo'</ul>';
    }
    if($num_page>1)
    {
        pagination($page,$num_page);
    }
    ?>

好的,我添加了几行,2个变量,并更改了i的起始值。我评论了我做了什么来解释它。如果您不理解,请告诉我。

答案 1 :(得分:0)

我将代码更改为此代码,现在效果很好:)。

<?php
            function pagination($page,$num_page)
            {

                echo'<ul class="pagination" style="list-style-type:none; text-align: center;">';
                $prevpage = $page-1;
                if ($page != 1) {
                    echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=1" class="first"></a></li>';
                    echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $prevpage . '"><i class="fa fa-chevron-left"></i></a></li>';
                }
                $max_pages = 8; // How many page number you wish to display to the left and right sides of the current page
                $index_start = ($page - $max_pages) <= 0 ? 1 : $page - $max_pages;
                $index_finish = ($page + $max_pages) >= $num_page ? $num_page : $page + $max_pages;
                for ($i = $index_start; $i <= $index_finish; $i++)
                {
                    if ($page == $i)
                    {
                        echo'<li style="padding:5px;">'.$i.'</li>';
                    }
                    else
                    {
                        echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$i.'">'.$i.'</a></li>';
                    }
                }
                $nextpage = $page+1;
                if ($page != $num_page)
                {
                    echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$nextpage.'"><i class="fa fa-chevron-right"></i></a></li>';
                    echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p='.$num_page.'" class="last"></a></li>';
                }
                echo'</ul>';
            }
            if($num_page>1)
            {
                pagination($page,$num_page);
            }
            ?>