Problem mit Formular und zurück Button im Formular

  • Hallo zusammen,

    ich habe ein Formular erstellt.
    Wenn jemand falsche Angaben macht oder nicht alles ausfüllt, wird dieses mit einem individuellen Text über dem entsprechenden Eingabefeld angezeigt, wenn der User auf "Abschicken" geklickt hat. Soweit so gut.

    Nun korrigiert er seine Angaben und klickt wieder auf "Abschicken". Wenn dann alles richtig ist, kommt er zu einer Zusammenfassung, d.h. die eingegebenen Daten werden noch einmal zur Kontrolle übersichtlich dargestellt. Das funktioniert auch soweit.

    Nun möchte ich auf der Zusammenfassungsseite einen "zurück" Button einfügen. Ich habe es mit history.back probiert. Das funktioniert auch soweit. Das Problem ist nun, dass wenn der User dann auf "zurück" klickt, um nochmal zum Formular zu kommen, die Fehlermeldungen seiner anfangs falschen Angaben immer noch da stehen. Das ist natürlich quatsch, weill der User ja mittlerweile seine Angaben korrigiert hat, sonst wäre er ja erst gar nicht zur Zusammenfassungsseite gekommen.

    Wenn ich einen normalen Link auf das Formular als zurück-Button setze, wird das Formular natürlich komplett neu geladen und die Eingaben sind alle weg, ist klar.

    Gib es eine Möglichkeit von der Zusammenfassungsseite einen zurück Button zu setzen, mit dem man wieder auf das Formular kommt, in dem dann alle Eingaben eingetragen sind, die der User getätig hatte mit der Vorgabe, dass quasi der check des Formulars nochmal ausgeführt wird, damit die Fehlermeldungen dann nicht mehr angezeigt werden?

    Ich hoffe, ich konnte mein Problem entsprechend beschreiben.

    Beste Grüße

  • Hallo,

    ich versuche gerade das ganze einmal mit Sessions umzusetzen. ICh bin auch shon ein Stückchen weiter, aber leider noch nicht ganz am Ziel. In der Datei form.php mit dem Formular steht so ungefähr folgendes (stark abgekürzt):

    In der summary.php steht nun ungefähr folgendes (stark abgekürzt):

    PHP
    <form name="Projektformular" action="send.php" method="post">
        ....
        ....
        <?php echo $SESSION['VName']; ?>
        ....
        <?php echo $SESSION['Name']; ?>
        ....
        <a href="form.php" >zur&uuml;ck</a>
        <input type="submit" name="submit" value="Abschicken">
    </form>

    Wenn das Formular abgesendet wurde und es keine Fehler gab, wird eben die Zusammenfassung angezigt und wenn es Fehler gab, wird eben nochmal das Formular mit den entsprechenden Fehlermeldungen angezeigt. Das funktioniert auch.

    Wenn ich nun auf weiter klicke, es gab keine Fehler im Formular, wird die Zusammenfassung angezeigt. Die Formulareingaben werden richtig ausgegeben usw.

    Wenn ich nun in der Zusammenfassung auf den zurück Button klicke, komme ich auch zum Formular zurück. Die Fehlermeldungen, die es vorher gab, werden nun nicht mehr angezeigt, aber auch die Formulareingaben sind weg. Also das Formular wird komplett neu geladen. Wie komme ich denn dan in dem Schritt wieder an meine Session-Daten, dass ich sie in den entsprechenden Textfeldern als value=".$SESSION[...]" ausgeben kann?

    Also der Weg zurück stimmt noch nicht. Kann da vielleicht jemand sagen, was da falsch läuft?

    Vielen Dank!

    Beste Grüße

  • PHP
    $value = (isset($_SESSION['name'])) ? $_SESSION['name'] : "";
    
    echo "<input type='text' name='name' value='$value'">;
  • Hallo,

    daran scheint es nicht zu liegen. Es scheint so zu sein, dass die Variablen beim Gang von der Zusammenfassung zum Formular zurück nicht mehr existieren. Wie kann das sein? In der Zusammenfassung werden die Daten sauber ausgegeben. Dann dort den zurück Button geklickt, man kommt zum Formular und es ist leer. Eigentlich sollten nun in den Formularfeldern die Daten stehen, die der User eingegeben und bereits in der Zusammenfassung gesehen hatte. Nur die Session Variablen existieren anscheinend nicht mehr. Deswegen sind sie die inputboxen nach dem folgenden Code halt immer leer:

    PHP
    $value = (isset($_SESSION['name'])) ? $_SESSION['name'] : "";   
    echo "<input type='text' name='name' value='$value'">;

    Ich verstehe einfach nicht, warum die Variablen nicht mehr existieren.

    Beste Grüße

  • Habs nicht ganz verstanden, vermute aber mal das $_POST["next"] inhalt besitzt aber die Restlichen Postwerte dann nicht

  • Das habe ich probiert. Das stimmt nicht.

    Wenn das Formuklar abgeschickt wurde, ist das gesetzt, somit wird eben

    Code
    [COLOR=#000000][COLOR=#0000bb]$SESSION[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'Anrede'[/COLOR][COLOR=#007700]]= [/COLOR][COLOR=#0000bb]$_POST[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]"Anrede"[/COLOR][COLOR=#007700]]; usw.[/COLOR][/COLOR]

    ausgeführt. Entweder wird dann nochmal das Formular angezeigt; wenn nicht alle Felder aufgefüllt wurden. Diie Felder, die ausgefüllt wurden, werden mit den entsprechenden Werten über

    Code
    value="...

    gefüllt bei den restlichen gibt es fehlemeldungen. Gab es keine Fehler wird die zusammenfassung aufgerufen, in der alle Daten richtig ausgegeben werden.

    Auf dem Weg von der Zusammenfassung zum Formular -> form.php über den zurück Button in der Zusammenfassung gehen die Variablen irgendwie verloren. Wenn ich die Session ID immer mit ausgeben lasse, ist es immer die gleiche, also die existiert, nur die Variablen verschwinden:confused:

    Mit der Abfrage if( isset($_POST["next"]) ) soll ja gerade verhindert werden, dass beim Zurückgehen von der Zusammenfassung auf das Formular die Werter der Sessionvariabelen nicht erneut geschreiben werden.

    Einmal editiert, zuletzt von sven77 (30. August 2010 um 17:14)

  • Ja und wie sieht die Seite aus von der aus du zurück gehst? hat die ein Session Start?

    mfg

  • Hallo,

    ja die hat ein session start, denn es ist die auch die form.php.



    also beim Absenden des Formulars wird die form.php aufgerufen. Wenn es keine Fehler gab, wird die Zusammenfassung per include eingebunden. Gab es Fehler, wird das Formular erneut angezeigt, mit entsprechenden Fehlermeldungen und den vorausgefüllten Inputboxen. Das funktioniert auch. Nur wenn man einmal auf der Zusammenfassung war und dann wieder zurück zum Formular kommt, sind die Variablen weg. wenn man von der Zusammenfassung zum Formular will, wird ja auch die form.php aufgerufen. Dann greift

    Code
    if([B]!isset($_POST['next'])[/B] || $errorcount > 0)

    . Das Formular wird ausgegeben, aber leider leer. Eigentlich sollten in dem Fall durch z.B.

    Code
    value="'.$SESSION['PLZ'].'"

    die Felder vorgefüllt werden, aber es scheint so, als seien die Session Variablen nicht mehr existent.

    Einmal editiert, zuletzt von sven77 (30. August 2010 um 17:43)

  • Hallo,

    danke, das war auch noch ein Fehler. Das kommt vom Copy and Paste. Ich hatte dazu noch abfrage Fehler in den diversen if Schleifen.

    So langsam wirds.

    Vielen Dank!

    Beste Grüße