2013-03-25 217 views
1

排序名單我有這是由一個GET請求,它看起來像引發了搜索功能:http://localhost:8888/TESTCI/search/get_books?i-slider=7.0&rt-slider=70&start-year=1955&end-year=2013&genre=all&language=all使用GET請求

這是所有罰款和搜索功能按預期工作。當我想根據年份,流派,語言等對結果進行排序時,問題就出現了。我在結果頁面上有很多鏈接,我嘗試使用這些鏈接進行排序。鑑於我沒有在頁面上重新提交值的表單,我的想法是使鏈接等於當前的URL加上GET參數進行排序。當年那種幸福的一個例子:

$year_sort_class = "ui-btn-active ui-state-persist sort-desc"; 
$year_sort_order = "&sort-by=year-asc"; 

<li class="<?php echo $year_sort_class ?>"><a href="<?php echo $_SERVER['REQUEST_URI'].$year_sort_order ?>">Year</a></li> 

是發生在我的排序是,現在$_SERVER['REQUEST_URI']等於我原來的URL加上&sort-by=year-asc明顯的問題。這意味着任何進一步的分類,無論是按流派,語言或一年一次,會不斷追加,導致URL中的URL可能看起來後4種類似

http://localhost:8888/TESTCI/search/get_books?i-slider=7.0&rt-slider=70&start-year=1955&end-year=2013&genre=all&language=all&sort-by=rt-desc&sort-by=i-desc&sort-by=year-desc&sort-by=i-desc 

如何解決這個問題?我在這裏錯過了一些基本的東西,並使問題完全複雜化了?

回答

1

嘗試這樣的事情...

<? 
    $href = explode('?',$_SERVER['REQUEST_URI']); 
    $href = $href[0]; 

    $qs = array(); 
    foreach ($_GET as $param => $val) { 
     if ($param != 'sort-by') $qs[$params] = $val; 
    } 
?> 

<a href="<?=$href.'?'.implode('&',$qs).'&sort-by="year"?>">Year</a> 
0

做一個正則表達式匹配刪除以前那種剩。

preg_replace('/\&sort\-by\=([a-zA-Z0-9-_]+)/','',$_SERVER['REQUEST_URI']); 
0

你可以引入的baseUrl變量和函數

function buildLink($sort = "year-asc", $foo = "default") { 
    $baseUrl = "http://localhost:8888/TESTCI/search/get_books?"; 
    return $baseurl.$sort."&".$foo; 
} 

print "<a href='".buildLink("year-desc")."'>My Book</a> 
+0

問題是如何存放包裹它,並堅持了的baseUrl 。它並不總是相同的,實際上可能完全不同 – garethdn 2013-03-25 23:11:29

+0

Baseurl對於您的應用程序的安裝或每本書的不同而言是不同的? – herrjeh42 2013-03-26 06:36:00