This commit is contained in:
Illia Hromovoi 2025-06-25 10:02:02 +02:00
commit 1204c89ca3
7 changed files with 119 additions and 67 deletions

66
CSS/Element/form.css Normal file
View File

@ -0,0 +1,66 @@
main a{
color: var(--brand-white)
}
.form-flex {
display: flex;
flex-direction: column;
row-gap: 8px;
align-items: center;
width: 100%;
}
form label {
width: fit-content;
}
form input {
border: var(--border-primary);
height: var(--h-md);
padding-left: 8px;
padding-right: 8px;
}
.input {
display: flex;
flex-direction: column;
row-gap: 2px;
align-items: start;
width: 100%;
}
.input-short {
max-width: 240px;
}
.form-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20px;
width: 100%;
max-width: 600px;
margin: auto;
}
.form-grid label {
display: flex;
flex-direction: column;
font-weight: bold;
}
.form-grid textarea {
min-height: 100px;
width: 100%;
}
.form-grid input:last-child, div:nth-last-child(4) {
grid-column: 1 / -1;
column-span: 2;
}
input, textarea {
padding: 8px;
font-size: 1rem;
margin-top: 5px;
}

View File

@ -2,6 +2,7 @@
@import url(Block/header.css); @import url(Block/header.css);
@import url(Block/footer.css); @import url(Block/footer.css);
@import url(Element/logo.css); @import url(Element/logo.css);
@import url(Element/form.css);
@import url(Element/button.css); @import url(Element/button.css);
*, *:before, *:after { *, *:before, *:after {
@ -11,8 +12,6 @@
font-family: var(--font-family-main); font-family: var(--font-family-main);
} }
body { body {
background-color: var(--brand-background); background-color: var(--brand-background);
color: #666; color: #666;
@ -30,8 +29,6 @@ h1 span {
font-size: 40px; font-size: 40px;
} }
h2 { h2 {
color: orange; color: orange;
} }
@ -43,8 +40,7 @@ main {
#wrapper { #wrapper {
max-width: 90%; max-width: 90%;
margin: 0 auto; margin: 0 auto
color: white;
} }
.msg { .msg {
@ -79,44 +75,6 @@ main {
font-weight: bold; font-weight: bold;
} }
/*** Formulare ***/
form {
width: 440px;
margin: auto;
}
label {
width: 120px;
display: inline-block;
margin: 5px 15px 10px 0;
vertical-align: top;
text-align: right;
}
label.errorMsg {
width: 420px;
display: inline-block;
margin: 0 5px 15px 0;
vertical-align: top;
text-align: right;
color: orange;
}
input[type="submit"] {
width: 100px;
margin-left: 330px;
}
form textarea {
width: 300px;
height: 150px;
margin-bottom: 10px;
}
form select {
width: 300px;
}
/*** Loesung Workshop-Seite ***/ /*** Loesung Workshop-Seite ***/
.textContent { .textContent {
@ -152,7 +110,4 @@ form select {
opacity: .75; opacity: .75;
text-decoration: none; text-decoration: none;
} }
/*TODO Muss in die form.css übernommen werden*/
main a{
color: var(--brand-white);
}

View File

@ -2,10 +2,12 @@
/* Colors*/ /* Colors*/
--brand-primary: #EB8202; --brand-primary: #EB8202;
--brand-background: #201911; --brand-background: #201911;
--bg-muted: #5B5B5B;
--brand-white: #ffffff; --brand-white: #ffffff;
--fullblock: darkblue; --fullblock: darkblue;
--input-placeholder: #998E82; --input-placeholder: #998E82;
/*Fonts*/ /*Fonts*/
--font-family-main: "Inter", sans-serif; --font-family-main: "Inter", sans-serif;
--font-family-headline: "Source Serif 4", serif; --font-family-headline: "Source Serif 4", serif;
@ -19,4 +21,6 @@
/*Font-Weight*/ /*Font-Weight*/
--font-weight-semibold: 600; --font-weight-semibold: 600;
--h-md: 48px;
--border-primary: 1px solid #998E82;
} }

View File

@ -10,7 +10,7 @@ class AdminController
private $db; private $db;
private $validData = array(); private $validData = array();
private $errors = array(); private $errors = array();
private $labels = array("name" => "Name*", "preis" => "Preis*", "dauer" => "Dauer*", "rabatt" => "Rabatt", "kategorie" => "Kategorie", "beschreibung" => "Beschreibung"); private $labels = array("name" => "Name*", "preis" => "Preis*", "dauer" => "Dauer* (Stunden)", "rabatt" => "Rabatt", "kategorie" => "Kategorie", "beschreibung" => "Beschreibung");
public function __construct($view) public function __construct($view)
@ -30,7 +30,7 @@ class AdminController
public function showConfirmation() public function showConfirmation()
{ {
echo "<p>Erfolgreich erstellt!</p>";
} }
public function validateForm(){ public function validateForm(){
@ -41,10 +41,9 @@ class AdminController
$this->validData[$index] = $_POST[$index]; $this->validData[$index] = $_POST[$index];
} }
} }
if (count($this->errors) > 0) { if (count($this->errors) > 0) {
$this->view->setDoMethodName("showContactForm"); $this->view->setDoMethodName("showForm");
$this->showContactForm(); $this->showForm();
} else { } else {
if ($this->db->writeContactData($this->validData)) { if ($this->db->writeContactData($this->validData)) {
$this->view->setDoMethodName("showConfirmation"); $this->view->setDoMethodName("showConfirmation");

View File

@ -6,7 +6,30 @@ use PDOException;
class AdminModel extends Database class AdminModel extends Database
{ {
public function writeContactData($values) public function writeNewCourse($values)
{ {
$guid = $this->createUUID();
$sql = "INSERT INTO kurs (`id`, `name`, `preis`, `dauer`, `rabatt`, `kategorie`, `beschreibung`) VALUES (
:guid, :name, :preis, :dauer, :rabatt, :kategorie, :beschreibung);";
$pdo = $this->linkDB();
try {
$sth = $pdo->prepare($sql);
$sth->execute(array(":guid" => $guid,
":name" => $values["name"],
":preis" => $values["preis"],
":dauer" => $values["dauer"],
":rabatt" => $values["rabatt"],
":kategorie" => $values["kategorie"],
":beschreibung" => $values["beschreibung"],
));
} catch (PDOException $e) {
new \Blog\Library\ErrorMsg("Fehler beim Schreiben der Daten.", $e);
die;
}
return true;
} }
} }

View File

@ -5,26 +5,30 @@ include dirname(__DIR__).'/header.phtml';
<h2>Neuer Kurs</h2> <h2>Neuer Kurs</h2>
<form method="post"> <form method="post" class="form-grid">
<?php foreach ($labels as $index => $value) { <?php
echo '<label for="' . $index . '">' . $value . '</label>'; $index = 0;
if ($index == "beschreibung") {
echo "<textarea id=\"$index\" name=\"$index\" >"; foreach ($labels as $key => $value) {
if (isset($validData[$index])) { echo $validData[$index]; } echo '<div class="input"><label for="' . $key . '">' . $value . '</label>';
if ($key == "beschreibung") {
echo "<textarea id=\"$key\" name=\"$key\" >";
if (isset($validData[$key])) { echo $validData[$key]; }
echo "</textarea><br>"; echo "</textarea><br>";
} else { } else {
echo '<input type="text" name="' . $index . '" value="' . (isset($validData[$index]) ? $validData[$index] : '') . '"><br>'; echo '<input class="input" type="text" name="' . $key . '" value="' . (isset($validData[$key]) ? $validData[$key] : '') . '"><br>';
} }
if (isset($errors[$index])) { if (isset($errors[$key])) {
echo '<label class="errorMsg">' . $errors[$index] . '</label><br>'; echo '<label class="errorMsg">' . $errors[$key] . '</label><br>';
} }
echo '</div>';
$index++;
} }
?> ?>
<input type="hidden" name="controller" value="contact"> <input type="hidden" name="controller" value="admin">
<input type="hidden" name="do" value="validateForm"> <input type="hidden" name="do" value="showForm">
<input type="submit" name="submit" value="Absenden"></form> <input type="submit" name="submit" value="Absenden"></form>
<?php include dirname(__DIR__).'/footer.phtml'; ?> <?php include dirname(__DIR__).'/footer.phtml'; ?>

View File

@ -31,6 +31,7 @@ include dirname(__DIR__).'/header.phtml';
<input type="hidden" name="controller" value="contact"> <input type="hidden" name="controller" value="contact">
<input type="hidden" name="do" value="validateForm"> <input type="hidden" name="do" value="validateForm">
<input type="submit" name="submit" value="Absenden"></form> <input type="submit" name="submit" value="Absenden">
</form>
<?php include dirname(__DIR__).'/footer.phtml'; ?> <?php include dirname(__DIR__).'/footer.phtml'; ?>