Php 分页查询问题
这是我的分页代码:Php 分页查询问题,php,Php,这是我的分页代码: 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
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;
}
现在如果我的url是
工作正常
但是当我的url是
在我点击第2页后,url改变如下
“action=def”部分已消失,因此结果会发生变化
如果我使用将$strGet中的值作为$\u SERVER['QUERY\u STRING'传递
第一次就可以了
但从第二次开始,它给出了
因此没有得到预期的结果
而我希望它是这样的
请帮忙。。提前XX ,所以我认为你使用$$GET [页面] ^ ^
$_GET['page']=$page;
$url = 'http://xyz/abc/list.php?';
foreach($_GET as $key=>$param) {
$url.=$key.'='.$param.'&';
}
使用
http\u build\u query()。我会在设置$page前后首先回显它。这样我就可以准确地看到这些值是什么。每次使用url设置$page时,我都会在前后打印echo语句,以确保它是正确的。如果在任何地方您可以看到它不是期望的输出,因为您可以从echo语句中看到,那么您可以进行正确的更改,以确保$page变量设置正确。
然后,我要做的是正确设置$page变量,并确保$page变量随后与url一起重新设置
另外,在设置url时,请确保$strGet变量也首先被回送出来,以确保它是您要设置的正确值。然后将url设置为$page变量
通过进行这个简单的调试,您首先要确保所有的值都是正确的,并且在设置它们之前就知道是正确的
试一试
让我知道会发生什么
PK但是如果url包含更多值?像下面的/xyz/abc/list.php?action=def&name=COMPLETED&child=status&parent=status然后wat to do bcoz my url sud是相同的,然后转到下一页,否则值将被更改。但是您应该使用“page”作为参数,让$_GET['page']=$page问题是$strGet第一次以action=def的形式获取值,但下一次(当页面重新加载时)需要page2&action=def,然后是page3&page2&action=def,因此无法获得正确的结果。
$_GET['page']=$page;
$url = 'http://xyz/abc/list.php?';
foreach($_GET as $key=>$param) {
$url.=$key.'='.$param.'&';
}