2014-01-16 31 views
1

我有分頁這段代碼PHP - 使用http_build_query爲分頁是給我重複參數

if($pages > 1 && $set <= $pages) { 
     ?> 
     <div class="pagination-bar"> 
     <?php 
     if($set > 1) { 
      ?> 
      <a href="?<?php echo http_build_query($_GET); ?>&page=1">&nbsp;<<<&nbsp;</a> 
      &nbsp; | &nbsp; 
      <a href="?<?php echo http_build_query($_GET); ?>&page=<?php echo ((int)$set - 1) ?>"><<</a> 
      &nbsp; | &nbsp; 
      <?php 
     } 

     for($i = 1; $i <= $pages; $i++) { 
      ?> 
      <a href="?<?php echo http_build_query($_GET); ?>&page=<?php echo $i.""; ?>"><?php echo $i; ?></a>&nbsp; | &nbsp; 
      <?php 
     } 
     if($set < $pages) { 
      ?> 
      <a href="?<?php echo http_build_query($_GET); ?>&page=<?php echo ((int)$set + 1); ?>">>></a> 
      &nbsp; | &nbsp; 
      <a href="?<?php echo http_build_query($_GET); ?>&action=list&page=<?php echo $pages; ?>">&nbsp;>>>&nbsp;</a> 
      <?php 
     } 
     ?> 
     </div> 
     <?php 
    } 

分頁欄看起來很完美:

1 | 2 | 3 | 4 | >> | >>>

< < < | < < | 1 | 2 | 3 | 4 | >> | >>>

的問題是,(例如)當我在第1頁...

,然後我點擊第3頁,我得到一個URL是這樣的:

mypage.php?item=products&page=1&page=3 

爲你可以看到有兩個'頁面'參數......我怎麼能避免這種情況?它仍然有效,它顯示了正確的頁面,它似乎忽略了與通過URL傳遞的名稱相同的第一個get參數。

回答

2

使用array_unique功能

​​

或者更好地利用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">&nbsp;<<<&nbsp;</a> 
     &nbsp; | &nbsp; 
     <a href="?<?php echo $query ?>&page=<?php echo ((int)$set - 1) ?>"><<</a> 
     &nbsp; | &nbsp; 
     <?php 
    } 

    for($i = 1; $i <= $pages; $i++) { 
     ?> 
     <a href="?<?php echo $query ?>&page=<?php echo $i.""; ?>"><?php echo $i; ?></a>&nbsp; | &nbsp; 
     <?php 
    } 
    if($set < $pages) { 
     ?> 
     <a href="?<?php echo $query ?>&page=<?php echo ((int)$set + 1); ?>">>></a> 
     &nbsp; | &nbsp; 
     <a href="?<?php echo $query ?>&action=list&page=<?php echo $pages; ?>">&nbsp;>>>&nbsp;</a> 
     <?php 
    } 
    ?> 
    </div> 
    <?php 
} 
+1

哪裏放呢?你能更好地解釋我嗎?感謝您的回覆 – JuanBonnett

+0

Chack更新,在這種情況下更好地使用替換正則表達式 –

+0

絕對地,這似乎工作!到目前爲止,我還沒有找到更好的解決方案。謝謝 – JuanBonnett