Ergebnis 1 bis 9 von 9

Thema: Selbsttest mit Auswertung in Contao?

  1. #1
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard Selbsttest mit Auswertung in Contao?

    Hallo zusammen,

    ich möchte einen kleinen Selbsttest für die Besucher einer Website erstellen, auf denen sie 15 Fragen per Multiple-Choice beantworten sollen. Diese Antworten sollen mit unterschiedlichen Punktzahlen hinterlegt sein, so dass am Ende eine Gesamtpunktzahl herauskommt.

    Der Besucher soll dann möglichst auf eine zweite Seite gelangen ("zum Ergebnis", muss aber nicht sein wenn zu aufwändig) und hier findet er dann drei Ergebnismöglichkeiten. Hier sollte dann seine Punktzahl stehen und er kann direkt sehen, was für ihn relevant ist. Gerne auch, indem das Ergebnis für seine Punktzahl herausgehoben ist (farbiger Text etc.).

    Geht so etwas mit Contao? Geht das ohne große Programmierkenntnisse? Gibt es dafür vielleicht sogar eine Erweiterung (habe allerdings nix gefunden)?

    Für eure Hilfe wäre ich dankbar
    Jan-Dirk

  2. #2
    Contao-Nutzer
    Registriert seit
    30.06.2009.
    Beiträge
    112

    Standard

    Hallo Dirk,

    ich hab so etwas auch schon umgesetzt und habe dabei versucht dass das Ganze auch später durch den Kunden halbwegs leicht zu Pflegen ist.
    Für dich nochmal Quick'n'Dirty zusammengebaut.

    Kurzform:

    Formular anlegen mit entsprechenden Felden. In meinem Fall SELECT Felder mit Gewichtungen von 1-7.

    rate.jpg


    Auf der Weiterleitungsseite ein HTML Inhaltselement einfügen {{file::auswertung.php}}
    mit folgendem beispielhaften Inhalt:
    PHP-Code:
    <?php
    $ergebnis 
    =

    $this->Input->post('1') +
    $this->Input->post('2');

    if(
    $ergebnis 5)
    echo 
    $this->getContentElement(35);
    if(
    $ergebnis 4)
    echo 
    $this->getContentElement(36);

    ?>
    Die jeweiligen Inhaltselemente, hier 35 und 36, beinhalten dann den Anzuzeigenden Text der Auswertung.

    Entschuldigung dass ich mich kurz fasse, aber ich muss los
    Bei Fragen einfach anschreiben!

    Grüße
    Dj-Harem

  3. #3
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard

    Hallo Dj-Harem,

    danke für Deine Hilfe. Ich bin froh, dass mein Vorhaben mit Contao scheinbar umsetzbar ist.

    Leider habe ich es mit Deiner Anleitung noch nicht hinbekommen. Ich habe folgendes gemacht.
    • 2 Seiten erstellt, eine Selbsttestseite und eine Weiterleitungsseite für die Auswertung.
    • Neues Formular erstellt mit 2 Radio-Button-Menüs mit jeweils 3 Fragen. Werte von 1,2 und 3 vergeben.
    • Formular auf der Selbsttestseite eingebunden.
    • Auf der Weiterleitungsseite ein HTML-Element mit Inhalt {{files::auswertung.php}} erstellt.
    • 2 Inhaltselemente mit Text als Platzhalter für Auswertungstexte erstellt.
    • Extern ein Php-Dokument mit Deine Angaben erstellt, meine IDs für die Auswertungstext eingefügt und in den Ordner "files" kopiert.

    Das Formular funktioniert, ich komme nach dem Absenden auf die Weiterleitungsseite. Leider wird auf der Weiterleitungsseite nichts angezeigt. Ich befürchte, ich habe das mit der PHP-Datei und dem HTML falsch verstanden, habe aber leider keine Ahnung, wie es richtig sein soll.

    Wohin soll ich die PHP-Datei speichern? Was muss ich darin ändern, damit meine Auswertungstexte angezeigt werden, nur die ID?
    Mit {{files::auswertung.php}} verweise ich ja auf ein Inhaltselement. Findet er es denn überhaupt im Ordner "files"?

    Sorry, dass ich noch einmal nachfragen muss, aber ich hoffe, Du kannst mir das noch etwas genauer beschreiben, damit ich es nachvollziehen kann.

    Danke und viele Grüße
    Jan-Dirk

  4. #4
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    die php muss nach templates.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  5. #5
    Contao-Nutzer
    Registriert seit
    30.06.2009.
    Beiträge
    112

    Standard

    Hallo Dirk,

    der Insert-Tag muss file heißen, ohne das s.

    Im contao-Wiki steht beim Insert-Tag {{file::*}} folgendes.

    {{file::*}} Dieses Tag wird mit dem Inhalt einer .php- oder .tpl-Datei aus dem templates-Verzeichnis ersetzt (ersetzen Sie * mit dem Namen). Bei Bedarf können Sie Argumente übergeben: {{file::file.php?arg1=val&arg2=val}}

    Ich denke du bist auf dem richtigen Weg.

    Grüße
    Dj-Harem

  6. #6
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard

    Hallo DJ-Harem,

    das funktioniert nun, es wird ein Text auf der Auswertungsseite ausgegeben. Prima, Danke!

    Was allerdings nicht funktioniert ist eine korrekte Auswertung, denn es wird immer derselbe Text ausgegeben, egal welche Antworten ich ankreuze (immer ID404).
    Ich habe noch nicht verstanden, was das .php Script macht, daher ist wohl auch eine korrekte Ausgabe nicht möglich.

    Im Moment sieht es so aus:
    PHP-Code:
    <?php 
    $ergebnis 


    $this->Input->post('1') + 
    $this->Input->post('2') +
    $this->Input->post('3'); 

    if(
    $ergebnis 2
    echo 
    $this->getContentElement(400); 
    if(
    $ergebnis == 2
    echo 
    $this->getContentElement(402); 
    if(
    $ergebnis 2
    echo 
    $this->getContentElement(404); 
    ?>
    Noch einmal zur Struktur des Tests.
    Es sollen 15 Fragen werden, die jeweils 3 Antworten haben. Diese Antworten bekommen, je nachdem wie wichtig sie für das Ergebnis sind, eine Punktzahl von 1-3 (habe ich hier als Wert eingetragen).
    Am Ende soll also eine Gesamtpunktzahl herauskommen, die den User einordnet.
    Die Auswertung soll dann einen Text ausgeben für die Punktzahl 15-22 Punkte (ID400), 22-35 Punkte (ID402) oder über 35 Punkte (ID404).

    Sagt das .php Script dies so aus? Kann es überhaupt die Werte addieren?

    Und noch etwas: Kann ich die erreichte Punktzahl ebenfalls auf der Auswertungsseite ausgeben, damit der User nicht denkt "War ja klar, dass das rauskommt!"?
    So könnte er den Test für sich verändern und sehen, dass ein tatsächliches Punktesystem dahinter steckt.

    Ich hoffe, dass ich damit das Script nicht überfordere...

    Danke für Eure Hilfe
    Jan-Dirk

    Edit: habe jetzt mit allem umprobiert, bekomme es aber nicht hin. Wenigstens habe ich rausbekommen, wie man ein Gleich schreibt (==)... ;o))
    Geändert von doescher (16.07.2015 um 14:38 Uhr)

  7. #7
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard

    Also, nun habe ich einige Stunden damit verbracht, mir Grundlagen von php anzugucken – nur um noch verwirrter zu sein.

    Ich habe keine Ahnung, wie ich per php abfragen kann, wie oft eine Option ausgewählt wurde.
    Die Optionen bzw. Werte der einzelnen Fragen würde ich übrigens nicht 1,2 oder 3 nennen, sondern eher positiv, neutral, negativ.
    Aber wie ich das hinbekomme, dass gezählt wird, wie oft welche Option vom User ausgewählt wurde – keine Ahnung.

    Eigentlich müsste dann dieser Wert jeweils mit der Punktzahl für positiv (1 Punkt), neutral (2 Punkte) und negativ (3 Punkte) multipliziert und diese Ergebnisse dann addiert werden. Diese Gesamtzahl sollte dann mit diesem Code zugeordnet werden.
    PHP-Code:
    if($ergebnis 22)  
    echo 
    $this->getContentElement(400);  
    if(
    $ergebnis xxx)  
    echo 
    $this->getContentElement(402);  
    if(
    $ergebnis 36)  
    echo 
    $this->getContentElement(404); 
    Allerdings habe ich auch nicht rausbekommen, wie ich angeben kann, dass die Punktzahl 23-35 für Element 402 gilt (siehe XXX).

    Vielleicht hat ja jemand von Euch so etwas schon umgesetzt und kann mir helfen. Wäre toll, wenn das klappen würde...

  8. #8
    Contao-Nutzer
    Registriert seit
    30.06.2009.
    Beiträge
    112

    Standard

    Hallo Dirk,

    man könnte das mit einer Schleife machen, aber wenn ich will dich nicht noch mehr verwirren und so bist du dann auch noch später flexibel um die Rechnung zu ändern.
    Code:
    <?php  
    $ergebnis =  
    
    $this->Input->post('1') +  // die Nummer ist der Feldname des SELECT Menüs
    $this->Input->post('2') +  // der Wert, welcher zum Rechnen hergenommen wird
    $this->Input->post('3') +  // ist der Wert unter Optionen
    $this->Input->post('4') +  
    $this->Input->post('5') +
    $this->Input->post('6') +  
    $this->Input->post('7') + 
    $this->Input->post('8') + 
    $this->Input->post('9') +  
    $this->Input->post('10') +
    $this->Input->post('11') +  
    $this->Input->post('12') + 
    $this->Input->post('13') + 
    $this->Input->post('14') +  
    $this->Input->post('15'); 
    
    echo $ergebnis; // gibt das Ergebnis aus  
    
    if($ergebnis < 22)  
    echo $this->getContentElement(400);  
    if($ergebnis >= 22 && $ergebnis <= 35)  
    echo $this->getContentElement(402);  
    if($ergebnis > 35)  
    echo $this->getContentElement(404);  
    ?>
    Bin schon wieder auf dem Sprung...
    Grüße
    Dj-Harem

  9. #9
    Contao-Fan
    Registriert seit
    05.11.2012.
    Beiträge
    400

    Standard

    Hallo Dj-Harem,

    superklasse, es funktioniert genau so, wie es soll!
    Ohne Deine Hilfe hätte ich das nicht hinbekommen, vielen Dank!

    Wer den Test mal angucken möchte, kann ihn hier finden.

    Vielen Dank noch einmal, dieses Forum ist einfach gut!

    Jan-Dirk

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •