Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Formulareingaben am Anfang des PHP Dokuments prüfen
Frage
ich könnte als Php neuling etwas Hilfe gebrauchen.
Und zwar habe ich 3 Formularfelder
<input type="text" name="test">
<input type="text" name="test1">
<input type="text" name="test2">
diese will ich per action in der selben Seite auf Inhalt überprüfen, wenn nichts eingetragen wurde soll über dem Feld in kleiner Schrift ein Kommentar erscheinen andernfalls das eingegebene per Mail abschicken.
Wie ich das per Mail verschicke wird nicht das Problem sein, das Problem ist nur wenn ich mich nicht irre muss die Prüfung der Variablen als erstes geschehen, aber da die Formularfelder ja von vornerein leer sind habe ich da so meine Probleme.
Kann jemand mein Problem nachvollziehen?
Wäre über jede Hilfe danbar!
Antwort 1 von Nessus
Hi,
das kannst Du nur über einen Umweg. Der normale Weg ist, das ein Formular an ein Script die Daten übergibt. Du kannst nur in diesem Script eine Überprüfung machen. Wenn jetzt eine Fehleingabe auftritt übergibst Du von diesem Script einfach die Variablen wieder zurück an das Formular.
Natürlich müssen im Ausgangsformular Variablen definiert sein, die logischer Weise beim ersten Aufruf leer sind.
Schema bei Erfolg:
Eingabeformular->Script->Bestätigung
Schema bei Mißerfolg:
Eingabeformular->Script->Eingabeformular->Script->usw.
Ich hoffe das war zu kapieren
HTH
Nessus
das kannst Du nur über einen Umweg. Der normale Weg ist, das ein Formular an ein Script die Daten übergibt. Du kannst nur in diesem Script eine Überprüfung machen. Wenn jetzt eine Fehleingabe auftritt übergibst Du von diesem Script einfach die Variablen wieder zurück an das Formular.
Natürlich müssen im Ausgangsformular Variablen definiert sein, die logischer Weise beim ersten Aufruf leer sind.
Schema bei Erfolg:
Eingabeformular->Script->Bestätigung
Schema bei Mißerfolg:
Eingabeformular->Script->Eingabeformular->Script->usw.
Ich hoffe das war zu kapieren
HTH
Nessus
Antwort 2 von getsource
danke für die Hilfe es war zu kappieren und hat auch schon ansatzweise funktioniert.
Antwort 3 von disco
moin
hoffe dass ich nicht ausversehen zu viel rausgekürzt habe, aber hier müsstest du sehen können, wie dus einfach machst.
das skript schickt den wert an sich selbst (frage5.php) und überprüft ihn.
<?php
//Fehlermeldungen leeren
$error = array();
if (isset($_POST["self_call"]))
{
$text = $_POST["textfield"];
if(strlen($text)== 0)
{
$error["textfeld"] = "Bitte füllen sie das Textfeld aus!";
}
if (empty($error))
{
//was auch immer
}
?>
<html>
<head>
<title>bla</title>
</head>
<body>
<form action="<? echo workdir ?>/frage5.php" method="post">
<div align="center">
</div>
<div class=normal align="center"><strong>Frage <?php print($FRAGE_NR) ?>: Welche Informationen fehlten? </strong></p><br>
<?php
echo !empty($error["textfeld"])?"<div class=\"fehler\">".$error["textfeld"]. "</div>":"";
?>
<input type="text" name="textfield" height=19>
</p>
<input type="hidden" name="self_call" value="x">
<input name="submit" type="submit" value=" Weiter ">
</form>
</body>
</html>
g,
disco
hoffe dass ich nicht ausversehen zu viel rausgekürzt habe, aber hier müsstest du sehen können, wie dus einfach machst.
das skript schickt den wert an sich selbst (frage5.php) und überprüft ihn.
<?php
//Fehlermeldungen leeren
$error = array();
if (isset($_POST["self_call"]))
{
$text = $_POST["textfield"];
if(strlen($text)== 0)
{
$error["textfeld"] = "Bitte füllen sie das Textfeld aus!";
}
if (empty($error))
{
//was auch immer
}
?>
<html>
<head>
<title>bla</title>
</head>
<body>
<form action="<? echo workdir ?>/frage5.php" method="post">
<div align="center">
</div>
<div class=normal align="center"><strong>Frage <?php print($FRAGE_NR) ?>: Welche Informationen fehlten? </strong></p><br>
<?php
echo !empty($error["textfeld"])?"<div class=\"fehler\">".$error["textfeld"]. "</div>":"";
?>
<input type="text" name="textfield" height=19>
</p>
<input type="hidden" name="self_call" value="x">
<input name="submit" type="submit" value=" Weiter ">
</form>
</body>
</html>
g,
disco

