我有这个分页代码
if($pages > 1 && $set <= $pages) {
?>
<div class="pagination-bar">
<?php
if($set > 1) {
?>
<a href="?<?php echo http_build_query($_GET); ?>&page=1"> <<< </a>
|
<a href="?<?php echo http_build_query($_GET); ?>&page=<?php echo ((int)$set - 1) ?>"><<</a>
|
<?php
}
for($i = 1; $i <= $pages; $i++) {
?>
<a href="?<?php echo http_build_query($_GET); ?>&page=<?php echo $i.""; ?>"><?php echo $i; ?></a> |
<?php
}
if($set < $pages) {
?>
<a href="?<?php echo http_build_query($_GET); ?>&page=<?php echo ((int)$set + 1); ?>">>></a>
|
<a href="?<?php echo http_build_query($_GET); ?>&action=list&page=<?php echo $pages; ?>"> >>> </a>
<?php
}
?>
</div>
<?php
}
分页栏看起来很完美:
1 | 2 | 3 | 4 | &GT;&GT; | &GT;&GT;&GT;
或
&LT;&LT;&LT; | &LT;&LT; | 1 | 2 | 3 | 4 | &GT;&GT; | &GT;&GT;&GT;
问题在于(例如)当我在第1页...
时然后我点击Page 3我得到一个像这样的网址:
mypage.php?item=products&page=1&page=3
你可以看到有两个页面&#39;参数......我怎么能避免这个?它仍然有效并显示正确的页面,它似乎忽略了第一个带有通过URL传递的相同名称的get参数。
答案 0 :(得分:2)
使用array_unique功能
$_GET = array_unique ( $_GET );
或者更好地使用preg_replace功能:
$query = http_build_query($_GET);
$query = preg_replace('/page=\d*/i', '', $query);
所以
<?php
if($pages > 1 && $set <= $pages) {
$query = http_build_query($_GET);
$query = preg_replace('/page=\d*/i', '', $query);
?>
<div class="pagination-bar">
<?php
if($set > 1) {
?>
<a href="?<?php echo $query ?>&page=1"> <<< </a>
|
<a href="?<?php echo $query ?>&page=<?php echo ((int)$set - 1) ?>"><<</a>
|
<?php
}
for($i = 1; $i <= $pages; $i++) {
?>
<a href="?<?php echo $query ?>&page=<?php echo $i.""; ?>"><?php echo $i; ?></a> |
<?php
}
if($set < $pages) {
?>
<a href="?<?php echo $query ?>&page=<?php echo ((int)$set + 1); ?>">>></a>
|
<a href="?<?php echo $query ?>&action=list&page=<?php echo $pages; ?>"> >>> </a>
<?php
}
?>
</div>
<?php
}