Form dopo errori

oscar

Nuovo Utente
17 Apr 2014
29
0
1
Ciao a tutti, vorrei se possibile qualche idea su come fare con un form. La situazione sarebbe :
Ho un form con tre campi, nome, cognome e email; l'utente sbaglia scrivendo l'email con un formato che non corrisponde (l'errore sorpassa l'html5) e un metodo php lo scopre invalidando il passaggio al db. A questo punto vorrei ritornare al client il formulario completo dei dati che aveva inserito e in più un messaggio di errore sotto la casella che contiene l'errore. Ed è qui che mi torna il form vuoto come si fosse la prima volta.
Avendo fatto per ogni input del form :
PHP:
<input type="email" name="e_mail" autocomplete="off" required>
                <br>
                <?php
                    $errori->stampaErr6();
                ?>
stampaErr6() dovrebbe stampare la prima volta una stringa vuota e a form riproposto una stringa con un messaggio. Mi sembra che il problema principale sia, come posso fare il ritorno del form con i dati già inseriti nelle caselle sfruttando php? Ho pensato di utilizzare header() ma non so come accodargli i dati, tutte le volte mi ritorna un form senza i dati stampati. Qualche spunto? Ringrazio in anticipo le possibile risposte.
 

zorro

Utente Attivo
20 Ott 2014
230
10
18
ROMA
Ciao Oscar,
se non ho capito male, tu vorresti che,. una volta inseriti i dati nel form (anche se sbagliati) questi venissero in qualche modo memorizzati e,
in caso di riproposta del form, questo non sia vuoto ma riporti i dati già inseriti dall'utente. Per fare questo il mio consigllio è di usare le SESSION per memorizzare, ed eventualmente riproporre, i dati passati tramite form (che avrà anch'esso estensione .php e non più .html
Ciao


Zorro
 

oscar

Nuovo Utente
17 Apr 2014
29
0
1
grazie zorro, è proprio così, in pratica se l'utente sbaglia qualche dato il server ripropone il form con tutti i dati inseriti originariamente e in più un messaggio magari di fianco al campo sbagliato segnalando l'errore. Adesso vedo il tema delle sessioni che avevo trascurato e come includere nei campi questi dati.
 

zorro

Utente Attivo
20 Ott 2014
230
10
18
ROMA
Se dovessi avere qualche problema con le sessioni, ti posto il form che ho usato io.
NB. Olre al file dove memorizzare le variabili di sessione, dovrai crearne un altro (ad es.. resetta.php)
per resettare le variabili prima di presentare il form, per evitare che l'utente trovi i campi già riempiti con i dati
dell'utente precedente
Spero di essertti stato d'aiuto. Ciao


Zorro:byebye::byebye:
 

oscar

Nuovo Utente
17 Apr 2014
29
0
1
Grazie Zorro ma non cerco codice già scritto, cerco di imparare programmazione ad oggeti e php asieme alla voglia di farmi un sito interamente fatto in casa. Stò vedendo le sessioni e sicuramente ci saranno altre domande al forum.
 

oscar

Nuovo Utente
17 Apr 2014
29
0
1
Ciao a tutti. Tornando sempre allo stesso form, sono riuscito a riproporre il form con il messaggio d'errore messo assieme al campo corrispondente però non riesco a includere nel campo rispettivo il dato già scritto in origine dall'utente. Il metodo della classe che controlla i dati dell'email è :
Codice:
private function testEmail ($dato){
        if (!filter_var((filter_var($dato, FILTER_SANITIZE_EMAIL)),FILTER_VALIDATE_EMAIL)=== FALSE){
            if (!preg_match($this->pattern_email, $dato)===FALSE){
                return $dato; 
            }                            
        }
        else {
            static::$a=1;
            $_SESSION['emailTestNeg']="questo indirizzo email è sbagliato: ".$dato."<br>";          
        }
    }
e nella pagina del form :
Codice:
*email (indirizzo valido per verifica):<br>
                <input type="email" name="e_mail" autocomplete="off" required> <br>
                <?php
                    if(!empty($_POST)){
                        echo $_SESSION['emailTestNeg'];
                    }
                ?>
risultato :
IMG_20160209_091813511.jpg
Come si vede l'indirizzo erroneo appare nel form riproposto ma dentro il messaggio, vorrei che ci sia anche dentro il campo e non so come farlo. Ringrazio qualche idea in questione.
 

zorro

Utente Attivo
20 Ott 2014
230
10
18
ROMA
Ciao Oscar,
non sono molto pratico di programmazione ad oggetti comunque, per assegnare al campo un valore, devi utilizzare, all'interno del FORM. la clausola VALUE, valorizzandola col contenuto che avrai memorizzato nella relativa variabile di sessione:


PHP:
<input type="text" name="cog" id="cog" value="'.$cognome.'">

e quindi, anche il FORM diventerà un file .php (e non più .html) in quanto, all'inizio, dovrai assegnare ad una variabile d'appoggio (io ho usato il cognome) il contenuto della relativa variabile di sessione:


PHP:
$cognome = $_SESSION['cognome'];


Zorro:byebye::byebye:
 

zorro

Utente Attivo
20 Ott 2014
230
10
18
ROMA
Ciao Oscar,
non sono molto pratico di programmazione ad oggetti comunque, per assegnare al campo un valore, devi utilizzare, all'interno del FORM. la clausola VALUE, valorizzandola col contenuto che avrai memorizzato nella relativa variabile di sessione:


PHP:
<input type="text" name="cog" id="cog" value="'.$cognome.'">

PS Essendo un comando PHP lo dovrai racchiudere tra echo ' e ';


PHP:
echo '<input type="text" name="cog" id="cog" value="'.$cognome.'">';
 

oscar

Nuovo Utente
17 Apr 2014
29
0
1
grazie zorro, avevo dimenticato la clausula value. eseguito consiglio in questo modo :
Codice:
<?php                    
       echo '<input type="email" name="e_mail" value="'.($errori->stampaErr6()).'"autocomplete="off" required>';  
       if(!empty($_SESSION['emailTestNeg'])){                       
              echo '<p class="erroreCampo">'. $_SESSION['emailTestNeg'].'</p>';
       }
              else{ 
                    echo '<br>';
              }
?>
e funziona così :
IMG_20160212_090450825 (2).jpg