php/html: Zusammenfassung am Ende einer Umfrage

R

rikola

Foren Gott
Hallo,

ich habe mal wieder eine Frage zu php/html:

ich verwalte eine Umfrage, bei der ueber mehrere Seiten/php-Dateien hinweg Formulare ausgefuellt und in eine mysql-Datenbank eingetragen werden.

Nun soll am Ende eine Zusammenfassung aller Antworten angezeigt werden. Meine Frage nun:
Gibt es eine halbwegs automatische Moeglichkeit, diese Seite zu erstellen, oder muss ich die Ergebnisse zwischenspeichern / wieder aus der Datenbank holen und die Seite (sagen wir mal, summary.php) am Ende damit auffuellen? Damit muesste ich auch alle Fragen wiederholen bzw. in die summary.php eintragen.

Fuer den Fall, dass die Seite 'von Hand' erstellt werden muss: Kann ich sie nach und nach auffuellen, d.h., die Variablen nach abschicken jeder Seite eintragen lassen, oder sollte ich fuer jede Frage (insgesamt 44) eine $_SESSION[...] erstellen, die ich am Ende alle abfrage? Oder waere es einfacher, die Daten wieder aus der Datenbank zurueckzuholen?

Ich hoffe, meine Fragestellung ist nicht zu chaotisch, aber ich waere dankbar fuer alle Vorschlaege und Kommentare.

Vielen Dank!
 
das mit der session ist doch ein guter ansatz. :)
du solltest dabei aber bedenken, dass $_SESSION letztendlich auch nur ein assoziatives array ist, welches du mit foreach prima und ohne grossen aufwand durchgehen kannst.
 
Erstelle nen array und schreib den dann in die Session.

Dann kannst du in jedem Formular den array aus der Session holen neue Werte hinzufügen und dann das ganze wieder in die Session hauen.

Da man meist auch andere Sachen in die Session schreiben will als nur Daten von einem einzigen Formular ist es vielleicht etwas ungeschickt die Session selbst als Array zu missbrauchen und dann mit foreach auszuwerten.

Wenn du etwas mehr Ahnung hast kannst du dir auch ne Klasse schreiben , eine Objekt der Klasse in die Session laden und dann alles über die Klasse abwickeln.

Zur Not würden Temporäre Dateien auch gehen ist aber etwas Umständlicher und Zwackt an der Performace, weil Zugriff auf Platte immer Langsamer ist als in den Speicher.

Also entweder nen Array in die Session oder eine Klasse schreiben .

Gruß Sono
 
Session

Guten Abend,

ich würde dir auch sehr empfehlen das Problem mit einer Session zu lösen.
Am besten startest du eine neue Session auf der Start-Seite und fütterst diese mit den Eingaben. Am Schluss kannst du ein Script machen, das die Session ausgiebt (z.B. mit einer for-Schleife) und dazu die Daten in die MySQL-DB abspeichert.
Das wäre die sauberste und eleganteste Lösung, die man so in PHP oder andere Web-Applikationen (z.B mit Java) braucht.

ACHTUNG: Du musst aufpassen, ob dein Server / Host das Öffnen einer Session erlaubt. Wenn du nicht sicher bist oder sogar weisst, dass es nicht geht musst du dich beim Administrator melden.

Viel Spass beim Pröbeln! =c)
nidamico
 
Hidden

Hi rikola

Die Lösung mit dem Array und den Sessions ist sicher die effizienteste.
Wenn du jedoch mit PHP nicht so bewandt bist, empfehle ich dir eine andere Lösung:

Gib deine Antworten in "hidden fields" weiter. Hidden fields sind versteckte Formular-Felder:
Code:
<input type="hidden" name="frage1" value="antwort_x" />

Praktisch heisst das, dass du auf der 2. Frage-Seite ein hidden field für die Frage 1 hast, auf der 3. Frageseite 2 hidden fields (für die Antwort von Frage 1 und Frage 2).

Auf deiner Letzten Seite kannst du dann alle Daten aus den POST-vars rausholen.

Ich hoffe, du bist bei meinen Erklärungsversuchen drausgekommen. Wenn du noch weitere Hilfe dazu brauchst.. melde dich ruhig!

Viel Glück! :) :))
 
Hallo an alle,

vielen Dank fuer Eure Vorschlaege. Eine Session wird in dem Fragebogen bereits gestartet, daher werde ich es damit versuchen. Klassen ausserhalb von C++ sind mir nicht ganz geheuer, die werde ich erstmal lassen.

Danke nochmals!
 

Ähnliche Themen

Sicherheitsfragen zu PHP-Anwendungen auf der Webseite

CSV Datei mit sed manipulieren/optimieren/ergänzen

DAViCal-Server: Aufgaben verschwinden

Umfrage: Zwischenspeichern oder 'back button'?

Onlineumfrage programmieren (mehrseitige HTML Formular an PHP übergeben)

Zurück
Oben