erste Version der Reports
This commit is contained in:
parent
c78ebb8ac5
commit
b1f6d23e69
5 changed files with 227 additions and 17 deletions
29
README.md
29
README.md
|
|
@ -2,7 +2,21 @@
|
||||||
|
|
||||||
Dokumentiere Ausgaben on-the-go als Webapp
|
Dokumentiere Ausgaben on-the-go als Webapp
|
||||||
|
|
||||||
v 1.0
|
V.1.1 (geplant)
|
||||||
|
|
||||||
|
Als nächstes kommen Auswertungen / Summen
|
||||||
|
|
||||||
|
Auswertungen:
|
||||||
|
|
||||||
|
- [X] Monatssumme je Kategorie
|
||||||
|
- [ ] Filter monatsweise
|
||||||
|
- [ ] monate durchblättern zurück und vor, defaut aktueller Monat
|
||||||
|
- [X] Monatssumme je Person
|
||||||
|
- [ ] Haken, welche Kategorieen eingeschlossen werden
|
||||||
|
- [ ] Filter monatssummen
|
||||||
|
- [ ] monate durchblättern zurück und vor, defaut aktueller Monat
|
||||||
|
|
||||||
|
V.1.0
|
||||||
|
|
||||||
Das erste Release enthält:
|
Das erste Release enthält:
|
||||||
|
|
||||||
|
|
@ -51,16 +65,3 @@ Weiteres
|
||||||
- [x] Betrag deutsche Zahlen und rechtsbündig
|
- [x] Betrag deutsche Zahlen und rechtsbündig
|
||||||
- [x] Kommentarfeld freitext drei Zeilen
|
- [x] Kommentarfeld freitext drei Zeilen
|
||||||
|
|
||||||
V.1.1
|
|
||||||
|
|
||||||
Als nächstes kommen Auswertungen / Summen
|
|
||||||
|
|
||||||
Auswertungen:
|
|
||||||
|
|
||||||
- [ ] Monatssumme je Kategorie
|
|
||||||
- [ ] Filter monatsweise
|
|
||||||
- [ ] monate durchblättern zurück und vor, defaut aktueller Monat
|
|
||||||
- [ ] Monatssumme je Person
|
|
||||||
- [ ] Haken, welche Kategorieen eingeschlossen werden
|
|
||||||
- [ ] Filter monatssummen
|
|
||||||
- [ ] monate durchblättern zurück und vor, defaut aktueller Monat
|
|
||||||
|
|
|
||||||
|
|
@ -217,6 +217,12 @@ table {
|
||||||
box-shadow: var(--box-shadow);
|
box-shadow: var(--box-shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table.thin {
|
||||||
|
width: 250px;
|
||||||
|
display: inline-table; /* schrumpft auf Inhalt */
|
||||||
|
margin: 0 auto; /* horizontal zentrieren */
|
||||||
|
}
|
||||||
|
|
||||||
th, td {
|
th, td {
|
||||||
padding: 12px 15px;
|
padding: 12px 15px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
|
|
|
||||||
|
|
@ -45,8 +45,11 @@ entries e
|
||||||
JOIN user_names un ON e.id = un.id
|
JOIN user_names un ON e.id = un.id
|
||||||
LEFT JOIN categories c ON e.category = c.category_id
|
LEFT JOIN categories c ON e.category = c.category_id
|
||||||
LEFT JOIN payment_methods pm ON e.payment_method = pm.payment_method_id
|
LEFT JOIN payment_methods pm ON e.payment_method = pm.payment_method_id
|
||||||
|
WHERE
|
||||||
|
EXTRACT(YEAR FROM e.date) = EXTRACT(YEAR FROM CURRENT_DATE())
|
||||||
|
AND EXTRACT(MONTH FROM e.date) = EXTRACT(MONTH FROM CURRENT_DATE())
|
||||||
ORDER BY
|
ORDER BY
|
||||||
date DESC;
|
e.date DESC;
|
||||||
";
|
";
|
||||||
|
|
||||||
$stmt = $pdo->prepare($sql);
|
$stmt = $pdo->prepare($sql);
|
||||||
|
|
@ -69,8 +72,8 @@ $entries = $stmt->fetchAll();
|
||||||
<ul class="nav-list">
|
<ul class="nav-list">
|
||||||
<li><a href="dashboard.php">Start</a></li>
|
<li><a href="dashboard.php">Start</a></li>
|
||||||
<li><a href="register.php">Neue User</a></li>
|
<li><a href="register.php">Neue User</a></li>
|
||||||
<li><a href="menu3.php" style="display: none;">Menüpunkt 3</a></li>
|
<li><a href="rep-month.php">Report Monat</a></li>
|
||||||
<li><a href="menu4.php" style="display: none;">Menüpunkt 4</a></li>
|
<li><a href="rep-person.php">Report Personen</a></li>
|
||||||
<li><a href="menu5.php" style="display: none;">Menüpunkt 5</a></li>
|
<li><a href="menu5.php" style="display: none;">Menüpunkt 5</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<a href="logout.php" class="logout">Logout</a>
|
<a href="logout.php" class="logout">Logout</a>
|
||||||
|
|
|
||||||
99
html/rep-month.php
Normal file
99
html/rep-month.php
Normal file
|
|
@ -0,0 +1,99 @@
|
||||||
|
<?php
|
||||||
|
require 'config.php';
|
||||||
|
//if (!isset($_SESSION['user_id'])) {
|
||||||
|
// header('Location: index.php');
|
||||||
|
// exit;
|
||||||
|
//}
|
||||||
|
// echo $_SESSION['user_id'];
|
||||||
|
error_log($_SESSION['user_id']);
|
||||||
|
|
||||||
|
// Login-Logik
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
|
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
|
||||||
|
$stmt->execute([$_POST['username']]);
|
||||||
|
$user = $stmt->fetch();
|
||||||
|
if ($user && password_verify($_POST['password'], $user['password'])) {
|
||||||
|
$_SESSION['user_id'] = $user['id'];
|
||||||
|
} else {
|
||||||
|
header('Location: index.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Daten abrufen
|
||||||
|
$sql="SELECT
|
||||||
|
c.category_id AS kategorie_id,
|
||||||
|
c.name AS kategorie_name,
|
||||||
|
SUM(e.amount) AS summe_je_kategorie
|
||||||
|
FROM
|
||||||
|
entries e
|
||||||
|
LEFT JOIN categories c ON e.category = c.category_id
|
||||||
|
WHERE
|
||||||
|
EXTRACT(YEAR FROM e.date) = EXTRACT(YEAR FROM CURRENT_DATE())
|
||||||
|
AND EXTRACT(MONTH FROM e.date) = EXTRACT(MONTH FROM CURRENT_DATE())
|
||||||
|
GROUP BY
|
||||||
|
c.category_id, c.name
|
||||||
|
ORDER BY
|
||||||
|
summe_je_kategorie DESC;
|
||||||
|
";
|
||||||
|
|
||||||
|
$stmt = $pdo->prepare($sql);
|
||||||
|
$stmt->execute();
|
||||||
|
$entries = $stmt->fetchAll();
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=0.8">
|
||||||
|
<title>FSCash - Dashboard</title>
|
||||||
|
<link rel="stylesheet" href="assets/css/style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<!-- Navigation -->
|
||||||
|
<nav class="nav">
|
||||||
|
<button class="hamburger">☰</button>
|
||||||
|
<ul class="nav-list">
|
||||||
|
<li><a href="dashboard.php">Start</a></li>
|
||||||
|
<li><a href="register.php">Neue User</a></li>
|
||||||
|
<li><a href="rep-month.php">Report Monat</a></li>
|
||||||
|
<li><a href="rep-person.php">Report Personen</a></li>
|
||||||
|
<li><a href="menu5.php" style="display: none;">Menüpunkt 5</a></li>
|
||||||
|
</ul>
|
||||||
|
<a href="logout.php" class="logout">Logout</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<table class="thin">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>ID</th>
|
||||||
|
<th>Kategorie</th>
|
||||||
|
<th>Summe</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach ($entries as $entry): ?>
|
||||||
|
<tr>
|
||||||
|
<td><?= htmlspecialchars($entry['kategorie_id'] ?? '') ?></td>
|
||||||
|
<td><?= htmlspecialchars($entry['kategorie_name'] ?? '') ?></td>
|
||||||
|
<td class="align-right"><?= htmlspecialchars(number_format($entry['summe_je_kategorie'], 2, ',', '.')) ?></td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Neu-Button -->
|
||||||
|
<a href="new_entry.php" class="btn-xr">+</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Hamburger-Menü-Funktion
|
||||||
|
document.querySelector('.hamburger').addEventListener('click', function() {
|
||||||
|
document.querySelector('.nav-list').classList.toggle('show');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
101
html/rep-person.php
Normal file
101
html/rep-person.php
Normal file
|
|
@ -0,0 +1,101 @@
|
||||||
|
<?php
|
||||||
|
require 'config.php';
|
||||||
|
//if (!isset($_SESSION['user_id'])) {
|
||||||
|
// header('Location: index.php');
|
||||||
|
// exit;
|
||||||
|
//}
|
||||||
|
// echo $_SESSION['user_id'];
|
||||||
|
error_log($_SESSION['user_id']);
|
||||||
|
|
||||||
|
// Login-Logik
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
|
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
|
||||||
|
$stmt->execute([$_POST['username']]);
|
||||||
|
$user = $stmt->fetch();
|
||||||
|
if ($user && password_verify($_POST['password'], $user['password'])) {
|
||||||
|
$_SESSION['user_id'] = $user['id'];
|
||||||
|
} else {
|
||||||
|
header('Location: index.php');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Daten abrufen
|
||||||
|
$sql="WITH user_names AS (
|
||||||
|
SELECT
|
||||||
|
p.id,
|
||||||
|
b_single.username AS zahler
|
||||||
|
FROM
|
||||||
|
entries p
|
||||||
|
LEFT JOIN users b_single ON p.user_id = b_single.id
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
un.zahler,
|
||||||
|
SUM(e.amount) AS summe_je_person
|
||||||
|
FROM
|
||||||
|
entries e
|
||||||
|
JOIN user_names un ON e.id = un.id
|
||||||
|
WHERE
|
||||||
|
EXTRACT(YEAR FROM e.date) = EXTRACT(YEAR FROM CURRENT_DATE())
|
||||||
|
AND EXTRACT(MONTH FROM e.date) = EXTRACT(MONTH FROM CURRENT_DATE())
|
||||||
|
AND e.category IN (1, 2, 3)
|
||||||
|
GROUP BY
|
||||||
|
un.zahler
|
||||||
|
ORDER BY
|
||||||
|
summe_je_person DESC;
|
||||||
|
";
|
||||||
|
|
||||||
|
$stmt = $pdo->prepare($sql);
|
||||||
|
$stmt->execute();
|
||||||
|
$entries = $stmt->fetchAll();
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=0.8">
|
||||||
|
<title>FSCash - Dashboard</title>
|
||||||
|
<link rel="stylesheet" href="assets/css/style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
<!-- Navigation -->
|
||||||
|
<nav class="nav">
|
||||||
|
<button class="hamburger">☰</button>
|
||||||
|
<ul class="nav-list">
|
||||||
|
<li><a href="dashboard.php">Start</a></li>
|
||||||
|
<li><a href="register.php">Neue User</a></li>
|
||||||
|
<li><a href="rep-month.php">Report Monat</a></li>
|
||||||
|
<li><a href="rep-person.php">Report Personen</a></li>
|
||||||
|
<li><a href="menu5.php" style="display: none;">Menüpunkt 5</a></li>
|
||||||
|
</ul>
|
||||||
|
<a href="logout.php" class="logout">Logout</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<table class="thin">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Zahler</th>
|
||||||
|
<th>Summe</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach ($entries as $entry): ?>
|
||||||
|
<tr>
|
||||||
|
<td><?= htmlspecialchars($entry['zahler'] ?? '') ?></td>
|
||||||
|
<td class="align-right"><?= htmlspecialchars(number_format($entry['summe_je_person'], 2, ',', '.')) ?></td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Hamburger-Menü-Funktion
|
||||||
|
document.querySelector('.hamburger').addEventListener('click', function() {
|
||||||
|
document.querySelector('.nav-list').classList.toggle('show');
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Add table
Reference in a new issue