Mafia II

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 -------------------------------------*/

5 Responses to “Odkazy ze stránek s parametrem v URL”

  1. petr.kratina Says:

    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 ;)

  2. tomas Says:

    Ha, díky za opravu ;)

  3. Jakub Vrána Says:

    Viz http_build_query().

  4. korny Says:

    pouzivat
    misto & → & aby jsi to mel validni

  5. tomas.fejfar Says:

    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.

Vložty komentář