Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Form, se sbaglio e torno indietro mi si cancella tutto

    Ciao ragazzi
    lavoro su Mac e utlizzo Safari e FireFox
    Ho realizzato un commercio elettronico (solo con contrassegno momentaneamente).

    Il cliente mi ha sollevato un quesito...
    Quando compilo il modulo e confermo per inviare tutti i dati (lista della spesa e dati utente) ad una pagina che li spedisce per mail, nel caso un campo richiesto non venga compilato o ci sia un errore avviso l'utente e gli printo un tasto che lo rimannda indietro...

    Ora... con safari se faccio back dalla freccie del browser mi mantiene i campi, per questo il mio pulsante fa un bel history.back()

    Ma su firefox e su ie per pc pare non funzioni... e quando tornano indietro alla pagina del form devono ricominciare da capo l'inserimento dei dati.

    Che devo rimandargli tutte le var per ricompilare automaticamente il form?
    Oppure è una questione di impostazioni del browser... oppure devo utilizzare un'altro metodo per tornare alla pagina in questione?

    Ciao e grazie

    se Mano lava Mano... Gina lava Gina

    ScrollbarsPainter05 per colorare le scrollbar

    Metaphysique - this stuff rocks!!!

  2. #2
    Si, devi rimandare tutte le variabili. Io per risolvere il problema uso sempre js. Ti posto il codice del pulsante:

    <input type="submit" name="invia" value="invia" onclick="this.form.action='link da seguire';this.form.submit()">

    La prte importante è onclick: lì devi inserire il link a cui punta il pulsante. Ciao!

  3. #3
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Il fatto se cliccando back i campi rimangano compilati o meno dipende solo ed esclusivamente dal browser, io se mi serve una funzionalità del genere, mi scrivo una funzione display_form, che prende come parametro un array di valori, e poi uso del codice tipo questo

    codice:
    function form_commento($data = array()) { ?>
      <form name="comment" method="post" action="<?=text2html($_SERVER['REQUEST_URI'])?>">
        
    
    Titolo:
          <input type="text" name="titolo" maxlength="50" value="<?=$data['titolo']?>">
        </p>
        <textarea id="commento" name="commento" wrap="VIRTUAL" cols="60" rows="7"><?=$data['commento']?></textarea>
          </p>
        
    
    Firma:
          <input type="text" name="firma" maxlength="30" value="<?=$data['firma']?>">
          (lasciare vuoto per un commento anonimo)
        </p>
        
    
    
          <input name="invia" type="submit" id="invia" value="Invia commento">
          <input type="reset" name="Submit3" value="Reimposta">
        </p>
      </form>
    <?
      } // fine form commento
    ?>
    quando vuoi stampare il form la chiami senza parametri così il form risulta vuoto, mentre nella pagina che riceve il form (io di solito uso lo stesso script), fai le verifiche sui dati e se i dati sono errati richiami la funzione con l'array $_POST come parametro e i campi saranno di nuovo compilati con i dati immessi dall'utente.

  4. #4
    Ciao Mircov !
    Quindi devo inserire nella pagina della form un echo in ogni che se c'è la la var me scrive direttamente nel campo?
    se Mano lava Mano... Gina lava Gina

    ScrollbarsPainter05 per colorare le scrollbar

    Metaphysique - this stuff rocks!!!

  5. #5
    Si. La cosa diventa un po' più complessa per i campi select: bisogna usare if ed else o uno switch secondo il caso per impostare il valore di default.

  6. #6
    Originariamente inviato da fabi080
    Il fatto se cliccando back i campi rimangano compilati o meno dipende solo ed esclusivamente dal browser, io se mi serve una funzionalità del genere, mi scrivo una funzione display_form, che prende come parametro un array di valori, e poi uso del codice tipo questo

    codice:
    function form_commento($data = array()) { ?>
      <form name="comment" method="post" action="<?=text2html($_SERVER['REQUEST_URI'])?>">
        
    
    Titolo:
          <input type="text" name="titolo" maxlength="50" value="<?=$data['titolo']?>">
        </p>
        <textarea id="commento" name="commento" wrap="VIRTUAL" cols="60" rows="7"><?=$data['commento']?></textarea>
          </p>
        
    
    Firma:
          <input type="text" name="firma" maxlength="30" value="<?=$data['firma']?>">
          (lasciare vuoto per un commento anonimo)
        </p>
        
    
    
          <input name="invia" type="submit" id="invia" value="Invia commento">
          <input type="reset" name="Submit3" value="Reimposta">
        </p>
      </form>
    <?
      } // fine form commento
    ?>
    quando vuoi stampare il form la chiami senza parametri così il form risulta vuoto, mentre nella pagina che riceve il form (io di solito uso lo stesso script), fai le verifiche sui dati e se i dati sono errati richiami la funzione con l'array $_POST come parametro e i campi saranno di nuovo compilati con i dati immessi dall'utente.
    Ma se il form viene caricato per la prima volta riceverai una valanga di notice...

  7. #7
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Io uso

    error_reporting = E_ALL & ~E_NOTICE

    in php.ini, che tra l'altro è il default di molte installazioni, e non fiata una mosca...

  8. #8
    Ciao Fabio...
    A questo punto faccio due form uno con ed uno senza gli echi (o echos) nei campi (bello l'echo nel campo, molto suggestivo).
    Con un isset se una var scopre che il form è gia stato compilato sceglie quello con gli echi... per le select me la cavo con un paio di nidi (ne ho solo una).

    Ce la posso fare.

    se Mano lava Mano... Gina lava Gina

    ScrollbarsPainter05 per colorare le scrollbar

    Metaphysique - this stuff rocks!!!

  9. #9
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Tra l'altro nel php.ini è riportato:

    ; E_NOTICE - run-time notices (these are warnings which often result
    ; from a bug in your code, but it's possible that it was
    ; intentional (e.g., using an uninitialized variable and
    ; relying on the fact it's automatically initialized to an
    ; empty string)

    se non puoi modificare il php.ini la puoi impostare con ini_set

    Ciao.

  10. #10
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Io sono a favore della funzione, mio modo di vedere le cose, per quanto riguarda le select puoi fare anche lì una funzione apposta, con un for ed un controllo sul valore di $_POST['nome_select'], secondo me quando possibile è meglio evitare if else nidificati.

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.