Formular in mehrere Formulare hintereinander aufteilen

splat

Erfahrenes Mitglied
Hi!

Ich habe es mittlerweile mal geschafft ein Formular zur erstellen, das solange aufgerufen wird, bis alle Daten richtig eingegeben wurden. Danach werden alle Daten in einer Session gespeichert und eine Bestätigungsseite kommt zum Vorschein. Soweit so gut.. :) Jetzt würde ich gerne das Formular in 3 kleinere Seiten unterteilen.. Also zuerst Formular 1, dann Formular 2 und zum Schluss Nr 3. Natürlich erst immer dann wenn die vorherigen Seiten keine Fehler liefern. Kann mir da jemand einen Tip geben wie ich das am geschicktesten machen kann? :confused:

So sieht das ganze momentan aus (abgespeckte Version):

PHP:
$template_to_show = "templates/formular.php";

/* formular wurde abgeschickt */
if (match_referer() && isset($_POST)) {
        $frm = $_POST;
        $errormsg = validate_form($frm, $errors);

/* wenn alle daten angegeben wurden, neue session variable
 * erstellen und weiter zur Bestätigung */
        if (empty($errormsg)) {
                save_data($_POST);
                $template_to_show = "templates/confirm.php";
        }
}

$frm = $_REQUEST;
include($template_to_show);

/******************************************************************************
 * FUNCTIONS
 *****************************************************************************/

function validate_form(&$frm, &$errors) {

	$errors = new Object;
	$msg = "";

	if (empty($frm["name"])) {
		$errors->name = true;
		$msg .= "Sie müssen ihren Namen angeben.";

	} if (empty($frm["email"])) {
		$errors->email = true;
		$msg .= "Sie müssen ihre Email Adresse angeben.";

	}
	return $msg;
}
?>

Bin für jeden Tip dankbar!!

Gruß, Marc
 
Hullo,
ich hab sowas auch mal gebaut und es mir dabei einfach gemacht.

1.Formular wird abgeschickt an das ->
2.Formular , dort wird erstmal alles in "hidden"-Textfeldern gespeichert und kontrolliert ob alles richtig und vollständig ausgefüllt wurde.
Wenn nein, dann erschien eine meldung das nit alles in Ordnung war und man musste einen "send" Button drücken um zurück zu kommen. Es wurden aus den "hidden" Feldern die Daten zurückgeschickt an das erste Formular und dort wieder in die entsprechenden Feldern eingetragen.
Wenn alles in Ordnung war, erschienen durch die if-abfrage ("if alles ok") die neuen eingabefelder.
Dann das gleiche Spiel wieder:
Die Daten vom 1. und 2. Formularblatt wurden im 3. Formularblatt in "hidden"Felder gespeichert und wieder die entsprechenden kontrollen durchgeführt ob alles ok ist.

Naja im grunde is die sache mit den "hidden"Feldern sicher stupid gegenüber der session methode.
Aber es hat alles funktioniert eben so wie es sollte :D

Es ist evtl etwas Arbeit das jetzt auf mehrere Blätter zu packen und die ganzen "hidden"Felder zu baun, aber es ist eine möglichkeit :D

Grüße,
Lichtpiler
 
Hallo Lichtpilger!

das habe ich mir auch schon überlegt.. aber das wäre dann wirklich nur die Notlösung :) Würde das schon gerne alles sauber zentral in einem File haben. Irgendwie muss das doch gehen... bin die ganze Zeit schon am probieren.. aber so richtig bekomm ich das nicht hin.

PHP:
/* formular 1 wurde abgeschickt */
if (match_referer() && isset($_POST)) {
        $frm = $_POST;
        $errormsg_1 = kontrolle_form1($frm, $errors);

        /* formular 2 */
        if (empty($errormsg_1)) {
		        speichere_daten_von_form1_in_session($_POST);
		        $template_to_show = "templates/formular2.php";
                $frm = $_POST;
       	     $errormsg_2 = kontrolle_form2($frm, $errors);

...

$frm = $_REQUEST;
include($template_to_show);
Template = Formular1
Wenn Formular1 abgeschickt wird & keine Fehler in Formular1 -> Template = Formular2

Aber wenn ich jetzt bei Formular2 einen Fehler bekomme, dann werde ich wieder an Formular1 zurückgeworfen :/

Ne Idee?
Komme da nicht mehr weiter.. :|
 
Zurück