Brauche Hilfe, um mein Quizscript zu verbessern

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Brauche Hilfe, um mein Quizscript zu verbessern

    Hallo,

    ich möchte auf meiner HP ein Quiz anbieten. Dafür habe ich von irgendwoher ein Skript heruntergeladen. Leider weiß ich nicht mehr woher.
    Nachdem ich das Skript ein bißchen modifiziert habe, gibt es dort aber noch einige unschöne Dinge.

    So kommte z.B., wenn das Quiz beantwortet ist, ein Lösungsformular. Bei dessen Auflösung der Fragen aber nur „Frage 1 wurde falsch beantwortet“ steht.

    Dort soll aber stehen,
    1. welche Frage das überhaupt war,
    2. was die falsche Antwort war und
    3. was die richtige Antwort gewesen wäre.

    Die Variablen müssten doch eigentlich alle schon da sein.
    Vielleicht kann mir jemand von euch einen Schubs geben, wie ich vorgehen muss.

    Danke schon mal
    bis dann

    Hier ist der Code:
    PHP-Code:
    <?
    #Definition der Fragendatei
    #Datei hat folgenden aufbau:
    #Prozeile:
    #1. Laufendenr
    #2. Fragentext
    #3. Optional "leer" oder die url eines Bildes zum Bebildern der Frage
    #4. Die nummer der richtigen Antwort
    #5.bis ? jeweils eine Auswahlantwort mit der fortlaufenden Nummer
    # Die Nummer der richtigen Antwort muß mit der unter 4. genannten übereinstimmen.
    # Pro Frage können unterschiedlich viele Auswahlantworten angegeben werden.
    $fragedat="Quizfragen.txt";

    # Angabe zur Anzahl derFragen
    $fragenanzahl=10;

    # Speicherdateiname für die Bestenliste
    $top_list="bestenliste.txt";

    # Anzahl der Bestenlisteneinträge
    $bestenanzahl=5;

    # Fragendatei der Variablen $dat zuweisen
    $dat=file($fragedat);

    # Datei wurde über einen Link aufgerufen
    # Eingansseite schreiben

    if(!$sent)
    {
    echo "<br><left>Gewertet werden Anzahl der richtigen  Antworten und die benötigte Zeit.<br> </left>";
    echo "<left>Die Fragen werden aus einem Pool von Fragen zufällig ausgesucht,<br> die vorgegeben Antworten werden in zufälliger Reihenfolge angezeigt</left><br><br>";

    echo "<left><a href='".$PHP_SELF."?sent=start'><b>Quiz sofort starten!</b></a><br><br><a href='".$PHP_SELF."?sent=bvorschau'><b>Bestenliste einsehen.</b></a><br><br><br><br>
    <left>";


    }

    # Fragenauswahl wurde gestartet
    else if ($sent and $sent=="start")
    {
    $auswahl=array();

    #Fragen nach dem Zufallsprinzip auswählen

    while (count($auswahl)<$fragenanzahl)
    {
    $i=rand(0,count($dat)-1);
    $treffer=false;

    for($xi=0;$xi<count($auswahl);$xi++)
    {
    if($auswahl[$xi]==$i)
    $treffer=true;
    }

    if(!$treffer)
    $auswahl[count($auswahl)]=$i;
    }
    $fragen=array();
    for($i=0;$i<count($auswahl);$i++)
    {
    $fragen[]=split("\|",$dat[$auswahl[$i]]);
    }
    # Formular mit fragen schreiben
    # javascript zur Zeiterfassung schreiben
    # Zeiterfassung beginnt wenn die seite geladen wurde
    #und endet mit Absenden der Antworten.
    echo "<script type='text/javascript'>\n";
    echo "function stoppzeit()\n";
    echo "{document.forms['quiz'].endzeit.value=new Date().getTime();}\n";
    echo "function zeitanzeigen()\n";
    echo "{document.forms['zeit'].sek.value=parseInt(document.forms['zeit'].sek.value)+1;setTimeout('zeitanzeigen()',1000);}\n";
    echo "</script>\n";

    echo "<body onload=\"document.forms['quiz'].startzeit.value=new Date().getTime();setTimeout('zeitanzeigen()',1000)\">";
    echo "<form name='zeit'><b>Bisher benötige Zeit:</b><input type='text' name='sek' value='0' onfocus='blur()' size='10'></form>";


    echo "<form name='quiz' onsubmit='return stoppzeit()' action='".$PHP_SELF."' method='post'>";
    echo "<input type='hidden' name='sent' value='ende'>";
    echo "<input type='hidden' name='startzeit'>";
    echo "<input type='hidden' name='endzeit'>";

    #tabelle erstellen
    echo "<table width='500' border='0'>";
    #für jede Frage eine Zeile

    for($i=0;$i<count($fragen);$i++)
    {
    echo "<tr><td colspan='2' class=linksoben>";
    #Fragentext schreiben
    echo " ".($i+1).". ".$fragen[$i][1]."</td></tr>";
    echo "<tr><td width='100'  class=linksoben>";
    #wenn Bildvorhanden bild erstellen
    if($fragen[$i][2]!=null)
    echo "<img src='".$fragen[$i][2]."' width='100'>";
    else
    echo "&nbsp;";
    echo "</td>";
    echo "<td  class=linksoben width='400'>";

    #reihenfolge der Antworten zufällig wählen

    $antw=array();

    while(count($antw) < count($fragen[$i])-5)
    {

    $xi=rand(4,count($fragen[$i])-2);
    #echo $xi;
    $treffer=false;
    for($xxi=0;$xxi<count($antw);$xxi++)
    {

    if($antw[$xxi]==$xi)
    $treffer=true;
    }

    if(!$treffer)
    $antw[count($antw)]=$xi;
    }

    for($xi=0;$xi<count($antw);$xi++)
    {
    $segm=split("#",$fragen[$i][$antw[$xi]]);
    echo "<input type='hidden' name='fnummer".$i."' value='".$fragen[$i][0]."'>";
    echo "<input type='radio' name='anummer".$i."' value='".$segm[1]."'>";
    echo $segm[0]."<br>";
    }
    echo "<br><br></td></tr>";

    }

    echo "<tr><td colspan='2' align='center'><input type='submit' name='senden' Value='Fertig'></td></tr> ";
    echo "</table>";
    echo "</form></body>";
    }

    #Antworten wurden abgeschickt

    else if($sent and $sent=="ende")
    {
    $dat=file($fragedat);  #Fragendatei öffnen
    $tempdat=array();
    for($i=0;$i<count($dat);$i++)
    {
    $tempdat[$i]=split("\|",$dat[$i]);
    }

    echo "<left><table width='400'>";

    $gesamtpunkte=0;

    #antworten auslesen und auf richtigkeit prüfen

    for($i=0;$i<$fragenanzahl;$i++)
    {
    $fehlerfrei=0;
    for($xi=0;$xi<count($tempdat);$xi++)
    {
    $tempnummer="\$fnummer$i";
    eval("\$x1 = \"$tempnummer\";");
    $tempantw="\$anummer$i";
    eval("\$x2 = \"$tempantw\";");

    if(($x1==$tempdat[$xi][0]) and ($x2==$tempdat[$xi][3]))

    $fehlerfrei++;
    }

    echo "<tr>";
    # Frage richtig beantwortet


    if($fehlerfrei>0)
    {
    $gesamtpunkte++; #Zaehler um eins erhöhen und grünes Quadrat schreiben
    echo "<td class=linksoben align='left'>Frage&nbsp;".($i+1)."&nbsp;wurde richtig beantwortet</td><td class=linksoben width='70'><img src='../green.gif'></td></tr>";
    }
    else #Frage falsch oder nicht beantwortet , rotes Quadrat schreiben
    echo "<td class=linksoben align='left'>Frage&nbsp;".($i+1)."&nbsp;wurde falsch oder gar nicht beantwortet</td><td class=linksoben width='70'><img src='../red.gif'></td></tr>";
    }
    ?>
Lädt...
X