2015-10-22 8 views
5

Ich habe ein einfaches Formular, das Validierung benötigt.
Ich tat dies mit der empty() Funktion. Wenn die Validierung nicht bestanden wird, erhält der Benutzer eine Warnung. Sobald diese Warnung erstellt wurde, sind alle eingegebenen Werte verschwunden.PHP Keep eingegebene Werte nach Validierungsfehler

Ich möchte sie behalten.

Das ist, was ich tue:

<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 
     } 
?> 

Antwort

4

Pass, den Wert als Standardwert zur Eingabe eingegeben:

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

Das wird eine undefinierte Variable auslösen. – Daan

+0

Entschuldigung, ich habe meinen Code bearbeitet. –

+0

Ja, das war es. Ich verstehe ... Thnx! – Interactive

1

Der einfachste Weg, um dies für jedes Eingabefeld sein würde:

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

Es prüft, ob Sie das Formular bereits einmal abgeschickt haben, wenn ja, setzen Sie den Wert in das Textfeld.

1

Bizarrerweise arbeite ich zufällig an einer ähnlichen Sache und habe das folgende benutzt, um zu garantieren, dass Formulardaten nach dem Absenden des Formulars verfügbar sind. Es verwendet eine Sitzungsvariable zum Speichern der Ergebnisse des POST und wird als Wert im Formularfeld verwendet.

/* 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')."' />";