From 5c585caeba2b85c75223ba35a86f5d3a8afbc28d Mon Sep 17 00:00:00 2001 From: Moritz Weinmann Date: Mon, 22 Jun 2026 08:52:16 +0200 Subject: [PATCH] =?UTF-8?q?Dashboard:=20Anmelde-Statistik=20als=20Balkendi?= =?UTF-8?q?agramm=20hinzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Zeigt anonyme Anmeldungen der letzten 30 Tage als Bar-Chart (Chart.js, bereits im Admin geladen). Nur Tagessummen sichtbar, keine Rückschlüsse auf einzelne Nutzer möglich. Co-Authored-By: Claude Sonnet 4.6 --- mysyde/admin/dashboard_startpage.php | 65 ++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/mysyde/admin/dashboard_startpage.php b/mysyde/admin/dashboard_startpage.php index 7bc0a3a..982feba 100644 --- a/mysyde/admin/dashboard_startpage.php +++ b/mysyde/admin/dashboard_startpage.php @@ -32,6 +32,26 @@ function count_entrys($table){ $GLOBALS["pdo_conn"] = new PDO("mysql:host=".$GLOBALS['myservername'].";dbname=".$GLOBALS['mydb'].';charset=utf8', $GLOBALS['mylogin'], $GLOBALS['mypass']); +function getLoginChartData($days = 30) { + $rows = []; + $result = @mysqli_query($GLOBALS['mysql_con'], + "SELECT login_date, COUNT(*) AS cnt FROM stat_login_daily + WHERE login_date >= DATE_SUB(CURDATE(), INTERVAL " . (int)$days . " DAY) + GROUP BY login_date" + ); + while ($row = @mysqli_fetch_assoc($result)) { + $rows[$row['login_date']] = (int)$row['cnt']; + } + $labels = []; + $values = []; + for ($i = $days - 1; $i >= 0; $i--) { + $date = date('Y-m-d', strtotime("-{$i} days")); + $labels[] = date('d.m.', strtotime($date)); + $values[] = $rows[$date] ?? 0; + } + return ['labels' => $labels, 'values' => $values]; +} + function listUsers(){ $query = "SELECT * FROM main_contact ORDER BY last_interaction DESC LIMIT 20"; $result = @mysqli_query($GLOBALS['mysql_con'], $query); @@ -141,4 +161,49 @@ $GLOBALS['log_language'] = $language; + + + +
+

Anmeldungen (letzte 30 Tage)

+
+ +
+
+