55 lines
2.0 KiB
PHP
55 lines
2.0 KiB
PHP
<?php
|
|
global $db;
|
|
try {
|
|
$query = "SELECT
|
|
k.id as kurs_id,
|
|
k.name as kurs_name,
|
|
k.max_teilnehmer,
|
|
COUNT(a.id) as anzahl_teilnehmer,
|
|
ROUND((COUNT(a.id) / k.max_teilnehmer) * 100, 2) as auslastung_prozent
|
|
FROM kurse k
|
|
LEFT JOIN anmeldungen a ON k.id = a.kurs_id
|
|
GROUP BY k.id
|
|
ORDER BY k.name";
|
|
$stmt = $db->prepare($query);
|
|
$stmt->execute();
|
|
|
|
$bericht = [];
|
|
while ($row = $stmt->fetch()) {
|
|
$detail_query = "SELECT
|
|
s.vorname,
|
|
s.nachname,
|
|
b.name as betrieb_name
|
|
FROM anmeldungen a
|
|
JOIN schueler s ON a.schueler_id = s.id
|
|
JOIN betriebe b ON s.betrieb_id = b.id
|
|
WHERE a.kurs_id = :kurs_id
|
|
ORDER BY s.nachname, s.vorname";
|
|
$detail_stmt = $db->prepare($detail_query);
|
|
$detail_stmt->execute([':kurs_id' => $row['kurs_id']]);
|
|
|
|
$teilnehmer = [];
|
|
while ($detail = $detail_stmt->fetch()) {
|
|
$teilnehmer[] = [
|
|
'vorname' => $detail['vorname'],
|
|
'nachname' => $detail['nachname'],
|
|
'betrieb_name' => $detail['betrieb_name']
|
|
];
|
|
}
|
|
|
|
$bericht[] = [
|
|
'kurs_id' => (int)$row['kurs_id'],
|
|
'kurs_name' => $row['kurs_name'],
|
|
'max_teilnehmer' => (int)$row['max_teilnehmer'],
|
|
'anzahl_teilnehmer' => (int)$row['anzahl_teilnehmer'],
|
|
'auslastung_prozent' => (float)$row['auslastung_prozent'],
|
|
'teilnehmer' => $teilnehmer
|
|
];
|
|
}
|
|
|
|
echo json_encode($bericht);
|
|
} catch (Exception $e) {
|
|
error_log("Error in berichte/teilnehmer_kurs.php: " . $e->getMessage());
|
|
http_response_code(500);
|
|
echo json_encode(['message' => 'Fehler beim Erstellen des Berichts']);
|
|
} |