diff --git a/admin/categories-edit.php b/admin/categories-edit.php index 66cc398..23118fc 100644 --- a/admin/categories-edit.php +++ b/admin/categories-edit.php @@ -22,7 +22,8 @@
Zurück zur Übersicht Kursanmeldungen - Auswertung + Statistik nach Kurs + Statistik nach Klasse
diff --git a/admin/categories-reports-class.php b/admin/categories-reports-class.php new file mode 100644 index 0000000..fe2b3b0 --- /dev/null +++ b/admin/categories-reports-class.php @@ -0,0 +1,67 @@ + +
+'.$paramResult.'
'; + return false; + } + + $category = getById('tbl_categories', checkParamId('id')); + if($category['status'] == 200) { + ?> +
+ +
+
+

Statistik nach Klasse zu

+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
KlasseSchülerMit AuswahlNichts ausgewählt
+ +
+
+ + diff --git a/admin/categories-reports-course.php b/admin/categories-reports-course.php new file mode 100644 index 0000000..db0a5b7 --- /dev/null +++ b/admin/categories-reports-course.php @@ -0,0 +1,74 @@ + +
+'.$paramResult.'
'; + return false; + } + + $category = getById('tbl_categories',checkParamId('id')); + if($category['status'] == 200) + { + ?> +
+ +
+
+

Statistik nach Kurs zu

+
+ +
+ +
+ + + + + + + + + + + + + 0) { + foreach($courses as $courseEntry) { + $studentCount = countAllStudentsInCourse($courseEntry['id']); + $registeredCount = countStudentsByStatus($courseEntry['id'], 'Angemeldet'); + $selectedCount = countStudentsByStatus($courseEntry['id'], 'Genehmigt'); + $rejectedCount = countStudentsByStatus($courseEntry['id'], 'Abgelehnt'); + ?> + + + + + + + + + + + + + + +
KursnameAnzahl der SchülerAngemeldetGenehmigtAbgelehnt
+ +
Keine Kurse vorhanden
+
+
+ + \ No newline at end of file diff --git a/admin/categories-reports.php b/admin/categories-reports.php deleted file mode 100644 index ed913a1..0000000 --- a/admin/categories-reports.php +++ /dev/null @@ -1,101 +0,0 @@ - -
-
- -
-
-

Administrator bearbeiten

-
- -
- - '.$paramResult.'
'; - return false; - } - - $admin = getById('tbl_admins',checkParamId('id')); - if($admin['status'] == 200) - { - ?> - -
-
-
- - -
-
-
-
- - -
-
-
-
- - -
-
- -
-
- - -
-
-
-
- - -
-
-
- - Löschen -
-
- '.$admin['message'].'
'; - } - - ?> - -
- - - - - - \ No newline at end of file diff --git a/config/function.php b/config/function.php index e58cd68..043950e 100644 --- a/config/function.php +++ b/config/function.php @@ -962,7 +962,7 @@ function isStudentRegisteredForCourse($studentId, $courseId) { $stmt->fetch(); $stmt->close(); - return $count > 0; + return $count = 0; } @@ -1001,4 +1001,132 @@ function getAllAssignedCoursesByCategory($studentID, $categoryID) { return $assignedCourses; } +// Funktion, die alle Schüler zählt, die einer Klasse zugewiesen sind, die der Kategorie und dem Kurs zugeordnet ist +function countAllStudentsInCourse($courseID) { + global $conn; + + // Abfrage, um alle Schüler zu zählen, deren Klasse der Kategorie und dem Kurs zugeordnet ist + $query = " + SELECT COUNT(DISTINCT s.id) + FROM tbl_students s + INNER JOIN tbl_assign_categories_classes acc ON s.class = acc.class_id + INNER JOIN tbl_assign_courses_classes acc_courses ON acc.class_id = acc_courses.class_id + WHERE acc_courses.course_id = '$courseID' + AND acc.category_id = ( + SELECT category_id FROM tbl_courses WHERE id = '$courseID' + ) + "; + + $result = mysqli_query($conn, $query); + + if ($result) { + $row = mysqli_fetch_row($result); + return $row[0]; // Gibt die Anzahl der Schüler zurück + } + + return 0; // Falls keine Schüler gefunden wurden +} + + +// Funktion, um Schüler nach Status zu zählen +function countStudentsByStatus($courseID, $status) { + global $conn; + + // SQL-Abfrage, um die Anzahl der Schüler mit einem bestimmten Status zu zählen + $query = " + SELECT COUNT(DISTINCT s.id) + FROM tbl_students s + INNER JOIN tbl_assign_categories_classes acc ON s.class = acc.class_id + INNER JOIN tbl_assign_courses_classes acc_courses ON acc.class_id = acc_courses.class_id + INNER JOIN tbl_assign_students_courses asc_tbl ON asc_tbl.student_id = s.id + WHERE acc_courses.course_id = '$courseID' + AND acc.category_id = ( + SELECT category_id FROM tbl_courses WHERE id = '$courseID' + ) + AND asc_tbl.status = '$status' + "; + + $result = mysqli_query($conn, $query); + + if ($result) { + $row = mysqli_fetch_row($result); + return $row[0]; // Gibt die Anzahl der Schüler mit diesem Status zurück + } + + return 0; // Falls keine Schüler gefunden wurden +} + +function countStudentsWithoutSelection($classID, $categoryID) { + global $conn; + + $query = " + SELECT COUNT(DISTINCT s.id) AS no_selection_count + FROM tbl_students s + LEFT JOIN tbl_assign_students_courses asc_tbl + ON asc_tbl.student_id = s.id + AND asc_tbl.course_id IN ( + SELECT id + FROM tbl_courses + WHERE category_id = '$categoryID' + ) + WHERE s.class = '$classID' + AND asc_tbl.course_id IS NULL + "; + + $result = mysqli_query($conn, $query); + + if ($result) { + $row = mysqli_fetch_assoc($result); + return $row['no_selection_count']; + } + + return 0; // Falls keine Schüler gefunden wurden +} + +function countStudentsInClass($classID) { + global $conn; + + $query = " + SELECT COUNT(*) AS student_count + FROM tbl_students + WHERE class = '$classID' + "; + + $result = mysqli_query($conn, $query); + + if ($result) { + $row = mysqli_fetch_assoc($result); + return $row['student_count']; + } + + return 0; // Falls keine Schüler in der Klasse gefunden wurden +} + +function countStudentsWithSelection($classID, $categoryID) { + global $conn; + + $query = " + SELECT COUNT(DISTINCT s.id) AS selected_count + FROM tbl_students s + JOIN tbl_assign_students_courses asc_tbl + ON s.id = asc_tbl.student_id + WHERE s.class = '$classID' + AND asc_tbl.course_id IN ( + SELECT id + FROM tbl_courses + WHERE category_id = '$categoryID' + ) + "; + + $result = mysqli_query($conn, $query); + + if ($result) { + $row = mysqli_fetch_assoc($result); + return $row['selected_count']; + } + + return 0; // Falls keine Schüler mit einer Auswahl gefunden wurden +} + + ?> \ No newline at end of file