diff --git a/cis/testtool/frage.php b/cis/testtool/frage.php index 08586ca0d..e1d2036e3 100644 --- a/cis/testtool/frage.php +++ b/cis/testtool/frage.php @@ -106,27 +106,6 @@ else } } - function checkantwort() - { - antwort = document.getElementById('antwort'); - val=antwort.getAttribut('value'); - if(val.length>1) - { - alert('Antwort darf nur 1 Buchstabe sein'); - return false; - } - if(val.length==0) - return true; - if(val.toUpperCase()<'A' || val.toUpperCase>'Z') - { - alert('Antwort darf nur ein Buchstabe von A-Z sein'); - return false; - } - else - { - return true; - } - } //]]> @@ -175,84 +154,93 @@ if(isset($_POST['submitantwort']) && isset($_GET['frage_id'])) // vor dem Speichern der Antworten, alle Antworten zu der Frage loeschen // und die Antworten neu anlegen // Unterscheidung ob mehrere oder nur eine Antwort uebergeben wird - $error=false; - $db->db_query('BEGIN;'); - - // alle vorhandenen Antworten zu dieser Frage loeschen - $qry = "DELETE FROM testtool.tbl_antwort WHERE antwort_id in( - SELECT antwort_id FROM testtool.tbl_antwort JOIN testtool.tbl_vorschlag USING(vorschlag_id) - WHERE frage_id='".addslashes($_GET['frage_id'])."' AND pruefling_id='".addslashes($_SESSION['pruefling_id'])."')"; - - $db->db_query($qry); - - // Antwort nur Speichern wenn eine Antwort gewaehlt wurde - if(isset($_POST['vorschlag_id']) && $_POST['vorschlag_id']!='') + if($levelgebiet && !isset($_POST['vorschlag_id'])) + { + echo 'Bei diesem Gebiet müssen Sie jede Frage beantworten!'; + } + else { - $vorschlaege = array(); - //Falls nur eine einzelne Antwort kommt, diese auch in ein Array packen - if(!is_array($_POST['vorschlag_id'])) - $vorschlaege[0]=$_POST['vorschlag_id']; - else - $vorschlaege = $_POST['vorschlag_id']; - //alle Antworten Speichern - foreach ($vorschlaege as $vorschlag_id) + $error=false; + + $db->db_query('BEGIN;'); + + // alle vorhandenen Antworten zu dieser Frage loeschen + $qry = "DELETE FROM testtool.tbl_antwort WHERE antwort_id in( + SELECT antwort_id FROM testtool.tbl_antwort JOIN testtool.tbl_vorschlag USING(vorschlag_id) + WHERE frage_id='".addslashes($_GET['frage_id'])."' AND pruefling_id='".addslashes($_SESSION['pruefling_id'])."')"; + + $db->db_query($qry); + + // Antwort nur Speichern wenn eine Antwort gewaehlt wurde + if(isset($_POST['vorschlag_id']) && $_POST['vorschlag_id']!='') { - if($vorschlag_id!='') + $vorschlaege = array(); + //Falls nur eine einzelne Antwort kommt, diese auch in ein Array packen + if(!is_array($_POST['vorschlag_id'])) + $vorschlaege[0]=$_POST['vorschlag_id']; + else + $vorschlaege = $_POST['vorschlag_id']; + + //alle Antworten Speichern + foreach ($vorschlaege as $vorschlag_id) { - $antwort = new antwort(); + if($vorschlag_id!='') + { + $antwort = new antwort(); + + $antwort->new = true; + $antwort->vorschlag_id = $vorschlag_id; + $antwort->pruefling_id = $_SESSION['pruefling_id']; + + if(!$antwort->save()) + { + $errormsg = $antwort->errormsg; + $error=true; + } + } + } - $antwort->new = true; - $antwort->vorschlag_id = $vorschlag_id; - $antwort->pruefling_id = $_SESSION['pruefling_id']; - - if(!$antwort->save()) + if(!$error) + { + //Endzeit der Frage eintragen + $prueflingfrage = new frage(); + if(!$prueflingfrage->getPrueflingfrage($_SESSION['pruefling_id'], $frage_id)) { $errormsg = $antwort->errormsg; - $error=true; + $error = true; + } + $prueflingfrage->endtime = date('Y-m-d H:i:s'); + + if(!$prueflingfrage->save_prueflingfrage(false)) + { + $errormsg = $prueflingfrage->errormsg; + $error = true; } } } - - if(!$error) + + if($error) { - //Endzeit der Frage eintragen - $prueflingfrage = new frage(); - if(!$prueflingfrage->getPrueflingfrage($_SESSION['pruefling_id'], $frage_id)) - { - $errormsg = $antwort->errormsg; - $error = true; - } - $prueflingfrage->endtime = date('Y-m-d H:i:s'); - - if(!$prueflingfrage->save_prueflingfrage(false)) - { - $errormsg = $prueflingfrage->errormsg; - $error = true; - } + $db->db_query('ROLLBACK;'); + die('Fehler:'.$errormsg); } + else + { + $db->db_query('COMMIT;'); + } + + $frage = new frage(); + + if($levelgebiet) + { + //bei gelevelten Fragen die naechste Frage holen + $frage->generateFragenpool($_SESSION['pruefling_id'], $gebiet_id); + } + + $frage_id = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $frage_id); } - - if($error) - { - $db->db_query('ROLLBACK;'); - die('Fehler:'.$errormsg); - } - else - { - $db->db_query('COMMIT;'); - } - - $frage = new frage(); - - if($levelgebiet) - { - //bei gelevelten Fragen die naechste Frage holen - $frage->generateFragenpool($_SESSION['pruefling_id'], $gebiet_id); - } - - $frage_id = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $frage_id); } //Schauen ob dieses Gebiet schon gestartet wurde @@ -384,7 +372,7 @@ else // wenn keine Frage uebergeben wurde und die maximale Fragenanzahl erreicht wurde // dann ist das Gebiet fertig $qry = "SELECT count(*) as anzahl FROM testtool.tbl_pruefling_frage JOIN testtool.tbl_frage USING(frage_id) - WHERE gebiet_id='".addslashes($gebiet_id)."' AND pruefling_id='".addslashes($_SESSION['pruefling_id'])."'"; + WHERE gebiet_id='".addslashes($gebiet_id)."' AND pruefling_id='".addslashes($_SESSION['pruefling_id'])."' AND tbl_pruefling_frage.endtime is not null"; $result = $db->db_query($qry); $row = $db->db_fetch_object($result); @@ -394,7 +382,7 @@ else } } - $frage_id = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], null, $demo); + $frage_id = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], null, $demo, $levelgebiet); $frage->load($frage_id); } @@ -521,7 +509,7 @@ if($frage->frage_id!='') if(!$demo) { - echo ""; + echo ""; } echo ""; echo '


'; @@ -584,20 +572,18 @@ if($frage->frage_id!='') else { //Naechste Frage holen und Weiter-Button anzeigen - $frage = new frage(); - $nextfrage = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $frage_id, $demo); - if($nextfrage) + if($demo) { - if($demo) - $value="Demo"; - else - $value="Weiter"; - echo " $value >>"; - } - else - { - if($demo) + $frage = new frage(); + $nextfrage = $frage->getNextFrage($gebiet_id, $_SESSION['pruefling_id'], $frage_id, $demo); + + if($nextfrage) + { + $value="Demo"; + echo " $value >>"; + } + else { //Naechste Frage holen und Weiter-Button anzeigen //$frage = new frage(); diff --git a/include/frage.class.php b/include/frage.class.php index a9f3dcf8b..5a3a678d9 100644 --- a/include/frage.class.php +++ b/include/frage.class.php @@ -321,9 +321,10 @@ class frage extends basis_db * @param $pruefling_id * @param $frage_id ID der vorherigen Frage. wenn Null dann wird die erste Frage geliefert * @param $demo + * @param $levelgebiet * @return frage_id der naechsten Frage oder false wenn Fehler */ - public function getNextFrage($gebiet_id, $pruefling_id, $frage_id=null, $demo=false) + public function getNextFrage($gebiet_id, $pruefling_id, $frage_id=null, $demo=false, $levelgebiet=false) { if($demo) { @@ -344,6 +345,8 @@ class frage extends basis_db if(!is_null($frage_id)) $qry.=" AND tbl_pruefling_frage.nummer>(SELECT nummer FROM testtool.tbl_pruefling_frage WHERE pruefling_id='".addslashes($pruefling_id)."' AND frage_id='".addslashes($frage_id)."' LIMIT 1)"; + elseif(is_null($frage_id) && $levelgebiet) + $qry.=" AND tbl_pruefling_frage.endtime is null "; $qry.="ORDER BY tbl_pruefling_frage.nummer ASC LIMIT 1"; }