Statistik nur wenn Treffen auch stattgefunden hat
This commit is contained in:
16
kasse.php
16
kasse.php
@@ -15,6 +15,7 @@ $penalty_amount = 1;
|
|||||||
|
|
||||||
// SQL-Abfrage, um Strafen pro Benutzer seit dem letzten Reset-Datum zu zählen
|
// 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)
|
// Strafe = anwesend (attended=1) aber Farbe nicht getragen (wore_color=0)
|
||||||
|
// NEUE BEDINGUNG: Nur Meetings einbeziehen, die als abgeschlossen markiert sind.
|
||||||
$sql_penalties = "
|
$sql_penalties = "
|
||||||
SELECT
|
SELECT
|
||||||
u.username,
|
u.username,
|
||||||
@@ -22,7 +23,7 @@ $sql_penalties = "
|
|||||||
FROM meeting_teilnehmer mt
|
FROM meeting_teilnehmer mt
|
||||||
JOIN meetings m ON mt.meeting_id = m.id
|
JOIN meetings m ON mt.meeting_id = m.id
|
||||||
JOIN users u ON mt.user_id = u.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
|
GROUP BY u.username
|
||||||
ORDER BY penalty_count DESC
|
ORDER BY penalty_count DESC
|
||||||
";
|
";
|
||||||
@@ -43,16 +44,18 @@ while ($row = mysqli_fetch_assoc($result)) {
|
|||||||
mysqli_stmt_close($stmt);
|
mysqli_stmt_close($stmt);
|
||||||
|
|
||||||
// Neue Statistik: Ranking nach bezahlten Strafen
|
// Neue Statistik: Ranking nach bezahlten Strafen
|
||||||
|
// NEUE BEDINGUNG: Auch hier nur abgeschlossene Meetings einbeziehen.
|
||||||
$paid_stats = [];
|
$paid_stats = [];
|
||||||
$sql_paid = "
|
$sql_paid = "
|
||||||
SELECT
|
SELECT
|
||||||
u.username,
|
u.username,
|
||||||
COUNT(mt.user_id) AS paid_count
|
COUNT(mt.user_id) AS paid_count
|
||||||
FROM meeting_teilnehmer mt
|
FROM meeting_teilnehmer mt
|
||||||
|
JOIN meetings m ON mt.meeting_id = m.id
|
||||||
JOIN users u ON mt.user_id = u.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
|
GROUP BY u.username
|
||||||
ORDER BY paid_count ASC
|
ORDER BY paid_count DESC
|
||||||
";
|
";
|
||||||
$result_paid = mysqli_query($conn, $sql_paid);
|
$result_paid = mysqli_query($conn, $sql_paid);
|
||||||
while ($row = mysqli_fetch_assoc($result_paid)) {
|
while ($row = mysqli_fetch_assoc($result_paid)) {
|
||||||
@@ -104,16 +107,13 @@ require_once 'inc/header.php';
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Neuer Bereich für bezahlte Rechnungen -->
|
|
||||||
<div class="card shadow mb-4">
|
<div class="card shadow mb-4">
|
||||||
<div class="card-header bg-success-subtle text-success">
|
<div class="card-header bg-success-subtle text-success">
|
||||||
<h4 class="mb-0">Rechnungen</h4>
|
<h4 class="mb-0">Rechnungen</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title text-center">Ranking - Rechnung übernommen</h5>
|
<h5 class="card-title text-center">Ranking - Rechnung übernommen</h5>
|
||||||
<p class="text-center text-muted mt-2 mb-3">
|
|
||||||
Der mit der geringsten Anzahl ist das nächste Mal dran.
|
|
||||||
</p>
|
|
||||||
<div style="height: 40vh;">
|
<div style="height: 40vh;">
|
||||||
<canvas id="paidChart"></canvas>
|
<canvas id="paidChart"></canvas>
|
||||||
</div>
|
</div>
|
||||||
@@ -151,7 +151,7 @@ require_once 'inc/header.php';
|
|||||||
},
|
},
|
||||||
title: {
|
title: {
|
||||||
display: true,
|
display: true,
|
||||||
text: 'Anzahl der bezahlten Essen pro Benutzer'
|
text: 'Anzahl der bezahlten Rechnungen'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
scales: {
|
scales: {
|
||||||
|
|||||||
25
stats.php
25
stats.php
@@ -11,6 +11,7 @@ $sql_colors = "
|
|||||||
COUNT(m.id) AS meeting_count
|
COUNT(m.id) AS meeting_count
|
||||||
FROM meetings m
|
FROM meetings m
|
||||||
JOIN colors c ON m.color_id = c.id
|
JOIN colors c ON m.color_id = c.id
|
||||||
|
WHERE m.is_completed = 1
|
||||||
GROUP BY c.name, c.hex_code
|
GROUP BY c.name, c.hex_code
|
||||||
ORDER BY meeting_count DESC
|
ORDER BY meeting_count DESC
|
||||||
";
|
";
|
||||||
@@ -27,7 +28,8 @@ $sql_participation = "
|
|||||||
COUNT(mt.user_id) AS total_attendance
|
COUNT(mt.user_id) AS total_attendance
|
||||||
FROM meeting_teilnehmer mt
|
FROM meeting_teilnehmer mt
|
||||||
JOIN users u ON mt.user_id = u.id
|
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
|
GROUP BY u.username
|
||||||
ORDER BY total_attendance DESC
|
ORDER BY total_attendance DESC
|
||||||
";
|
";
|
||||||
@@ -41,10 +43,11 @@ $avg_attendance = 0;
|
|||||||
$sql_avg_attendance = "
|
$sql_avg_attendance = "
|
||||||
SELECT AVG(attended_count) AS avg_attended
|
SELECT AVG(attended_count) AS avg_attended
|
||||||
FROM (
|
FROM (
|
||||||
SELECT COUNT(user_id) AS attended_count
|
SELECT COUNT(mt.user_id) AS attended_count
|
||||||
FROM meeting_teilnehmer
|
FROM meeting_teilnehmer mt
|
||||||
WHERE attended = 1
|
JOIN meetings m ON mt.meeting_id = m.id
|
||||||
GROUP BY meeting_id
|
WHERE mt.attended = 1 AND m.is_completed = 1
|
||||||
|
GROUP BY mt.meeting_id
|
||||||
) AS subquery";
|
) AS subquery";
|
||||||
$result_avg = mysqli_query($conn, $sql_avg_attendance);
|
$result_avg = mysqli_query($conn, $sql_avg_attendance);
|
||||||
if ($row = mysqli_fetch_assoc($result_avg)) {
|
if ($row = mysqli_fetch_assoc($result_avg)) {
|
||||||
@@ -56,10 +59,11 @@ $avg_wore_color = 0;
|
|||||||
$sql_avg_wore_color = "
|
$sql_avg_wore_color = "
|
||||||
SELECT AVG(wore_color_count) AS avg_wore_color
|
SELECT AVG(wore_color_count) AS avg_wore_color
|
||||||
FROM (
|
FROM (
|
||||||
SELECT COUNT(user_id) AS wore_color_count
|
SELECT COUNT(mt.user_id) AS wore_color_count
|
||||||
FROM meeting_teilnehmer
|
FROM meeting_teilnehmer mt
|
||||||
WHERE wore_color = 1
|
JOIN meetings m ON mt.meeting_id = m.id
|
||||||
GROUP BY meeting_id
|
WHERE mt.wore_color = 1 AND m.is_completed = 1
|
||||||
|
GROUP BY mt.meeting_id
|
||||||
) AS subquery";
|
) AS subquery";
|
||||||
$result_avg_wore = mysqli_query($conn, $sql_avg_wore_color);
|
$result_avg_wore = mysqli_query($conn, $sql_avg_wore_color);
|
||||||
if ($row = mysqli_fetch_assoc($result_avg_wore)) {
|
if ($row = mysqli_fetch_assoc($result_avg_wore)) {
|
||||||
@@ -74,7 +78,8 @@ $sql_wore_color = "
|
|||||||
COUNT(mt.user_id) AS wore_color_count
|
COUNT(mt.user_id) AS wore_color_count
|
||||||
FROM meeting_teilnehmer mt
|
FROM meeting_teilnehmer mt
|
||||||
JOIN users u ON mt.user_id = u.id
|
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
|
GROUP BY u.username
|
||||||
ORDER BY wore_color_count DESC
|
ORDER BY wore_color_count DESC
|
||||||
";
|
";
|
||||||
|
|||||||
Reference in New Issue
Block a user