15 Commits

Author SHA1 Message Date
e68c86c93e Merge branch 'frontendBackendFinal' of https://git.bib.de/PBBFA23CSE/Bib-Arts into frontendBackendFinal 2025-07-07 14:38:36 +02:00
a9997b3c63 Registrierung und Login aufgeräumt: Felder und Fehler angepasst, Formulardaten bleiben bei Fehlern erhalten, Navigation zeigt jetzt nur noch passende Links je nach Login-Status, Passwort-Fehler verständlich auf Deutsch. Alles einheitlich und benutzerfreundlich gemacht! 2025-07-07 14:31:32 +02:00
9ce7a6cfd3 fixed infos 2025-07-07 14:26:26 +02:00
ca757d1723 Merge branch 'frontendBackendFinal' of https://git.bib.de/PBBFA23CSE/Bib-Arts into frontendBackendFinal 2025-07-07 14:22:53 +02:00
717d361dbb showNews angebindet und zum laufen gebracht. 2025-07-07 14:19:52 +02:00
404e846418 logout von form zu button mit get request geändert 2025-07-07 12:46:49 +02:00
3ce61ace17 "Zwischen-Views" erstellt für Weiterleitung nach Login/Logout. Views einheitlich im div container class="inhalt". Error message nach fehlerhaftem login. 2025-07-07 12:43:25 +02:00
3dc68dd0bc forgot pw try to fix 2025-07-07 11:24:11 +02:00
b9fc6bcdd5 fixed Registration 2025-07-07 11:20:57 +02:00
a50b48592b fixed event 2025-07-07 11:15:49 +02:00
1691370db6 Merge branch 'frontendBackendFinal' of https://git.bib.de/PBBFA23CSE/Bib-Arts into frontendBackendFinal 2025-07-07 11:04:31 +02:00
a6b672ee7e Refactor Controller and models anhand der bibarts.sql und unbrauchbare Controllers und Models entfernt. 2025-07-07 11:03:59 +02:00
97c03d817e Initiales .sql script angepasst 2025-07-07 11:03:51 +02:00
877be4e567 Login Form updated 2025-07-07 11:01:54 +02:00
ef3349c6e4 fixed login and register with right linktos 2025-07-07 10:42:58 +02:00
30 changed files with 430 additions and 473 deletions

View File

@@ -150,32 +150,63 @@ a {
border-radius: 10px; border-radius: 10px;
} }
.login-container { .form-container {
position: absolute;
top: 200px;
background-color: #BAC8D4; background-color: #BAC8D4;
width: 900px; width: 100%;
height: 450px; max-width: 400px;
border-radius: 10px; border-radius: 10px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center;
box-sizing: border-box; box-sizing: border-box;
padding: 32px 24px 24px 24px;
margin: 32px auto;
} }
.form-horizontal {
.tickets-container { width: 100%;
position: absolute;
top: 200px;
background-color: #BAC8D4;
width: 900px;
height: 450px;
border-radius: 10px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; gap: 12px;
justify-content: center; margin-bottom: 10px;
}
.form-horizontal label {
margin-bottom: 2px;
}
.form-horizontal input[type="text"],
.form-horizontal input[type="email"],
.form-horizontal input[type="password"] {
width: 100%;
padding: 8px 10px;
border: 1px solid #BAC8D4;
border-radius: 4px;
font-size: 1rem;
box-sizing: border-box; box-sizing: border-box;
background: #fff;
}
.form-horizontal button {
width: 100%;
padding: 10px 0;
border: none;
border-radius: 4px;
background: #4d4d4d;
color: #fff;
font-size: 1rem;
margin-top: 8px;
cursor: pointer;
transition: background 0.2s;
}
.form-horizontal button:hover {
background: #333;
}
.login-error, .form-error {
background: #ffe0e0;
color: #b30000;
border: 1px solid #ffb3b3;
border-radius: 6px;
padding: 10px 16px;
margin-bottom: 18px;
width: 100%;
text-align: center;
} }
@media (max-width: 600px) { @media (max-width: 600px) {
@@ -297,7 +328,7 @@ a {
padding: 16px 8px; padding: 16px 8px;
box-sizing: border-box; box-sizing: border-box;
} }
.tickets-container { .event-container {
position: static; position: static;
width: 95vw; width: 95vw;
max-width: 400px; max-width: 400px;
@@ -310,7 +341,7 @@ a {
font-size: 1.5em; font-size: 1.5em;
text-align: center; text-align: center;
} }
.tickets-container h1 { .event-container h1 {
font-size: 1.5em; font-size: 1.5em;
text-align: center; text-align: center;
} }

View File

@@ -50,27 +50,27 @@ class AuthController
if ($result === true) { if ($result === true) {
$_SESSION['user'] = $email; $_SESSION['user'] = $email;
header('Location: /bibarts/?controller=News&do=showNews'); $this->view->setDoMethodName('showLoginSuccess');
exit();
} else { } else {
$this->view->setVars([ $this->view->setVars([
'errors' => ['login' => is_string($result) ? $result : "Login fehlgeschlagen."], 'errors' => ['login' => is_string($result) ? $result : "Login fehlgeschlagen."],
'validData' => ['email' => $email], 'validData' => ['email' => $email],
'loginSuccess' => false 'loginSuccess' => false
]); ]);
$this->view->setDoMethodName('showLoginForm');
} }
} }
public function register() { public function register() {
$data = [ $data = [
'first_name' => $_POST['vorname'] ?? '', 'first_name' => $_POST['first_name'] ?? '',
'last_name' => $_POST['nachname'] ?? '', 'last_name' => $_POST['last_name'] ?? '',
'street' => $_POST['strasse'] ?? '', 'street' => $_POST['street'] ?? '',
'house_number' => $_POST['hausnr'] ?? '', 'house_number' => $_POST['house_number'] ?? '',
'postal_code' => $_POST['plz'] ?? '', 'postal_code' => $_POST['postal_code'] ?? '',
'city' => $_POST['ort'] ?? '', 'city' => $_POST['city'] ?? '',
'country' => $_POST['land'] ?? '', 'country' => $_POST['country'] ?? '',
'phone' => $_POST['tel'] ?? '', 'phone' => $_POST['phone'] ?? '',
'email' => $_POST['email'] ?? '', 'email' => $_POST['email'] ?? '',
'password' => $_POST['password'] ?? '', 'password' => $_POST['password'] ?? '',
'password_repeat' => $_POST['password_repeat'] ?? '', 'password_repeat' => $_POST['password_repeat'] ?? '',
@@ -80,14 +80,15 @@ class AuthController
$result = $this->model->register($data); $result = $this->model->register($data);
if ($result === true) { if ($result === true) {
$this->view->setVars(['success' => 'Registrierung erfolgreich!']); $this->view->setDoMethodName('showRegistrationSuccess');
$this->view->render('Auth/showLoginForm');
exit;
} else { } else {
$errors['register'] = is_string($result) ? $result : "Registrierung fehlgeschlagen."; if (is_array($result)) {
$errors['register'] = implode('<br>', $result);
} else {
$errors['register'] = is_string($result) ? $result : "Registrierung fehlgeschlagen.";
}
$this->view->setVars(['errors' => $errors, 'validData' => $data]); $this->view->setVars(['errors' => $errors, 'validData' => $data]);
$this->view->render('Auth/showRegistrationForm'); $this->view->setDoMethodName('showRegistrationForm');
exit;
} }
} }
@@ -128,8 +129,7 @@ class AuthController
} }
} }
public function showConfirmation() public function showConfirmation() {
{
$messages = [ $messages = [
'login' => "Login erfolgreich.", 'login' => "Login erfolgreich.",
'register' => "Registrierung erfolgreich.", 'register' => "Registrierung erfolgreich.",
@@ -145,7 +145,6 @@ class AuthController
public function logout() { public function logout() {
unset($_SESSION['user']); unset($_SESSION['user']);
session_destroy(); session_destroy();
header('Location: /bibarts/?controller=Auth&do=showLoginForm'); $this->view->setDoMethodName('showLogoutSuccess');
exit();
} }
} }

View File

@@ -1,53 +0,0 @@
<?php
namespace Blog\Controller;
use Blog\Model\ContactModel;
class ContactController
{
protected $view;
private $db;
private $validData = array();
private $errors = array();
private $labels = array("name" => "Name", "email" => "E-Mail-Adresse", "content" => "Nachricht");
public function __construct($view) {
$this->db = new ContactModel();
$this->view = $view;
}
public function showContactForm() {
$this->view->setVars([
'labels' => $this->labels,
'validData' => $this->validData,
'errors' => $this->errors
]);
}
public function showConfirmation() {
}
public function validateForm() {
foreach ($this->labels as $index => $value) {
if (!isset($_POST[$index]) || empty($_POST[$index])) {
$this->errors[$index] = "Bitte " . $value . " angeben";
} else {
$this->validData[$index] = $_POST[$index];
}
}
if (count($this->errors) > 0) {
$this->view->setDoMethodName("showContactForm");
$this->showContactForm();
} else {
if ($this->db->writeContactData($this->validData)) {
$this->view->setDoMethodName("showConfirmation");
$this->showConfirmation();
}
}
}
}
?>

View File

@@ -1,10 +0,0 @@
<?php
namespace Blog\Controller;
class RegisterController {
function showRegisterPage()
{
}
}

View File

@@ -1,18 +0,0 @@
<?php
namespace Blog\Controller;
class WelcomeController
{
function showWelcome() {
}
function showProjects() {
}
function showTutorials() {
}
}

View File

@@ -52,7 +52,7 @@ class AuthModel extends Database
} }
$requiredFields = [ $requiredFields = [
'email', 'password', 'street', 'house_number', 'city', 'postal_code', 'email', 'password', 'password_repeat', 'street', 'house_number', 'city', 'postal_code',
'country', 'first_name', 'last_name', 'phone' 'country', 'first_name', 'last_name', 'phone'
]; ];
@@ -71,8 +71,9 @@ class AuthModel extends Database
return "Passwörter stimmen nicht überein."; return "Passwörter stimmen nicht überein.";
} }
if ($this->pwRequirementCheck($data['password']) !== true) { $pwCheck = $this->pwRequirementCheck($data['password']);
return "Passwort muss mindestens 8 Zeichen lang sein und mindestens ein Großbuchstabe, ein Kleinbuchstabe, eine Zahl und ein Sonderzeichen enthalten."; if ($pwCheck !== true) {
return $pwCheck; // Array mit spezifischen Fehlern zurückgeben
} }
$hashedPassword = password_hash($data['password'], PASSWORD_DEFAULT); $hashedPassword = password_hash($data['password'], PASSWORD_DEFAULT);
@@ -220,16 +221,16 @@ class AuthModel extends Database
public function pwRequirementCheck($password){ public function pwRequirementCheck($password){
$error = []; $error = [];
if(strlen($password) <= 8) if(strlen($password) < 8)
$error[] = "min 8 Charackter"; $error[] = "Passwort: mindestens 8 Zeichen";
if(!preg_match("/[A-Z]/", $password)) if(!preg_match("/[A-Z]/", $password))
$error[] = "min one large Character"; $error[] = "Passwort: mindestens ein Großbuchstabe";
if(!preg_match("/[a-z]/", $password)) if(!preg_match("/[a-z]/", $password))
$error[] = "min one small charakter"; $error[] = "Passwort: mindestens ein Kleinbuchstabe";
if(!preg_match("/[0-9]/", $password)) if(!preg_match("/[0-9]/", $password))
$error[] = "min one number"; $error[] = "Passwort: mindestens eine Zahl";
if(!preg_match("[^a-zA-Z0-9\s]", $password)); if(!preg_match("/[^a-zA-Z0-9\s]/", $password))
$error[] = "min one special character"; $error[] = "Passwort: mindestens ein Sonderzeichen";
if(empty($error)) if(empty($error))
return true; return true;

View File

@@ -1,31 +0,0 @@
<?php
namespace Blog\Model;
use PDOException;
class ContactModel extends Database
{
public function writeContactData($values)
{
$guid = $this->createUUID();
$sql = "INSERT INTO contact (`id`, `name`, `email`, `content`) VALUES (
:guid, :name, :email, :content);";
$pdo = $this->linkDB();
try {
$sth = $pdo->prepare($sql);
$sth->execute(array(":guid" => $guid,
":name" => $values["name"],
":email" => $values["email"],
":content" => $values["content"]));
} catch (PDOException $e) {
new \Blog\Library\ErrorMsg("Fehler beim Schreiben der Daten.", $e);
die;
}
return true;
}
}

View File

@@ -8,7 +8,7 @@ class EventModel extends Database {
public function getEvents() { public function getEvents() {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM ausstellung ORDER BY datum_von DESC;"; $sql = "SELECT * FROM event ORDER BY start_date DESC;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute(); $sth->execute();
@@ -21,7 +21,7 @@ class EventModel extends Database {
public function getEvent($id) { public function getEvent($id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM ausstellung WHERE ausstellungid = :id;"; $sql = "SELECT * FROM event WHERE event_id = :id;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute([":id" => $id]); $sth->execute([":id" => $id]);
@@ -34,15 +34,15 @@ class EventModel extends Database {
public function updateEvent($id, $data) { public function updateEvent($id, $data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "UPDATE ausstellung SET standortid = :standortid, datum_von = :datum_von, datum_bis = :datum_bis, name = :name, beschreibung = :beschreibung, max_tickets = :max_tickets, preis = :preis WHERE ausstellungid = :id;"; $sql = "UPDATE event SET location_id = :location_id, start_date = :start_date, end_date = :end_date, name = :name, description = :description, max_tickets = :max_tickets, ticket_price = :ticket_price WHERE event_id = :id;";
$params = [ $params = [
":standortid" => $data['standortid'], ":location_id" => $data['location_id'],
":datum_von" => $data['datum_von'], ":start_date" => $data['start_date'],
":datum_bis" => $data['datum_bis'], ":end_date" => $data['end_date'],
":name" => $data['name'], ":name" => $data['name'],
":beschreibung" => $data['beschreibung'], ":description" => $data['description'],
":max_tickets" => $data['max_tickets'], ":max_tickets" => $data['max_tickets'],
":preis" => $data['preis'], ":ticket_price" => $data['ticket_price'],
":id" => $id ":id" => $id
]; ];
try { try {
@@ -56,15 +56,15 @@ class EventModel extends Database {
public function createEvent($data) { public function createEvent($data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "INSERT INTO ausstellung (standortid, datum_von, datum_bis, name, beschreibung, max_tickets, preis) VALUES (:standortid, :datum_von, :datum_bis, :name, :beschreibung, :max_tickets, :preis);"; $sql = "INSERT INTO event (location_id, start_date, end_date, name, description, max_tickets, ticket_price) VALUES (:location_id, :start_date, :end_date, :name, :description, :max_tickets, :ticket_price);";
$params = [ $params = [
":standortid" => $data['standortid'], ":location_id" => $data['location_id'],
":datum_von" => $data['datum_von'], ":start_date" => $data['start_date'],
":datum_bis" => $data['datum_bis'], ":end_date" => $data['end_date'],
":name" => $data['name'], ":name" => $data['name'],
":beschreibung" => $data['beschreibung'], ":description" => $data['description'],
":max_tickets" => $data['max_tickets'], ":max_tickets" => $data['max_tickets'],
":preis" => $data['preis'] ":ticket_price" => $data['ticket_price']
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -78,7 +78,7 @@ class EventModel extends Database {
public function deleteEvent($id) { public function deleteEvent($id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "DELETE FROM ausstellung WHERE ausstellungid = :id;"; $sql = "DELETE FROM event WHERE event_id = :id;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute([":id" => $id]); $sth->execute([":id" => $id]);

View File

@@ -8,7 +8,7 @@ class GutscheinModel extends Database {
public function getGutscheine() { public function getGutscheine() {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM gutschein ORDER BY gültigkeit DESC;"; $sql = "SELECT * FROM voucher ORDER BY valid_until DESC;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute(); $sth->execute();
@@ -21,7 +21,7 @@ class GutscheinModel extends Database {
public function getGutschein($id) { public function getGutschein($id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM gutschein WHERE gutscheinid = :id;"; $sql = "SELECT * FROM voucher WHERE voucher_id = :id;";
$params = [":id" => $id]; $params = [":id" => $id];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -35,12 +35,12 @@ class GutscheinModel extends Database {
public function createGutschein($data) { public function createGutschein($data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "INSERT INTO gutschein (code, rabatt, eventid, gültigkeit) VALUES (:code, :rabatt, :eventid, :gültigkeit);"; $sql = "INSERT INTO voucher (code, discount, event_id, valid_until) VALUES (:code, :discount, :event_id, :valid_until);";
$params = [ $params = [
":code" => $data['code'], ":code" => $data['code'],
":rabatt" => $data['rabatt'], ":discount" => $data['discount'],
":eventid" => $data['eventid'], ":event_id" => $data['event_id'],
":gültigkeit" => $data['gültigkeit'] ":valid_until" => $data['valid_until']
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -54,12 +54,12 @@ class GutscheinModel extends Database {
public function updateGutschein($id, $data) { public function updateGutschein($id, $data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "UPDATE gutschein SET code = :code, rabatt = :rabatt, eventid = :eventid, gültigkeit = :gültigkeit WHERE gutscheinid = :id;"; $sql = "UPDATE voucher SET code = :code, discount = :discount, event_id = :event_id, valid_until = :valid_until WHERE voucher_id = :id;";
$params = [ $params = [
":code" => $data['code'], ":code" => $data['code'],
":rabatt" => $data['rabatt'], ":discount" => $data['discount'],
":eventid" => $data['eventid'], ":event_id" => $data['event_id'],
":gültigkeit" => $data['gültigkeit'], ":valid_until" => $data['valid_until'],
":id" => $id ":id" => $id
]; ];
try { try {
@@ -73,7 +73,7 @@ class GutscheinModel extends Database {
public function deleteGutschein($id) { public function deleteGutschein($id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "DELETE FROM gutschein WHERE gutscheinid = :id;"; $sql = "DELETE FROM voucher WHERE voucher_id = :id;";
$params = [":id" => $id]; $params = [":id" => $id];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);

View File

@@ -8,8 +8,8 @@ class NewsModel extends Database {
public function getNewsById($newsId) { public function getNewsById($newsId) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM news WHERE newsid = :newsid;"; $sql = "SELECT * FROM news WHERE news_id = :news_id;";
$params = [":newsid" => $newsId]; $params = [":news_id" => $newsId];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute($params); $sth->execute($params);
@@ -22,12 +22,12 @@ class NewsModel extends Database {
public function updateNews($newsId, $news) { public function updateNews($newsId, $news) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "UPDATE news SET name = :name, beschreibung = :beschreibung, datum = :datum WHERE newsid = :newsid;"; $sql = "UPDATE news SET name = :name, description = :description, date = :date WHERE news_id = :news_id;";
$params = [ $params = [
":name" => $news['titel'], ":name" => $news['titel'],
":beschreibung" => $news['inhalt'], ":description" => $news['inhalt'],
":datum" => $news['datum'], ":date" => $news['datum'],
":newsid" => $newsId ":news_id" => $newsId
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -41,7 +41,7 @@ class NewsModel extends Database {
public function getNews() { public function getNews() {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM news ORDER BY datum DESC;"; $sql = "SELECT * FROM news ORDER BY date DESC;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute(); $sth->execute();
@@ -54,11 +54,11 @@ class NewsModel extends Database {
public function createNews($news) { public function createNews($news) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "INSERT INTO news (name, beschreibung, datum) VALUES (:name, :beschreibung, :datum);"; $sql = "INSERT INTO news (name, description, date) VALUES (:name, :description, :date);";
$params = [ $params = [
":name" => $news['titel'], ":name" => $news['titel'],
":beschreibung" => $news['inhalt'], ":description" => $news['inhalt'],
":datum" => $news['datum'] ":date" => $news['datum']
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -72,8 +72,8 @@ class NewsModel extends Database {
public function deleteNews($newsId) { public function deleteNews($newsId) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "DELETE FROM news WHERE newsid = :newsid;"; $sql = "DELETE FROM news WHERE news_id = :news_id;";
$params = [":newsid" => $newsId]; $params = [":news_id" => $newsId];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute($params); $sth->execute($params);

View File

@@ -8,7 +8,7 @@ class StandortModel extends Database {
public function getStandorte() { public function getStandorte() {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM Standort ORDER BY standortid ASC;"; $sql = "SELECT * FROM location ORDER BY location_id ASC;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute(); $sth->execute();
@@ -19,10 +19,10 @@ class StandortModel extends Database {
} }
} }
public function getStandort($standortid) { public function getStandort($location_id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM Standort WHERE standortid = :standortid;"; $sql = "SELECT * FROM location WHERE location_id = :location_id;";
$params = [":standortid" => $standortid]; $params = [":location_id" => $location_id];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute($params); $sth->execute($params);
@@ -35,15 +35,15 @@ class StandortModel extends Database {
public function createStandort($data) { public function createStandort($data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "INSERT INTO Standort (straße, hausnr, postleitzahl, ort, land, tel, email) $sql = "INSERT INTO location (street, house_number, postal_code, city, country, phone, email)
VALUES (:straße, :hausnr, :postleitzahl, :ort, :land, :tel, :email);"; VALUES (:street, :house_number, :postal_code, :city, :country, :phone, :email);";
$params = [ $params = [
":straße" => $data['straße'], ":street" => $data['street'],
":hausnr" => $data['hausnr'], ":house_number" => $data['house_number'],
":postleitzahl" => $data['postleitzahl'], ":postal_code" => $data['postal_code'],
":ort" => $data['ort'], ":city" => $data['city'],
":land" => $data['land'], ":country" => $data['country'],
":tel" => $data['tel'], ":phone" => $data['phone'],
":email" => $data['email'] ":email" => $data['email']
]; ];
try { try {
@@ -56,26 +56,26 @@ class StandortModel extends Database {
} }
} }
public function updateStandort($standortid, $data) { public function updateStandort($location_id, $data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "UPDATE Standort SET $sql = "UPDATE location SET
straße = :straße, street = :street,
hausnr = :hausnr, house_number = :house_number,
postleitzahl = :postleitzahl, postal_code = :postal_code,
ort = :ort, city = :city,
land = :land, country = :country,
tel = :tel, phone = :phone,
email = :email email = :email
WHERE standortid = :standortid;"; WHERE location_id = :location_id;";
$params = [ $params = [
":straße" => $data['straße'], ":street" => $data['street'],
":hausnr" => $data['hausnr'], ":house_number" => $data['house_number'],
":postleitzahl" => $data['postleitzahl'], ":postal_code" => $data['postal_code'],
":ort" => $data['ort'], ":city" => $data['city'],
":land" => $data['land'], ":country" => $data['country'],
":tel" => $data['tel'], ":phone" => $data['phone'],
":email" => $data['email'], ":email" => $data['email'],
":standortid" => $standortid ":location_id" => $location_id
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -87,10 +87,10 @@ class StandortModel extends Database {
} }
} }
public function deleteStandort($standortid) { public function deleteStandort($location_id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "DELETE FROM Standort WHERE standortid = :standortid;"; $sql = "DELETE FROM location WHERE location_id = :location_id;";
$params = [":standortid" => $standortid]; $params = [":location_id" => $location_id];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute($params); $sth->execute($params);

View File

@@ -8,7 +8,7 @@ class TicketModel extends Database {
public function getTickets() { public function getTickets() {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT * FROM Ticket ORDER BY ticketid ASC;"; $sql = "SELECT * FROM ticket ORDER BY ticket_id ASC;";
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute(); $sth->execute();
@@ -21,13 +21,13 @@ class TicketModel extends Database {
public function buyTicket($data) { public function buyTicket($data) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "INSERT INTO Ticket (userid, eventid, kaufdatum, gültigkeitsdatum) $sql = "INSERT INTO ticket (user_id, event_id, purchase_date, valid_until)
VALUES (:userid, :eventid, :kaufdatum, :gültigkeitsdatum);"; VALUES (:user_id, :event_id, :purchase_date, :valid_until);";
$params = [ $params = [
":userid" => $data['userid'], ":user_id" => $data['user_id'],
":eventid" => $data['eventid'], ":event_id" => $data['event_id'],
":kaufdatum" => $data['kaufdatum'], ":purchase_date" => $data['purchase_date'],
":gültigkeitsdatum" => $data['gültigkeitsdatum'] ":valid_until" => $data['valid_until']
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -39,12 +39,12 @@ class TicketModel extends Database {
} }
} }
public function hasTicket($userid, $eventid) { public function hasTicket($user_id, $event_id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "SELECT COUNT(*) as count FROM Ticket WHERE userid = :userid AND eventid = :eventid;"; $sql = "SELECT COUNT(*) as count FROM ticket WHERE user_id = :user_id AND event_id = :event_id;";
$params = [ $params = [
":userid" => $userid, ":user_id" => $user_id,
":eventid" => $eventid ":event_id" => $event_id
]; ];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
@@ -56,10 +56,10 @@ class TicketModel extends Database {
} }
} }
public function deleteTicket($ticketid) { public function deleteTicket($ticket_id) {
$pdo = $this->linkDB(); $pdo = $this->linkDB();
$sql = "DELETE FROM Ticket WHERE ticketid = :ticketid;"; $sql = "DELETE FROM ticket WHERE ticket_id = :ticket_id;";
$params = [":ticketid" => $ticketid]; $params = [":ticket_id" => $ticket_id];
try { try {
$sth = $pdo->prepare($sql); $sth = $pdo->prepare($sql);
$sth->execute($params); $sth->execute($params);

View File

@@ -0,0 +1,23 @@
<div class="inhalt">
<div class="login-container">
<h1>Anmelden</h1>
<?php if (!empty($errors['login'])): ?>
<div class="login-error"><?=htmlspecialchars($errors['login'])?></div>
<?php endif; ?>
<form class="form-horizontal" action="index.php" method="post">
<input type="hidden" name="controller" value="Auth">
<input type="hidden" name="do" value="login">
<label for="email">E-Mail</label>
<input class="input-email" type="email" name="email" id="email" placeholder="E-Mail" required>
<label for="password">Passwort</label>
<input class="input-passwort" type="password" name="password" id="password" placeholder="Passwort" required>
<button class="button-loggin" type="submit">Login</button>
</form>
<div style="text-align:center; margin-top: 1.5em;">
<a class="link-passwort-vergessen" href="?controller=Auth&do=showForgotPasswordForm">Passwort vergessen?</a>
<br>
<a class="link-konto-erstellen" href="?controller=Auth&do=showRegistrationForm">Konto erstellen</a>
</div>
</div>
</div>

View File

@@ -1,20 +1,23 @@
<div class="inhalt"> <div class="inhalt">
<div class="login-container"> <div class="form-container">
<h1>Anmelden</h1> <h1>Anmelden</h1>
<form class="form-horizontal" action="#" method="post"> <?php if (!empty($errors['login'])): ?>
<label> <div class="form-error"><?=htmlspecialchars($errors['login'])?></div>
<input class="input-email" type="text" placeholder="E-Mail"> <?php endif; ?>
</label> <form class="form-horizontal" action="index.php" method="post">
<input type="hidden" name="controller" value="Auth">
<input type="hidden" name="do" value="login">
<label for="email">E-Mail</label>
<input class="input-email" type="email" name="email" id="email" placeholder="E-Mail" required>
<label for="password">Passwort</label>
<input class="input-passwort" type="password" name="password" id="password" placeholder="Passwort" required>
<button class="button-login" type="submit">Login</button>
</form> </form>
<form class="form-horizontal" action="#" method="post"> <div style="text-align:center; margin-top: 1.5em;">
<label> <a class="link-passwort-vergessen" href="?controller=Auth&do=showForgotPasswordForm">Passwort vergessen?</a>
<input class="input-passwort" type="text" placeholder="Passwort"> <br>
</label> <a class="link-konto-erstellen" href="?controller=Auth&do=showRegistrationForm">Konto erstellen</a>
</form> </div>
<button class="button-loggin">Login</button>
<a class="link-passwort-vergessen" href="?controller=Login&do=showPasswortVergessen">Passwort vergessen?</a>
<a class="link-konto-erstellen" href="?controller=Register&do=showRegisterPage">Konto erstellen</a>
</div> </div>
</div> </div>

View File

@@ -0,0 +1,15 @@
<div class="inhalt">
<div class="login-success">
<h2>Login erfolgreich!</h2>
<p>Sie werden in wenigen Sekunden zu den News weitergeleitet...</p>
</div>
</div>
<script>
setTimeout(function() {
window.location.href = "?controller=News&do=showNews";
}, 2000); // 2 Sekunden warten
</script>
<noscript>
<meta http-equiv="refresh" content="2;url=?controller=News&do=showNews">
</noscript>

View File

@@ -0,0 +1,14 @@
<div class="inhalt">
<div class="login-success">
<h2>Logout erfolgreich!</h2>
<p>Sie werden in wenigen Sekunden zum Login weitergeleitet...</p>
</div>
</div>
<script>
setTimeout(function() {
window.location.href = "?controller=Auth&do=showLoginForm";
}, 2000); // 2 Sekunden warten
</script>
<noscript>
<meta http-equiv="refresh" content="2;url=?controller=Auth&do=showLoginForm">
</noscript>

View File

@@ -0,0 +1,37 @@
<div class="inhalt">
<div class="form-container">
<h1>Registrieren</h1>
<?php if (!empty($errors['register'])): ?>
<div class="form-error"><?=htmlspecialchars($errors['register'])?></div>
<?php endif; ?>
<form class="form-horizontal" action="index.php" method="post">
<input type="hidden" name="controller" value="Auth">
<input type="hidden" name="do" value="register">
<label for="first_name">Vorname</label>
<input class="input-vorname" type="text" name="first_name" id="first_name" placeholder="Vorname" required value="<?=htmlspecialchars($validData['first_name'] ?? '')?>">
<label for="last_name">Nachname</label>
<input class="input-nachname" type="text" name="last_name" id="last_name" placeholder="Nachname" required value="<?=htmlspecialchars($validData['last_name'] ?? '')?>">
<label for="email">E-Mail</label>
<input class="input-email" type="email" name="email" id="email" placeholder="E-Mail" required value="<?=htmlspecialchars($validData['email'] ?? '')?>">
<label for="password">Passwort</label>
<input class="input-passwort" type="password" name="password" id="password" placeholder="Passwort" required>
<label for="password_repeat">Passwort wiederholen</label>
<input class="input-passwort-repeat" type="password" name="password_repeat" id="password_repeat" placeholder="Passwort wiederholen" required>
<label for="street">Straße</label>
<input class="input-strasse" type="text" name="street" id="street" placeholder="Straße" required value="<?=htmlspecialchars($validData['street'] ?? '')?>">
<label for="house_number">Hausnr.</label>
<input class="input-hausnr" type="text" name="house_number" id="house_number" placeholder="Hausnr." required value="<?=htmlspecialchars($validData['house_number'] ?? '')?>">
<label for="postal_code">Postleitzahl</label>
<input class="input-postleitzahl" type="text" name="postal_code" id="postal_code" placeholder="Postleitzahl" required value="<?=htmlspecialchars($validData['postal_code'] ?? '')?>">
<label for="city">Ort</label>
<input class="input-ort" type="text" name="city" id="city" placeholder="Ort" required value="<?=htmlspecialchars($validData['city'] ?? '')?>">
<label for="country">Land</label>
<input class="input-land" type="text" name="country" id="country" placeholder="Land" required value="<?=htmlspecialchars($validData['country'] ?? '')?>">
<label for="phone">Telefonnr.</label>
<input class="input-tel" type="text" name="phone" id="phone" placeholder="Telefonnr." required value="<?=htmlspecialchars($validData['phone'] ?? '')?>">
<button class="button-register" type="submit">Registrieren</button>
</form>
<a class="link-konto-erstellen" href="?controller=Auth&do=showLoginForm">Login</a>
</div>
</div>

View File

@@ -0,0 +1,14 @@
<div class="inhalt">
<div class="login-success">
<h2>Registrierung erfolgreich!</h2>
<p>Sie werden in wenigen Sekunden zum Login weitergeleitet...</p>
</div>
</div>
<script>
setTimeout(function() {
window.location.href = "?controller=Auth&do=showLoginForm";
}, 2000);
</script>
<noscript>
<meta http-equiv="refresh" content="2;url=?controller=Auth&do=showLoginForm">
</noscript>

View File

@@ -2,11 +2,11 @@
include dirname(__DIR__).'/header.phtml'; include dirname(__DIR__).'/header.phtml';
?> ?>
<div class="inhalt">
<div class="msg"> <div class="msg">
<p>Das Event "<?php echo $name?>" wurde erfolgreich erstellt!</p> <p>Das Event "<?php echo $name?>" wurde erfolgreich erstellt!</p>
<a href="?controller=Event&do=showEvents">Weiter</a> <a href="?controller=Event&do=showEvents">Weiter</a>
</div> </div>
</div>
<?php include dirname(__DIR__).'/footer.phtml'; ?> <?php include dirname(__DIR__).'/footer.phtml'; ?>

View File

@@ -2,11 +2,11 @@
include dirname(__DIR__).'/header.phtml'; include dirname(__DIR__).'/header.phtml';
?> ?>
<div class="inhalt">
<div class="msg"> <div class="msg">
<p>Das Event mit der id"<?php echo $id?>" wurde erfolgreich gelöscht!</p> <p>Das Event mit der id"<?php echo $id?>" wurde erfolgreich gelöscht!</p>
<a href="?controller=Event&do=showEvents">Weiter</a> <a href="?controller=Event&do=showEvents">Weiter</a>
</div> </div>
</div>
<?php include dirname(__DIR__).'/footer.phtml'; ?> <?php include dirname(__DIR__).'/footer.phtml'; ?>

View File

@@ -1,8 +1,8 @@
<?php include dirname(__DIR__) . '/header.phtml'; ?>
<h2>Alle Ausstellungen</h2>
<?php if (!empty($events)): ?> <?php if (!empty($events)): ?>
<div class="inhalt">
<div class="event-container">
<h2>Alle Ausstellungen</h2>
<div class="event-container-inhalt">
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -17,9 +17,9 @@
<?php foreach ($events as $event): ?> <?php foreach ($events as $event): ?>
<tr> <tr>
<td><?php echo htmlspecialchars($event['name']); ?></td> <td><?php echo htmlspecialchars($event['name']); ?></td>
<td><?php echo nl2br(htmlspecialchars($event['beschreibung'])); ?></td> <td><?php echo nl2br(htmlspecialchars($event['description'])); ?></td>
<td><?php echo date('d.m.Y', strtotime($event['datum_von'])); ?></td> <td><?php echo date('d.m.Y', strtotime($event['start_date'])); ?></td>
<td><?php echo date('d.m.Y', strtotime($event['datum_bis'])); ?></td> <td><?php echo date('d.m.Y', strtotime($event['end_date'])); ?></td>
<td><?php echo (int) $event['max_tickets']; ?></td> <td><?php echo (int) $event['max_tickets']; ?></td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
@@ -28,5 +28,6 @@
<?php else: ?> <?php else: ?>
<p>Derzeit sind keine Ausstellungen verfügbar.</p> <p>Derzeit sind keine Ausstellungen verfügbar.</p>
<?php endif; ?> <?php endif; ?>
</div>
<?php include dirname(__DIR__) . '/footer.phtml'; ?> </div>
</div>

View File

@@ -2,11 +2,11 @@
include dirname(__DIR__).'/header.phtml'; include dirname(__DIR__).'/header.phtml';
?> ?>
<div class="inhalt">
<div class="msg"> <div class="msg">
<p>Das Event mit der ID "<?php echo $ausstellungid?>" wurde erfolgreich bearbeitet!</p> <p>Das Event mit der ID "<?php echo $ausstellungid?>" wurde erfolgreich bearbeitet!</p>
<a href="?controller=Event&do=showEvents">Weiter</a> <a href="?controller=Event&do=showEvents">Weiter</a>
</div> </div>
</div>
<?php include dirname(__DIR__).'/footer.phtml'; ?> <?php include dirname(__DIR__).'/footer.phtml'; ?>

View File

@@ -1,5 +1,6 @@
<?php include dirname(__DIR__) . '/header.phtml'; ?> <?php include dirname(__DIR__) . '/header.phtml'; ?>
<div class="inhalt">
<h2>Alle Gutscheine</h2> <h2>Alle Gutscheine</h2>
<a href="?controller=Gutschein&do=createGutscheinForm">Neuen Gutschein anlegen</a> <a href="?controller=Gutschein&do=createGutscheinForm">Neuen Gutschein anlegen</a>
<?php if (!empty($gutscheine)): ?> <?php if (!empty($gutscheine)): ?>
@@ -17,9 +18,9 @@
<?php foreach ($gutscheine as $g): ?> <?php foreach ($gutscheine as $g): ?>
<tr> <tr>
<td><?php echo htmlspecialchars($g['code']); ?></td> <td><?php echo htmlspecialchars($g['code']); ?></td>
<td><?php echo (int)$g['rabatt']; ?></td> <td><?php echo (int)$g['discount']; ?></td>
<td><?php echo (int)$g['eventid']; ?></td> <td><?php echo (int)$g['event_id']; ?></td>
<td><?php echo htmlspecialchars($g['gültigkeit']); ?></td> <td><?php echo htmlspecialchars($g['valid_until']); ?></td>
<td> <td>
<a href="?controller=Gutschein&action=editGutscheinForm&id=<?php echo $g['gutscheinid']; ?>">Bearbeiten</a> | <a href="?controller=Gutschein&action=editGutscheinForm&id=<?php echo $g['gutscheinid']; ?>">Bearbeiten</a> |
<a href="?controller=Gutschein&action=deleteGutschein&id=<?php echo $g['gutscheinid']; ?>" onclick="return confirm('Wirklich löschen?');">Löschen</a> <a href="?controller=Gutschein&action=deleteGutschein&id=<?php echo $g['gutscheinid']; ?>" onclick="return confirm('Wirklich löschen?');">Löschen</a>
@@ -31,5 +32,5 @@
<?php else: ?> <?php else: ?>
<p>Keine Gutscheine vorhanden.</p> <p>Keine Gutscheine vorhanden.</p>
<?php endif; ?> <?php endif; ?>
</div>
<?php include dirname(__DIR__) . '/footer.phtml'; ?> <?php include dirname(__DIR__) . '/footer.phtml'; ?>

View File

@@ -1,8 +1,8 @@
<?php include dirname(__DIR__) . '/header.phtml'; ?>
<h2>Alle News</h2>
<?php if (!empty($news)): ?> <?php if (!empty($news)): ?>
<div class="inhalt">
<div class="event-container">
<h2>Alle Infos</h2>
<div class="event-container-inhalt">
<table> <table>
<thead> <thead>
<tr> <tr>
@@ -15,14 +15,17 @@
<?php foreach ($news as $item): ?> <?php foreach ($news as $item): ?>
<tr> <tr>
<td><?php echo htmlspecialchars($item['name']); ?></td> <td><?php echo htmlspecialchars($item['name']); ?></td>
<td><?php echo nl2br(htmlspecialchars($item['beschreibung'])); ?></td> <td><?php echo nl2br(htmlspecialchars($item['name'])); ?></td>
<td><?php echo date('d.m.Y', strtotime($item['datum'])); ?></td> <td><?php echo nl2br(htmlspecialchars($item['description'])); ?></td>
<td><?php echo date('d.m.Y', strtotime($item['date'])); ?></td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
</tbody> </tbody>
</table> </table>
</div>
<?php else: ?> <?php else: ?>
<p>Derzeit sind keine News verfügbar.</p> <p>Derzeit sind keine News verfügbar.</p>
<?php endif; ?> <?php endif; ?>
</div>
<?php include dirname(__DIR__) . '/footer.phtml'; ?> </div>
</div>

View File

@@ -1,64 +0,0 @@
<div class="inhalt">
<div class="login-container">
<h1>Registrieren</h1>
<form class="form-horizontal" action="#" method="post">
<label>
<input class="input-vorname" type="text" placeholder="Vorname">
</label>
</form>
<form class="form-horizontal" action="#" method="post">
<label>
<input class="input-nachname" type="text" placeholder="Nachname">
</label>
</form>
<form class="form-horizontal" action="#" method="post">
<label>
<input class="input-email" type="text" placeholder="E-Mail">
</label>
</form>
<form class="form-horizontal" action="#" method="post">
<label>
<input class="input-passwort" type="text" placeholder="Passwort">
</label>
</form>
<form class="form-horizontal" action="#" method="post">
<label>
<input class="input-passwort-repeat" type="text" placeholder="Passwort wiederholen">
</label>
</form>
<form class="form-horizontal" action="#" method="post">
<label>
<input class="input-strasse" type="text" placeholder="Straße">
</label>
</form>
<form class="form-horizontal" action="#" method="post">
<label>
<input class="input-hausnr" type="text" placeholder="Hausnr.">
</label>
</form>
<form class="form-horizontal" action="#" method="post">
<label>
<input class="input-postleitzahl" type="text" placeholder="Postleitzahl">
</label>
</form>
<form class="form-horizontal" action="#" method="post">
<label>
<input class="input-ort" type="text" placeholder="Ort">
</label>
</form>
<form class="form-horizontal" action="#" method="post">
<label>
<input class="input-land" type="text" placeholder="Land">
</label>
</form>
<form class="form-horizontal" action="#" method="post">
<label>
<input class="input-tel" type="text" placeholder="Telefonnr.">
</label>
</form>
<button class="button-register">Registrieren</button>
<a class="link-konto-erstellen" href="?controller=Login&do=showLoginPage">Login</a>
</div>
</div>

View File

@@ -1,5 +1,6 @@
<?php include dirname(__DIR__) . '/header.phtml'; ?> <?php include dirname(__DIR__) . '/header.phtml'; ?>
<div class="inhalt">
<h2>Unsere Standorte</h2> <h2>Unsere Standorte</h2>
<?php if (!empty($standorte)): ?> <?php if (!empty($standorte)): ?>
@@ -18,12 +19,12 @@
<tbody> <tbody>
<?php foreach ($standorte as $standort): ?> <?php foreach ($standorte as $standort): ?>
<tr> <tr>
<td><?php echo htmlspecialchars($standort['straße']); ?></td> <td><?php echo htmlspecialchars($standort['street']); ?></td>
<td><?php echo htmlspecialchars($standort['hausnr']); ?></td> <td><?php echo htmlspecialchars($standort['house_number']); ?></td>
<td><?php echo htmlspecialchars($standort['postleitzahl']); ?></td> <td><?php echo htmlspecialchars($standort['postal_code']); ?></td>
<td><?php echo htmlspecialchars($standort['ort']); ?></td> <td><?php echo htmlspecialchars($standort['city']); ?></td>
<td><?php echo htmlspecialchars($standort['land']); ?></td> <td><?php echo htmlspecialchars($standort['country']); ?></td>
<td><?php echo htmlspecialchars($standort['tel']); ?></td> <td><?php echo htmlspecialchars($standort['phone']); ?></td>
<td><?php echo htmlspecialchars($standort['email']); ?></td> <td><?php echo htmlspecialchars($standort['email']); ?></td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
@@ -32,5 +33,5 @@
<?php else: ?> <?php else: ?>
<p>Keine Standorte gefunden.</p> <p>Keine Standorte gefunden.</p>
<?php endif; ?> <?php endif; ?>
</div>
<?php include dirname(__DIR__) . '/footer.phtml'; ?> <?php include dirname(__DIR__) . '/footer.phtml'; ?>

View File

@@ -12,11 +12,15 @@
<div id="logo" ><a class="link-logo" href="#"></a></div> <div id="logo" ><a class="link-logo" href="#"></a></div>
<button id="nav-toggle-btn" aria-label="Menü ein-/ausklappen">&#9660;</button> <button id="nav-toggle-btn" aria-label="Menü ein-/ausklappen">&#9660;</button>
<div class="nav-links"> <div class="nav-links">
<a id="link-tickets" class="links" href="?controller=Tickets&do=showTickets">Tickets</a> <a id="link-tickets" class="links" href="?controller=Event&do=showEvents">Event</a>
<a id="link-infos" class="links" href="?controller=Welcome&do=showWelcome">Infos</a> <a id="link-infos" class="links" href="?controller=News&do=showNews">Infos</a>
<a id="link-profil" class="links" href="?controller=Profile&do=showProfile">Profil</a> <a id="link-profil" class="links" href="?controller=Profile&do=showProfile">Profil</a>
<a id="link-login" class="links" href="?controller=Login&do=showLoginPage">Login</a> <?php if (isset($_SESSION['user'])): ?>
<a id="link-register" class="links" href="?controller=Register&do=showRegisterPage">Register</a> <a id="link-logout" class="links" href="?controller=Auth&do=logout">Logout</a>
<?php else: ?>
<a id="link-login" class="links" href="?controller=Auth&do=showLoginForm">Login</a>
<a id="link-register" class="links" href="?controller=Auth&do=showRegistrationForm">Register</a>
<?php endif; ?>
<div id="profile-picture"></div> <div id="profile-picture"></div>
</div> </div>
</div> </div>

View File

@@ -1,124 +1,112 @@
-- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Erstellungszeit: 24. Nov 2017 um 17:01
-- Server-Version: 10.1.16-MariaDB
-- PHP-Version: 7.0.9
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00"; SET time_zone = "+00:00";
--
-- Datenbank: `blog`
--
-- -------------------------------------------------------- -- --------------------------------------------------------
CREATE TABLE User ( CREATE TABLE user (
userid INT AUTO_INCREMENT PRIMARY KEY, user_id INT AUTO_INCREMENT PRIMARY KEY,
vorname VARCHAR(50), first_name VARCHAR(50),
nachname VARCHAR(50), last_name VARCHAR(50),
strasse VARCHAR(100), street VARCHAR(100),
hausnr VARCHAR(10), house_number VARCHAR(10),
postleitzahl VARCHAR(10), postal_code VARCHAR(10),
ort VARCHAR(50), city VARCHAR(50),
land VARCHAR(50), country VARCHAR(50),
tel VARCHAR(20), phone VARCHAR(20),
email VARCHAR(100) UNIQUE, email VARCHAR(100) UNIQUE,
isAdmin BOOLEAN DEFAULT FALSE, is_admin BOOLEAN DEFAULT FALSE,
valid_until DATETIME NOT NULL DEFAULT '3025-01-01 00:00:00',
password VARCHAR(255) password VARCHAR(255)
); );
CREATE TABLE Standort ( CREATE TABLE location (
standortid INT AUTO_INCREMENT PRIMARY KEY, location_id INT AUTO_INCREMENT PRIMARY KEY,
strasse VARCHAR(100), street VARCHAR(100),
hausnr VARCHAR(10), house_number VARCHAR(10),
plz VARCHAR(10), postal_code VARCHAR(10),
ort VARCHAR(50), city VARCHAR(50),
land VARCHAR(50), country VARCHAR(50),
tel VARCHAR(20), phone VARCHAR(20),
email VARCHAR(100) email VARCHAR(100)
); );
CREATE TABLE Ausstellung ( CREATE TABLE event (
austellungid INT AUTO_INCREMENT PRIMARY KEY, event_id INT AUTO_INCREMENT PRIMARY KEY,
standortid INT, location_id INT,
datum_von DATE, start_date DATE,
datum_bis DATE, end_date DATE,
name VARCHAR(100), name VARCHAR(100),
beschreibung TEXT, description TEXT,
max_tickets INT, max_tickets INT,
FOREIGN KEY (standortid) REFERENCES Standort(standortid) ticket_price DECIMAL(5,2),
FOREIGN KEY (location_id) REFERENCES location(location_id)
); );
CREATE TABLE Ticket ( CREATE TABLE ticket (
ticketid INT AUTO_INCREMENT PRIMARY KEY, ticket_id INT AUTO_INCREMENT PRIMARY KEY,
userid INT, user_id INT,
ausstellungid INT, event_id INT,
kaufdatum DATE, purchase_date DATE,
gueltigkeit DATE, valid_until DATE,
preis DECIMAL(10,2), FOREIGN KEY (user_id) REFERENCES user(user_id),
FOREIGN KEY (userid) REFERENCES User(userid), FOREIGN KEY (event_id) REFERENCES event(event_id)
FOREIGN KEY (ausstellungid) REFERENCES Ausstellung(austellungid)
); );
CREATE TABLE Gutschein ( CREATE TABLE voucher (
gutscheinid INT AUTO_INCREMENT PRIMARY KEY, voucher_id INT AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(50) UNIQUE, code VARCHAR(50) UNIQUE,
rabatt INT CHECK (rabatt BETWEEN 0 AND 100), discount INT CHECK (discount BETWEEN 0 AND 100),
ausstellungid INT, event_id INT,
gueltigkeit DATE, valid_until DATE,
FOREIGN KEY (ausstellungid) REFERENCES Ausstellung(austellungid) FOREIGN KEY (event_id) REFERENCES event(event_id)
); );
CREATE TABLE News ( CREATE TABLE news (
newsid INT AUTO_INCREMENT PRIMARY KEY, news_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100), name VARCHAR(100),
beschreibung TEXT, description TEXT,
datum DATE date DATE
); );
-- User-Daten -- User-Daten (Passwort: passwort123)
INSERT INTO User (vorname, nachname, strasse, hausnr, postleitzahl, ort, land, tel, email, isAdmin, password) INSERT INTO user (first_name, last_name, street, house_number, postal_code, city, country, phone, email, is_admin, password)
VALUES VALUES
('Max', 'Muster', 'Musterstraße', '1', '12345', 'Musterstadt', 'Deutschland', '0123456789', 'max@muster.de', FALSE, 'passwort123'), ('Max', 'Muster', 'Musterstraße', '1', '12345', 'Musterstadt', 'Deutschland', '0123456789', 'max@muster.de', FALSE, '$2y$10$VAj.C0XHPUxV4oXS6b79aumlg5fBMPPx5FPqgkQSIQeBLh0WtYmKy'),
('Anna', 'Beispiel', 'Beispielweg', '5a', '54321', 'Beispielstadt', 'Deutschland', '0987654321', 'anna@beispiel.de', TRUE, 'adminpass'); ('Anna', 'Beispiel', 'Beispielweg', '5a', '54321', 'Beispielstadt', 'Deutschland', '0987654321', 'anna@beispiel.de', TRUE, '$2y$10$cnPBpkvLbdpDxzYvxlQg9uVp5y8ggr2SWL8NAMg9zk.3QnnEl.MGq');
-- Standort-Daten -- Standort-Daten
INSERT INTO Standort (strasse, hausnr, plz, ort, land, tel, email) INSERT INTO location (street, house_number, postal_code, city, country, phone, email)
VALUES VALUES
('Galeriestraße', '10', '10115', 'Berlin', 'Deutschland', '030123456', 'kontakt@galerie-berlin.de'), ('Galeriestraße', '10', '10115', 'Berlin', 'Deutschland', '030123456', 'kontakt@galerie-berlin.de'),
('Kunstallee', '22b', '50667', 'Köln', 'Deutschland', '0221123456', 'info@kunst-koeln.de'); ('Kunstallee', '22b', '50667', 'Köln', 'Deutschland', '0221123456', 'info@kunst-koeln.de');
-- Ausstellung-Daten -- Ausstellung-Daten
INSERT INTO Ausstellung (standortid, datum_von, datum_bis, name, beschreibung, max_tickets) INSERT INTO event (location_id, start_date, end_date, name, description, max_tickets, ticket_price)
VALUES VALUES
(1, '2025-07-01', '2025-08-31', 'Moderne Meisterwerke', 'Eine Sammlung moderner Kunstwerke aus Europa.', 200), (1, '2025-07-01', '2025-08-31', 'Moderne Meisterwerke', 'Eine Sammlung moderner Kunstwerke aus Europa.', 200, 19.99),
(2, '2025-09-10', '2025-10-20', 'Kunst der Antike', 'Ausstellung antiker Skulpturen und Gemälde.', 150); (2, '2025-09-10', '2025-10-20', 'Kunst der Antike', 'Ausstellung antiker Skulpturen und Gemälde.', 150, 39.99);
-- Gutschein-Daten (Spaltennamen korrigiert) -- Gutschein-Daten
INSERT INTO Gutschein (code, rabatt, ausstellungid, gueltigkeit) INSERT INTO voucher (code, discount, event_id, valid_until)
VALUES VALUES
('SOMMER2025', 15, 1, '2025-08-31'), ('SOMMER2025', 15, 1, '2025-08-31'),
('HERBST25', 25, 2, '2025-10-15'); ('HERBST25', 25, 2, '2025-10-15');
-- Ticket-Daten (Spaltennamen korrigiert) -- Ticket-Daten
INSERT INTO Ticket (userid, ausstellungid, kaufdatum, gueltigkeit, preis) INSERT INTO ticket (user_id, event_id, purchase_date, valid_until)
VALUES VALUES
(1, 1, '2025-06-01', '2025-07-15', 12.50), (1, 1, '2025-06-01', '2025-07-15'),
(2, 2, '2025-06-05', '2025-09-15', 10.00); (2, 2, '2025-06-05', '2025-09-15');
-- News-Daten -- News-Daten
INSERT INTO News (name, beschreibung, datum) INSERT INTO news (name, description, date)
VALUES VALUES
('Neuer Standort eröffnet', 'Unsere Galerie in Köln ist jetzt geöffnet!', '2025-06-01'), ('Neuer Standort eröffnet', 'Unsere Galerie in Köln ist jetzt geöffnet!', '2025-06-01'),
('Frühbucher-Rabatt', 'Sichern Sie sich jetzt 15% Rabatt auf unsere Sommerausstellung.', '2025-05-20'); ('Frühbucher-Rabatt', 'Sichern Sie sich jetzt 15% Rabatt auf unsere Sommerausstellung.', '2025-05-20');

View File

@@ -2,48 +2,46 @@
session_start(); session_start();
include 'Views/header.phtml'; include 'Views/header.phtml';
?> ?>
<div id="wrapper"> <?php
<?php spl_autoload_register(function ($className) {
spl_autoload_register(function ($className) { if (substr($className, 0, 5) !== 'Blog\\') {
if (substr($className, 0, 5) !== 'Blog\\') { // not our business
// not our business return;
return;
}
$fileName = __DIR__.'/'.str_replace('\\', DIRECTORY_SEPARATOR, substr($className, 5)).'.php';
if (file_exists($fileName)) {
include $fileName;
}
});
$controllerName = "";
$doMethodName = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$controllerName = isset($_POST['controller']) && $_POST['controller'] ? $_POST['controller'] : "Welcome";
$doMethodName = isset($_POST['do']) && $_POST['do'] ? $_POST['do'] : "showWelcome";
} else {
$controllerName = isset($_GET['controller']) && $_GET['controller'] ? $_GET['controller'] : "Welcome";
$doMethodName = isset($_GET['do']) && $_GET['do'] ? $_GET['do'] : "showWelcome";
} }
$controllerClassName = 'Blog\\Controller\\'.ucfirst($controllerName).'Controller'; $fileName = __DIR__.'/'.str_replace('\\', DIRECTORY_SEPARATOR, substr($className, 5)).'.php';
if (method_exists($controllerClassName, $doMethodName)) { if (file_exists($fileName)) {
$view = new \Blog\Library\View(__DIR__.DIRECTORY_SEPARATOR.'Views' include $fileName;
, ucfirst($controllerName), $doMethodName);
$controller = new $controllerClassName($view);
$controller->$doMethodName();
$view->render();
} else {
new \Blog\Library\ErrorMsg('Page not found: '.$controllerClassName.'::'.$doMethodName);
} }
?> });
</div>
$controllerName = "";
$doMethodName = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$controllerName = isset($_POST['controller']) && $_POST['controller'] ? $_POST['controller'] : "Welcome";
$doMethodName = isset($_POST['do']) && $_POST['do'] ? $_POST['do'] : "showWelcome";
} else {
$controllerName = isset($_GET['controller']) && $_GET['controller'] ? $_GET['controller'] : "Welcome";
$doMethodName = isset($_GET['do']) && $_GET['do'] ? $_GET['do'] : "showWelcome";
}
$controllerClassName = 'Blog\\Controller\\'.ucfirst($controllerName).'Controller';
if (method_exists($controllerClassName, $doMethodName)) {
$view = new \Blog\Library\View(__DIR__.DIRECTORY_SEPARATOR.'Views'
, ucfirst($controllerName), $doMethodName);
$controller = new $controllerClassName($view);
$controller->$doMethodName();
$view->render();
} else {
new \Blog\Library\ErrorMsg('Page not found: '.$controllerClassName.'::'.$doMethodName);
}
?>
<?php <?php
include 'Views/footer.phtml'; include 'Views/footer.phtml';
?> ?>