首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分页查询问题

分页查询问题
EN

Stack Overflow用户
提问于 2010-10-06 17:45:08
回答 3查看 352关注 0票数 2

下面是我的分页代码:

代码语言:javascript
复制
function getPagingQuery($sql, $itemPerPage = 10)
{
    if (isset($_GET['page']) && (int)$_GET['page'] > 0) {
        $page = (int)$_GET['page'];
    } else {
        $page = 1;
    }

    // start fetching from this row number
    $offset = ($page - 1) * $itemPerPage;

    return $sql . " LIMIT $offset, $itemPerPage";
}

function getPagingLink($sql, $itemPerPage = 10, $strGet ="")

{
    $result        = dbQuery($sql);
    $pagingLink    = '';
    $totalResults  = dbNumRows($result);
    $totalPages    = ceil($totalResults / $itemPerPage);

    // how many link pages to show
    $numLinks      = 10;


    // create the paging links only if we have more than one page of results
    if ($totalPages > 1) {

        $self = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] ;


        if (isset($_GET['page']) && (int)$_GET['page'] > 0) {
            $pageNumber = (int)$_GET['page'];
        } else {
            $pageNumber = 1;
        }

        // print 'previous' link only if we're not
        // on page one
        if ($pageNumber > 1) {
            $page = $pageNumber - 1;
            if ($page > 1) {
                $prev = " <a href=\"$self?page=$page&$strGet/\">[Prev]</a> ";
            } else {
                $prev = " <a href=\"$self?$strGet\">[Prev]</a> ";
            }    

            $first = " <a href=\"$self?$strGet\">[First]</a> ";
        } else {
            $prev  = ''; // we're on page one, don't show 'previous' link
            $first = ''; // nor 'first page' link
        }

        // print 'next' link only if we're not
        // on the last page
        if ($pageNumber < $totalPages) {
            $page = $pageNumber + 1;
            $next = " <a href=\"$self?page=$page&$strGet\">[Next]</a> ";
            $last = " <a href=\"$self?page=$totalPages&$strGet\">[Last]</a> ";
        } else {
            $next = ''; // we're on the last page, don't show 'next' link
            $last = ''; // nor 'last page' link
        }

        $start = $pageNumber - ($pageNumber % $numLinks) + 1;
        $end   = $start + $numLinks - 1;        

        $end   = min($totalPages, $end);

        $pagingLink = array();
        for($page = $start; $page <= $end; $page++)    {
            if ($page == $pageNumber) {
                $pagingLink[] = " $page ";   // no need to create a link to current page
            } else {
                if ($page == 1) {
                    $pagingLink[] = " <a href=\"$self?$strGet\">$page</a> ";
                } else {    
                    $pagingLink[] = " <a href=\"$self?page=$page&$strGet\">$page</a> ";
                }    
            }

        }

        $pagingLink = implode(' | ', $pagingLink);

        // return the page navigation link
        $pagingLink = $first . $prev . $pagingLink . $next . $last;
    }

    return $pagingLink;
}

我这样叫它:

代码语言:javascript
复制
$sql = "something";
$result     = mysql_query(getPagingQuery($sql, $rowsPerPage));  
$pagingLink = getPagingLink($sql, $rowsPerPage, $url);

现在如果我的url是这样的

http://xyz/abc/list.php它工作得很好。

但是当我的url像这样

http://xyz/abc/list.php?action=def

单击第2页后,url会像http://xyz/abc/list.php?page2&一样更改

'action=def‘部分没有了,所以结果会改变。

如果我使用将$strGet中的值作为$_SERVER‘’QUERY_STRING‘传递

第一次可以了,就像http://xyz/abc/list.php?page2&action=def

但从第二次开始,它就像http://xyz/abc/list.php?page3&page2&action=def

所以没有得到想要的结果。

而我希望它像http://xyz/abc/list.php?page3&action=def一样

请帮帮忙..提前感谢in

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-06 17:48:13

所以我认为你使用$_GET‘’page‘^^

代码语言:javascript
复制
$_GET['page']=$page;


$url = 'http://xyz/abc/list.php?';

foreach($_GET as $key=>$param) {

$url.=$key.'='.$param.'&';

}
票数 2
EN

Stack Overflow用户

发布于 2010-10-06 17:51:49

使用http_build_query()而不是$_SERVER['QUERY_STRING']

票数 0
EN

Stack Overflow用户

发布于 2010-10-06 17:58:11

我要做的是在设置$page = url code之前。我首先会在设置$page之前和之后回显它。这样我就可以确切地看到这些值是什么。我会在每次使用url设置$page之前和之后打印echo语句,以确保它是正确的。如果您在任何地方都可以看到这不是所需的输出,因为您可以从echo语句中看到这一点,那么您可以进行正确的更改,以确保正确设置了$page变量。为了正确设置它,我要做的就是清除$page变量,并确保使用url重新设置$page变量。

另外,在设置url时,请确保首先回显$strGet变量,以确保它是您想要设置的正确值。然后将url设置为$page变量。

通过执行这个简单的调试,您首先要确保所有的值都是正确的,并且在设置它们之前就知道了。

试一试,让我知道发生了什么PK

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3871247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档