Visualizzazione risultati 1 fino 9 di 9

Discussione: [PHP]Perdita valori $_GET

  1. #1
    Guest

    Question [PHP]Perdita valori $_GET

    Salve gente, e' da ieri sera che mi scervello per capire quale sia il problema.
    Io ho diversi form dove invio dei dati attraverso il metodo GET, del tipo:
    FORM1:
    Codice HTML:
    <form method="GET" name="form1">
    	<span>Scegli1:</span>
    		<select name="scegli1">
            	<option value=""></option>
    			<option value="a">a</option>
                            <option value="b">b</option>
    		</select>
        <input type="submit" name="conferma1" value="Conferma" />
    </form>
    Codice PHP:
    if(isset($_GET['conferma1']) && $_GET['scegli1']!=""){
    header("Location: ?form=1&scegli1=".$_GET['scegli1']."");
    }
    Il problema è che arrivato al secondo form e premuto il tasto Conferma perdo i dati precedenti, in questo caso perdo $_GET['scegli1'].
    Avevo quindi pensato a passarlo in una variabile del tipo:
    Codice PHP:
    $scelta_form1=$_GET['scegli1'];
    Solo che fino a prima di premere il tasto Conferma del secondo form il valore è corretto ma appena lo premo si annulla pure qui.

    Sapete aiutarmi?

    Grazie

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    A me sembra funzionare correttamente.

    Anche se, vedendo il codice, io avrei almeno specificato la pagina ( ./ ):
    Codice PHP:
    header("Location: ./?form=1&scegli1=".$_GET['scegli1']."");
    e avrei messo un action al form.

    Ciao!

  3. #3
    Guest

    Predefinito

    A me funziona con un solo form ma io in base alla scelta fatta faccio apparire un altro form ed è qui che nasce il problema.
    Una volta fatto il "submit" del nuovo form perdo il valore del form precedente.

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    Ah beh, è normale: devi aggiungere all'action i parametri precedenti. Del tipo:
    Codice PHP:
    <form action="./?param_precedente=<?= $_GET['precedente1'] ?>&due=<?= $_GET['precedente2'] ?>" ... >
    Ma usare i cookie?

    Ciao!

  5. #5
    Guest

    Predefinito

    Avevo pensato all'uso dei cookie ma siccome serve anche che l'utente possa salvare una determinata pagina tra i preferiti,ecc.. preferisco fare tutto in questo modo.
    Poi non so, io ho avuto questa idea, magari ci sono altri modi per agire :)

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    Ok, comunque invece di riscrivere tutti i parametri, ovviamente per non impazzire è bene fare una cosa "automatizzata", del tipo:
    Codice PHP:
    $parametri = '?';
    foreach(
    $_GET as $chiave=>$valore)
    {
    if(
    $parametri != '?') //se non siamo al primo giro
    $parametri .= '&';
    $parametri .= $chiave.'='.$valore;
    }
    Ciao!

  7. #7
    Guest

    Predefinito

    O non ho capito io o magari mi sono espresso male.
    Ho provato a mettere l'action nel form ma non mi va comunque... riporto il codice:
    Codice PHP:
    <?php
    if(empty($_GET['form'])){
    ?>
    <form method="GET" name="form1">
    <span>Scegli1:</span>
    <select name="scegli1">
    <option value=""></option>
    <option value="a">A</option>
    <option value="b">B</option>
    </select>
    <input type="submit" name="conferma1" value="Conferma" />
    </form>
    <?php
    }
    if(isset(
    $_GET['conferma1']) && $_GET['scegli1']!=""){
    header("Location: ?form=1&scegli1=".$_GET['scegli1']."");
    }
    else if(isset(
    $_GET['conferma1']) && $_GET['scegli1']==""){
    header("Location: http://".$_SERVER['HTTP_HOST']."/cartella");
    }
    ?>
    <?php
    if($_GET['form']=="1" && $_GET['scegli1']=="a"){
    ?>
    <form method="GET" name"scegli2" action="./?form=1&dipartimento=<?= $_GET['dipartimento']?>">
    <span>Scegli2:</span>
    <select name="scegli2">
    <option value=""></option>
    <option value="b">B</option>
    <option value="c">C</option>
    </select>
    <input type="submit" name="conferma2" value="Conferma" />
    <input type="submit" name="indietro_1" value="Indietro" />
    </form>
    <?php
    }
    if(isset(
    $_GET['conferma2']) && $_GET['scegli2']!=""){
    header("Location: http://".$_SERVER['HTTP_HOST']."/cartella/?form=2&scegli1=".$_GET['scegli1']."&scegli2=".$_GET['scegli2']."");
    }
    else if(isset(
    $_GET['indietro_1'])){
    header("Location: http://".$_SERVER['HTTP_HOST']."/cartella/");
    }
    else if(isset(
    $_GET['conferma2']) && $_GET['scegli2']==""){
    header("Location: http://".$_SERVER['HTTP_HOST']."/cartella/?form=1&scegli1=".$_GET['scegli1']."");
    }
    ?>
    Comunque non ho ben capito come implementare il metodo da te proposto per fare il tutto "automatizzato"

    Grazie.
    Ultima modifica di mathis : 16-02-2014 alle ore 21.05.11 Motivo: Aggiunta codice

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    Visto che header() influisce nell'header della pagina, per modificare i parametri dell'header (location), non devi scrivere alcun output html prima. Quindi tutti quei controlli e header() devi farli prima di tutto.

    Le righe che ti ho scritto, mettono dentro $parametri tutti i parametri get pronti per esser inseriti nell'url dell'action.

    Prova a modificare le posizioni degli header(), poi se non funziona ancora guardo lo script.

    Ciao!

  9. #9
    Guest

    Predefinito

    Ho spostato il tutto all'inizio ed ottengo lo stesso risultato

    ---RISOLTO---
    Alla fine ho risolto aggiungendo dei campi input hidden in modo da memorizzare i valori del form precedente.
    Ultima modifica di mathis : 17-02-2014 alle ore 17.14.09

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •