From 51cfa87ea5f1ac6f830c456b04809f9d2bf5b4ab Mon Sep 17 00:00:00 2001 From: Friedrich Beckmann Date: Sun, 1 Feb 2026 22:25:58 +0100 Subject: =?UTF-8?q?add=20Pr=C3=BCfungsamt=20as=20teilpr=C3=BCfung=20and=20?= =?UTF-8?q?delete=20option?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I added Prüfungsamt as checkbox item to indicate if the result is reported to Prüfungsamt. The delete option allows to remove an entry from the database. --- admin-show.php | 12 ++++++++++-- admin-update.php | 54 +++++++++++++++++++++++++++++++++--------------------- setup.php | 7 +++++++ 3 files changed, 50 insertions(+), 23 deletions(-) diff --git a/admin-show.php b/admin-show.php index 21be02b..cb732c8 100644 --- a/admin-show.php +++ b/admin-show.php @@ -68,6 +68,7 @@ echo "Nachname Vorname"; echo "Labor"; echo "Klausur"; +echo "Prüfungsamt"; echo ""; echo ""; echo ""; @@ -132,14 +133,21 @@ foreach ($groups as $semester => $pruefungen) { } else { $labornote = ""; } + if (!empty($student["noten"][$pruefung]["amt"])) { + //$amt = $student["noten"][$pruefung]["amt"]; + $amt = "checked"; + } else { + $amt = ""; + } $displayrow = array ( "semester" => $semester, "fach" => $pruefung, "gruppe" => $groupname, "nachname" => "$nachname", "vorname" => $vorname, - "labornote" => "", - "klausurnote" => "" + "labornote" => "", + "klausurnote" => "", + "amt" => "" ); $displaytable[] = $displayrow; } diff --git a/admin-update.php b/admin-update.php index f0d3896..c952618 100644 --- a/admin-update.php +++ b/admin-update.php @@ -9,30 +9,42 @@ if (empty($_POST["note"])) { $notenneu = $_POST["note"]; foreach ($notenneu as $matrikelnummer => $pruefungen) { - foreach ($pruefungen as $fach => $teilpruefungen) { - foreach ($teilpruefungen as $teilpruefung => $semesterliste) { - foreach ($semesterliste as $semestername => $note) { - if (!array_key_exists($fach,$students[$matrikelnummer]["noten"])) { - var_dump($students[$matrikelnummer]); - echo "

ERROR: Fach $fach bei $matrikelnummer existiert nicht

"; - } else { - if (!empty($note) and ( - empty($students[$matrikelnummer]["noten"][$fach][$teilpruefung]) or - $students[$matrikelnummer]["noten"][$fach][$teilpruefung] !== $note)) { - if (($teilpruefung === "klausur" and in_array($note,$notenklausur) or - $teilpruefung === "labor" and in_array($note,$notenlabor))) { - $students[$matrikelnummer]["noten"][$fach][$teilpruefung] = $note; - db_student_update_note($matrikelnummer,$fach,$teilpruefung,$note); - break; - } else { - var_dump($students[$matrikelnummer]); - echo "

ERROR: Note $note ungueltig fuer $matrikelnummer,$fach,$teilpruefung

"; - } - } + foreach ($pruefungen as $fach => $semesterliste) { + $notenupdate[$fach] = []; + if (!array_key_exists($fach,$students[$matrikelnummer]["noten"])) { + var_dump($students[$matrikelnummer]); + echo "

ERROR: Fach $fach bei $matrikelnummer existiert nicht

"; + break; + } + foreach ($semesterliste as $semestername => $teilpruefungen) { + // "amt" is a checkbox input where the name exists only when checked + // So the $teilpruefung loop will only iterate if it is checked. + if (!empty($students[$matrikelnummer]["noten"][$fach]["amt"]) + and empty($teilpruefungen["amt"])) { + $notenupdate[$fach]["amt"]=""; + } + foreach ($teilpruefungen as $teilpruefung => $note) { + if (!empty($note) + and (in_array($note,$notendelete) + or empty($students[$matrikelnummer]["noten"][$fach][$teilpruefung]) + or $students[$matrikelnummer]["noten"][$fach][$teilpruefung] !== $note)) { + if ($teilpruefung === "klausur" and in_array($note,$notenklausur) + or $teilpruefung === "labor" and in_array($note,$notenlabor) + or $teilpruefung === "amt" and in_array($note,$notenamt) + or in_array($note,$notendelete)) { + $note = in_array($note,$notendelete) ? "" : $note; + $notenupdate[$fach][$teilpruefung]=$note; + } else { + var_dump($students[$matrikelnummer]); + echo "

ERROR: Note $note ungueltig fuer $matrikelnummer,$fach,$teilpruefung

"; + } } } } - + foreach ($notenupdate[$fach] as $teilpruefung => $neuenote) { + $students[$matrikelnummer]["noten"][$fach][$teilpruefung] = $neuenote; + db_student_update_note($matrikelnummer,$fach,$teilpruefung,$neuenote); + } } } diff --git a/setup.php b/setup.php index 640ee56..0cd3cd3 100644 --- a/setup.php +++ b/setup.php @@ -35,11 +35,18 @@ $pfp = array ( "name" => "Digitaltechnik", "pnr" => ["3976090"], "studiengang" => ["TI"] + ), + "amt" => array ( + "name" => "Prüfungsamt", + "pnr" => [], + "studiengang" => [] ) ); $notenlabor = ["BE", "NB", "AB", "NM", "NA"]; $notenklausur = ["100","130","170","200","230","270","300","330","370","400","500"]; +$notenamt = ["1"]; //amt is either 1 or not set, i.e "" +$notendelete = ["00", "000"]; //Unset value in database "00" for labor, "000" for klausur $students = array ( "12345" => array ( -- cgit v1.2.3