我試圖使用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);
}
如果我這樣做:addURLParameter( 」HTTP:// $ _ SERVER [HTTP_HOST] $ _SERVER [REQUEST_URI]「,」 udluftning_plast 「,7);它的工作原理,但這顯然是非常錯誤的,因爲我不知道參數將被更新,並與哪些值。 – 2013-02-21 09:21:25
實際上,這就是_exactly_你想要做的 - 該函數要麼添加一個新的參數,要麼更新現有的參數。 – Raad 2013-02-21 12:15:46
哦......你能指導我如何更新現有參數的正確方向嗎? – 2013-02-21 13:20:19