Formularfelder überprüfen!

soa

Erfahrenes Mitglied
Hallo,

wenn bei meinem Formular ein Pflchtfeld nicht ausgefüllt wurde, so kommt
eine Alert Meldung über JS ....

Das Problem: Nach einer Meldung sind alle bisher erstellten Einträge verschwunden.
Man muss das komplette Formular noch einmal ausfüllen.....

Wie kann man das abstellen?

Gibt es eine Möglichkeit, die Fehlerausgabe in die fehlende Input Zeile zu schreiben,
ohne die bisher getätigten Einträge zu löschen?

Hier ein Code

Code:
if(isset($_POST[abschicken])){ 

$vollstaendig = 1;  

if(empty($betreff))
  {
   $vollstaendig =0;
            ?>
              <script language ="JavaScript">
              window.alert("Betreff fehlt!");
              </script>
    
           <?php 
  }//endif 
  
if(empty($eintrag))
  {
   $vollstaendig =0;
            ?>
              <script language ="JavaScript">
              window.alert("Beitrag fehlt!");
              </script>
    
           <?php 
  }//endif 
    
   }//isste        


if($vollstaendig){ 
..........

Vielen Dank

Gruß
SOA
 
Du gibst Deine Felder vermutlich auf derselben Seite aus, in der das Formular verarbeitet wird.
Du kannst dann bei jedem Formularfeld, das alte value eintragen, wenn es denn bereits gesetzt ist.

Beispiele:
PHP:
<input type="text" name="feld1" value="<? 
    echo ((isset($_POST['feld1']))?$_POST['feld1']:''); 
?>" />
PHP:
<select name="feld2">
<option value="einValue"<?
    echo ((isset($_POST['feld2']) && $_POST['feld2']=='einValue')
        ?' selected':'');
?>>Ein Value</option>
<!-- usw -->
</select>
Wenn Du die Felder selbst per echo ausgibst:
PHP:
 echo '<input type="text" name="feld1" value="'
    .((isset($_POST['feld1']))?$_POST['feld1']:'')
    .'" />';
PHP:
echo '<select name="feld2">';
echo '<option value="einValue"'
    .((isset($_POST['feld2']) && $_POST['feld2']=='einValue')
        ?' selected':'')
    .'>Ein Value</option>';
//usw.
echo '</select>';
Gruß hpvw
 
Ich weiß nicht, ob ich das so verstanden habe..


das sind z.B. die Felder für einen Beitag:

Code:
<tr>
<td class="invert">&nbsp;</td>
<td class="invert">&nbsp;<br>
Betreff: <input type="text" size="40" name="betreff"><br><br>
Text   : <textarea name="eintrag" cols="40" rows="8"></textarea><br><br>
Bild   :<input type="file" name="bild" size="40"><br><br>
<input type="submit" name = "hochladen" value="hochladen"> 
&nbsp; </td>
</tr>

Wenn ich jetzt <input vom Betrefffeld

um

Betreff: <input type="text" size="40" name="betreff" value="<?
echo ((isset($_POST['betreff']))?$_POST['betreff']:'geht das so?');
?>" >

erweitere, dann steht beim Aufruf der Seite "'geht das so?" im Betrefffeld...
Das ist mehr als blöd, denn nun steht dort etwas drin, obwohl niemand ein
Betreff angebeben hat. :confused:

:(
 
Dann solltest du als Initialwert eine leere Zeichenkette wählen:
Code:
<input type="text" size="40" name="betreff" value="<?php echo isset($_POST['betreff']) ? htmlspecialchars($_POST['betreff']) : ''; ?>">
 
Zurück