Formulardaten aus mehreren Seiten versenden

Hallo,

ich versuche gerade eine Umfrage zu erstellen, die aus 4-5 Seiten besteht. Allerdings sind es keine Multiple-Choice-Fragen, sondern der Teilnehmer soll eigene Antworten schreiben.
Am Ende sollen die Fragen und Antworten noch einmal zusammengefasst auf einer Seite angezeigt werden und (wenn möglich formatiert) an meine E-Mail-Adresse geschickt werden.

Mit einer Seite habe ich es problemlos geschafft. Bei zwei Seiten bin ich gescheitert. Ich hatte mich an dieses Beispiel gehalten:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php…
Das hat bei mir aber nicht funktioniert (lag wahrscheinlich am Auslesen des Arrays).

Hat jemand einen Tip, wie ich das als Unerfahrener am einfachsten machen kann? Oder ist das ohne tiefergehende php-Kenntnisse nicht möglich?

Vielen Dank für eure Hilfe,
Booze

Klingt fuer mich so als ob du gleiche Namen fuer die Formularfelder verwendest.
Ansonsten kann man ohne Quelltexte (bzw entsprechende Auszuege daraus) nur orakeln wo genau der Fehler liegen koennte.

Gruesse
Stefan

Hallo Setfan,

stimmt, ich hätte wenigstens den Code anfügen sollen.
Ich habe es gestern noch mit folgender Lösung hinbekommen:

Frage1.php

Name:

Aufgabe 1:

Dies ist der Text für die 1. Frage.

<?php echo "$_POST[antwort1]"; ?>

Frage2.php

Frage 2:

Dies ist der Text für die 2. Frage.

<?php echo "$_POST[antwort2]"; ?>

">
">

ergebnis.php

Frage 1:

<?php echo "$_POST[frage1]"; ?>

Antwort 1:

<?php echo "$_POST[antwort1]"; ?>

">
">
">
">
 

Frage 2:

<?php echo "$_POST[frage2]"; ?>

Lösung 2:

<?php echo "$_POST[antwort2]"; ?>

">
">
">
">
 

Mein Problem ist jetzt noch die Möglichkeit, die Angaben wieder zu ändern, deswegen bei „Ändern“ eine eigene Seite Frage1b.php.
Besser wäre es sicherlich, die Antworten auf einer eigenen Seite mitzuführen, wie es in dem Beispiel hier gemacht wird:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php…
Leider verstehe ich nicht, wie die Seite function.inc.php arbeitet. Woher bekommt sie die daten, und wie kann ich diese Dann auf meiner Ergebnisseite auslesen?

Für weitere Tips wäre ich dankbar! (Bitte meinen Code nicht ganz verreißen, aber ich habe wenig keine Ahnung von der Materie!)

Vielen Dank und schönen Gruß,
Booze

<?php :echo "$_POST[antwort1]"; ?>

Muss man das verstehen?
Es gibt doch noch gar keine Antwort…

Frage2.php

Hier würde ich jetzt erstmal die 1. Antwort in ein Array oder in eine Variable schreiben, z. B.:
$antworten[0]=$_POST[antwort1];

<?php :echo "$_POST[antwort2]"; ?>

Verstehe ich auch schon wieder nicht.
Es gibt doch noch keine 2. Antwort… wieso soll die in der textarea stehen?

Moin,

was ich nicht verstehe, ist: Wieso arbeitest du teilweise mit dem neuen Befehl $_POST[] und teilweise mit dem alten Befehl $HTTP_POST_VARS[] ?

Gruß Marco

<?php ::echo "$_POST[antwort1]"; ?>

Muss man das verstehen?
Es gibt doch noch gar keine Antwort…

wenn man das aus einem script kopiert hat, das vor und zurueck kann, kann es da auch eine antwort geben.

Dachte, er hätte alles gepostet… mhh…

Genau das hatte ich vor. Das Problem war dann aber, dass wenn man zur 1. Frage zurück geht, und die Antwort verändert, die 2. und 3. Antwort wieder leer sind und man sie erneut eingeben muss.
Wie könnte man das verhindern?

Gruß,
Booze

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

ehrlich gesagt: aus Unwissenheit.
Ich habe mir die Sachen im Internet aus verschiedenen Codes zusammengesucht. Irgendwann hat es dann mit $HTTP_POST_VARS[] funktioniert und dann dachte ich eben, dass es an diesem Befehl lag. Bei der Neufassung kann ich dann ja den neuen Befehl hernehmen.

Mein eigentliche Frage wäre jetzt vor allem:
Gibt es eine Möglichkeit, die Anworten direkt an die Ergebnisseite zu übergeben, ohne sie jedes Mal an die nächste Fragenseite schicken zu müssen?
Wie kann ich folgendes Problem noch lösen:
Wenn der Teilnehmer alle Fragen beantwortet hat, dann bekommt er auf der Ergebnisseite noch einmal die Möglichkeit seine Antworten zu korrigieren. Wenn er aber die 1. Antwort korrigiert und mit „Weiter“ navigiert, dann ist die Antwort 2 und 3 wieder weg. Diese sollten aber weiterhin angezeigt werden.

Vielen Dank schon mal allen für ihre Bemühungen! Werde mich gerne revanchieren (aber in einem anderen Forum!).

Gruß,
Booze

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin,

Gibt es eine Möglichkeit, die Anworten direkt an die
Ergebnisseite zu übergeben, ohne sie jedes Mal an die nächste
Fragenseite schicken zu müssen?

Rein theoretisch nicht. Es gibt die Möglichkeit eine komplette Session aufzubauen, aber damit habe ich mich noch nicht beschäftigt, da das für meine Anwendungen noch nicht relevant war. Und es soll auch nicht so einfach sein.
Ich denke die beste Möglichkeit für dich ist die mit den hidden inputs.

Grüße Marco

Ohne tiefgehende PHP-Kenntnisse nicht. Aber ich würde einfach jede Antwort in ein Array schreiben und nur das Array via hidden-tag zum nächten Dokument übergeben.

So, dass du jede Antwort in dem Array hast:
$array[0]=Antwort1
$array[1]=Antwort2
$array[2]=Antwort3

<?php ::::echo "$_POST[antwort1]"; ?>

Muss man das verstehen?
Es gibt doch noch gar keine Antwort…

wenn man das aus einem script kopiert hat, das vor und zurueck
kann, kann es da auch eine antwort geben.

Genau das hatte ich vor. Das Problem war dann aber, dass wenn
man zur 1. Frage zurück geht, und die Antwort verändert, die
2. und 3. Antwort wieder leer sind und man sie erneut eingeben
muss.
Wie könnte man das verhindern?

entweder mit post vorwaerts rueckwaerts und auf jeder seite alle daten al hiddenfelder mitschleifen oder
die daten wenn sie gepostet werden in dei sesion schreiben und die ausgabe nur noch auf die infos aus der session beziehen.