• User

    Ricaricare i dati in un form

    Ciao a tutti,
    ho un form dove controllo se alcuni campi sono vuoti, vorrei che ogni volta che fallisce il controllo (quindi quando un campo è vuoto) non mi perdesse i dati che ho inserito, ma che mi venisse riproposta la pagina con i dati nei campi.
    Come posso fare?

    Grazie 1000,
    Federico 😉


  • User Attivo

    Ciao federico.s,
    per fare quello che vuoi tu devi impostare all'inizio del codice html del form e dello script php una variabile di sessione, e richiamarla successivamente.

    In questa discussione trovi un form contatti con questa impostazione, segui le regole e ti basterà solamente modificare i campi e la formattazione.

    Ciao.


  • User

    Grazie 1000 🙂
    ...non ho mai usato le sessioni, ci provo e poi ti faccio sapere.

    Buona gironata,
    Federico 😉


  • User

    Ciao Sandroid,
    ho dato un'occhio alle sessioni, ma non ci ho capito molto...scusami, ma sono un principiante.
    Quello che vorrei fare è molto semplice, provo a spiegarlo!
    Io ho una pagina (form_invio_dati.php) con due campi che inviano "nome utente" e "cognome utente" ad un altra pagina (form_ricevi_dati.php).
    La seconda pagina (quella che riceve i dati) controlla se "nome utente" è vuoto
    Se è pieno mi stampa il nome e il cognome dell'utente
    Se il campo è vuoto vorrei che mi riproponesse la pagina con una scritta che informa che manca il nome e mi ripropone i dati per i campi che ho valorizzato...nel mio caso il cognome.

    form_invio_dati.php
    [HTML]
    <body>
    <form method="post" action="form_ricevi_dati.php">
    Nome: <input type="text" name="nome_utente">
    <br/>
    Cognome: <input type="text" name="cognome_utente">
    <br/>
    <br/>
    <input type="submit" value="Invia">
    </form>
    </body>
    [/HTML]

    form_ricevi_dati.php
    [HTML]
    <body>
    <?php
    $nome_utente= $_POST['nome_utente'];
    $cognome_utente= $_POST['cognome_utente'];
    if(!empty($_POST['nome_utente']))
    {echo ('il nome è:' . "$nome_utente");
    echo ('il cognome è:' . "$cognome_utente");
    } else {
    echo ('Il campo nome è VUOTO');
    print <<<HTML
    <form method="post" action="$_SERVER[PHP_SELF]">
    Nome: <input type="text" name="$nome_utente">
    Cognome: <input type="text" name="$cognome_utente">
    <br/>
    <input type="submit" value="Invia">
    </form>
    HTML;

    }
    ?>
    </body>
    [/HTML]

    Grazie,
    Federico 😉


  • User

    Il valore da visualizzare lo devi mettere nell'attributo "value".
    Esempio:
    [html]<input type="text" name="nome_utente" value="$nome_utente" />[/html]


  • User Attivo

    Ciao, per fare una cosa semplicissima, se pensi che l'utente abbia fatto un errore, invialo ad un'altra pagina, con una descrizione tipo "i suo dati non sono corretti", poi mi sembra che ci sia in .jsript un istruzione che lo faccia tornare indietro, conservando i dati inseriti
    Ho scritto 4 righe ma per fare ciò ci vogliono poche lettere.
    Ciao


  • User

    Grazie 1000 ad entrambi!
    Inserendo il POST come valore ho risolto, era quello che volevo ottenere.

    Per quanto riguarda il JScript ci avevo pensato, avevo inserito uno script che restituiva un messaggio nel caso in cui non fossero rispettati alcuni criteri, ma poi ho letto in giro che JScript è meno sicuro dato che gira lato client e che era meglio usare un linguaggio che girasse sul server...è vero?

    Ciao,
    Federico


  • User Attivo

    @federico.s said:

    Grazie 1000 ad entrambi!
    Inserendo il POST come valore ho risolto, era quello che volevo ottenere.

    Per quanto riguarda il JScript ci avevo pensato, avevo inserito uno script che restituiva un messaggio nel caso in cui non fossero rispettati alcuni criteri, ma poi ho letto in giro che JScript è meno sicuro dato che gira lato client e che era meglio usare un linguaggio che girasse sul server...è vero?

    Ciao,
    Federico

    Ciao, di solito anche io faccio fare tutto al PHP è più sicuro, il mio consiglio era tipo questo, la pagina PHP elabora, se incontra un ko, ti invia ad una pagina con un messaggio di errore, in questa mettevi un pulsante con questo codice

    javascript:history.back()
    

    questa riga non fa altro che riprodurre la freccia in altro del browser che ti porta avanti e indietro. Sono contento che tu sia riuscito nell'altra maniera e ti chiederei se per cortesia postassi l'intero codice, così da poterne usufruire insieme agli amici del forum
    Grazie da danny:ciauz:


  • User

    Ciao a tutti,
    vorrei mostrarvi la pagina php completa con i controlli sui due campi (nome, cognome) e il recupero dei dati nel caso ci siano degli errori, ma il ciclo che ho creato non mi restituisce i risultati che vorrei.
    Ho fatto una pagina di controllo semplificata dove non richiamo il form con recupero dati, ma stampo a video solo dei messaggi in base ai dati, potete aiutarmi?
    Funziona solo se i campi sono entrambi vuoti o entrambi pieni.
    Questa è la pagina "from_ricevi_dati.php", la pagina per l'invio non è stata modificata.

    [HTML]
    <body>
    <?php
    if ((!empty($_POST['nome_utente']))&&(!empty($_POST['nome_utente']))){
    echo "Dati OK";
    if (empty($_POST['nome_utente'])){
    echo "Manca il nome utente";}
    if (empty($_POST['cognome_utente'])){
    echo "Manca il cognome utente";}
    }else{
    echo "Non è stato inserito alcun dato";
    }
    ?>
    </body>
    [/HTML]

    Grazie,
    Federico 😉


  • User

    Prova in questa maniera:

    [PHP]<body>
    <?php
    if ((!empty($_POST['nome_utente']))&&(!empty($_POST['nome_utente']))){
    echo "Dati OK";}
    elseif((empty($_POST['nome_utente']))&&(empty($_POST['nome_utente']))){
    echo "Non è stato inserito alcun dato";}
    elseif(empty($_POST['nome_utente'])){
    echo "Manca il nome utente";}
    else{
    echo "Manca il cognome utente";}
    ?>
    </body>[/PHP]


  • User

    Ciao Cyrus,
    no, non funziona, mi restituisce solo i messaggi "Dati OK" e "Non è stato inserito alcun dato" anche quando valorizzo un campo.

    Grazie,
    Federico 😉


  • User

    Ciao, perchè mi sono sbagliato nel primo if e nel primo elseif ... ho fatto un and dello stessa variabile. Sostituisci in entrambi i controlli uno dei due nome_utente con il cognome.


  • User

    Perfetto, sono stato uno sbadato io a non guardarci, adesso funziona, grazie 1000 Cyrus.
    Di seguito posto il codice completo (solo della pagina "form_ricevi_dati.php", la prima resta uguale), scusate per la banalità dell'esempio, ma sono alle prime armi...anzi, vi ringrazio se vorrete fare delle modifiche o delle critiche 🙂

    [HTML]

    <body>
    <?php
    if ((!empty($_POST['nome_utente']))&&(!empty($_POST['cognome_utente']))){
    echo "Dati OK";
    }elseif((empty($_POST['nome_utente']))&&(empty($_POST['cognome_utente']))){
    Showform();
    }elseif(empty($_POST['nome_utente'])){
    $errore_nome="Non è stato inserito il NOME";
    showform();
    }else{
    $errore_cognome="Non è stato inserito il COGNOME";
    showform();
    }

    function showform() {
    $nome_utente= $_POST['nome_utente'];
    $cognome_utente= $_POST['cognome_utente'];
    global $errore_nome;
    global $errore_cognome;
    print <<<HTML
    <form method="post" action="$_SERVER[PHP_SELF]">
    Nome: <input type="text" name= "nome_utente" value= "$nome_utente"> $errore_nome
    <br/>
    Cognome: <input type="text" name= "cognome_utente" value ="$cognome_utente"> $errore_cognome
    <br/>
    <input type="submit" value="Invia">
    </form>
    HTML;
    }

    ?>
    </body>

    [/HTML]

    Ciao,
    Federico 😉