Hallo,
folgendes kniffliges Problem,
ich habe nach Kristian Köhntopp (Formularverarbeitung in Normalform)
ein Formular entwickelt.
Darin weise ich jedem Feld eine Variable zu, die ich entsprechend
abfrage, Bsp:
...
function validate_university_year1($val) {
$msg = "";
if ((empty($val)) OR ($val=="1960"))
$msg .= "Bitte geben Sie im Feld DURATION ein gültiges Jahr ein !\n";
return $msg;
}
...
$valid = TRUE;
....
danach folgt :
...
if (isset($university_year1)) {
$error["university_year1"] = validate_university_year1($university_year1);
if ($error["university_year1"] != "")
$valid = FALSE;
}
...
und kurz vor Schluß dann auch noch
if ($error["university_year1"] != "")
print errmsg($error["university_year1"]);
Jetzt möchte ich erreichen, daß in gewissen Feldern Pflichteingaben
gemacht werden. Erst wenn diese erfolgreich sind, soll eine neue
Seite aufgerufen werden usw...
Vorher werden dem Benutzer solange Fehlermeldungen gezeigt, bis alle
Daten eingetragen sind.
<?php if ($valid=1) and isset($_REQUEST["zulassungform_do"])) {
include ("student_insert.php");
$redirectURL .= "/anmeldung_einfuegen.php?studentID=$ID";
header("Location: $redirectURL");
}
In "student_insert.php" steht mein MySQL Insert drin.
Wenn ich nun diesen Code ans Ende stelle (Kristian Köhntopp) hat
diesen Bereich vielleicht als Nutzlast bezeichnet, bekomme ich bereits nach dem ersten wiederholten Aufruf des Formulars die Meldung :
Cannot add header information - headers already
sent by (output started at /srv/www/htdocs/zulassungform.php:7) bla bla bla
Verstehe ich, da vorher bereits HTML Code aufgerufen wird.
Setze ich den o.g. Code an den Anfang wird nach dem wiederholten Aufruf des Formulars der Link "/anmeldung_einfuegen.php?studentIFD=$ID" ausgeführt.
zulassungsform hat dabei den Wert gedrückt = SUBMIT = TRUE
und value hat ebenfalls den Wert TRUE, da eine Änderung auf FALSE erst NACH der Kopfzeile im Bauch des Formulars geschieht =>
Ich habe beim ersten Aufruf einige Werte eingegeben, leider was vergessen drücke auf SUBMIT, und VALUE wird erst im Laufe des Quelltextes FALSE.
Frage also: Ich möchte ein Affenformular so gestalten, daß ein Benutzer solange auf den SUBMIT - Button drücken muß, bis alle Pflichtfelder ausgefüllt sind und erst DANN soll ein Eintrag in die Datenbank erfolgen & eine neue andere Seite aufgerufen werden.
Gruß
Stefan
folgendes kniffliges Problem,
ich habe nach Kristian Köhntopp (Formularverarbeitung in Normalform)
ein Formular entwickelt.
Darin weise ich jedem Feld eine Variable zu, die ich entsprechend
abfrage, Bsp:
...
function validate_university_year1($val) {
$msg = "";
if ((empty($val)) OR ($val=="1960"))
$msg .= "Bitte geben Sie im Feld DURATION ein gültiges Jahr ein !\n";
return $msg;
}
...
$valid = TRUE;
....
danach folgt :
...
if (isset($university_year1)) {
$error["university_year1"] = validate_university_year1($university_year1);
if ($error["university_year1"] != "")
$valid = FALSE;
}
...
und kurz vor Schluß dann auch noch
if ($error["university_year1"] != "")
print errmsg($error["university_year1"]);
Jetzt möchte ich erreichen, daß in gewissen Feldern Pflichteingaben
gemacht werden. Erst wenn diese erfolgreich sind, soll eine neue
Seite aufgerufen werden usw...
Vorher werden dem Benutzer solange Fehlermeldungen gezeigt, bis alle
Daten eingetragen sind.
<?php if ($valid=1) and isset($_REQUEST["zulassungform_do"])) {
include ("student_insert.php");
$redirectURL .= "/anmeldung_einfuegen.php?studentID=$ID";
header("Location: $redirectURL");
}
In "student_insert.php" steht mein MySQL Insert drin.
Wenn ich nun diesen Code ans Ende stelle (Kristian Köhntopp) hat
diesen Bereich vielleicht als Nutzlast bezeichnet, bekomme ich bereits nach dem ersten wiederholten Aufruf des Formulars die Meldung :
Cannot add header information - headers already
sent by (output started at /srv/www/htdocs/zulassungform.php:7) bla bla bla
Verstehe ich, da vorher bereits HTML Code aufgerufen wird.
Setze ich den o.g. Code an den Anfang wird nach dem wiederholten Aufruf des Formulars der Link "/anmeldung_einfuegen.php?studentIFD=$ID" ausgeführt.
zulassungsform hat dabei den Wert gedrückt = SUBMIT = TRUE
und value hat ebenfalls den Wert TRUE, da eine Änderung auf FALSE erst NACH der Kopfzeile im Bauch des Formulars geschieht =>
Ich habe beim ersten Aufruf einige Werte eingegeben, leider was vergessen drücke auf SUBMIT, und VALUE wird erst im Laufe des Quelltextes FALSE.
Frage also: Ich möchte ein Affenformular so gestalten, daß ein Benutzer solange auf den SUBMIT - Button drücken muß, bis alle Pflichtfelder ausgefüllt sind und erst DANN soll ein Eintrag in die Datenbank erfolgen & eine neue andere Seite aufgerufen werden.
Gruß
Stefan
Kommentar