diff --git a/kasse.php b/kasse.php index 69d3627..7699f63 100755 --- a/kasse.php +++ b/kasse.php @@ -15,6 +15,7 @@ $penalty_amount = 1; // SQL-Abfrage, um Strafen pro Benutzer seit dem letzten Reset-Datum zu zählen // Strafe = anwesend (attended=1) aber Farbe nicht getragen (wore_color=0) +// NEUE BEDINGUNG: Nur Meetings einbeziehen, die als abgeschlossen markiert sind. $sql_penalties = " SELECT u.username, @@ -22,7 +23,7 @@ $sql_penalties = " FROM meeting_teilnehmer mt JOIN meetings m ON mt.meeting_id = m.id JOIN users u ON mt.user_id = u.id - WHERE m.meeting_date >= ? AND mt.attended = 1 AND mt.wore_color = 0 + WHERE m.meeting_date >= ? AND mt.attended = 1 AND mt.wore_color = 0 AND m.is_completed = 1 GROUP BY u.username ORDER BY penalty_count DESC "; @@ -43,16 +44,18 @@ while ($row = mysqli_fetch_assoc($result)) { mysqli_stmt_close($stmt); // Neue Statistik: Ranking nach bezahlten Strafen +// NEUE BEDINGUNG: Auch hier nur abgeschlossene Meetings einbeziehen. $paid_stats = []; $sql_paid = " SELECT u.username, COUNT(mt.user_id) AS paid_count FROM meeting_teilnehmer mt + JOIN meetings m ON mt.meeting_id = m.id JOIN users u ON mt.user_id = u.id - WHERE mt.paid = 1 + WHERE mt.paid = 1 AND m.is_completed = 1 GROUP BY u.username - ORDER BY paid_count ASC + ORDER BY paid_count DESC "; $result_paid = mysqli_query($conn, $sql_paid); while ($row = mysqli_fetch_assoc($result_paid)) { @@ -104,16 +107,13 @@ require_once 'inc/header.php'; -

Rechnungen

Ranking - Rechnung übernommen
-

- Der mit der geringsten Anzahl ist das nächste Mal dran. -

+
@@ -151,7 +151,7 @@ require_once 'inc/header.php'; }, title: { display: true, - text: 'Anzahl der bezahlten Essen pro Benutzer' + text: 'Anzahl der bezahlten Rechnungen' } }, scales: { diff --git a/stats.php b/stats.php index 4caef77..bb4b756 100755 --- a/stats.php +++ b/stats.php @@ -11,6 +11,7 @@ $sql_colors = " COUNT(m.id) AS meeting_count FROM meetings m JOIN colors c ON m.color_id = c.id + WHERE m.is_completed = 1 GROUP BY c.name, c.hex_code ORDER BY meeting_count DESC "; @@ -27,7 +28,8 @@ $sql_participation = " COUNT(mt.user_id) AS total_attendance FROM meeting_teilnehmer mt JOIN users u ON mt.user_id = u.id - WHERE mt.attended = 1 + JOIN meetings m ON mt.meeting_id = m.id + WHERE mt.attended = 1 AND m.is_completed = 1 GROUP BY u.username ORDER BY total_attendance DESC "; @@ -41,10 +43,11 @@ $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 + SELECT COUNT(mt.user_id) AS attended_count + FROM meeting_teilnehmer mt + JOIN meetings m ON mt.meeting_id = m.id + WHERE mt.attended = 1 AND m.is_completed = 1 + GROUP BY mt.meeting_id ) AS subquery"; $result_avg = mysqli_query($conn, $sql_avg_attendance); if ($row = mysqli_fetch_assoc($result_avg)) { @@ -56,10 +59,11 @@ $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 + SELECT COUNT(mt.user_id) AS wore_color_count + FROM meeting_teilnehmer mt + JOIN meetings m ON mt.meeting_id = m.id + WHERE mt.wore_color = 1 AND m.is_completed = 1 + GROUP BY mt.meeting_id ) AS subquery"; $result_avg_wore = mysqli_query($conn, $sql_avg_wore_color); if ($row = mysqli_fetch_assoc($result_avg_wore)) { @@ -74,7 +78,8 @@ $sql_wore_color = " 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 + JOIN meetings m ON mt.meeting_id = m.id + WHERE mt.wore_color = 1 AND m.is_completed = 1 GROUP BY u.username ORDER BY wore_color_count DESC ";