Daten abschicken und überprüfen?ß

hiho,
mein problem ist, das ich zwei textfelder habe (textfield, textfield2) und einen Button (Klasse: Abschicken) und ich will jetzt, das wenn der benutzer auf den button klickt, zuerst überprüft wird, ob etwas in den textfeldern steht und dann eine e-mail verschickt. So eine Art aufmerksamkeit. in der e-mail sollen dann die Daten drinnen stehen, die in den textboxen stehen. Wie kann ich sowas machen??

Am besten, du schaust dir mal eine Mailerklasse an: Mail() ist tot, es lebe mail() - Robo47.net . Die Überprüfung der Eingabefelder machst du mit Javascript.

oder mit php mittels empty()

Also diese Aussage halte ich für sehr gewagt. Eine Prüfung per PHP oder sonst eine serverseitige Scriptsparche ist meiner Meinung nach die einzig richtige Empfehlung, zumal die Formulardaten so oder so über eine serverseitige Scriptsprache versendet werden. Ich rate bei Formularfverarbeitung in dieser Art immer zur Anwendung des „Affenformular“: Guter Code - Von HTML zu PHP: Schreibe Formularverarbeitungen in Normalform oder auch hier: Affenformular

Gruß thuemmy

kann mir jemand diesen script erklären???

<?php // Verarbeitung nur bei abgesendetem Formuler starten if (!empty($_POST)) { $fehler = array(); // Inhaltsprüfungen if(empty($_POST['textfeld', 'textfeld2'])) { $fehler['textfeld'] = 'Es wurden nicht alle Textfelder ausgewüfüllt!'; } if(empty($_POST['textfeld2'])) { $fehler['textfeld'] = 'Es wurden nicht alle Textfelder ausgewüfüllt!'; } // weitere Prüfungen hier einfügen if (empty($fehler)) { // Verarbeitung war erfolgreich // Weiterleiten beispielsweise zu einer Dankesseite header("Location: http://example.com/danke.php "); exit; } else { // Ausgabe der gesammelten Fehlermeldungen echo "
    \n"; foreach ($fehler as $feldname => $meldung) { printf("
  • %s
  • \n", htmlspecialchars($meldung)); } echo "
\n"; } } ?>

bitte :frowning:
achja, da soll auch noch gleich eine weiterleitung passieren, wenn es überprüft wurde.
bei diesen script sehe ich nämlich nicht durch :frowning:

<?php // Verarbeitung nur bei abgesendetem Formuler starten // Ueberpruefen, ob $_POST NICHT empty ist (deswegen das !) if (!empty($_POST)) { // variable $fehler soll array sein also: $fehler = array(); // Inhaltsprüfungen: //hier wird ueberpreuft, ob die Textfelder deines formular ueberhaupt ausgefuellt wurden. // jedoch denke ich, dass es NUR "if(empty($_POST['textfeld'])) {" heissen sollte, da in der naechsten // if abfrage textfeld 2 ueberprueft wird if(empty($_POST['textfeld', 'textfeld2'])) { // nun erhaelt das array $fehler einen Schluessen (textfeld) und einen wert (der String) // die fehlermeldungen werden gesammelt und spaeter verarbeitet. $fehler['textfeld'] = 'Es wurden nicht alle Textfelder ausgewüfüllt!'; } // wie oben nur wird jetzt textfeld 2 ueberprueft if(empty($_POST['textfeld2'])) { // siehe oben $fehler['textfeld'] = 'Es wurden nicht alle Textfelder ausgewüfüllt!'; } // weitere Prüfungen hier einfügen if (empty($fehler)) { // Verarbeitung war erfolgreich // Weiterleiten beispielsweise zu einer Dankesseite // ist ja eig gut beschrieben. es wird ueberprueft ob fehler aufgetretten sind (welche ja dann im array $fehler sein sollten) // wenn nein wird der user weitergeleitet. hier: http://example.com/danke.php header("Location: http://example.com/danke.php "); exit; } else { // Ausgabe der gesammelten Fehlermeldungen // wenn irgendwelche fehler aufgetretten sind werden sie nun mittels foreach schleife ausgewertet und dem user //ausgegeben. echo "
    \n"; foreach ($fehler as $feldname => $meldung) { printf("
  • %s
  • \n", htmlspecialchars($meldung)); } echo "
\n"; } } ?>

ich hab zur erklaerung neue // - kommentare eingefuegt, somit hoffe ich, dass der Bittstellende das Skript anschaut :wink:

danke^^
nur wie soll ich das anstellen, das wenn ja fehler ist, es nicht in einer textbox sondern in einer Tabelle steht?
muss ich dann für:

$fehler[‚textfeld‘] = ‚Es wurden nicht alle Textfelder ausgewüfüllt!‘;

das hier einfügen:

$fehler[‚tabelle‘] = ‚Es wurden nicht alle Textfelder ausgewüfüllt!‘;

??

nein :smiley:
ich glaube du verstehst nicht ganz was ein array ist :smiley:
eine array ist eine art variable, nur das sie nicht nur 1 Wert speichern kann, sondern viele.
variable: $test = 1;
die variable test hat somit den wert 1 zugewiesen bekommen.

array auf der anderen seite verfuegen ueber keys, die mit den werten verbunden sind.
array: $test[‚test‘] = ‚blabla‘;
somit haben wir ein array das test heisst.
es hat 1 schluessel naemlich test und der damit verbundene wert ist blabla.
ein array kann zahlen, strings und sogar andere arrays als schluessel haben. (google=> mehrdimensionale arrays)

wenn du jetzt wissen willst welchen wert der schluessel test hat, kann man ihn z.b. so ausgeben:
echo $fehler[‚textfeld‘];

in deinem beispiel heisst es:
$fehler[‚testfeld‘] = ‚Es wurden nicht alle Textfelder ausgewüfüllt!‘

der key und der wert haben nichts damit zu tun, ob der wert in einer tabelle oder einem textfeld ausgegeben wird. dies steuert immer noch html.
ich glaube du solltest noch mal bei google nachschlagen was ein array genau ist :smiley:

okay habe ich ^^ jetztverstehe ich auchwieso das falsch ist ^^
so habe ich es aufgenommen:
$fehler[‚textfeld‘] = ‚Es wurden nicht alle Textfelder ausgewüfüllt!‘;
hat den wert „textfeld“ und schreibtes nicht in eine ^^
oder?
und dem wert „textfeld“ wurde der wert „Es wurden nicht alle Textfelder ausgewüfüllt!“ zugeordnet. oder habe ich etwas falsch vertanden?

$fehler[‚textfeld‘] = ‚Es wurden nicht alle Textfelder ausgewüfüllt!‘;
hat den wert „textfeld“ und schreibtes nicht in eine ^^
oder?

du meinst das richtige, nur heisst es KEY oder SCHLUESSEL nicht wert. der wert ist „Es wurden nicht alle Textfelder ausgewüfüllt!“.

und dem wert „textfeld“ wurde der wert „Es wurden nicht alle Textfelder ausgewüfüllt!“ zugeordnet.

hier ist das erste wert falsch und muss wert heissen :smiley: das zweite wert ist richtig :smiley:
die unterscheidung zwischen key und value oder auf deutsch schluessel und wert ist entscheidend.

Das stimmt und ich würde eine Formularprüfung selbst auch nie nur mit Javascript ausführen. Hatte seine Beschreibung nur überflogen und einen falschen Schluss gezogen.

[…]das wenn der benutzer auf den button klickt, zuerst überprüft wird, ob etwas in den textfeldern steht[…]