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

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
nina95
Beiträge: 12
Registriert: 15. Jun 2015, 13:23

[erledigt] Quiz Modul

19. Jun 2015, 09:54

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>
Zuletzt geändert von nina95 am 23. Jun 2015, 10:15, insgesamt 1-mal geändert.

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Quiz Modul

19. Jun 2015, 10:55

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 ;)

nina95
Beiträge: 12
Registriert: 15. Jun 2015, 13:23

Re: Quiz Modul

19. Jun 2015, 10:58

Wenn das mal so leicht wäre...
natürlich habe ich das so schon gemacht. aber ich finde einfach partout nicht den fehler. :(

Benutzeravatar
RexDude
Beiträge: 2543
Registriert: 22. Apr 2010, 11:24

Re: Quiz Modul

19. Jun 2015, 11:03

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.

nina95
Beiträge: 12
Registriert: 15. Jun 2015, 13:23

Re: Quiz Modul

19. Jun 2015, 11:06

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:

nina95
Beiträge: 12
Registriert: 15. Jun 2015, 13:23

Re: Quiz Modul

19. Jun 2015, 11:58

Kann mir denn echt niemand helfen? :(

robo
Beiträge: 106
Registriert: 17. Aug 2012, 09:03
Wohnort: Wien
Kontaktdaten: Website

Re: Quiz Modul

21. Jun 2015, 21:11

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

Benutzeravatar
anita
Beiträge: 711
Registriert: 25. Jan 2007, 10:25
Wohnort: Finsterwalde

Re: Quiz Modul

22. Jun 2015, 10:49

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>";
Gruß Anita

javanita engineering, immer eine zündende Idee
http://www.javanita.com

Sysix
Beiträge: 101
Registriert: 23. Sep 2014, 15:08

Re: Quiz Modul

22. Jun 2015, 11:02

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

robo
Beiträge: 106
Registriert: 17. Aug 2012, 09:03
Wohnort: Wien
Kontaktdaten: Website

Re: Quiz Modul

22. Jun 2015, 12:17

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:

nina95
Beiträge: 12
Registriert: 15. Jun 2015, 13:23

Re: Quiz Modul

22. Jun 2015, 15:01

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:

nina95
Beiträge: 12
Registriert: 15. Jun 2015, 13:23

Re: Quiz Modul

22. Jun 2015, 15:03

Es lag wirklich an dem nicht geschlossenen <div> funktioniert jetzt einwandfrei, danke! :)

Zurück zu „Allgemeines [R4]“