2013-02-21 34 views
0

我試圖使用addUrlParameter函數從該 php - add/update a parameter in a url使用addurlparameter重新查詢字符串

,但我不能讓它爲我的具體問題工作,我在絕望中希望有人能幫助我。

截至目前我使用的這個處理形式,並從形式交

$get_elements = array_filter($_GET, "strlen");   
$url = http_build_query($get_elements); 

$search_pattern = array(); 
$search_pattern[0] = "/([?&]newpage)=[^&]*/"; 
$search_pattern[1] = "/([?&]next)=[^&]*/"; 

$search_replacements = array(); 
$search_replacements[0] = ''; 
$search_replacements[1] = ''; 

$new_url = preg_replace($search_pattern, $search_replacements, $url); 
header("Location: index.php?page=". $_GET["newpage"] ."&".$new_url); 

這是好的,但創建一個URL,當我走一步,輸入一個新值一定參數,新的值不會在新的URL中更新 - 它使用舊的值。

比方說,我填寫,我想某個產品的4個項目,並張貼到下一頁的形式。然後我意識到我已經記錄了該產品的7個項目 - 然後我退後一步,輸入7並重新發布。我的問題是,它不會更新該產品的參數與7,它只是插入一個新的參數與7相同的名稱作爲值,但最終的網址使用參數與4作爲值

ie:

http://www.domain.com/formhandler.php?vent_45=&udluftning_plast=7&udluftning_fald=&udluftning_ventitegl=&tagfod=fuglegitter&chimney_afstand_tagrende=&udluftning_plast=4&tagfod=fuglegitter&afslutning_sten=dv&topsten=utop&angle_1=45&mainhouse=1&house=1&rooftype=mu&lang=dk&rooftiletype=1&rid=1&producent=h&newpage=inputdims&next=N%C3%A6ste+trin+%C2%BB 

凡在本例中,參數爲udluftning_plast - 網址有兩個該參數,但使用的最後一個 - 我需要它來刪除舊的和更換hwith新的價值。

然後我嘗試從上面的鏈接使用addUrlParameter函數,但我無法讓它工作。

這裏棘手的部分是,在頁面上填寫項目數量時需要更新不同的項目,以便以某種方式動態更新網址。

編輯:

我可以看到addUrlParameter功能在其中,新的值設置查詢字符串的開頭刪除了每個dublicate參數。所以這可能是問題所在。我究竟做錯了什麼?

如果我在addUrlParameter年初的var_dump($ url_data)我得到這個網址的所有參數:

array(4) { ["scheme"]=> string(4) "http" ["host"]=> string(22) "www.domain.com" ["path"]=> string(19) "/ny/formhandler.php" ["query"]=> string(431) "vent_45=&udluftning_plast=6&udluftning_fald=&udluftning_ventitegl=2&tagfod=fuglegitter&chimney_afstand_tagrende=&vent_45=&udluftning_plast=4&udluftning_fald=&udluftning_ventitegl=2&tagfod=fuglegitter&chimney_afstand_tagrende=&afslutning_sten=dv&topsten=utop&angle_1=45&mainhouse=1&house=1&rooftype=mu&lang=dk&rooftiletype=1&rid=1&producent=h&newpage=venting&next=N%C3%A6ste+trin+%C2%BB&newpage=inputdims&next=N%C3%A6ste+trin+%C2%BB" } 

當我在函數結束的var_dump($ url_data)我得到這個網址更新的參數刪除:

array(4) { ["scheme"]=> string(4) "http" ["host"]=> string(22) "www.domain.com" ["path"]=> string(19) "/ny/formhandler.php" ["query"]=> string(274) "vent_45=&udluftning_plast=4&udluftning_fald=&udluftning_ventitegl=2&tagfod=fuglegitter&chimney_afstand_tagrende=&afslutning_sten=dv&topsten=utop&angle_1=45&mainhouse=1&house=1&rooftype=mu&lang=dk&rooftiletype=1&rid=1&producent=h&newpage=inputdims&next=N%C3%A6ste+trin+%C2%BB" } 

我打電話的功能是這樣的:

foreach($_GET as $key => $value) {  
    addURLParameter("http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]", $key, $value); 
} 
+0

如果我這樣做:addURLParameter( 」HTTP:// $ _ SERVER [HTTP_HOST] $ _SERVER [REQUEST_URI]「,」 udluftning_plast 「,7);它的工作原理,但這顯然是非常錯誤的,因爲我不知道參數將被更新,並與哪些值。 – 2013-02-21 09:21:25

+0

實際上,這就是_exactly_你想要做的 - 該函數要麼添加一個新的參數,要麼更新現有的參數。 – Raad 2013-02-21 12:15:46

+0

哦......你能指導我如何更新現有參數的正確方向嗎? – 2013-02-21 13:20:19

回答

0

addURLParameter是一個函數,它返回一個新的url,或者在提供的url中插入一個新參數,或者(如果該參數已經存在於提供的url中)用新值更新現有參數。

所以,如果你有:

$myUrl = http://www.mysite.com/mypage.php?a=1&b=2 

,你執行

$myNewUrl = addURLParameter($myUrl, "c", 99); 

$ myNewUrl將

http://www.mysite.com/mypage.php?a=1&b=2&c=99 

,如果你要執行

$myNewUrl = addURLParameter($myUrl, "b", 99); 

$ myNewUrl將

http://www.mysite.com/mypage.php?a=1&b=99 

所以,如果你需要更新只是「udluftning_plast」的基礎上,從一個表單提交傳入的一個值:

$udluftning_plast_val = $_GET["udluftning_plast"]; 
$url = addURLParameter("http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]", "udluftning_plast", $udluftning_plast_val); 

如果表單與提交的「 udluftning_plast 「具有99的值字段,然後$網址將包含一個單一的參考udluftning_plast:...&udluftning_plast=99...

+0

如果我手動設置該參數,它的工作原理是完美的,但我的問題是,該值由用戶輸入設置,並且他/她可以填寫任何數字。在「udluftning_plast」字段的頁面上還有其他可以填寫的字段。因此,我需要它刪除舊參數並將其替換爲新參數 - 如果您願意,也可以更新參數。 – 2013-02-22 07:35:21

+0

嗯..這似乎沒有工作!我必須在另一個地方出錯。 – 2013-02-22 11:40:28