diff --git a/stats.php b/stats.php index 468cd67..4caef77 100755 --- a/stats.php +++ b/stats.php @@ -1,50 +1,7 @@ = ? AND mt.attended = 1 AND mt.wore_color = 0 - GROUP BY u.username - ORDER BY penalty_count DESC -"; -$stmt = mysqli_prepare($conn, $sql_penalties); -// Überprüfen, ob das Statement erfolgreich vorbereitet wurde -if ($stmt === false) { - die("Fehler bei der SQL-Abfrage: " . mysqli_error($conn)); -} -mysqli_stmt_bind_param($stmt, "s", $last_reset_date); -mysqli_stmt_execute($stmt); -$result = mysqli_stmt_get_result($stmt); - -while ($row = mysqli_fetch_assoc($result)) { - $penalties_data[] = $row; - $total_penalties += $row['penalty_count']; - $total_due += $row['penalty_count'] * $penalty_amount; -} -mysqli_stmt_close($stmt); - -// --- 2. Gesamt-Statistiken --- - // Statistik 1: Häufigkeit der gewählten Farben $color_stats = []; $sql_colors = " @@ -79,64 +36,100 @@ while ($row = mysqli_fetch_assoc($result)) { $participation_stats[] = $row; } +// Neue Statistik: Durchschnittliche Anwesenheit pro Meeting +$avg_attendance = 0; +$sql_avg_attendance = " + SELECT AVG(attended_count) AS avg_attended + FROM ( + SELECT COUNT(user_id) AS attended_count + FROM meeting_teilnehmer + WHERE attended = 1 + GROUP BY meeting_id + ) AS subquery"; +$result_avg = mysqli_query($conn, $sql_avg_attendance); +if ($row = mysqli_fetch_assoc($result_avg)) { + $avg_attendance = round($row['avg_attended'], 2); +} + +// Neue Statistik: Durchschnittliche Anzahl derer, die die korrekte Farbe getragen haben +$avg_wore_color = 0; +$sql_avg_wore_color = " + SELECT AVG(wore_color_count) AS avg_wore_color + FROM ( + SELECT COUNT(user_id) AS wore_color_count + FROM meeting_teilnehmer + WHERE wore_color = 1 + GROUP BY meeting_id + ) AS subquery"; +$result_avg_wore = mysqli_query($conn, $sql_avg_wore_color); +if ($row = mysqli_fetch_assoc($result_avg_wore)) { + $avg_wore_color = round($row['avg_wore_color'], 2); +} + +// Neue Statistik: Ranking nach dem Tragen der Farbe +$wore_color_stats = []; +$sql_wore_color = " + SELECT + u.username, + COUNT(mt.user_id) AS wore_color_count + FROM meeting_teilnehmer mt + JOIN users u ON mt.user_id = u.id + WHERE mt.wore_color = 1 + GROUP BY u.username + ORDER BY wore_color_count DESC +"; +$result_wore = mysqli_query($conn, $sql_wore_color); +while ($row = mysqli_fetch_assoc($result_wore)) { + $wore_color_stats[] = $row; +} + // Header einbinden require_once 'inc/header.php'; ?>
- Gesamtzahl der Strafen: = $total_penalties ?>
- Fälliger Gesamtbetrag: = number_format($total_due, 2, ',', '.'); ?> €
-
| Benutzer | -Anzahl Strafen | -Fälliger Betrag | -
|---|---|---|
| = htmlspecialchars($penalty['username']); ?> | -= htmlspecialchars($penalty['penalty_count']); ?> | -= number_format($penalty['penalty_count'] * $penalty_amount, 2, ',', '.'); ?> € | -
+ Durchschnittliche Anwesenheit je Treffen: = htmlspecialchars($avg_attendance) ?> +
+ ++ Durchschnittliche korrekte Farbe je Treffen: = htmlspecialchars($avg_wore_color) ?> +
+ +