diff --git a/include/frage.class.php b/include/frage.class.php index 8a7d4750e..cafb0c0fd 100644 --- a/include/frage.class.php +++ b/include/frage.class.php @@ -509,6 +509,11 @@ class frage extends basis_db $level[$row->level]=round(($row->anzahl/$fragengesamt)*$maxfragen); } } + // Wenn ein Level besonders viele Fragen und eines nur eine Frage (nach dem Runden) hat, + // kann es durch Rundungsfehler vorkommen, dass bei der Ausgabe ein Level ausgelassen wird. + // Deshalb wird das array hier aufsteigend sortiert. So wird ggf. vom Level mit den meisten Fragen + // die letzte ausgelassen. Hier wäre eine sauberere Lösung besser. + asort($level); // Von jedem Gebiet muss mindestens eine Frage kommen foreach ($level as $key=>$row) diff --git a/include/gebiet.class.php b/include/gebiet.class.php index 98a2535a9..2491259c4 100644 --- a/include/gebiet.class.php +++ b/include/gebiet.class.php @@ -368,12 +368,9 @@ class gebiet extends basis_db $qry = "SELECT count(*) as anzahl FROM testtool.tbl_frage WHERE gebiet_id=".$this->db_add_param($gebiet_id, FHC_INTEGER)." AND not demo AND level is not null GROUP BY level"; if($this->db_query($qry)) { - if($row = $this->db_fetch_object()) + if($this->db_num_rows() > $this->maxfragen) { - if($row->anzahl>$this->maxfragen) - { - //$this->errormsg .= "Wenn Levelgleichverteilung gesetzt ist, muss maxfragen groesser als die Anzahl der verwendeten Levels sein\n"; - } + $this->errormsg .= "Wenn Levelgleichverteilung gesetzt ist, muss maxfragen groesser als die Anzahl der verwendeten Levels sein\n"; } } }