blog personale

PHP. Capita spesso di voler richiamare una pagina (che è stata già chiamata con dei parametri).
Per non dover ogni volta riscrivere la url da zero, si possono sovrascrivere (o aggiungere se non ci sono già) i parametri in GET con la funzioncina ,codice a fondo post. Esempio : in una pagina di navigazione recordset stiamo visualizzando la pagina X di Y (quindi in GET ci saranno già dei parametri che vogliamo mantenere ), e serve un link alla pagina che però cambi l’ordinamento:

Cioè se la pagina corrente era
pagina.php?order=id&page=4&table=tabella
il link dovrebbe essere
pagina.php?order=nome&page=4&table=tabella

Usiamo la funzione e scriviamo
<a href="pagina.php<?=makeUrl( array("order"=>"nome") )?>">ordina tabella per nome</a>
fregandocene dei parametri correnti che verranno mantenuti

Qualcuno ha avuto qualche altra idea per risolvere il problema ? commentate !

//rileggo i parametri GET e li sovrascrivo con quelli passati, restituendo la URL
function makeUrl($overGet)
    {
      $get = $GLOBALS['_GET'];
     
      // overWrite GET
      foreach($overGet as $k => $v)
      {
        $get[$k] = $v;
      }
      // make Url
      $ga = array();
      foreach($get as $k => $v)
      {
        $ga[] = urlencode($k)."=".urlencode($v);
      }
      //
      return implode("&", $ga);
    }

7 Responses to “PHP: Mantenere parametri GET nelle url”

  1. Giovanni

    on June 20 2008

    Ciao Elvis! Mi ricordo di aver avuto anche io questa esigenza, ed ho scoperto questa funzione:

    http://it2.php.net/manual/it/function.http-build-url.php

  2. admin

    on June 21 2008

    immaginavo ci fosse qualcosa di già pronto…
    le cose semplici cmq preferisco sempre farle io per averle sotto controllo.
    grazie della dritta, pecl in effetti non lo guardo mai.
    ciao Giovanni !

  3. Demo

    on June 22 2008

    Io malato del php =)))). Mi sono messo a fare diversi esperimenti e sono arrivato ad una simpatica conclusione =))). Ho creato due funzioni perchè volevo eliminare le parentesi graffe. Ho anche abusato dell’operatore ternario per avere meno codice possibile. Pessima programmazione ma io adoro, come sai, rendermi la vita difficile con codici come questi =).

    $v)
    $qs .= ++$i-count($_GET) ? “$k=”.sel_v ($a,$k,$v,$b).”&” : “$k=”.sel_v ($a,$k,$v,$b).”";
    return $qs;
    }

    echo re_qs(”sandro”, “patacchio”);

    ?>

  4. Demo

    on June 22 2008

    Non ha scritto correttamente il codice:

    function sel_v ($a,$k,$v,$b)
    {
    return $a != $k ? $v : $b;
    }

    function re_qs($a, $b)
    {
    foreach($_GET as $k => $v)
    $qs .= ++$i-count($_GET) ? “$k=”.sel_v ($a,$k,$v,$b).”&” : “$k=”.sel_v ($a,$k,$v,$b).”";
    return $qs;
    }

    echo re_qs(”sandro”, “patacchio”);

  5. Demo Web Log

    on June 23 2008

    Riscrivere QueryString automaticamente…

    Questo post non è troppo originale, la verità è che volevo sperimentare l’uso dei TrackBack.
    Nel post originale si poneva il problema di riscrivere intere querystring senza dover fare troppa fatica e dovendone sostituire qualche valore. La mia……

  6. Casino 1274727435

    on May 24 2010

    Casino 1274727435…

    Casino 1274727435…

  7. Casino 1277305669

    on June 23 2010

    Casino 1277305669…

    Casino 1277305669…

Comment RSS · TrackBack URI

Leave a comment

Name: (Required)

E-mail: (Required)

Website:

Comment:

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word


 

Ultimi post

About Me

Blog tecnico/geek di Elvis. Chi sono ? studente & web developer freelance. Vedi la pagina "about me" per altre info.

scontiPHP