[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • [erledigt] Quiz Modul
Seite 1 von 1

[erledigt] Quiz Modul

Verfasst: 19. Jun 2015, 09:54
von nina95
Hallo Ihr lieben,

ich habe da ein Problem mit dem Quiz Modul aus der Download Seite.
Und zwar habe ich irgendwie das Gefühl dass dort etwas nicht richtig geschlossen wurde, da die Formatierung von allem folgenden immer kaputt ist. ich hab jetzt schon lange nach dem Fehler gesucht, aber ich finde ihn nicht. könnt ihr mir vielleicht helfen?

Hier mal die Codes.
Eingabe:

Code: Alles auswählen

<b>Bewertungstext</b><br><br>

<strong>0%</strong>:
<input type="text" name="VALUE[2]" value="REX_VALUE[2]" size="60" class="inp100" /><br>


<strong>20%</strong>:
<input type="text" name="VALUE[3]" value="REX_VALUE[3]" size="60" class="inp100" /><br>

<strong>40%</strong>:
<input type="text" name="VALUE[4]" value="REX_VALUE[4]" size="60" class="inp100" /><br>


<strong>60%</strong>:
<input type="text" name="VALUE[5]" value="REX_VALUE[5]" size="60" class="inp100" /><br>

<strong>80%</strong>:
<input type="text" name="VALUE[6]" value="REX_VALUE[6]" size="60" class="inp100" /><br>

<strong>100%</strong>:
<input type="text" name="VALUE[7]" value="REX_VALUE[7]" size="60" class="inp100" /><br>


<strong>Fragen</strong>:<br />
<textarea name="VALUE[1]" cols="80" rows="20" class="inp100">REX_HTML_VALUE[1]</textarea>
<br /><br>
<b>Musterformatierung</b><br>
<pre style="font-size:12px;">
What does PHP stand for?
PHP: Hypertext Preprocessor 
Personal Home Page 
Private Home Page 
Personal Hypertext Processor#

##NEXT##

Frage?
a
b#
c 
d
</pre>

<br><br><b>Separator</b><br>
<pre style="font-size:12px;">

##NEXT##

</pre><br>
Wichtig!<br>
Die richtigen Antworten werden am Ende mit # markiert. Zwischen den Datensätzen wird ein ##NEXT## plaziert!
Ausgabe:

Code: Alles auswählen

<div id="quiz">
<?php

$n  = false;

if(!function_exists('trim_x34pw_array')) {
function trim_x34pw_array($a){ foreach($a as $k => $v) { if($v=="") unset($a[$k]); } return $a; }
}

$text_bei_auswetung = array("0"   => "REX_HTML_VALUE[2]", "20"  => "REX_HTML_VALUE[3]", "40"  => "REX_HTML_VALUE[4]", "60"  => "REX_HTML_VALUE[5]", "80"  => "REX_HTML_VALUE[6]", "100" => "REX_HTML_VALUE[7]");

// Loadquiz data

foreach(explode("##NEXT##",  str_replace("<br />","", "REX_VALUE[1]")) as $v) { 
  
  $t = array(); $t2 = array();  
  foreach(explode("\n", trim($v))as $p) { if($p = trim($p))$t[] = $p; } 
  foreach($t as $k => $v2) { 
    if($k == 0) $t2["frage"] = $v2; 
    else { if(ereg("#$", $v2)) { $v2 = substr($v2,0, -1); $t2["richtig"] = $k-1; } $t2["antworten"][] = $v2; } 
  } 
  $fragen[] = $t2; 
}


$ex   = trim_x34pw_array((isset($_POST["ex"])) ? explode(";", $_POST["ex"]) : array());  
$cal  = trim_x34pw_array((isset($_POST["cal"])) ? explode(";", $_POST["cal"]) : array()); 
$sel  = trim_x34pw_array((isset($_POST["sel"])) ? explode(";", $_POST["sel"]) : array());

// AUSWERTUNG

if(isset($_POST["fid"]) and is_numeric($_POST["fid"]) and is_numeric($_POST["antwort"]) and isset($_POST["antwort"])) {

  if($_POST["antwort"] == $fragen[$_POST["fid"]]["richtig"]) $cal[] = 1; else $cal[] = 0;
  $ex[] = $_POST["fid"];
 $sel[] = $_POST["antwort"];

}


foreach($fragen as $k => $v) { if(in_array($k, $ex)) continue; ?>
<form id="quiz" name="quiz" method="post" action="<?php echo $_SERVER["REQUEST_URI"];?>">
  <div class="ask" style="margin-top:10px; margin-bottom:25px;"><h2><?php echo $v["frage"];?></h2><div>
 <div class="ans" style="margin-top:10px; margin-bottom:25px;"> 
 <?php foreach($v["antworten"] as $aid => $antwort) { ?>
  <p>
    <input type="radio" name="antwort" onClick="document.quiz.submit.disabled=false;" value="<?php echo $aid?>" id="radiobutton<? echo $aid?>" />
    <label for="radiobutton<?php echo $aid?>"><?php echo $antwort?></label>
  </p>
  <?php } ?>
</div>
  <p>
    <input type="submit" name="submit" value="NEXT" id="Submit" disabled="disabled"  />
  </p> 
  <input name="starttime" type="hidden" value="<?php echo (isset($_POST["starttime"])) ? $_POST["starttime"] : time(); ?>" />
  <input name="fid" type="hidden" value="<?php echo $k?>" />
  <input name="ex" type="hidden" value="<?php echo implode(";", $ex);?>" />
  <input name="sel" type="hidden" value="<?php echo implode(";", $sel);?>" />
  <input name="cal" type="hidden" value="<?php echo implode(";", $cal);?>" />
</form>
<?php $n=true; break; } ?>

<?php

if(!$n) {


  $ergebnis_in_prozent   = round(array_sum($cal)*100/count($fragen));
  $zeit_in_sekunden     = time() - $_POST["starttime"];
  $richtige_antworten   = array_sum($cal);
  $falsche_atworten     = count($fragen) - array_sum($cal);
  
  foreach($text_bei_auswetung as $k => $v) { if($ergebnis_in_prozent >= $k) $ergebnis_text = $v; }

  echo "

  <h2>$ergebnis_text</h2><br>
  
  Result: $ergebnis_in_prozent% <br>
  Time: $zeit_in_sekunden Sec. <br><br>
  
  Correct answers: $richtige_antworten<br>
  Incorrect answers: $falsche_atworten<br><br>
  
  
  <h3>The following questions were answered wrong:</h3><br>";
  
  foreach($cal as $key => $val) {
  
    if($val) continue;
  
    echo "<b>". $fragen[$key]["frage"]."</b><br>";
    echo "Correct answers: <font color=green>" . $fragen[$key]["antworten"][$t2["richtig"]] . "</font><br><br>";
      
  }

  

}



?>
</div>

Re: Quiz Modul

Verfasst: 19. Jun 2015, 10:55
von RexDude
Schau doch mal in den HTML-Quellcode nach Problemen. Wenn du das in Firefox machst, wird die rot und fett angezeigt was im Code nicht passt. Ein Tooltip mit genauerer Fehlerbescvhreibung wird auch angezeigt wenn man mit der Maus drüberfährt. Daraus kannst du dann Rückschlüsse ziehen und deinen Bug im PHP Code finden und fixen ;)

Re: Quiz Modul

Verfasst: 19. Jun 2015, 10:58
von nina95
Wenn das mal so leicht wäre...
natürlich habe ich das so schon gemacht. aber ich finde einfach partout nicht den fehler. :(

Re: Quiz Modul

Verfasst: 19. Jun 2015, 11:03
von RexDude
Hab meinen Post nochmal ergänzt...
Ok, hier ne weitere "Debug-Technik": Du kommentierst verschiedene Codestellen aus und schaust ob der Fehler noch auftacht oder nicht. Wenn nein, weisst du das in der auskommentierten Stelle der Bug liegt. Dann grenzt du das so weiter ein bis du dein Fehler gefunden hast.

Re: Quiz Modul

Verfasst: 19. Jun 2015, 11:06
von nina95
Ich habe schon alle mir bekannten Technike angewandt, wie auch die, die du nennst. sonst würde ich mich ja auch gar nicht an euch wenden, wenn ich den fehler so leicht selber finden würde... :cry:

Re: Quiz Modul

Verfasst: 19. Jun 2015, 11:58
von nina95
Kann mir denn echt niemand helfen? :(

Re: Quiz Modul

Verfasst: 21. Jun 2015, 21:11
von robo
Hallo Nina,

na ja das HTML ist ist ja nicht ganz so übersichtlich.... daher ist die Fehlersuche auch etwas mühsam.

Tipp: HTML-Validator für Firefox runterladen und dann schauen, in welcher Zeile der Fehler liegt.

Oder auch http://validator.w3.org/

LG,
Robert

Re: Quiz Modul

Verfasst: 22. Jun 2015, 10:49
von anita
hallo Nina,

in diesem Abschnitt

Code: Alles auswählen

echo "

  <h2>$ergebnis_text</h2><br>
  
  Result: $ergebnis_in_prozent% <br>
  Time:  $zeit_in_sekunden  Sec. <br><br>
  
  Correct answers: $richtige_antworten<br>
  Incorrect answers:  $falsche_atworten<br><br>
  
  
  <h3>The following questions were answered wrong:</h3><br>";
ist die Syntax nicht korrekt. Versuch mal

Code: Alles auswählen

echo "

  <h2>" . $ergebnis_text . "</h2><br>
  
  Result: " . $ergebnis_in_prozent . " % <br>
  Time: " . $zeit_in_sekunden  . " Sec. <br><br>
  
  Correct answers: $richtige_antworten . "<br>
  Incorrect answers: $falsche_atworten . "<br><br>
  
  
  <h3>The following questions were answered wrong:</h3><br>";

Re: Quiz Modul

Verfasst: 22. Jun 2015, 11:02
von Sysix
Hallo :)

Code: Alles auswählen

<div class="ask" style="margin-top:10px; margin-bottom:25px;"><h2><?php echo $v["frage"];?></h2><div>
Hier hast du das Slash vergessen, somit öffnest du 2 Divs, schließt aber keinen davon.


Gruß Sysix

Re: Quiz Modul

Verfasst: 22. Jun 2015, 12:17
von robo
Ja das ist mir im DW auch aufgefallen als ich Ninas Code dort eingefügt habe, da gelb hinterlegt...

Aber warum da überhaupt ein DIV? Das ginge ja auch mit der H2....

also:

Code: Alles auswählen

<h2 class="ask" style="margin-top:10px; margin-bottom:25px;"><?php echo $v["frage"];?></h2>
Mein Tipp: HTML komplett überarbeiten... :wink:

Re: Quiz Modul

Verfasst: 22. Jun 2015, 15:01
von nina95
danke für die hilfe.

ich habe das modul halt so wie es oben ist aus dem download bereich übernommen, weil ich halt auch nur ne praktikantin bin und meine kenntnisse leider so weit nicht gehen.

werde das gleich mal ausprobieren. :wink:

Re: Quiz Modul

Verfasst: 22. Jun 2015, 15:03
von nina95
Es lag wirklich an dem nicht geschlossenen <div> funktioniert jetzt einwandfrei, danke! :)