Karte hinzufügen final, Funktionalität begonnen

This commit is contained in:
p3t3rp1Lz 2026-04-06 17:25:54 +02:00
parent 012c5eb36a
commit ede308381b
3 changed files with 135 additions and 11 deletions

View File

@ -1,8 +1,18 @@
<?php
require_once __DIR__ . '/includes/db_connect.php';
$system = getenv('POSTGRES_SYSTEM') ?? 'test';
session_start();
$error = $_SESSION['error'] ?? '';
$success = $_SESSION['success'] ?? '';
$old = $_SESSION['old'] ?? [];
unset($_SESSION['error']);
unset($_SESSION['success']);
unset($_SESSION['old']);
?>
<!DOCTYPE html>
<html>
@ -14,46 +24,93 @@
<h2 class="seitentitel">pyolingo</h2>
</div>
<div class="inhalt">
<form id="form_hinzufuegenkarte" action="hinzufuegenKarte" methode="post">
<form id="form_hinzufuegenkarte" action="forms/hinzuefuegenKarte.php" method="post">
<div class="hinzufuegenKarteElemente">
<label class="kategorie">
<input class="kategorie" type="radio" name="kategorie" value="substantive">Substantive
<input class="kategorie" type="radio" name="kategorie" value="substantive"
<? if( ($old['kategorie'] ?? '') == 'substantive'
|| ($old['kategorie'] ?? '') == '') echo 'checked' ?>>
Substantive
</label>
<label class="kategorie">
<input class="kategorie" type="radio" name="kategorie" value="adjektive">Adjektive
<input class="kategorie" type="radio" name="kategorie" value="adjektive"
<? if( ($old['kategorie'] ?? '') == 'adjektive') echo 'checked' ?>>
Adjektive
</label>
<label class="kategorie">
<input class="kategorie" type="radio" name="kategorie" value="allgemein" checked>Allgemein
<input class="kategorie" type="radio" name="kategorie" value="allgemein"
<? if( ($old['kategorie'] ?? '') == 'allgemein') echo 'checked' ?>>
Allgemein
</label>
<label class="kategorie">
<input class="kategorie" type="radio" name="kategorie" value="eigennamen">Eigennamen
<input class="kategorie" type="radio" name="kategorie" value="eigennamen"
<? if( ($old['kategorie'] ?? '') == 'eigennamen') echo 'checked' ?>>
Eigennamen
</label>
</div>
<div id="div_deutsch">
<p class="kategorie" id="p_deutsch">deutsch:</p>
<input class="kategorie" id="input_deutsch" type="text" name="deutsch" value="">
<input class="kategorie"
id="input_deutsch"
type="text"
name="deutsch"
value="<?= htmlspecialchars($old['deutsch'] ?? '') ?>"
required>
</div>
<?php for($i = 0; $i < 7; $i++) { ?>
<div>
<div id="div_italienisch_text">
<input class="kategorie" id="input_italienisch" type="text" name="italienisch_<?= $i ?>" value="">
<input class="kategorie"
id="input_italienisch"
type="text"
name="italienisch_<?= $i ?>"
value="<?= htmlspecialchars(($old['italienisch_' . $i] ?? '')) ?>"
<? if($i == 0) echo 'required' ?>>
</div>
<div id="div_italienisch_radio">
<label class="kategorie" id="label_italienisch_schwarz">
<input class="kategorie" type="radio" name="farbe_<?= $i ?>" checked value="black">Standard
<input class="kategorie"
type="radio"
name="farbe_<?= $i ?>"
value="black"
<? if( ($old['farbe_' . $i] ?? '') == 'black' || ($old['farbe_' . $i] ?? '') == '') echo 'checked' ?>>
Standard
</label>
<label class="kategorie" id="label_italienisch_blau">
<input class="kategorie" type="radio" name="farbe_<?= $i ?>" value="blue">Blau
<input class="kategorie"
type="radio"
name="farbe_<?= $i ?>"
value="blue"
<? if( ($old['farbe_' . $i] ?? '') == 'blue') echo 'checked' ?>>
Blau
</label>
<label class="kategorie" id="label_italienisch_rot">
<input class="kategorie" type="radio" name="farbe_<?= $i ?>" value="red">Rot
<input class="kategorie"
type="radio"
name="farbe_<?= $i ?>"
value="red"
<? if( ($old['farbe_' . $i] ?? '') == 'red') echo 'checked' ?>>
Rot
</label>
<label class="kategorie" id="label_italienisch_gruen">
<input class="kategorie" type="radio" name="farbe_<?= $i ?>" value="green">Grün
<input class="kategorie"
type="radio"
name="farbe_<?= $i ?>"
value="green"
<? if( ($old['farbe_' . $i] ?? '') == 'green') echo 'checked' ?>>
Grün
</label>
</div>
</div>
<?php }; ?>
<div id="div_speichern">
<?php if ($error): ?>
<p class=fehlermeldung><?= htmlspecialchars($error) ?></p>
<?php endif; ?>
<button class="button-ellipsoid" id="start">
speichern
</button>
</div>
</form>
</div>
<div class="menue">

View File

@ -0,0 +1,55 @@
<?php
require_once __DIR__ . '/../includes/db_connect.php';
session_start();
$_SESSION['old'] = $_POST;
$return = $_POST['return'] ?? 'allgemein';
$kategorie = $_POST['kategorie'] ?? 'substantive';
$deutsch = trim($_POST['deutsch'] ?? '');
for($i = 0; $i < 7; $i++) {
$italienisch[$i] = trim($_POST['italienisch_' . $i] ?? '');
$farbe[$i] = $_POST['farbe_' . $i] ?? 'black';
}
if($deutsch === '') {
$_SESSION['error'] = "Das deutsche Wort darf nicht leer sein!";
header("Location: ../$return.php");
exit;
}
if($italienisch[0] === '') {
$_SESSION['error'] = "Das erste italienische Wort darf nicht leer sein!";
header("Location: ../$return.php");
exit;
}
insertDB($pdo, $kategorie, $deutsch, $italienisch, $farbe);
//unset($_SESSION['old']);
function insertDB(PDO $pdo, string $kategorie, string $deutsch, array $italienisch, array $farbe) {
try {
$pdo->beginTransaction();
$stmt = $pdo->prepare("SELECT id
FROM kategorie
WHERE LOWER(name) = LOWER(:kategorie);");
$stmt->execute(['kategorie' => $kategorie]);
$kategorie_id = $stmt->fetch(PDO::FETCH_ASSOC);
$pdo->commit();
return 0;
} catch(Exception $e) {
$pdo->rollBack();
echo "Fehler: " . $e->getMessage();
return 1;
}
}
$_SESSION['success'] = "neues Wort gespeichert";
header("Location: ../$return.php");
exit;
?>

View File

@ -215,4 +215,16 @@ a:visited {
justify-content: space-between;
width: 65%;
margin-top: 10px;
}
#div_speichern {
margin-top: 25px;
display: flex;
flex-direction: column;
align-items: center;
}
.fehlermeldung {
color: red;
font-size: 36px;
}