Bestellungen - Teil 1
This commit is contained in:
parent
1d7253f903
commit
a8c1cc8948
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
return [
|
return [
|
||||||
'host' => '127.0.0.1',
|
'host' => '127.0.0.1',
|
||||||
'dbname' => 'vwl',
|
'dbname' => 'vwl',
|
||||||
@ -7,7 +9,7 @@ return [
|
|||||||
'password' => '',
|
'password' => '',
|
||||||
'charset' => 'utf8mb4'
|
'charset' => 'utf8mb4'
|
||||||
];
|
];
|
||||||
/*
|
*/
|
||||||
return [
|
return [
|
||||||
'host' => '148.251.96.181',
|
'host' => '148.251.96.181',
|
||||||
'dbname' => 'c1vwl',
|
'dbname' => 'c1vwl',
|
||||||
@ -15,4 +17,3 @@ return [
|
|||||||
'password' => 'SommerNacht!2025',
|
'password' => 'SommerNacht!2025',
|
||||||
'charset' => 'utf8mb4'
|
'charset' => 'utf8mb4'
|
||||||
];
|
];
|
||||||
*/
|
|
||||||
@ -22,4 +22,19 @@ class MainController {
|
|||||||
require '../src/view/hotel_edit.php';
|
require '../src/view/hotel_edit.php';
|
||||||
require '../src/view/templates/footer.php';
|
require '../src/view/templates/footer.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function bestellungen() {
|
||||||
|
$pageTitle = "Bestellungen";
|
||||||
|
require '../src/view/templates/header.php';
|
||||||
|
require '../src/view/bestellungen.php';
|
||||||
|
require '../src/view/templates/footer.php';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function bestellung_edit() {
|
||||||
|
$pageTitle = "Bestellungen";
|
||||||
|
require '../src/view/templates/header.php';
|
||||||
|
require '../src/view/bestellung_edit.php';
|
||||||
|
require '../src/view/templates/footer.php';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
46
src/model/BestellungModel.php
Normal file
46
src/model/BestellungModel.php
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once __DIR__ . '/../../core/Database.php';
|
||||||
|
|
||||||
|
class BestellungModel {
|
||||||
|
|
||||||
|
private PDO $db;
|
||||||
|
private $allowedFields = [
|
||||||
|
'ordernumber', 'bestellung_status', 'zahlung_status', 'lieferung_status', 'datum',
|
||||||
|
'region', 'land', 'plz', 'ort', 'strasse',
|
||||||
|
'anrede', 'vorname', 'nachname', 'email', 'telefon',
|
||||||
|
'versandkosten', 'steuersatz', 'synckey', 'versandart', 'gutschein_status'
|
||||||
|
];
|
||||||
|
|
||||||
|
public function __construct() {
|
||||||
|
$this->db = Database::connect();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getBestellungById($id) {
|
||||||
|
$stmt = $this->db->prepare("SELECT * FROM vwl_bestellung WHERE id = ?");
|
||||||
|
$stmt->execute([$id]);
|
||||||
|
return $stmt->fetch();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateBestellung($data) {
|
||||||
|
|
||||||
|
$fieldsToUpdate = array_intersect_key($data, array_flip($this->allowedFields));
|
||||||
|
if (empty($fieldsToUpdate)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Baue SQL-Statement
|
||||||
|
$setParts = [];
|
||||||
|
foreach ($fieldsToUpdate as $field => $value) {
|
||||||
|
$setParts[] = "`$field` = :$field";
|
||||||
|
}
|
||||||
|
$sql = "UPDATE vwl_hotel SET " . implode(', ', $setParts) . " WHERE id = :id";
|
||||||
|
|
||||||
|
$stmt = $this->db->prepare($sql);
|
||||||
|
|
||||||
|
// Bind-Werte
|
||||||
|
$fieldsToUpdate['id'] = $data['id'];
|
||||||
|
return $stmt->execute($fieldsToUpdate);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
66
src/view/bestellung_edit.php
Normal file
66
src/view/bestellung_edit.php
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?php
|
||||||
|
require_once '../core/Request.php';
|
||||||
|
require_once '../src/model/BestellungModel.php';
|
||||||
|
|
||||||
|
$bestellungId = Request::get('id');
|
||||||
|
$message = '';
|
||||||
|
$bestellungModel = new BestellungModel();
|
||||||
|
|
||||||
|
// POST-Verarbeitung
|
||||||
|
if (Request::isPost()) {
|
||||||
|
$data = Request::allPost();
|
||||||
|
|
||||||
|
$success = $bestellungModel->updateBestellung($data);
|
||||||
|
|
||||||
|
if ($success) {
|
||||||
|
$message = '<div class="alert alert-success">✅ Daten erfolgreich gespeichert.</div>';
|
||||||
|
} else {
|
||||||
|
$message = '<div class="alert alert-danger">❌ Fehler beim Speichern der Daten.</div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Daten neu laden nach dem Speichern (oder beim ersten Aufruf)
|
||||||
|
$bestellung = $bestellungModel->getBestellungById($bestellungId);
|
||||||
|
?>
|
||||||
|
<h2>Bestellung: <?= htmlspecialchars($bestellung['ordernumber']) ?></h2>
|
||||||
|
<?= $message ?>
|
||||||
|
<form method="POST">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row mb-4">
|
||||||
|
<div class="col-auto">
|
||||||
|
<label for="ordernumber" class="form-label">Bestellnummer</label>
|
||||||
|
<input class="form-control w-auto" id="ordernumber" name="ordernumber"
|
||||||
|
value="<?= htmlspecialchars($bestellung['ordernumber'] ?? '') ?>" required readonly>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto">
|
||||||
|
<label for="bestellung_status" class="form-label">Status</label>
|
||||||
|
<input class="form-control w-auto" id="bestellung_status" name="bestellung_status"
|
||||||
|
value="<?= htmlspecialchars($bestellung['bestellung_status'] ?? '') ?>" required readonly>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto">
|
||||||
|
<label for="zahlung_status" class="form-label">Zahlung</label>
|
||||||
|
<input class="form-control w-auto" id="zahlung_status" name="zahlung_status"
|
||||||
|
value="<?= htmlspecialchars($bestellung['zahlung_status'] ?? '') ?>" required readonly>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto">
|
||||||
|
<label for="gutschein_status" class="form-label">Gutschein</label>
|
||||||
|
<input class="form-control w-auto" id="gutschein_status" name="gutschein_status"
|
||||||
|
value="<?= htmlspecialchars($bestellung['gutschein_status'] ?? '') ?>" required readonly>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h5>Kunde</h5>
|
||||||
|
<div class="row mb-3">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h5>Gutschein</h5>
|
||||||
|
<div class="row mb-3">
|
||||||
|
|
||||||
|
<h5>Positionen</h5>
|
||||||
|
<div class="row mb-3">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-primary">Speichern</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
73
src/view/bestellungen.php
Normal file
73
src/view/bestellungen.php
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
<?php
|
||||||
|
require_once '../core/Database.php';
|
||||||
|
|
||||||
|
$pdo = Database::connect();
|
||||||
|
$stmt = $pdo->query("SELECT id, ordernumber, bestellung_status, zahlung_status, gutschein_status, datum FROM vwl_bestellung ORDER BY ordernumber");
|
||||||
|
$bestellungen = $stmt->fetchAll();
|
||||||
|
?>
|
||||||
|
|
||||||
|
<h4>Bestellungen</h4>
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table id="bestellungTable" class="table table-striped table-hover align-middle">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th data-column="ordernumber">
|
||||||
|
Bestellnummer
|
||||||
|
<input type="text" id="bestellungFilter" class="form-control form-control-sm d-inline-block ms-2" placeholder="Filtern..." style="width: 200px;">
|
||||||
|
</th>
|
||||||
|
<th data-column="datum">Datum</th>
|
||||||
|
<th data-column="bestellung_status">Status</th>
|
||||||
|
<th data-column="zahlung_status">Zahlung</th>
|
||||||
|
<th data-column="gutschein_status">Gutschein</th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach ($bestellungen as $bestellung): ?>
|
||||||
|
<tr ondblclick="openBestellungForm(<?= $bestellung['id'] ?>)">
|
||||||
|
<td><?= htmlspecialchars($bestellung['ordernumber']) ?></td>
|
||||||
|
<td><?= isset($bestellung['datum']) && ($d = DateTime::createFromFormat('Y-m-d', $bestellung['datum'])) ? $d->format('d.m.Y') : '' ?></td>
|
||||||
|
<td><?= htmlspecialchars($bestellung['bestellung_status']) ?></td>
|
||||||
|
<td><?= htmlspecialchars($bestellung['zahlung_status']) ?></td>
|
||||||
|
<td><?= htmlspecialchars($bestellung['gutschein_status']) ?></td>
|
||||||
|
<td><i class='bi bi-cloud-download' title="Bestellung aktualisieren"></i></td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function openBestellungForm(id) {
|
||||||
|
window.open('index.php?page=bestellung_edit&id=' + id, '_blank');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sortierung bei Klick auf Überschriften
|
||||||
|
document.querySelectorAll("#bestellungTable th").forEach(th => {
|
||||||
|
th.addEventListener("click", () => {
|
||||||
|
const table = th.closest("table");
|
||||||
|
const column = th.cellIndex;
|
||||||
|
const order = th.dataset.order = -(th.dataset.order || -1);
|
||||||
|
const rows = Array.from(table.tBodies[0].rows);
|
||||||
|
|
||||||
|
rows.sort((a, b) => {
|
||||||
|
const cellA = a.cells[column].innerText.trim();
|
||||||
|
const cellB = b.cells[column].innerText.trim();
|
||||||
|
return cellA.localeCompare(cellB, undefined, { numeric: true }) * order;
|
||||||
|
});
|
||||||
|
|
||||||
|
rows.forEach(row => table.tBodies[0].appendChild(row));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Live-Filter für Bestellnummer
|
||||||
|
document.getElementById('bestellungFilter').addEventListener('input', function () {
|
||||||
|
const filter = this.value.toLowerCase();
|
||||||
|
const rows = document.querySelectorAll("#bestellungTable tbody tr");
|
||||||
|
|
||||||
|
rows.forEach(row => {
|
||||||
|
const bestellnummer = row.cells[0].innerText.toLowerCase();
|
||||||
|
row.style.display = bestellnummer.includes(filter) ? '' : 'none';
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@ -55,6 +55,7 @@ $username = $_SESSION['user'] ?? 'Gast';
|
|||||||
'home' => 'Home',
|
'home' => 'Home',
|
||||||
'gutscheinsuche' => 'Gutscheinsuche',
|
'gutscheinsuche' => 'Gutscheinsuche',
|
||||||
'hotels' => 'Hotels',
|
'hotels' => 'Hotels',
|
||||||
|
'bestellungen' => 'Bestellungen',
|
||||||
'rechnungen' => 'Rechnungen',
|
'rechnungen' => 'Rechnungen',
|
||||||
'partner' => 'Partner',
|
'partner' => 'Partner',
|
||||||
'auswertungen' => 'Auswertungen',
|
'auswertungen' => 'Auswertungen',
|
||||||
@ -67,6 +68,7 @@ $username = $_SESSION['user'] ?? 'Gast';
|
|||||||
'home' => 'bi-house',
|
'home' => 'bi-house',
|
||||||
'gutscheinsuche' => 'bi-search',
|
'gutscheinsuche' => 'bi-search',
|
||||||
'hotels' => 'bi-building',
|
'hotels' => 'bi-building',
|
||||||
|
'bestellungen' => 'bi-cart4',
|
||||||
'rechnungen' => 'bi-file-earmark-text',
|
'rechnungen' => 'bi-file-earmark-text',
|
||||||
'partner' => 'bi-people',
|
'partner' => 'bi-people',
|
||||||
'auswertungen' => 'bi-graph-up',
|
'auswertungen' => 'bi-graph-up',
|
||||||
|
|||||||
4
web/phpinfo.php
Normal file
4
web/phpinfo.php
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
phpinfo();
|
||||||
|
?>
|
||||||
Loading…
Reference in New Issue
Block a user