diff options
| author | Friedrich Beckmann <friedrich.beckmann@gmx.de> | 2026-01-31 07:58:41 +0100 |
|---|---|---|
| committer | Friedrich Beckmann <friedrich.beckmann@gmx.de> | 2026-01-31 07:58:41 +0100 |
| commit | 046f73a745b56d9feebd487823e3867c156fce58 (patch) | |
| tree | 3c92ce201ac1e334c66befbc2f60c7facc1afc06 | |
| parent | be637b6c9912434ff086f30a17769676a0f79a71 (diff) | |
add sort option in admin listview
| -rw-r--r-- | admin-show.php | 69 |
1 files changed, 58 insertions, 11 deletions
diff --git a/admin-show.php b/admin-show.php index 7f6c99b..21be02b 100644 --- a/admin-show.php +++ b/admin-show.php @@ -63,8 +63,8 @@ echo "<table>"; echo "<tr>"; echo "<th>Semester</th>"; echo "<th>Prüfung</th>"; -echo "<th>Gruppe</th>"; -echo "<th>Nachname</th>"; +echo "<th>Gruppe <input type=\"submit\" name=\"grup\" value=\"↑\"><input type=\"submit\" name=\"grdn\" value=\"↓\"></th>"; +echo "<th>Nachname <input type=\"submit\" name=\"snup\" value=\"↑\"> <input type=\"submit\" name=\"sndn\" value=\"↓\"></th>"; echo "<th>Vorname</th>"; echo "<th>Labor</th>"; echo "<th>Klausur</th>"; @@ -112,16 +112,13 @@ echo "</tr>"; //echo "<form action=\"admin-show.php\" method=\"post\">"; //echo "<table>"; +$displaytable = []; foreach ($groups as $semester => $pruefungen) { if ($selectedsemester === "alle" or $selectedsemester === $semester) { foreach ($pruefungen as $pruefung => $groupsperpruefung) { if ($selectedpruefung === "alle" or $selectedpruefung === $pruefung) { foreach ($groupsperpruefung as $groupname => $teilnehmerarray) { foreach ($teilnehmerarray as $matrikelnummer) { - echo "<tr>"; - echo "<td> $semester </td>"; - echo "<td> $pruefung </td>"; - echo "<td> $groupname </td>"; $student = $students[$matrikelnummer]; $nachname = $student["nachname"]; $vorname = $student["vorname"]; @@ -135,17 +132,67 @@ foreach ($groups as $semester => $pruefungen) { } else { $labornote = ""; } - echo "<td><a href=\"show-user.php?matrikelnummer=$matrikelnummer\">$nachname</a></td>"; - echo "<td> $vorname </td>"; - echo "<td><input type=\"text\" name=\"note[$matrikelnummer][$pruefung][labor][$semester]\" value=\"$labornote\" size=2 maxlength=2></td>"; - echo "<td><input type=\"text\" name=\"note[$matrikelnummer][$pruefung][klausur][$semester]\" value=\"$klausurnote\" size=3 maxlength=3></td>"; - echo "</tr>"; + $displayrow = array ( + "semester" => $semester, + "fach" => $pruefung, + "gruppe" => $groupname, + "nachname" => "<a href=\"show-user.php?matrikelnummer=$matrikelnummer\">$nachname</a>", + "vorname" => $vorname, + "labornote" => "<input type=\"text\" name=\"note[$matrikelnummer][$pruefung][labor][$semester]\" value=\"$labornote\" size=2 maxlength=2>", + "klausurnote" => "<input type=\"text\" name=\"note[$matrikelnummer][$pruefung][klausur][$semester]\" value=\"$klausurnote\" size=3 maxlength=3>" + ); + $displaytable[] = $displayrow; } } } } } } + +function get_sortkey() { + foreach (["snup", "sndn", "grup", "grdn"] as $key) { + if (isset($_POST[$key])) { + return $key; + } + } + if (isset($_POST["sortkey"])) { + return $_POST["sortkey"]; + } +} + +$sk = get_sortkey(); + +if ($sk === "snup" or $sk === "sndn") { + function cmp($a,$b) { + global $sk; + preg_match('/<a.*>(.*)<\/a>/',$a["nachname"],$matches); + $asn=$matches[1]; + preg_match('/<a.*>(.*)<\/a>/',$b["nachname"],$matches); + $bsn=$matches[1]; + return ($sk === "snup") ? strcmp($asn,$bsn) : strcmp($bsn,$asn); + } + echo "<input type=\"hidden\" name=\"sortkey\" value=$sk>"; + usort($displaytable, 'cmp'); +} + +if ($sk === "grup" or $sk === "grdn") { + function cmp($a,$b) { + global $sk; + $agr = $a["gruppe"]; + $bgr = $b["gruppe"]; + return ($sk === "grup") ? strcmp($agr,$bgr) : strcmp($bgr,$agr); + } + echo "<input type=\"hidden\" name=\"sortkey\" value=$sk>"; + usort($displaytable, 'cmp'); +} + +foreach ($displaytable as $row) { + echo "<tr>"; + foreach ($row as $element) { + echo "<td>$element</td>"; + } + echo "</tr>"; +} echo "</table>"; echo "<input type=\"submit\" name=\"update\" value=\"update\">"; echo "</form>"; |
