first commit

This commit is contained in:
Sam Alyx 2025-07-03 09:13:31 +02:00
commit 8804d13f00
8 changed files with 824 additions and 0 deletions

6
config/config.php Normal file
View File

@ -0,0 +1,6 @@
<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'blackboard');

108
public/category.php Normal file
View File

@ -0,0 +1,108 @@
<?php
require_once "../src/adverts.php";
require_once "../src/categories.php";
// Überprüft ob Kategorie ID vorhanden ist
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
echo "Fehler: Kategorie-ID ist erforderlich";
exit;
}
$categoryId = (int)$_GET['id'];
// Get category details
$allCategories = Categories::getAllCategories();
$categoryName = "";
foreach ($allCategories as $category) {
if ($category['id'] == $categoryId) {
$categoryName = $category['name'];
break;
}
}
if (empty($categoryName)) {
echo "Fehler: Kategorie nicht gefunden";
exit;
}
// Anzeigen für diese Kategorie erhalten
$adverts = Adverts::getAdvertsByCategoryId($categoryId);
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Inserate in <?php echo htmlspecialchars($categoryName); ?></title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
h1 {
color: #333;
}
.inserat {
border: 1px solid #ddd;
padding: 15px;
margin-bottom: 15px;
border-radius: 5px;
}
.inserat h2 {
margin-top: 0;
}
.inserat-date {
color: #666;
font-size: 0.8em;
}
.no-inserate {
color: #666;
font-style: italic;
}
.back-link {
margin-top: 20px;
}
</style>
</head>
<body>
<h1>Inserate in Kategorie: <?php echo htmlspecialchars($categoryName); ?></h1>
<div style="margin-bottom: 20px;">
<a href="create_advert.php" style="display: inline-block; padding: 10px 15px; background-color: #4CAF50; color: white; text-decoration: none; border-radius: 5px;">Neues Inserat erstellen</a>
</div>
<?php if (empty($adverts)): ?>
<p class="no-inserate">Keine Inserate in dieser Kategorie gefunden.</p>
<?php else: ?>
<?php foreach ($adverts as $advert): ?>
<div class="inserat">
<h2><?php echo htmlspecialchars($advert['name']); ?></h2>
<p><?php echo htmlspecialchars($advert['description']); ?></p>
<p class="inserat-date">Erstellt am: <?php echo htmlspecialchars($advert['date']); ?></p>
<?php if (isset($advert['user_name']) || isset($advert['user_email']) || isset($advert['user_telephone'])): ?>
<div class="user-contact">
<h3>Kontaktinformationen:</h3>
<?php if (isset($advert['user_name'])): ?>
<p><strong>Name:</strong> <?php echo htmlspecialchars($advert['user_name']); ?></p>
<?php endif; ?>
<?php if (isset($advert['user_email'])): ?>
<p><strong>E-Mail:</strong> <?php echo htmlspecialchars($advert['user_email']); ?></p>
<?php endif; ?>
<?php if (isset($advert['user_telephone'])): ?>
<p><strong>Telefon:</strong> <?php echo htmlspecialchars($advert['user_telephone']); ?></p>
<?php endif; ?>
</div>
<?php endif; ?>
</div>
<?php endforeach; ?>
<?php endif; ?>
<div class="back-link">
<a href="index.php">Zurück zu den Kategorien</a>
</div>
</body>
</html>

253
public/create_advert.php Normal file
View File

@ -0,0 +1,253 @@
<?php
require_once "../src/adverts.php";
require_once "../src/categories.php";
// Variablen Initialisieren
$userName = '';
$email = '';
$telephone = '';
$advertName = '';
$description = '';
$selectedCategories = [];
$errors = [];
$success = false;
// Alle Kategorien für das Formular abrufen
$categories = Categories::getAllCategories();
// Process form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Validate and sanitize input
$userName = trim($_POST['userName'] ?? '');
$email = trim($_POST['email'] ?? '');
$telephone = trim($_POST['telephone'] ?? '');
$advertName = trim($_POST['advertName'] ?? '');
$description = trim($_POST['description'] ?? '');
$selectedCategories = $_POST['categories'] ?? [];
// Formularübermittlung verarbeiten
if (empty($userName)) {
$errors['userName'] = 'Inserentname ist erforderlich';
}
// E-Mail validieren
if (empty($email)) {
$errors['email'] = 'E-Mail ist erforderlich';
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors['email'] = 'Gültige E-Mail ist erforderlich';
}
// Telefonnummer validieren
if (empty($telephone)) {
$errors['telephone'] = 'Telefon ist erforderlich';
}
// Insertatsnamen validieren
if (empty($advertName)) {
$errors['advertName'] = 'Inserat-Name ist erforderlich';
}
// Beschreibung validieren
if (empty($description)) {
$errors['description'] = 'Beschreibung ist erforderlich';
} elseif (strlen($description) > 255) {
$errors['description'] = 'Beschreibung darf maximal 255 Zeichen lang sein';
}
// Kategorien validieren
if (empty($selectedCategories)) {
$errors['categories'] = 'Mindestens eine Kategorie ist erforderlich';
} elseif (count($selectedCategories) > 3) {
$errors['categories'] = 'Maximal 3 Kategorien erlaubt';
}
// Wenn keine Fehler auftreten, Anzeige erstellen
if (empty($errors)) {
$result = Adverts::createAdvert(
$advertName,
$description,
$selectedCategories,
$userName,
$email,
$telephone
);
if ($result) {
$success = true;
// Formularfelder nach erfolgreicher Übermittlung zurücksetzen
$userName = '';
$email = '';
$telephone = '';
$advertName = '';
$description = '';
$selectedCategories = [];
} else {
$errors['general'] = 'Fehler beim Erstellen des Inserats. Bitte versuchen Sie es erneut.';
}
}
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Inserat erstellen - Blackboard</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
h1 {
color: #333;
}
h2 {
color: #4CAF50;
margin-top: 20px;
margin-bottom: 10px;
}
.form-group {
margin-bottom: 15px;
}
label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
input[type="text"],
input[type="email"],
input[type="tel"],
textarea,
select {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
box-sizing: border-box;
}
textarea {
height: 100px;
resize: vertical;
}
select[multiple] {
height: 120px;
}
.error {
color: red;
font-size: 0.9em;
margin-top: 5px;
}
.success {
background-color: #dff0d8;
color: #3c763d;
padding: 10px;
border-radius: 4px;
margin-bottom: 20px;
}
.char-count {
font-size: 0.8em;
color: #666;
margin-top: 5px;
}
.button {
background-color: #4CAF50;
color: white;
padding: 10px 15px;
border: none;
border-radius: 4px;
cursor: pointer;
}
.button:hover {
background-color: #45a049;
}
.back-link {
margin-top: 20px;
}
</style>
</head>
<body>
<h1>Neues Inserat erstellen</h1>
<?php if ($success): ?>
<div class="success">
Inserat erfolgreich erstellt!
</div>
<?php endif; ?>
<?php if (isset($errors['general'])): ?>
<div class="error"><?php echo htmlspecialchars($errors['general']); ?></div>
<?php endif; ?>
<form method="post" action="">
<h2>Inserenten-Informationen</h2>
<div style="border: 1px solid #ddd; padding: 15px; margin-bottom: 20px; border-radius: 5px;">
<div class="form-group">
<label for="userName">Name:</label>
<input type="text" id="userName" name="userName" value="<?php echo htmlspecialchars($userName); ?>">
<?php if (isset($errors['userName'])): ?>
<div class="error"><?php echo htmlspecialchars($errors['userName']); ?></div>
<?php endif; ?>
</div>
<div class="form-group">
<label for="email">E-Mail:</label>
<input type="email" id="email" name="email" value="<?php echo htmlspecialchars($email); ?>">
<?php if (isset($errors['email'])): ?>
<div class="error"><?php echo htmlspecialchars($errors['email']); ?></div>
<?php endif; ?>
</div>
<div class="form-group">
<label for="telephone">Telefon:</label>
<input type="tel" id="telephone" name="telephone" value="<?php echo htmlspecialchars($telephone); ?>">
<?php if (isset($errors['telephone'])): ?>
<div class="error"><?php echo htmlspecialchars($errors['telephone']); ?></div>
<?php endif; ?>
</div>
</div>
<h2>Inserat-Informationen</h2>
<div style="border: 1px solid #ddd; padding: 15px; margin-bottom: 20px; border-radius: 5px;">
<div class="form-group">
<label for="advertName">Name:</label>
<input type="text" id="advertName" name="advertName" value="<?php echo htmlspecialchars($advertName); ?>">
<?php if (isset($errors['advertName'])): ?>
<div class="error"><?php echo htmlspecialchars($errors['advertName']); ?></div>
<?php endif; ?>
</div>
<div class="form-group">
<label for="description">Beschreibung (maximal 255 Zeichen):</label>
<textarea id="description" name="description" maxlength="255"><?php echo htmlspecialchars($description); ?></textarea>
<?php if (isset($errors['description'])): ?>
<div class="error"><?php echo htmlspecialchars($errors['description']); ?></div>
<?php endif; ?>
</div>
<div class="form-group">
<label for="categories">Kategorien (wählen Sie bis zu 3):</label>
<select multiple id="categories" name="categories[]">
<?php foreach ($categories as $category): ?>
<option value="<?php echo $category['id']; ?>"
<?php echo in_array($category['id'], $selectedCategories) ? 'selected' : ''; ?>>
<?php echo htmlspecialchars($category['name']); ?>
</option>
<?php endforeach; ?>
</select>
<?php if (isset($errors['categories'])): ?>
<div class="error"><?php echo htmlspecialchars($errors['categories']); ?></div>
<?php endif; ?>
</div>
</div>
<button type="submit" class="button">Inserat erstellen</button>
</form>
<div class="back-link">
<a href="index.php">Zurück zu den Kategorien</a>
</div>
</body>
</html>

136
public/index.php Normal file
View File

@ -0,0 +1,136 @@
<?php
require_once "../src/categories.php";
require_once "../src/adverts.php";
// Hole alle Kategorien und Inserate
$categories = Categories::getAllCategories();
$adverts = Adverts::getAllAdverts();
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Schwarzes Brett</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
h1, h2 {
color: #333;
}
ul {
list-style-type: none;
padding: 0;
}
li {
margin-bottom: 10px;
}
.category-link {
display: block;
padding: 10px 15px;
background-color: #f5f5f5;
border-radius: 5px;
text-decoration: none;
color: #333;
transition: background-color 0.2s;
}
.category-link:hover {
background-color: #e0e0e0;
}
.no-categories, .no-inserate {
color: #666;
font-style: italic;
}
.inserat {
border: 1px solid #ddd;
padding: 15px;
margin-bottom: 15px;
border-radius: 5px;
}
.inserat h2 {
margin-top: 0;
}
.inserat-date {
color: #666;
font-size: 0.8em;
}
.filter-form {
margin: 20px 0;
padding: 15px;
background-color: #f5f5f5;
border-radius: 5px;
}
.filter-form select {
padding: 8px;
border-radius: 4px;
border: 1px solid #ddd;
margin-right: 10px;
}
.filter-form button {
padding: 8px 15px;
background-color: #4CAF50;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
.filter-form button:hover {
background-color: #45a049;
}
</style>
</head>
<body>
<h1>Schwarzes Brett</h1>
<div style="margin-bottom: 20px;">
<a href="create_advert.php" style="display: inline-block; padding: 10px 15px; background-color: #4CAF50; color: white; text-decoration: none; border-radius: 5px;">Neues Inserat erstellen</a>
</div>
<h2>Kategorien</h2>
<?php if (empty($categories)): ?>
<p class="no-categories">Keine Kategorien gefunden.</p>
<?php else: ?>
<ul>
<?php foreach ($categories as $category): ?>
<li>
<a class="category-link" href="category.php?id=<?php echo $category['id']; ?>">
<?php echo htmlspecialchars($category['name']); ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<h2>Aktuelle Inserate</h2>
<?php if (empty($adverts)): ?>
<p class="no-inserate">Keine Inserate gefunden.</p>
<?php else: ?>
<?php foreach ($adverts as $advert): ?>
<div class="inserat">
<h2><?php echo htmlspecialchars($advert['name']); ?></h2>
<p><?php echo htmlspecialchars($advert['description']); ?></p>
<p class="inserat-date">Erstellt am: <?php echo htmlspecialchars($advert['date']); ?></p>
<?php if (isset($advert['user_name']) || isset($advert['user_email']) || isset($advert['user_telephone'])): ?>
<div class="user-contact">
<h3>Kontaktinformationen:</h3>
<?php if (isset($advert['user_name'])): ?>
<p><strong>Name:</strong> <?php echo htmlspecialchars($advert['user_name']); ?></p>
<?php endif; ?>
<?php if (isset($advert['user_email'])): ?>
<p><strong>E-Mail:</strong> <?php echo htmlspecialchars($advert['user_email']); ?></p>
<?php endif; ?>
<?php if (isset($advert['user_telephone'])): ?>
<p><strong>Telefon:</strong> <?php echo htmlspecialchars($advert['user_telephone']); ?></p>
<?php endif; ?>
</div>
<?php endif; ?>
</div>
<?php endforeach; ?>
<?php endif; ?>
</body>
</html>

116
src/adverts.php Normal file
View File

@ -0,0 +1,116 @@
<?php
require_once "database.php";
require_once "users.php";
// Eine einfache Klasse zur Verwaltung von Anzeigen
// Diese Klasse bietet statische Methoden zum Abrufen und Erstellen von Anzeigen in der Datenbank.
class Adverts {
// Holt alle Anzeigen für eine bestimmte Kategorie
// $categoryId: Die ID der Kategorie
// Gibt ein Array von Anzeigen zurück, die zur angegebenen Kategorie gehören
public static function getAdvertsByCategoryId(int $categoryId): array {
$db = new Database();
$sql = "SELECT a.id, a.name, a.description, a.date, a.user_id
FROM advert a
JOIN advert_category ac ON a.id = ac.advert_id
WHERE ac.category_id = ?
ORDER BY a.date DESC";
$result = $db->query($sql, [$categoryId]);
$adverts = $db->fetchAll($result);
// Füge Benutzerinformationen zu jeder Anzeige hinzu
foreach ($adverts as &$advert) {
if (isset($advert['user_id'])) {
$user = Users::getUserById($advert['user_id']);
if ($user) {
$advert['user_name'] = $user['name'];
$advert['user_email'] = $user['email'];
$advert['user_telephone'] = $user['telephone'];
}
}
}
return $adverts;
}
// Holt alle Anzeigen sortiert nach Erstellungsdatum
// Gibt ein Array aller Anzeigen zurück
public static function getAllAdverts(): array {
$db = new Database();
$sql = "SELECT id, name, description, date, user_id
FROM advert
ORDER BY date DESC";
$result = $db->query($sql);
$adverts = $db->fetchAll($result);
// Füge Benutzerinformationen zu jeder Anzeige hinzu
foreach ($adverts as &$advert) {
if (isset($advert['user_id'])) {
$user = Users::getUserById($advert['user_id']);
if ($user) {
$advert['user_name'] = $user['name'];
$advert['user_email'] = $user['email'];
$advert['user_telephone'] = $user['telephone'];
}
}
}
return $adverts;
}
// Erstellt eine neue Anzeige in der Datenbank
// Diese Methode erstellt eine neue Anzeige und verknüpft sie mit einem Benutzer und Kategorien.
// Die Benutzerverwaltung wird von der Users-Klasse übernommen.
//
// $name: Der Name der Anzeige
// $description: Die Beschreibung der Anzeige
// $categoryIds: Array von Kategorie-IDs, die mit der Anzeige verknüpft werden sollen
// $userName: Der Name des Benutzers
// $userEmail: Die E-Mail des Benutzers
// $userTelephone: Die Telefonnummer des Benutzers
// Gibt die ID der erstellten Anzeige zurück oder false bei einem Fehler
public static function createAdvert(
string $name,
string $description,
array $categoryIds,
string $userName,
string $userEmail,
string $userTelephone
): int|false {
$db = new Database();
try {
// Prüfe, ob Benutzer mit der angegebenen E-Mail existiert
$userId = Users::getUserIdByEmail($userEmail);
if ($userId === null) {
// Benutzer existiert nicht, erstelle einen neuen Benutzer
$userId = Users::createUser($userName, $userEmail, $userTelephone);
}
// Erstelle die Anzeige
$sql = "INSERT INTO advert (name, description, date, user_id) VALUES (?, ?, NOW(), ?)";
$db->query($sql, [$name, $description, $userId]);
// Hole die ID der neu erstellten Anzeige
$sql = "SELECT MAX(id) as id FROM advert WHERE name = ? AND user_id = ?";
$result = $db->query($sql, [$name, $userId]);
$advert = $db->fetchOne($result);
$advertId = $advert['id'];
// Verknüpfe die Anzeige mit Kategorien
foreach ($categoryIds as $categoryId) {
$sql = "INSERT INTO advert_category (advert_id, category_id) VALUES (?, ?)";
$db->query($sql, [$advertId, $categoryId]);
}
return $advertId;
} catch (Exception $e) {
// Fehler protokollieren oder nach Bedarf behandeln
return false;
}
}
}

18
src/categories.php Normal file
View File

@ -0,0 +1,18 @@
<?php
require_once "database.php";
// Eine einfache Klasse zur Verwaltung von Kategorien
// Diese Klasse bietet statische Methoden zum Abrufen von Kategorien
// aus der Datenbank.
class Categories {
// Holt alle Kategorien aus der Datenbank
// Gibt ein Array von Kategorien mit ID und Namen zurück
public static function getAllCategories(): array {
$db = new Database();
$sql = "SELECT id, name FROM category ORDER BY id";
$result = $db->query($sql);
return $db->fetchAll($result);
}
}

142
src/database.php Normal file
View File

@ -0,0 +1,142 @@
<?php
require "../config/config.php";
// Eine minimale Wrapper-Klasse für mysqli-Funktionen
// Diese Klasse bietet eine einfache Schnittstelle für Datenbankoperationen
// mit mysqli und verwendet nur Prepared Statements. Sie enthält auch
// Methoden zum Abrufen von Abfrageergebnissen.
class Database {
private mysqli $connection;
// Konstruktor - stellt eine Datenbankverbindung her
// Wirft eine Exception, wenn die Verbindung fehlschlägt
public function __construct() {
// Verbindung mit Konstanten aus der Konfiguration erstellen
$this->connection = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
// Verbindung überprüfen
if ($this->connection->connect_error) {
throw new Exception("Connection failed: " . $this->connection->connect_error);
}
$this->initialize();
}
// Führt eine Abfrage mit Prepared Statements aus
// $sql: Die auszuführende SQL-Abfrage
// $params: Parameter für das Prepared Statement
// Gibt ein mysqli_result-Objekt oder einen booleschen Wert zurück
// Wirft eine Exception, wenn die Abfrage fehlschlägt
public function query(string $sql, array $params = []): mysqli_result|bool {
// Prepared Statement mit Parametern
$stmt = $this->connection->prepare($sql);
if ($stmt === false) {
throw new Exception("Prepare failed: " . $this->connection->error);
}
// Bestimme den Typen-String für bind_param
$types = '';
foreach ($params as $param) {
if (is_int($param)) {
$types .= 'i';
} elseif (is_float($param)) {
$types .= 'd';
} elseif (is_string($param)) {
$types .= 's';
} else {
$types .= 'b';
}
}
// Parameter binden
if (!empty($params)) {
$stmt->bind_param($types, ...$params);
}
// Statement ausführen
if (!$stmt->execute()) {
throw new Exception("Execute failed: " . $stmt->error);
}
$result = $stmt->get_result();
$stmt->close();
return $result ?: true;
}
// Holt alle Zeilen aus einem Ergebnissatz als assoziatives Array
// $result: Der Ergebnissatz
// Gibt ein Array von Zeilen zurück
public function fetchAll(mysqli_result $result): array {
return $result->fetch_all(MYSQLI_ASSOC);
}
// Holt eine einzelne Zeile aus einem Ergebnissatz als assoziatives Array
// $result: Der Ergebnissatz
// Gibt die Zeile als assoziatives Array zurück oder null, wenn keine Zeilen vorhanden sind
public function fetchOne(mysqli_result $result): ?array {
$row = $result->fetch_assoc();
return $row ?: null;
}
// Initialisiert das Datenbankschema
//
// Erstellt die notwendigen Tabellen, falls sie nicht existieren:
// - user: id, name, email, telephone
// - category: id, name
// - advert: id, name, description, date, user_id
// - advert_category: advert_id, category_id (Viele-zu-viele-Beziehung)
//
// Gibt true zurück, wenn die Initialisierung erfolgreich war
// Wirft eine Exception, wenn die Initialisierung fehlschlägt
public function initialize(): bool {
try {
// Erstelle Benutzer-Tabelle, falls sie nicht existiert
$this->query("
CREATE TABLE IF NOT EXISTS user (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
telephone VARCHAR(50) NOT NULL
)
");
// Erstelle Kategorie-Tabelle, falls sie nicht existiert
$this->query("
CREATE TABLE IF NOT EXISTS category (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL
)
");
// Erstelle Anzeigen-Tabelle, falls sie nicht existiert
$this->query("
CREATE TABLE IF NOT EXISTS advert (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description VARCHAR(255) NOT NULL,
date DATETIME NOT NULL,
user_id INT NOT NULL,
FOREIGN KEY (user_id) REFERENCES user(id)
)
");
// Erstelle Anzeigen-Kategorie-Tabelle, falls sie nicht existiert (Viele-zu-viele-Beziehung)
$this->query("
CREATE TABLE IF NOT EXISTS advert_category (
advert_id INT NOT NULL,
category_id INT NOT NULL,
PRIMARY KEY (advert_id, category_id),
FOREIGN KEY (advert_id) REFERENCES advert(id),
FOREIGN KEY (category_id) REFERENCES category(id)
)
");
return true;
} catch (Exception $e) {
throw new Exception("Schema initialization failed: " . $e->getMessage());
}
}
}

45
src/users.php Normal file
View File

@ -0,0 +1,45 @@
<?php
require_once "database.php";
// Eine einfache Klasse zur Verwaltung von Benutzern
// Diese Klasse bietet statische Methoden zur Überprüfung vorhandener Benutzer
// und zum Erstellen neuer Benutzer in der Datenbank.
class Users {
// Überprüft, ob ein Benutzer mit der angegebenen E-Mail existiert und gibt dessen ID zurück
// $email: Die E-Mail des zu überprüfenden Benutzers
// Gibt die Benutzer-ID zurück, wenn gefunden, sonst null
public static function getUserIdByEmail(string $email): ?int {
$db = new Database();
$sql = "SELECT id FROM user WHERE email = ?";
$result = $db->query($sql, [$email]);
$user = $db->fetchOne($result);
return $user ? (int)$user['id'] : null;
}
// Erstellt einen neuen Benutzer in der Datenbank
// $name: Der Name des Benutzers
// $email: Die E-Mail des Benutzers
// $telephone: Die Telefonnummer des Benutzers
// Gibt die ID des neu erstellten Benutzers zurück
public static function createUser(string $name, string $email, string $telephone): int {
$db = new Database();
$sql = "INSERT INTO user (name, email, telephone) VALUES (?, ?, ?)";
$db->query($sql, [$name, $email, $telephone]);
// Hole die ID des neu erstellten Benutzers
return self::getUserIdByEmail($email);
}
// Holt Benutzerinformationen anhand der Benutzer-ID
// $userId: Die ID des Benutzers
// Gibt ein Array mit Benutzerinformationen zurück oder null, wenn nicht gefunden
public static function getUserById(int $userId): ?array {
$db = new Database();
$sql = "SELECT id, name, email, telephone FROM user WHERE id = ?";
$result = $db->query($sql, [$userId]);
return $db->fetchOne($result);
}
}