• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Eine überwältigende Zahl von Einsendungen wartet nun auf Euch, um begutachtet zu werden! Schaut selbst, welche Blüten das Thema hervorgebracht hat und stimmt dann ab, was davon Euch am besten gefällt. Hier geht es lang zur Abstimmung --> Klick

Skript für ein Frage-Antwort-System mit mehrstufigen Fragen gesucht

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Hi,

kennt jemand eine Skript welches folgende Anforderungen erfüllt bzw. weiß jemand wie man so eine Funktion korrekt nennt?

  • Der Besucher bekommt eine Frage zu sehen z. B. "Mit welchem Produkt habe Sie ein Problem?"
  • Darauf spezifiziert sich die nächste Frage abhängig von der vorherigen Auswahl, z. B. "Haben Sie Probleme mit der Bedienung, der Installation oder der Entsorgung?"
  • Es folgt dann evtl. noch ein dritter Schritt, z. B. "Besteht das Problem von Anfang an oder seit kurzem?"
  • Anschließend soll aus einem Antwortpool die passende Antwort rausgesucht werden oder wenn keine Lösung vorhanden ist eine Weiterleitung zum Kontaktformular

Mir sind bislang nur Skripte bekannt, die eine mehrstufige Umfrage einfach nur statistisch auswerten.
 

seaker

Empire
Registriert
19.04.10
Beiträge
88
Klingt nach nem klassischen Ajax-Szenario.

Abhängig von der Auswahl aus dem ersten Dropdown wird per Script die Daten der zweiten Eingabe aus ner Datenbank geladen und damit dann wiederum das 2. Dropdown-Feld geladen. Das Spiel kannst du dann bis zum Erbrechen treiben je nachdem wie viele Felder nacheinander gefüllt werden soll.

Die Crux daran ist die richtige Struktur der Daten im "Backend" zu haben, sprich der Aufbau der Datenbank oder falls es in 'nem Flat-File vorliegt eben die Struktur desselben. Wenn allerdings die nächste Frage immer nur von der direkt vorhergehenden Auswahl abhängig ist, dann wird die Struktur wieder recht einfach und man kann ein und das selbe "Nachlade-Script" für alle Felder benutzen.

Bei google solltest du da mit den klassischen AJAX-Anwendungen recht weit kommen (sprich asynchrones nachladen der Daten per PHP (beispielsweise) mit anschliessender DOM-Manipulation). Das wäre zumindest die Variante oder nachladen der gesamten Seite.

Das ganze kannst du aber auch ohne AJAX / JS lösen indem man jede Anwortgruppe in n Formular packt, die Seite dann per Button abschickt und die Daten eben beim Laden auswertet und daraus dann die neuen Antwortgruppen baut. Script zum Nachladen der Inhalte ist dem Fall dann so ziemlich das selbe wie bei dem Fall mit AJAX.

Die Entscheidung liegt dann bei dir welchen Weg (mit oder ohne JS) du gehen willst.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
Also ich bin grade an einem Projekt, wo ich so etwas ähnliches in C++ + MySQL im Backend programmiere. Leider ist noch ein großer Teil der Scripting Engine (Befehlslogik wird in einer DB deklariert, also man sendet dem Server einen Befehl, der dann entsprechend darauf reagiert) nicht fertig. Aber ein Hardcoded Frage Antwort System ist damit auf jedenfall schon möglich.
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Danke für eure Antworten. Ich hatte eher nach einer halbwegs fertigen Lösung gesucht.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
Naja halbwegs fertig ist Ansichtssache. Da Backend ist bei mir schon fertig (Objectpersisiterung, Lazyloading, blablabla), sogar eine Server <=> Sessionverwaltung ist vom Ding her fertig. Das einzige was halt fehlt ist die Möglichkeit dies an Wünsche außerhalb vom Sourcecode umzusetzen. Hardcodiert kann man natürlich ein Frage Antwort Spiel machen (über boost.asio). Das geht auch verdammt gut, wie ich finde. Es ist sogar möglich Antworten aus einer std::map oder einem std::vector zu nehmen. Aber es kommt ja drauf an, auf was für einer Plattform du das laufen lassen willst. Ich gehe mal von einer Webseite aus, oder? Darum würde meinst eigentlich wegfallen, auch schon allein aus dem Grund, da die Lizenzfrage noch nicht ganz ausdskutiert ist. Obwohl, ist egal, weil ich im Moment ehh das alleine mache. Und es ist noch keine XML oder JSON Schnittstelle fertig, aber das wäre mal eine Idee für die Zukunt :D
Ich hatte aber ehh vor, die Backend Architektur rauszugeben, die ist glaube ich meiner Meinung nach ganz praktisch :D

Wenn du zeit hast, kannste dir so etwas schnell zusammenproggen, ich schätze mal dafür braucht man ca 2 Wochen.
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Ja, es ist für eine Website und soll auch auf schmalen Webspace laufen also PHP und MySQL. Schnell programmiert ist bei dir in 2 Wochen? Oder meintest du Stunden? ;)
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
achso, in php... ne ich meinte in c++ mit MySQL Backend + Persisiterungs Controller Klassen, nem Service-Session-middleend + cmd- frontend. Das geht nicht ganz so schnell, besonders, wenn du die Ausführung komplett in SQL skripten willst ;) Obwohl ich glaube die lib ist schon fast so weit, dass es schneller geht. In php geht sowas natürlich schneller und viel einfacher xD
 

seaker

Empire
Registriert
19.04.10
Beiträge
88
Also wenn es eine reine PHP - Lösung sein soll, dann ist das nicht weiter kompliziert.

Die simpelste Form wäre ein Formular auf deiner Webseite welches wieder an sich selber geschickt wird. Dort packst du erstmal das erste Feld rein welches auszuwählen ist. Die restlichen Fragen werden erst dann erzeugt, bzw zusätlich angezeigt, wenn man an dem entsprechenden Step ist.

Die einfachste dazu passende Datenbank hat eine Tabelle mit folgendem Aufbau

Spalte 1 = Antwort von Frage 1
Spalte 2 = Antwort von Frage 2
Spalte 3 = Antwort von Frage 3
Spalte 4 = Ergebnis

Wenn du nun das o.g. Formular absendest ermittelt dir dein PHP Script aus der DB die Antwortmöglichkeiten zu Frage 2 über die Abfrage "Where Spalte1 = <Wert aus Formular mit Frage 1>.
Hat man Frage 2 abgesendet lautet die Abfrage "Where Spalte1 = <Wert aus Formular mit Frage1> AND Spalte2 = <Wert aus Formular mit Frage2>
usw.

Wenn du dann alle ausgewählt hast, erhälst du in der Regel nur noch einen Datensatz aus der Datenbank und gibst dann eben Spalte 4 (aus dem beispiel oben aus).

Mit ist dabei durchaus bewusst, dass ich die Normalenformen der Datenbankkonzeption ausser acht gelassen habe. Dies soll nur als simples und schnelles Beispiel dienen wie so ein script aufgebaut werden kann.

Bleibt nur noch die Frage wieviel Erfahrung du in Sachen PHP - Programmierung und Abfragen in mySQL hast?

Bei Fragen kannst du dich auch gerne an mich wenden (Kontaktdaten in meinem Profil).