2015-10-22 8 views
5

Ho un modulo semplice che richiede la convalida.
L'ho fatto con la funzione empty(). Se la convalida non passa, dà all'utente un avviso. Non appena viene creato questo avviso, tutti i valori inseriti sono scomparsi.PHP Mantenere i valori immessi dopo l'errore di convalida

Mi piacerebbe tenerli.

Questo è quello che ho fatto:

<form id="" name="" action="<?php echo get_permalink(); ?>" method="post"> 
    <table> 
     <tr> 
      <td> 
       Name:<input type="text" id="name" name="name"> 
      </td> 
     </tr> 
     <tr> 
      <td> 
       <input class="submit-button" type="submit" value="Send" name="submit"> 
      </td> 
     </tr> 
    </table> 
</form> 
<?php 
    if($_POST["submit"]){ 
     if (!empty ($_POST["name"])){ 
      // do something 
     }else{ 
      ?> 
      <script type="text/javascript"> 
       alert('U heeft niet alle velden ingevuld. Graag een volledig ingevuld formulier versturen'); 
      </script> 
      <?php 
     } 
?> 

risposta

4

Passo che è entrato valore come valore di default per inserire:

<input type="text" id="name" name="name" value="<?php echo isset($_POST["name"]) ? $_POST["name"] : ''; ?>"> 
+0

Questo solleva una variabile non definita. – Daan

+0

Spiacente, ho modificato il mio codice. –

+0

Sì, questo è stato. Capisco .. Thnx! – Interactive

1

Il modo più semplice sarebbe quella di questo per ogni campo di input:

<input type="text" id="name" name="name" value="<?= isset($_POST['name']) ? $_POST['name'] : ''; ?>"> 

Controlla se hai già inviato il modulo una volta, in caso affermativo, inserisci il valore nella casella di testo.

1

Bizarramente mi capita di lavorare su una cosa simile e ho usato il seguente per garantire che i dati del modulo siano disponibili dopo l'invio del modulo. Usa una variabile di sessione per memorizzare i risultati del POST e viene utilizzato come valore nel campo modulo.

/* Store form values in session var */ 
if($_SERVER['REQUEST_METHOD']=='POST'){ 
    foreach($_POST as $field => $value) $_SESSION[ 'formfields' ][ $field ]=$value; 
} 

/* Function used in html - provides previous value or empty string */ 
function fieldvalue($field=false){ 
     return ($field && !empty($field) && isset($_SESSION[ 'formfields' ]) && array_key_exists($field, $_SESSION[ 'formfields' ])) ? $_SESSION[ 'formfields' ][ $field ] : ''; 
} 

/* example */ 
echo "<input type='text' id='username' name='username' value='".fieldvalue('username')."' />";