Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617

    Conservare dati del form dopo errore!

    Chiedo scusa, ma ho cercato e non trovo piu la pagina dove ho trovato la soluzione illo tempore.
    Siccome vado un po' di fretta mi trovo costretto a chiedere.

    Ho un form che passa a un foglio di elaborazione php delle variabili POST, esistono casi in cui lo script si ferma a causa di una mancanza dell'utente.In questi casi l'utente deve tornare indietro con il browser e correggere l'errore.Mi stà capitando però che quando si clicca su indietro con firefox il form viene resettato costringendo l'utente a dover riscrivere tutto il form(è bello lungo).

    Ricordo di aver utilizzato una volta uno script semplicissimissimo di tipo una riga che messo in intestazione della pagina di elaborazione permetteva al browser di tornare indietro senza resettare il form.

    Sapete ricordarmi qual'è? O magari un'altra soluzione per non far resettare il form in modo da non dover far riscrivere tutto.

    Grazie in anticipo!

  2. #2
    forse la riga era semplicissima ma l'esecuzione un po' meno se la riga citata era:

    session_start()

    Significa passare le variabili valide da $_POST all'array di sessione $_SESSION e poi riprenderle nel form. Ma bisognera' anche effettuare gli opportuni controlli per verificare la presenza della valorizzazione e quindi se mettere nel form il default o il valore riesumato da $_SESSION.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Bhe allora non capisco, ho messo all'inizio di ogni pagina

    session_start();

    come mai non si conserva i dati dei form?

    Va da se che a priori si apre una sessione quando qualcuno si collega alle pagine dell'amministrazione tramite log in, infatti se nn sei loggato nn entri in queste pagine.

    Help please, bloccarsi a fine lavoro è proprio brutto!

    Grazie!

  4. #4
    Utente di HTML.it L'avatar di Andy_87
    Registrato dal
    Jun 2010
    Messaggi
    323
    javascript:history.back();
    "Se non riuscirò a piegare gli dei del cielo, smuoverò le potenze dell'inferno"
    S. Freud

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Nulla da fare, non riesco a tornare indietro con i form pieni anche con il javascript.history.....!

    Ma com'è possibile?Mannaggia il diavolo!

    Non so piu cosa provare.

  6. #6
    Utente di HTML.it L'avatar di Andy_87
    Registrato dal
    Jun 2010
    Messaggi
    323
    Sicuro che non va history.back()? Come lo hai usato? Postami il codice.
    Prova a mettere questa riga nell'if che ti dovrebbe far tornare indietro

    <input type="button" value="Indietro" onClick="javascript:history.back()" name="button">

    Se funziona dopo lo fai in automatico, senza far cliccare sul pulsante, se invece non va dei usare le sessioni cioè quando passi i dati alla pagina php che li elabora li salvi in variabili di sessione e poi quando torni indietro li riprendi sempre dalle sessioni.
    "Se non riuscirò a piegare gli dei del cielo, smuoverò le potenze dell'inferno"
    S. Freud

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    il javascript che hai postato è uguale a quello che ho usato io(identico) e la posizione in cui l'ho messo è esattamente dentro l'if che mi fa tornare indietro.

    Per le sessioni ti chiedo conferma delle mie capacità!

    Allora, diciamo che al foglio di elaborazione arriva un variabile $_POST['titolo'] la infilo così nella sessione?


    $titolo=$_POST['titolo'];
    $_SESSION['titolo']=$titolo;

    Se la risposta è si, come faccio a recuperarle nella pagina a cui ritorno e a metterle negli appositi form?

    Grazie infinite!

  8. #8
    Utente di HTML.it L'avatar di Andy_87
    Registrato dal
    Jun 2010
    Messaggi
    323
    Esattamente, nella pagina del form scrivi così:
    <?php
    session_start();
    $titolo = $_SESSION['titolo'];
    ?>
    <input type="text" name="titolo" value="<?php echo $titolo; ?>">

    In questo modo quando arrivi al form per la prima volta hai le variabili di sessione vuote quindi i tuoi campi saranno vuoti, quando ci ritorni avrai le variabili piene e di conseguenza anche i campi saranno pieni. Poi, se vuoi, una volta che sei sicuro che non devi più tornare indietro, svuota le variabili di sessione perchè se per caso l'utente avesse bisogno di riutilizzare il form per inserire altri dati diversi da quelli di prima e lo facesse senza cambiare sessione, ritroverebbe i dati che ah inserito prima.

    PS: ricordati di aprire la sessione in ogni pagina dove usi le variabili di sessione con session_start();
    "Se non riuscirò a piegare gli dei del cielo, smuoverò le potenze dell'inferno"
    S. Freud

  9. #9
    Ciao mettiamo caso di avere due pagine,

    - form.php (la pagina con il form)
    - rec.php (la pagina che recupera i dati)

    la pagina form.php sara' piu' o meno cosi:
    Codice PHP:
    <?php
    session_start
    ();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    </head>

    <body>
    <form action="rec.php" method="post">
        Nome:<input type="text" name="nome" value="<?php echo $_SESSION["nome"]; ?>" />

        Cognome:<input type="text" name="cognome" value="<?php echo $_SESSION["cognome"]; ?>" />

        <input type="submit" value="go" name="form" />
    </form>
    </body>
    </html>
    mentre la pagina rec.php, oltre a le funzionalita' che gia' avra', dovra avere queste riche si codice prima degli header


    Codice PHP:
    <?php
    session_start
    ();

    /*recupera le variabili */
    $form $_POST["form"];
    $nome $_POST["nome"];
    $cognome $_POST["cognome"];

    /* inserisco valore in variabile di sessione*/
    $_SESSION["nome"] = $nome;
    $_SESSION["cognome"] = $cognome;

    /*a questo punto se torni indietro non perdi neanche una virgola */
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    </head>

    <body>
    Sessione creata 
    </body>
    </html>
    Ciaoo

  10. #10
    visto che le variabili passate in post sono un bel pò, potresti usare una cosa del genere

    Codice PHP:
    foreach($_POST $key => $value)
    {
      
    $_SESSION[$key]=$value;

    Poi nella pagina che contiene il form, devi metterei controlli delle varie variabili (Scusa il gioco di parole)

    Codice PHP:
    ($_SESSION['titolo']=='') ? $titolo='' $titolo=$_SESSION['titolo']; 
    E poi nel form mettere

    Codice PHP:
    <input type='text' name='titolo' value='<? echo $titolo?>' />

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.