【问题标题】:Highlight Current page number PHP Pagination突出显示当前页码 PHP 分页
【发布时间】:2016-01-28 13:37:11
【问题描述】:

我在解决这个问题时遇到了问题,所以我要求更专业的解决方案。我为我的产品列表设置了分页。问题是当我切换页面时,数字上的活动类没有显示或显示错误。例如,当用户点击 2(第 2 页)时,它会显示项目的第 2 页,但 5 是突出显示的。需要帮助解决此问题以突出显示当前正在查看的页面。

此代码用于设置偏移量。

$totalrows = db_getvalue("select count(buyinfo_id) from buyinfo,user $addtable where buyinfo.user_id=user.user_id $clause $orderbyclause", $global_connection);
        if ($totalrows == "")
            $totalrows = 0;
        $totalpages = ceil($totalrows/$listcount);
        if ($totalpages > 1) {
            $curpageoffset = 0;
            if (isset($_REQUEST['offset'])) {
                if ($_REQUEST['offset'] >= $totalpages)
                    $curpageoffset = $totalpages - 1;
                else if ($_REQUEST['offset']>0)
                    $curpageoffset = $_REQUEST['offset']*$listcount-1;
            }
            $limitstr = " limit $curpageoffset,$listcount";
        }

例如,当我转到第 3 页时,它显示 www.site.com/?offset=2

我猜是因为 $curpageoffset = $_REQUEST['offset']*$listcount-1; 中的 -1;

这是负责页码的代码:

<?php
    if ($totalpages>1) {
            echo "<tr><td><ul class='pagination'>";
            echo "<li><a href='' aria-label='Previous' ";
            if ($curpageoffset == 0) {
                echo "onclick='return false;'";
            } else {
                echo "onclick='util_reload(\"posts/?offset=".($curpageoffset-1)."$pageparam\"); return false;'";
            }
            echo " ><span aria-hidden='true'>&laquo;</span></a></li>";

            $tmpctr = 0;
            while ($tmpctr < $totalpages) {
                $curstyle = "";
                if ($tmpctr == $curpageoffset)
                    $curstyle = "class='active'";

                echo "<li $curstyle><a href='' onclick='util_reload(\"posts/?offset=$tmpctr$pageparam\"); return false;'>";
                $tmpctr++;
                echo "$tmpctr</a></li>";
            }

            echo "<li><a href='' aria-label='Next' ";
            if ($curpageoffset >= $totalpages-1) {
                echo "onclick='return false;'";
            } else {
                echo "onclick='util_reload(\"posts/?offset=".($curpageoffset+1)."$pageparam\"); return false;'";
            }
            echo " ><span aria-hidden='true'>&raquo;</span></a></li>";

            echo "</ul></td></tr>";
    }
?>

【问题讨论】:

    标签: php mysql pagination


    【解决方案1】:

    由于您已设置 curpageoffset 的值以用于查询,因此您不能在分页代码中使用它来突出显示您所在的页面...我会以这种方式更改您的代码 .. 使用原始的 $_REQUEST['offset'] 因为这本质上是页码。

    while ($tmpctr < $totalpages) {
                    $curstyle = "";
                    if ($tmpctr == $_REQUEST['offset'])
                        $curstyle = "class='active'";
    
                    echo "<li $curstyle><a href='' onclick='util_reload(\"posts/?offset=$tmpctr$pageparam\"); return false;'>";
                    $tmpctr++;
                    echo "$tmpctr</a></li>";
                }
    

    【讨论】:

    • 成功了。从来没想过!哈!只是额外的问题,如果它还可以。是否有任何解决方法可以将偏移量设置为相同的页码,或者它应该如何工作?
    • 我不确定我是否理解您的问题。你能重申一下吗?
    • 对不起。还不清楚。例如,如果我点击 2(第 2 页),则网址显示 www.site.com/offset?=1 我认为这是因为 $curpageoffset = $_REQUEST['offset']*$listcount-1;无论如何我可以将偏移量设置为与当前页面相同吗?
    • 我会更改您的链接,使其指向页码(即 1、2、3 等)并在脚本开头附近设置一个变量 $currentpage = $_REQUEST['offset ']-1;然后,您可以使用 $currentpage 而不是 $_REQUEST['offset'] 来计算您的 $curpageoffset。不确定这是否有意义。
    • 我其实没明白你的意思。对此感到抱歉。可以改为聊天吗? @LuvnJesus
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2018-09-03
    相关资源
    最近更新 更多