Schwarzes-Web-Brett/public/create_advert.php

254 lines
8.5 KiB
PHP

<?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>