Formular Überprüfung

soa

Erfahrenes Mitglied
Moin,

und zum tausendsten Male etwas zu diesem Thema:

Folgendermaßen überprüfe ich mein Formular:

PHP:
if ( empty($ort))
{
$vollstaendig = 0;
 ?>
              <script language ="JavaScript">
              window.alert("Bitte tragen Sie einen Ort fuer den Kunden ein.");
              document.Formular.ort.focus();
              </script>
    <script language ="JavaScript">
    history.back();
    </script>
  <?php 
}

Es kommt also eine Alert Meldung. Wenn man nun die Meldung bestätigt, sind alle bereits
eingetragenen Inhalte weg.

Daher dachte ich : Trag doch einen value ein .

PHP:
</td>
								<td class="zelle"><input class="hellezelle" type="text" name="ort" value ="<? echo $ort; ?> " size="24"></td>
							</tr>
							<tr>

Nun ist es zum Einen so, dass ein value vorliegt, obwohl kein Ort eingetragen ist.
Zum Anderen bleibt die Zelle nach einer Fehlermeldung trotzdem leer. Naja auf einem Explorer unter Windows XP zumindest. Bei MAC scheint es im Explorer zu klappen.

Ich finde Altert Meldungen halt im Dialog besonders benutzerfreundlich. Wie kann ich es bewerkstelligen, dass die Fehlermeldung greift und trotzdem die bereits ausgefüllten Zellen
bestehen bleiben ?

Ich hoffe, mich verständlich ausgedrückt zu haben.

VG
SOA
 
Du kannst entweder alle Fehlermeldungen in einer Variabeln speichern und dann in einem alert ausgeben.
Oder Alert Fehlermeldung weglassen. Und die Fehlermeldung direkt unter dem Feld hinschreiben. (z.B. mit innerHTML).

Ich hoffen ich habe deine Frage richtig verstanden?


Tobee
 
Warum machst Du nicht alles in PHP?

PHP:
<?php      
    
    if ($_POST['senden'] == 'Anfrage senden' && $_POST['ort'] == ''){
      echo 'Bitte geben Sie Ihren Ort an!';
    }    
 ?> 


    <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" >            
        <input type="text" name="ort" value ="<?php echo $_POST['ort'] ?>" size="24">
        <input type="submit" name="senden" value"Anfrage senden">
    </form>
 
Ja, ich bin mir über diese Möglichkeiten bewusst.

Trotzdem würde ich es gern mit JavaScript machen.

Hat vielleicht jemand eine Idee, warum mein obiger Code nicht greift ?

VG
SOA
 
Das Problem bei JavaScript ist, dass es deaktiviert werden kann. Damit wird in deinem Beispiel gar keine Fehlermeldung dargestellt und der Benutzer ist irritiert, da es keine Resonanz auf das Formular gab.

Speichere die Fehlermeldungen mal in einem Array, dann kannst du sie ganz einfach ausgeben:
PHP:
if( !empty($errors) ) {
	echo '<div class="note error"><ul>';
	echo '<li>'.implode('</li><li>', $errors).'</li>';
	echo '</ul></div>';
}
Zusätzlich – aber wirklich auch nur zusätzlich – kannst du diese dann auch als Warnmeldung ausgeben:
PHP:
<script type="text/javascript">
	window.alert(unescape("<?php echo rawurlencode(implode("\n", $errors)); ?>")); 
</script>
Mich würde solch eine Warnmeldung aber eher nerven als freundlich auf etwas hinweisen.
 
RS9999 hat gesagt.:
Warum machst Du nicht alles in PHP?

PHP:
<?php      
    
    if ($_POST['senden'] == 'Anfrage senden' && $_POST['ort'] == ''){
      echo 'Bitte geben Sie Ihren Ort an!';
    }    
 ?> 


    <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" >            
        <input type="text" name="ort" value ="<?php echo $_POST['ort'] ?>" size="24">
        <input type="submit" name="senden" value"Anfrage senden">
    </form>

Ich stimme "RS9999" zu und rate dir auch die PHP version der Überprüfung wahr zu nehmen, da die javascript alerts doof sind im bezug eines Formulars, dadurch kann der benutzer ein wenig verwirrt werden nach meinen erkenntnissen.
 
Ja, vielen Dank für eure Meinungen. Grundsätzlich wäre es wohl am Schönsten, auch vom Aufwand her, die Fehlermeldungen in ein Array zu schreiben.

Das Problem hierbei ist doch aber die Ausgabe und die Zuordnung der Fehlermeldung zum entsprechenden Formularfeld.

Beispiel:
foreach ($error as $err)
{
echo $err;
}

So kann man die Fehlermeldungen nicht im oder unter dem Formularfeld ausgeben,
sondern hat alle Meldungen zentral an einer Position.
 
Die geschlossene Ausgabe hat aber den Vorteil, dass alle Fehlermeldungen auf einmal sichtbar sind und nicht erst gesucht werden müssen.
 
Zurück