post submit mit Weiterleitung

  • Hallo zusammen. Vielleicht könnt ihr Profis mir ja helfen.


    Ich habe eine Seite mit 5 Antwortmöglichkeiten. Darunter befinden 2 Button, die entweder zur nächsten oder vorherigen Seite springen soll.
    Die Antworten speichere ich dann in einem Cookie und möchte sie anschließend auswerten.
    also frage1.php>>>frage2.php>>>frage3.php usw


    Wenn ich das jetzt mit "action" versuche, wird der Wert beim Drücken auf "nächste Frage" auf frage2.php übertragen. Mein Ziel ist es aber, dass der Wert auf frage1.php gespeichert wird und dann zur nächsten Seite(frage2.php) springt.


  • Ok, erstmal eine kleine Anmerkung zu deinem HTML. Und zwar benutzt du die <br>-Tags, um für Abstand zwischen den einzelnen Feldern zu sorgen.


    Das macht man normalerweise so nicht. Für soetwas benutzt man CSS.



    Nun, zum Problem:


    So wie du dir das vorstellst, geht das nicht so einfach. Zum Glück ist das aber kein wirkliches Problem. Du kannst die Antwort der Frage 1 nämlich einfach bei der zweiten Frage entgegennehmen und dann am besten in einer Session speichern. Cookies würde ich für den Anwendungsfall nicht nutzen.


    Warum möchtest du es denn auf der ersten Seite schon speichern?

  • An der Stelle würde ich eher vorschlagen das gesamte Formular auf eine Seite zu verlegen und dann mittels JavaScript die gewünschten Abschnitte nach und nach ein/ausblenden lassen. So bleibt dein Formular auch bei einem Schritt zurück komplett intakt.


    Formulare über 2 verschiedene Seiten (Dateien) sind meiner Meinung nach nicht mehr zeitgemäß und überflüssig kompliziert.

  • Danke schon mal für die schnellen Antworten.
    Das auf einer Seite darzustellen ist bestimmt schöner, übersteigt aber im Moment wohl noch meinen Wissensstand.


    Ich habe gerade keine Idee, wie ich die Antwort der ersten Frage bei der Zweiten entgegennehmen kann.


    Zuerst hatte ich es folgendermaßen realisiert. Frage beantwortet, auf bestätigen(also action="frage1.php") gedrückt und auf weiter - ich hatte also 3 Button (vorherige Seite, Bestätigen und nächste Seite). Das funktioniert ja auch soweit.
    Da ich aber faul bin, möchte ich mir einen Klick ersparen und die beiden Button "Bestätigen und "Weiter" in einem haben.


    Oder bleibt mir der 3. Button nicht erspart?


    Danke schon mal im Voraus.

  • Ok, ich versuche es mal.


    Mein erster Versuch mit Textfeld sah so aus. Also Textfeld, bestätigen und weiter.
    Es funktioniert, gefällt mir aber nicht.


    HTML
    1. <form action="" method="post">
    2. <input id="form" type="text" size="40" maxlength="250" pattern="[a-e]{1}" title="Bitte a, b, c, d, e eingeben" placeholder="Antwort" name="antwort"><br>
    3. <input type="submit" value="Bestätigen" autofocus>
    4. <input type="submit" formaction="frage2.php" value="nächste Frage">
    5. </form>


    Also kam ich auf die Idee mit den Radiobutton.
    Den Code hatte ich ja gezeigt. Hier gerne noch mal.




    MIt Bestätigung würde es so aussehen, finde es aber nicht so ansprechend und umständlich.

    HTML
    1. <a href="##" title="##" class="backbutton">Vorherige Frage</a> <!-- Link -->
    2. <input type="submit" class="qualibutton" formaction="frage1.php" value="bestätigen"> <!-- Button -->
    3. <a href="frage2.php" title="##" class="qualibutton">Nächste Frage</a>


    Mehr Code gibt es eigentlich nicht. Mal abgesehen von CSS und PHP. Ich hoffe, ich habe mich verständlich ausgedrückt. Vielleicht bleibt mir ja auch nur der ungeliebte Weg mit der Bestätigung, aber er irgendwie müsste es doch anders gehen. Habe mir schon Finger wund gegoogelt.

  • OK, sehr schade. ?(


    Ich weiß leider auch nicht, wie ich es anders erklären soll.
    Trotzdem Danke für die Mühe.
    Einen Versuch noch.
    Eigentlich soll ja nur die Antwort beim Klicken auf "nächste Frage" gespeichert werden und weiter zur nächsten Frage leiten. Im Moment wird ja die Antwort nur durch den "Bestätigungsbutton" gespeichert.


    Vielleicht noch ein kurzer PHP-Auszug

    PHP
    1. if($_POST['aufgabe001']=="a"){
    2. setcookie('frage1', true, time()+3600);
    3. }else{
    4. setcookie('frage1', 0, time()+3600);
    5. }


    In diesem Beispiel wäre jetzt Antwort a richtig und wird mit wahr oder falsch im Cookie gespeichert.

  • Du kannst doch für jede Frage eine Seite erstellen und jeweils die vorherige Frage abfragen. Dann kannst du noch immer jederzeit von jeder Frage aus zur Auswertung springen. Siehe Diagramm.


    diagramm.png


    Die Seite mit Frage 1 würde dann so aussehen:


    HTML
    1. <form action="auswertung.php">
    2. [Frage1]
    3. [Antwortmöglichkeiten]
    4. <input type="submit" value="Auswertung">
    5. <input type="submit" formaction="frage2.php" value="Zu Frage 2">
    6. </form>


    Die Seite zu Frage 2 sieht dann so aus:


    HTML
    1. <?php
    2. // Frage 1 und 3 abfragen und speichern
    3. ?>
    4. <form action="auswertung.php">
    5. [Frage2]
    6. [Antwortmöglichkeiten]
    7. <input type="submit" value="Auswertung">
    8. <input type="submit" formaction="frage1.php" value="Zu Frage 1">
    9. <input type="submit" formaction="frage3.php" value="Zu Frage 3">
    10. </form>


    Dort speicherst du Frage 1 und Frage 3 (falls der Benutzer bei Frage 3 auf "Zu Frage 2" klickt). So baust du dann alle deine Seiten auf. Und in der Auswertung kannst du dann alle abfragen und prüfen welche Fragen beantwortet wurden und welche nicht.


    Ich hoffe ich habe dich richtig verstanden.

  • Danke für die Hilfe. Ich habe es jetzt endlich hinbekommen.


    Hier mal meine Lösung, falls jemand Interesse haben sollte.


    Allem voran ging ein Javascript mit JQuery, das ein Autosubmit auslöst.

    JavaScript
    1. $('input[name=aufgabe001]').change(function(){
    2. $('form').submit();


    Dann musste ich mir nur noch überlegen, wie der Button anschließend auf auf "Checked" bleibt.
    Das habe ich mit dann mit php hinbekommen.
    Hier ein Beispiel.

    HTML
    1. <input type="radio" id="a" name="aufgabe001" value="a" <?php if (isset($_POST['aufgabe001']) && $_POST['aufgabe001'] == 'a') {echo ' checked="checked"';} else {echo '""';}?>>
    2. <label for="a">a)</label>


    Es ist wahrscheinlich nicht der sauberste Weg, aber es funktioniert erst mal. Immerhin wird jetzt ein Submit nach Anklicken der Lösung ausgelöst und ich erspare mir so einen extra Button.
    Verbesserungsvorschläge nehme ich natürlich gerne entgegen. :)