mirror of
https://github.com/janunger/rheinwerk-video-training.git
synced 2026-02-06 07:05:14 +01:00
Initiale Version
This commit is contained in:
14
Kapitel_10/Lektion_4/konventionell/_application.php
Executable file
14
Kapitel_10/Lektion_4/konventionell/_application.php
Executable file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @return PDO
|
||||
*/
|
||||
function holeDatenbankVerbindung()
|
||||
{
|
||||
return new PDO(
|
||||
'mysql:dbname=mediathek;host=localhost',
|
||||
'root',
|
||||
'root',
|
||||
[PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"]
|
||||
);
|
||||
}
|
||||
77
Kapitel_10/Lektion_4/konventionell/cd.php
Executable file
77
Kapitel_10/Lektion_4/konventionell/cd.php
Executable file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/_application.php';
|
||||
|
||||
if (count($_POST) > 0) {
|
||||
$insertStatement = $db->prepare("
|
||||
INSERT INTO lieder (cd_id, track, titel) VALUES (:cd_id, :track, :titel)
|
||||
");
|
||||
$insertStatement->execute([
|
||||
'cd_id' => $_GET['id'],
|
||||
'track' => $_POST['track'],
|
||||
'titel' => $_POST['titel'],
|
||||
]);
|
||||
header('Location: cd.php?id=' . htmlspecialchars($_GET['id']));
|
||||
exit;
|
||||
}
|
||||
|
||||
$db = holeDatenbankVerbindung();
|
||||
$cdStatement = $db->prepare("
|
||||
SELECT
|
||||
c.id,
|
||||
c.name AS cdname,
|
||||
c.erscheinungsjahr,
|
||||
k.name AS kuenstlername
|
||||
FROM cds AS c
|
||||
LEFT JOIN kuenstler AS k ON c.kuenstler_id = k.id
|
||||
WHERE c.id = :cd_id
|
||||
");
|
||||
$cdStatement->execute(['cd_id' => $_GET['id']]);
|
||||
$cd = $cdStatement->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
$liederStatement = $db->prepare("SELECT * FROM lieder WHERE cd_id = :cd_id ORDER BY track ASC");
|
||||
$liederStatement->execute(['cd_id' => $_GET['id']]);
|
||||
$lieder = $liederStatement->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Mediathek</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>
|
||||
<?= htmlspecialchars($cd['cdname']) ?>
|
||||
(<?= htmlspecialchars($cd['kuenstlername']) ?>, <?= htmlspecialchars($cd['erscheinungsjahr']) ?>)
|
||||
</h1>
|
||||
|
||||
<form action="cd.php?id=<?= htmlspecialchars($_GET['id']) ?>" method="post">
|
||||
<table>
|
||||
<tr>
|
||||
<th>Track</th>
|
||||
<th>Titel</th>
|
||||
<th></th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<?php foreach ($lieder as $lied): ?>
|
||||
<tr>
|
||||
<td><?= htmlspecialchars($lied['track']) ?></td>
|
||||
<td><?= htmlspecialchars($lied['titel']) ?></td>
|
||||
<td><a href="lied_bearbeiten.php?id=<?= htmlspecialchars($lied['id']) ?>">Bearbeiten ...</a></td>
|
||||
<td><a href="lied_loeschen.php?id=<?= htmlspecialchars($lied['id']) ?>">Löschen ...</a></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<tr>
|
||||
<td><input type="text" name="track" placeholder="Track"/></td>
|
||||
<td><input type="text" name="titel" placeholder="Titel"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="submit" value="Hinzufügen"/>
|
||||
</form>
|
||||
|
||||
<p><a href="index.php">zur Übersicht</a></p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
46
Kapitel_10/Lektion_4/konventionell/index.php
Executable file
46
Kapitel_10/Lektion_4/konventionell/index.php
Executable file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/_application.php';
|
||||
|
||||
$db = holeDatenbankVerbindung();
|
||||
$statement = $db->query("
|
||||
SELECT
|
||||
c.id,
|
||||
c.name AS cdname,
|
||||
c.erscheinungsjahr,
|
||||
k.name AS kuenstlername
|
||||
FROM cds AS c
|
||||
LEFT JOIN kuenstler AS k ON c.kuenstler_id = k.id
|
||||
");
|
||||
$cds = $statement->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Mediathek</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>Künstler</th>
|
||||
<th>Album</th>
|
||||
<th>Erscheinungsjahr</th>
|
||||
</tr>
|
||||
<?php foreach ($cds as $cd): ?>
|
||||
<tr>
|
||||
<td><?= htmlspecialchars($cd['kuenstlername']) ?></td>
|
||||
<td>
|
||||
<a href="cd.php?id=<?= $cd['id'] ?>">
|
||||
<?= htmlspecialchars($cd['cdname']) ?>
|
||||
</a>
|
||||
</td>
|
||||
<td><?= htmlspecialchars($cd['erscheinungsjahr']) ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
77
Kapitel_10/Lektion_4/konventionell/lied_bearbeiten.php
Executable file
77
Kapitel_10/Lektion_4/konventionell/lied_bearbeiten.php
Executable file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/_application.php';
|
||||
|
||||
$meldungen = [];
|
||||
|
||||
if (!isset($_GET['id'])) {
|
||||
$meldungen[] = 'Bitte geben Sie die ID des Liedes an, das Sie bearbeiten möchten.';
|
||||
}
|
||||
|
||||
$db = holeDatenbankVerbindung();
|
||||
$liedStatement = $db
|
||||
->prepare("
|
||||
SELECT
|
||||
l.track,
|
||||
l.titel,
|
||||
c.id cd_id,
|
||||
c.name cdname,
|
||||
k.name kuenstlername
|
||||
FROM lieder l
|
||||
LEFT JOIN cds c ON l.cd_id = c.id
|
||||
LEFT JOIN kuenstler k ON c.kuenstler_id = k.id
|
||||
WHERE l.id = :lied_id
|
||||
");
|
||||
$liedStatement->execute(['lied_id' => $_GET['id']]);
|
||||
$lied = $liedStatement->fetch(PDO::FETCH_ASSOC);
|
||||
if (!$lied) {
|
||||
$meldungen[] = 'Es konnte kein Lied mit der ID ' . htmlspecialchars($_GET['id']) . ' gefunden werden.';
|
||||
}
|
||||
|
||||
if (isset($_POST['aktion'])) {
|
||||
if ('speichern' === $_POST['aktion']) {
|
||||
$db
|
||||
->prepare("UPDATE lieder SET track = :track, titel = :titel WHERE id = :lied_id")
|
||||
->execute([
|
||||
'track' => $_POST['track'],
|
||||
'titel' => $_POST['titel'],
|
||||
'lied_id' => $_GET['id']
|
||||
]);
|
||||
}
|
||||
header('Location: cd.php?id=' . htmlspecialchars($lied['cd_id']));
|
||||
exit;
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Mediathek</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<?php if (count($meldungen) > 0): ?>
|
||||
<p>Fehler:</p>
|
||||
<ul>
|
||||
<?php foreach ($meldungen as $meldung): ?>
|
||||
<li><?= htmlspecialchars($meldung) ?></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<?php endif; ?>
|
||||
<form action="lied_bearbeiten.php?id=<?= htmlspecialchars($_GET['id']) ?>" method="post">
|
||||
<h1>Lied bearbeiten</h1>
|
||||
<h2>'<?= htmlspecialchars($lied['cdname']) ?>' (<?= htmlspecialchars($lied['kuenstlername']) ?>)</h2>
|
||||
|
||||
<label>Track
|
||||
<input type="text" name="track" value="<?= htmlspecialchars($lied['track']) ?>"/>
|
||||
</label>
|
||||
<label>Titel
|
||||
<input type="text" name="titel" value="<?= htmlspecialchars($lied['titel']) ?>"/>
|
||||
</label>
|
||||
<button type="submit" name="aktion" value="speichern">Speichern</button>
|
||||
<button type="submit" name="aktion" value="abbrechen">Abbrechen</button>
|
||||
</form>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
70
Kapitel_10/Lektion_4/konventionell/lied_loeschen.php
Executable file
70
Kapitel_10/Lektion_4/konventionell/lied_loeschen.php
Executable file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
require __DIR__ . '/_application.php';
|
||||
|
||||
$meldungen = [];
|
||||
|
||||
if (!isset($_GET['id'])) {
|
||||
$meldungen[] = 'Bitte geben Sie die ID des Liedes an, das Sie löschen möchten.';
|
||||
}
|
||||
|
||||
$db = holeDatenbankVerbindung();
|
||||
$liedStatement = $db
|
||||
->prepare("
|
||||
SELECT
|
||||
l.track,
|
||||
l.titel,
|
||||
c.id cd_id,
|
||||
c.name cdname,
|
||||
k.name kuenstlername
|
||||
FROM lieder l
|
||||
LEFT JOIN cds c ON l.cd_id = c.id
|
||||
LEFT JOIN kuenstler k ON c.kuenstler_id = k.id
|
||||
WHERE l.id = :lied_id
|
||||
");
|
||||
$liedStatement->execute(['lied_id' => $_GET['id']]);
|
||||
$lied = $liedStatement->fetch(PDO::FETCH_ASSOC);
|
||||
if (!$lied) {
|
||||
$meldungen[] = 'Es konnte kein Lied mit der ID ' . htmlspecialchars($_GET['id']) . ' gefunden werden.';
|
||||
}
|
||||
|
||||
if (isset($_POST['aktion'])) {
|
||||
if ('loeschen' === $_POST['aktion']) {
|
||||
$db->prepare("DELETE FROM lieder WHERE id = :lied_id")->execute(['lied_id' => $_GET['id']]);
|
||||
}
|
||||
header('Location: cd.php?id=' . htmlspecialchars($lied['cd_id']));
|
||||
exit;
|
||||
}
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Mediathek</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<?php if (count($meldungen) > 0): ?>
|
||||
<p>Fehler:</p>
|
||||
<ul>
|
||||
<?php foreach ($meldungen as $meldung): ?>
|
||||
<li><?= htmlspecialchars($meldung) ?></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<?php else: ?>
|
||||
<form action="lied_loeschen.php?id=<?= htmlspecialchars($_GET['id']) ?>" method="post">
|
||||
<h1>Lied löschen</h1>
|
||||
<h2>'<?= htmlspecialchars($lied['cdname']) ?>' (<?= htmlspecialchars($lied['kuenstlername']) ?>)</h2>
|
||||
|
||||
<p>
|
||||
Möchten Sie Track <?= $lied['track'] ?> '<?= htmlspecialchars($lied['titel']) ?>' löschen?<br>
|
||||
Diese Aktion kann nicht rückgängig gemacht werden.
|
||||
</p>
|
||||
<button type="submit" name="aktion" value="loeschen">Löschen!</button>
|
||||
<button type="submit" name="aktion" value="abbrechen">Abbrechen</button>
|
||||
</form>
|
||||
<?php endif; ?>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user