Odkazy ze stránek s parametrem v URL
Červen 26th, 2008
Disclaimer:
Celou tuto funkcionalitu vám poskytuje použití http_bild_query() :) Děkuji Jakubu Vránovi za nakopnutí.
Dneska tu mám opět jeden špíček :)
Při dělání stránkování sem zjistil nehezkou věc – v URL mam parametr „q“ který obsahuje vyhledávaný výraz. Aby se dalo odkazovat na přesnou stránku výsledků hledání je potřeba tam dát odkazy, které do URL přidají parametr „page“. Zdálo by se, že je to pohodička, ale najednou sem zjistil, že nevim, jak na to, aby se mi zachoval parametr „q“ při procházení stránek.
Něco jako
$href = "?page=3";
nepůjde :) Protože pokud je už v url parametr, tak se další musí přidat pomocí „&“. Ejk! Kód
$href = "&page=3";
nepůjde zase když nemáme v URL parametr.
Tohle vypadá nadějně…
$href = "?".implode("&",array("page=3",$_SERVER['QUERY_STRING'])
Jenže to taky nepůje :( Protože se vám budou „usazovat“ v URL postupně všechny „page“…
nakonec je jediná šance přes $_GET pole.
/**
* setParamToUrl
* @return anchor href
* @param key $_GET key to add
* @param val coresponding value
* @author Tomáš Fejfar
*/
function setParamToUrl ($key, $val)
{
$get = $_GET;
$get[$key] = $val;
foreach($get as $key=>$val){
$arr[] = "$key=$val";
}
return $_SERVER["REWRITE_URI"] . "?" . implode("&",$arr);
} /* of setParamToUrl -------------------------------------*/
Home
Červenec 6th, 2008 at 16.25
Vice mene stejne to delam taky, jen doporucuji drobnou upravu:
$get[$key] = urlencode($val);
protoze pokud vim tak promene v poli $_GET jsou uz dekodovane a pouhe zasazeni do query stringu by ti je mohlo pekne rozjebat, treba kdyz hledas: Itchy & Scratchy ;)
Červenec 8th, 2008 at 14.48
Ha, díky za opravu ;)
Prosinec 2nd, 2009 at 1.04
Viz http_build_query().
Prosinec 6th, 2009 at 18.12
pouzivat
misto & → & aby jsi to mel validni
Leden 16th, 2010 at 17.02
Jakub: Jo, nedávno jsem viděl její použití u tebe na blogu a od té doby jí používám. Nějak nebyla šance (kromě pročtení manuálu stranu po straně) jí najít. Nikdy jsem jí neviděl použitou :D
Článek jsem samozřejmně upravil.