Kapitel 6 Lektion 7 gesplittet

This commit is contained in:
Jan Unger 2016-08-25 20:50:07 +02:00
parent 88cf71d772
commit a4afe1a11c
16 changed files with 843 additions and 45 deletions

View File

@ -12,23 +12,3 @@ function holeDatenbankverbindung()
[PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"] [PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"]
); );
} }
function holeLied($liedId)
{
$db = holeDatenbankverbindung();
$liedStatement = $db->prepare("
SELECT
lieder.track,
lieder.titel,
cds.id AS cd_id,
cds.name AS cdname,
kuenstler.name AS kuenstlername
FROM lieder
LEFT JOIN cds ON lieder.cd_id = cds.id
LEFT JOIN kuenstler ON cds.kuenstler_id = kuenstler.id
WHERE lieder.id = :lied_id
");
$liedStatement->execute(['lied_id' => $liedId]);
return $liedStatement->fetch(PDO::FETCH_ASSOC);
}

View File

@ -5,12 +5,8 @@ require __DIR__ . '/_application.php';
$db = holeDatenbankverbindung(); $db = holeDatenbankverbindung();
if (count($_POST) > 0) { if (count($_POST) > 0) {
$insertStatement = $db->prepare("INSERT INTO lieder (cd_id, track, titel) VALUES (:cd_id, :track, :titel)");
$insertStatement->execute([ // TODO: Lied in die Datenbank speichern
'cd_id' => $_GET['id'],
'track' => $_POST['track'],
'titel' => $_POST['titel']
]);
header('Location: cd.php?id=' . htmlspecialchars($_GET['id'])); header('Location: cd.php?id=' . htmlspecialchars($_GET['id']));
exit; exit;
@ -29,7 +25,7 @@ $cdStatement = $db->prepare("
$cdStatement->execute(['cd_id' => $_GET['id']]); $cdStatement->execute(['cd_id' => $_GET['id']]);
$cd = $cdStatement->fetch(PDO::FETCH_ASSOC); $cd = $cdStatement->fetch(PDO::FETCH_ASSOC);
$liederStatement = $db->prepare("SELECT * FROM lieder where cd_id = :cd_id ORDER BY track ASC"); $liederStatement = $db->prepare("SELECT * FROM lieder where cd_id = :cd_id");
$liederStatement->execute(['cd_id' => $_GET['id']]); $liederStatement->execute(['cd_id' => $_GET['id']]);
$lieder = $liederStatement->fetchAll(PDO::FETCH_ASSOC); $lieder = $liederStatement->fetchAll(PDO::FETCH_ASSOC);

View File

@ -3,26 +3,20 @@
require __DIR__ . '/_application.php'; require __DIR__ . '/_application.php';
$meldungen = []; $meldungen = [];
$db = holeDatenbankverbindung();
if (!isset($_GET['id'])) { if (!isset($_GET['id'])) {
$meldungen[] = 'Bitte geben Sie die ID des Liedes an, das Sie bearbeiten möchten.'; $meldungen[] = 'Bitte geben Sie die ID des Liedes an, das Sie bearbeiten möchten.';
} }
$lied = holeLied($_GET['id']); // TODO: Lied mit Angaben zu CD und Künstler aus der Datenbank laden
$lied = [];
if (!$lied) { if (!$lied) {
$meldungen[] = 'Es konnte kein Lied mit der ID ' . htmlspecialchars($_GET['id']) . ' gefunden werden.'; $meldungen[] = 'Es konnte kein Lied mit der ID ' . htmlspecialchars($_GET['id']) . ' gefunden werden.';
} }
if (isset($_POST['aktion'])) { if (isset($_POST['aktion']) && $_POST['aktion'] === 'speichern') {
if ($_POST['aktion'] === 'speichern') {
$updateStatement = $db->prepare("UPDATE lieder SET track = :track, titel = :titel WHERE id = :lied_id"); // TODO: Lied in der Datenbank aktualisieren
$updateStatement->execute([
'track' => $_POST['track'],
'titel' => $_POST['titel'],
'lied_id' => $_GET['id']
]);
}
header('Location: cd.php?id=' . htmlspecialchars($lied['cd_id'])); header('Location: cd.php?id=' . htmlspecialchars($lied['cd_id']));
exit; exit;

View File

@ -3,22 +3,20 @@
require __DIR__ . '/_application.php'; require __DIR__ . '/_application.php';
$meldungen = []; $meldungen = [];
$db = holeDatenbankverbindung();
if (!isset($_GET['id'])) { if (!isset($_GET['id'])) {
$meldungen[] = 'Bitte geben Sie die ID des Liedes an, das Sie löschen möchten.'; $meldungen[] = 'Bitte geben Sie die ID des Liedes an, das Sie löschen möchten.';
} }
$lied = holeLied($_GET['id']); // TODO: Lied aus der Datenbank laden (analog zu lied_bearbeiten.php)
$lied = [];
if (!$lied) { if (!$lied) {
$meldungen[] = 'Es konnte kein Lied mit der ID ' . htmlspecialchars($_GET['id']) . ' gefunden werden.'; $meldungen[] = 'Es konnte kein Lied mit der ID ' . htmlspecialchars($_GET['id']) . ' gefunden werden.';
} }
if (isset($_POST['aktion'])) { if (isset($_POST['aktion']) && $_POST['aktion'] === 'loeschen') {
if ($_POST['aktion'] === 'loeschen') {
$deleteStatement = $db->prepare("DELETE FROM lieder WHERE id = :lied_id"); // TODO: Lied aus der Datenbank löschen
$deleteStatement->execute(['lied_id' => $_GET['id']]);
}
header('Location: cd.php?id=' . htmlspecialchars($lied['cd_id'])); header('Location: cd.php?id=' . htmlspecialchars($lied['cd_id']));
exit; exit;

View 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"]
);
}

View File

@ -0,0 +1,73 @@
<?php
require __DIR__ . '/_application.php';
$db = holeDatenbankverbindung();
if (count($_POST) > 0) {
// TODO: Lied in die Datenbank speichern
header('Location: cd.php?id=' . htmlspecialchars($_GET['id']));
exit;
}
$cdStatement = $db->prepare("
SELECT
cds.id,
cds.name AS cdname,
cds.erscheinungsjahr,
kuenstler.name AS kuenstlername
FROM cds
LEFT JOIN kuenstler ON cds.kuenstler_id = kuenstler.id
WHERE cds.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");
$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>

View File

@ -0,0 +1,46 @@
<?php
require __DIR__ . '/_application.php';
$db = holeDatenbankverbindung();
$statement = $db->query("
SELECT
cds.id,
cds.name AS cdname,
cds.erscheinungsjahr,
kuenstler.name AS kuenstlername
FROM cds
LEFT JOIN kuenstler ON cds.kuenstler_id = kuenstler.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>

View File

@ -0,0 +1,57 @@
<?php
require __DIR__ . '/_application.php';
$meldungen = [];
if (!isset($_GET['id'])) {
$meldungen[] = 'Bitte geben Sie die ID des Liedes an, das Sie bearbeiten möchten.';
}
// TODO: Lied mit Angaben zu CD und Künstler aus der Datenbank laden
$lied = [];
if (!$lied) {
$meldungen[] = 'Es konnte kein Lied mit der ID ' . htmlspecialchars($_GET['id']) . ' gefunden werden.';
}
if (isset($_POST['aktion']) && $_POST['aktion'] === 'speichern') {
// TODO: Lied in der Datenbank aktualisieren
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>

View File

@ -0,0 +1,56 @@
<?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.';
}
// TODO: Lied aus der Datenbank laden (analog zu lied_bearbeiten.php)
$lied = [];
if (!$lied) {
$meldungen[] = 'Es konnte kein Lied mit der ID ' . htmlspecialchars($_GET['id']) . ' gefunden werden.';
}
if (isset($_POST['aktion']) && $_POST['aktion'] === 'loeschen') {
// TODO: Lied aus der Datenbank löschen
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>

View File

@ -0,0 +1,153 @@
-- phpMyAdmin SQL Dump
-- version 4.4.10
-- http://www.phpmyadmin.net
--
-- Host: localhost:3306
-- Erstellungszeit: 08. Aug 2016 um 18:32
-- Server-Version: 5.5.42
-- PHP-Version: 7.0.8
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Datenbank: `mediathek`
--
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `cds`
--
DROP TABLE IF EXISTS `cds`;
CREATE TABLE `cds` (
`id` int(11) NOT NULL,
`kuenstler_id` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`erscheinungsjahr` int(11) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Daten für Tabelle `cds`
--
INSERT INTO `cds` (`id`, `kuenstler_id`, `name`, `erscheinungsjahr`) VALUES
(1, 1, 'Wallflower', 2015),
(2, 2, 'Wo der Pfeffer wächst', 2004),
(3, 1, 'The Girl In The Other Room', 2004);
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `kuenstler`
--
DROP TABLE IF EXISTS `kuenstler`;
CREATE TABLE `kuenstler` (
`id` int(11) NOT NULL,
`name` varchar(32) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Daten für Tabelle `kuenstler`
--
INSERT INTO `kuenstler` (`id`, `name`) VALUES
(1, 'Diana Krall'),
(2, 'Wise Guys');
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `lieder`
--
DROP TABLE IF EXISTS `lieder`;
CREATE TABLE `lieder` (
`id` int(11) NOT NULL,
`cd_id` int(11) NOT NULL,
`track` int(11) NOT NULL,
`titel` varchar(64) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Daten für Tabelle `lieder`
--
INSERT INTO `lieder` (`id`, `cd_id`, `track`, `titel`) VALUES
(1, 1, 1, 'California Dreamin'''),
(2, 1, 2, 'Desperado'),
(3, 1, 3, 'Superstar'),
(4, 2, 1, 'Wo der Pfeffer wächst'),
(5, 2, 2, 'Einer von den Wise Guys'),
(6, 3, 1, 'Stop This World');
--
-- Indizes der exportierten Tabellen
--
--
-- Indizes für die Tabelle `cds`
--
ALTER TABLE `cds`
ADD PRIMARY KEY (`id`),
ADD KEY `kuenstler_id` (`kuenstler_id`);
--
-- Indizes für die Tabelle `kuenstler`
--
ALTER TABLE `kuenstler`
ADD PRIMARY KEY (`id`);
--
-- Indizes für die Tabelle `lieder`
--
ALTER TABLE `lieder`
ADD PRIMARY KEY (`id`),
ADD KEY `cd_id` (`cd_id`);
--
-- AUTO_INCREMENT für exportierte Tabellen
--
--
-- AUTO_INCREMENT für Tabelle `cds`
--
ALTER TABLE `cds`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT für Tabelle `kuenstler`
--
ALTER TABLE `kuenstler`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT für Tabelle `lieder`
--
ALTER TABLE `lieder`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=7;
--
-- Constraints der exportierten Tabellen
--
--
-- Constraints der Tabelle `cds`
--
ALTER TABLE `cds`
ADD CONSTRAINT `cds_ibfk_1` FOREIGN KEY (`kuenstler_id`) REFERENCES `kuenstler` (`id`);
--
-- Constraints der Tabelle `lieder`
--
ALTER TABLE `lieder`
ADD CONSTRAINT `lieder_ibfk_1` FOREIGN KEY (`cd_id`) REFERENCES `cds` (`id`);
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@ -0,0 +1,34 @@
<?php
/**
* @return PDO
*/
function holeDatenbankverbindung()
{
return new PDO(
'mysql:dbname=mediathek;host=localhost',
'root',
'root',
[PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"]
);
}
function holeLied($liedId)
{
$db = holeDatenbankverbindung();
$liedStatement = $db->prepare("
SELECT
lieder.track,
lieder.titel,
cds.id AS cd_id,
cds.name AS cdname,
kuenstler.name AS kuenstlername
FROM lieder
LEFT JOIN cds ON lieder.cd_id = cds.id
LEFT JOIN kuenstler ON cds.kuenstler_id = kuenstler.id
WHERE lieder.id = :lied_id
");
$liedStatement->execute(['lied_id' => $liedId]);
return $liedStatement->fetch(PDO::FETCH_ASSOC);
}

View File

@ -0,0 +1,77 @@
<?php
require __DIR__ . '/_application.php';
$db = holeDatenbankverbindung();
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;
}
$cdStatement = $db->prepare("
SELECT
cds.id,
cds.name AS cdname,
cds.erscheinungsjahr,
kuenstler.name AS kuenstlername
FROM cds
LEFT JOIN kuenstler ON cds.kuenstler_id = kuenstler.id
WHERE cds.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>

View File

@ -0,0 +1,46 @@
<?php
require __DIR__ . '/_application.php';
$db = holeDatenbankverbindung();
$statement = $db->query("
SELECT
cds.id,
cds.name AS cdname,
cds.erscheinungsjahr,
kuenstler.name AS kuenstlername
FROM cds
LEFT JOIN kuenstler ON cds.kuenstler_id = kuenstler.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>

View File

@ -0,0 +1,63 @@
<?php
require __DIR__ . '/_application.php';
$meldungen = [];
$db = holeDatenbankverbindung();
if (!isset($_GET['id'])) {
$meldungen[] = 'Bitte geben Sie die ID des Liedes an, das Sie bearbeiten möchten.';
}
$lied = holeLied($_GET['id']);
if (!$lied) {
$meldungen[] = 'Es konnte kein Lied mit der ID ' . htmlspecialchars($_GET['id']) . ' gefunden werden.';
}
if (isset($_POST['aktion'])) {
if ($_POST['aktion'] === 'speichern') {
$updateStatement = $db->prepare("UPDATE lieder SET track = :track, titel = :titel WHERE id = :lied_id");
$updateStatement->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>

View File

@ -0,0 +1,58 @@
<?php
require __DIR__ . '/_application.php';
$meldungen = [];
$db = holeDatenbankverbindung();
if (!isset($_GET['id'])) {
$meldungen[] = 'Bitte geben Sie die ID des Liedes an, das Sie löschen möchten.';
}
$lied = holeLied($_GET['id']);
if (!$lied) {
$meldungen[] = 'Es konnte kein Lied mit der ID ' . htmlspecialchars($_GET['id']) . ' gefunden werden.';
}
if (isset($_POST['aktion'])) {
if ($_POST['aktion'] === 'loeschen') {
$deleteStatement = $db->prepare("DELETE FROM lieder WHERE id = :lied_id");
$deleteStatement->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>

View File

@ -0,0 +1,153 @@
-- phpMyAdmin SQL Dump
-- version 4.4.10
-- http://www.phpmyadmin.net
--
-- Host: localhost:3306
-- Erstellungszeit: 08. Aug 2016 um 18:32
-- Server-Version: 5.5.42
-- PHP-Version: 7.0.8
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Datenbank: `mediathek`
--
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `cds`
--
DROP TABLE IF EXISTS `cds`;
CREATE TABLE `cds` (
`id` int(11) NOT NULL,
`kuenstler_id` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`erscheinungsjahr` int(11) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Daten für Tabelle `cds`
--
INSERT INTO `cds` (`id`, `kuenstler_id`, `name`, `erscheinungsjahr`) VALUES
(1, 1, 'Wallflower', 2015),
(2, 2, 'Wo der Pfeffer wächst', 2004),
(3, 1, 'The Girl In The Other Room', 2004);
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `kuenstler`
--
DROP TABLE IF EXISTS `kuenstler`;
CREATE TABLE `kuenstler` (
`id` int(11) NOT NULL,
`name` varchar(32) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Daten für Tabelle `kuenstler`
--
INSERT INTO `kuenstler` (`id`, `name`) VALUES
(1, 'Diana Krall'),
(2, 'Wise Guys');
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `lieder`
--
DROP TABLE IF EXISTS `lieder`;
CREATE TABLE `lieder` (
`id` int(11) NOT NULL,
`cd_id` int(11) NOT NULL,
`track` int(11) NOT NULL,
`titel` varchar(64) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Daten für Tabelle `lieder`
--
INSERT INTO `lieder` (`id`, `cd_id`, `track`, `titel`) VALUES
(1, 1, 1, 'California Dreamin'''),
(2, 1, 2, 'Desperado'),
(3, 1, 3, 'Superstar'),
(4, 2, 1, 'Wo der Pfeffer wächst'),
(5, 2, 2, 'Einer von den Wise Guys'),
(6, 3, 1, 'Stop This World');
--
-- Indizes der exportierten Tabellen
--
--
-- Indizes für die Tabelle `cds`
--
ALTER TABLE `cds`
ADD PRIMARY KEY (`id`),
ADD KEY `kuenstler_id` (`kuenstler_id`);
--
-- Indizes für die Tabelle `kuenstler`
--
ALTER TABLE `kuenstler`
ADD PRIMARY KEY (`id`);
--
-- Indizes für die Tabelle `lieder`
--
ALTER TABLE `lieder`
ADD PRIMARY KEY (`id`),
ADD KEY `cd_id` (`cd_id`);
--
-- AUTO_INCREMENT für exportierte Tabellen
--
--
-- AUTO_INCREMENT für Tabelle `cds`
--
ALTER TABLE `cds`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT für Tabelle `kuenstler`
--
ALTER TABLE `kuenstler`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT für Tabelle `lieder`
--
ALTER TABLE `lieder`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=7;
--
-- Constraints der exportierten Tabellen
--
--
-- Constraints der Tabelle `cds`
--
ALTER TABLE `cds`
ADD CONSTRAINT `cds_ibfk_1` FOREIGN KEY (`kuenstler_id`) REFERENCES `kuenstler` (`id`);
--
-- Constraints der Tabelle `lieder`
--
ALTER TABLE `lieder`
ADD CONSTRAINT `lieder_ibfk_1` FOREIGN KEY (`cd_id`) REFERENCES `cds` (`id`);
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;