Fehlerausgabe bei Formular in PHP

webdesign

Mitglied
Hallo Zusammen

Ich möchte bei meinem Formular, welches ich ihn PHP geschrieben habe eine Fehlerausgabe, wenn das Feld nicht oder falsch ausgefüllt wird. Ich möchte aber nicht eine normale Ausgabe über echo, sondern diese Felder, die falsch oder nicht korrekt ausgefüllt wurden sollen rot markiert werden. Ich bin schon ca. seit einer Stunde am suchen, auch hier im Forum, habe aber noch nichts gefunden, könnt ihr mir weiter helfen, ich bin über jeden Tipp froh.

Vielen Dank
Jonas
 
Hi,
im Groben muss du nur die $_POST-Variablen überprüfen und den Feldern, die nicht richtig ausgefüllt sind ein Klasse, sagen wir class="formerror" geben und dieser dann mittels CSS einen roten Hintergrund verschaffen.

Gruß
Marvin
 
Ihr habt mich falsch verstanden, habe mich auch zu wenig gut ausgedrückt.
Also es sieht folgendermassen aus: ich habe ein normales Formular programmiert in php, welches ich per mail an mich sende. Dieses Formular hat ca. 5 Felder, manche sind Pflichtfelder.
Wenn jetzt jemand nicht in ein Pflichtfeld oder eine falsche Eingabe macht (z.B. die e-mail adresse falsch schreibt, etc.) dann möchte ich, dass das die Formularfelder so bleiben wie sie sind. Über dem Feld, wo die Eingabe nicht korrekt war möchte ich dann eine Fehlerausgabe per Text haben, wo dem Kunde übermittelt wird, dass dieses Feld falsch oder nicht ausgefüllt wurde. Diese Fehlermeldung soll genau über dem Eingabefeld des Formulars sein, z.B. so:

Die normale Ansicht:

Name: .......
Vorname: .......
Strasse: ......
E-Mail: .......

senden


Bei einer Fehlerausgabe:

Name: .......
Vorname: .......
Strasse: ......
Die E-Mail Adresse wurde falsch oder nicht ausgefüllt!
E-Mail: .......

senden
 
Das Formular muß ja so oder so selbst aufrufen, damit du die Variablen überprüfen kannst. Genau an der Stelle, wo der rote Text erscheinen soll machst du z.B. eine If-Abfrage ein, die im Fall eine falschen Eingabe einen Text (deinen Fehlertext) ausgibt. Wenn die Eingabe korrekt war, passiert nichts.
Du solltest bei der If-Abfrage noch abfragen, ob die Variable gesetzt ist, sonst erscheint die Fehlermeldung auch beim ersten Laden des Formulars.
 
Vielleicht noch etwas anders erklärt: Du hast ein PHP-Script, das das Formular anzeigt. Beim Senden schickst Du das Formular wieder an die selbe PHP-Datei und übergibst zusätzlich einen Parameter, der Dir signalisiert, dass das Formular gesendet wurde. Im PHP Code weisst Du nun, wann das Formular nur angezeigt werden soll und wann Du es überprüfen sollst. Wenn letzteres zutrifft, prüfst Du die einzelnen Felder auf Korrektheit. Sind alle Felder ok, schickst Du die Mail an Dich und zeigst irgendetwas anderes an, das der Benutzer anschließend zu sehen bekommen soll. Trat allerdings ein Fehler auf, musst Du zusätzlich zum HTML-Code des Formulars auch noch die >Fehlermeldungen über den fehlerhaften Feldern zurückgeben.

snuu
 
So Webdesigner,

das ist doch irgendwie widersprüchlich... Auf der einen Seite möchtest Du keine Ausgabe per echo(), print(), sondern eine markierung.

Fakt ist, dass Du definitiv mit der Nutzung einer Ausgabeanweisung (echo, print) leben musst. Spätestens nach den Fehlerroutinen, die Du mit diversen Kontrollstrukturen (switch, if, wie auch immer...) darstellen musst.

beispielsweise:

5 Felder im Formular absenden (Im Testmodus auch gerne per GET-Methode), diese im Anschluss dann durch diverse Funktionen jagen: sei es numerisch, syntaktisch (bei Email( @ . ), oder url ( . . ) oder einfach mit if($empty($var)){..}.

Falls Fehler auftretem, gibst Du hilfsvariablen gewisse Stati, beispielsweise

$feld_er = 1;
$feld_er = 2;
$feld_er = 3;
$feld_er = 4;
$feld_er = 5;

Im Anschluss schaust du dann einfach, ob $feld_er esistiert.

if(!$empty($feld_er)){
// switch-Anweisung. Bei Wert 1 mach eine Ausgabe Feld 1 nicht korrekt... Die dann per CSS markeiren. <span class=\"red\">Feld 1 nicht korrekt</span>
}else{
// Absenden per location an ein anderes Script, per insert, update in eine DB, per RFC an ein SAP-System oder wie auch immer *G*)
}

So, nun solltest Du in groben Zügen einen kleinen Anreiz bekommen haben. Elegenater wäre es allerdings OOP, allerdings sollte Dir das bei Deinem Problem eigal sein.

Beste Grüße,
Claus
 
Claus Gronemeier hat gesagt.:
So Webdesigner,

das ist doch irgendwie widersprüchlich... Auf der einen Seite möchtest Du keine Ausgabe per echo(), print(), sondern eine markierung.

Fakt ist, dass Du definitiv mit der Nutzung einer Ausgabeanweisung (echo, print) leben musst. Spätestens nach den Fehlerroutinen, die Du mit diversen Kontrollstrukturen (switch, if, wie auch immer...) darstellen musst.

beispielsweise:

5 Felder im Formular absenden (Im Testmodus auch gerne per GET-Methode), diese im Anschluss dann durch diverse Funktionen jagen: sei es numerisch, syntaktisch (bei Email( @ . ), oder url ( . . ) oder einfach mit if($empty($var)){..}.

Falls Fehler auftretem, gibst Du hilfsvariablen gewisse Stati, beispielsweise

$feld_er = 1;
$feld_er = 2;
$feld_er = 3;
$feld_er = 4;
$feld_er = 5;

Im Anschluss schaust du dann einfach, ob $feld_er esistiert.

if(!$empty($feld_er)){
// switch-Anweisung. Bei Wert 1 mach eine Ausgabe Feld 1 nicht korrekt... Die dann per CSS markeiren. <span class=\"red\">Feld 1 nicht korrekt</span>
}else{
// Absenden per location an ein anderes Script, per insert, update in eine DB, per RFC an ein SAP-System oder wie auch immer *G*)
}

So, nun solltest Du in groben Zügen einen kleinen Anreiz bekommen haben. Elegenater wäre es allerdings OOP, allerdings sollte Dir das bei Deinem Problem eigal sein.

Beste Grüße,
Claus

Hallo Zusammen
Zuerst einmal danke an alle für die Beiträge, hat mir weitergeholfen.
Claus: Es ist nicht wiedersprüchlich, ich muss dir vielleicht noch genauer erklären was ich meine. Wenn ich die Fehlerausgabe per echo mache, kommt schon eine Fehlermeldung, jedoch verschwindet das Formular, da ja echo NUR die Fehlermeldung ausgibt. Ich weiss, dass es die Möglichkeit gibt im PHP Script per echo das ganze Formular noch einmal auszugeben und bei den einzelnen Feldern eine If Abfrage zu machen, aber ich suche nach einer Lösung, wo ich eben nicht noch einmal das ganze Formular in echo ausgeben muss, darum wollte ich eine Fehlermeldung OHNE echo Befehl, aber ich weiss ja nicht ob das geht.

Hier noch eine andere Frage: Gibt es in php eine Möglichkeit ein Pop Up Fenster aufzurufen, nachdem das Formular abgesendet wurde? Ich weiss dass es so geht:

echo '<script language=javascript> window.open(......)</script>

aber ich möchte nicht, dass es mir ein lehres Fenster mit einem PopUp Fenster zeigt, sondern das Formular und ein Pop Up Fenster.

Vielen Dank schon mal für die Hilfe.
Jonas
 
Öhm. Warum sollte das Formular nicht weiter ausgegeben werden, nachdem du echo benutzt hast

Du kannst das Formular doch an sich selbst senden und dort von vornherein if's mit echo einbauen und es halt nur verarbeiten, wenn alles korrekt war

Ich verstehe nicht, was du meinst mit "das Formular noch einmal per echo ausgeben"

Wahrscheinlich brauchst du noch ein bisschen Übung in der Strukturierung solcher Seiten, das kommt von selbst mit einigem Probieren. Mit den hier vorgeschlagenen Lösungen kannst du dein Problem in jedem Fall lösen ;)
 
Zuletzt bearbeitet:
Robert Steichele hat gesagt.:
Das Formular muß ja so oder so selbst aufrufen, damit du die Variablen überprüfen kannst. Genau an der Stelle, wo der rote Text erscheinen soll machst du z.B. eine If-Abfrage ein, die im Fall eine falschen Eingabe einen Text (deinen Fehlertext) ausgibt. Wenn die Eingabe korrekt war, passiert nichts.
Du solltest bei der If-Abfrage noch abfragen, ob die Variable gesetzt ist, sonst erscheint die Fehlermeldung auch beim ersten Laden des Formulars.

Ist eine sehr dumme Frage ich weiss, aber ich nun mal ein Newbie und habe noch ein bisschen ein Durcheinander.
Wie kann ich abfragen ob eine Variable gesetzt ist, oder nicht?
Ich kann das ja nicht mit:

if($name="")

weil ja eben schon am Anfang nichts darin steht.

Vielen Dank Jonas
 
Zurück