<?php
mysql_connect('localhost', 'foo', 'bar');
mysql_select_db('test');
function qstr($str) {
return "'".mysql_real_escape_string($str)."'";
}
// Aktuelle Wochen-Nummer ist letzte Wochen-Nummer plus eins
$woche = mysql_result(mysql_query('SELECT MAX(`woche`) FROM `charts_lists` LIMIT 1'), 0) + 1;
// Anzahl der Plätze in den Charts
$plaetze = 10;
if (isset($_POST['addnew'])) {
// Neue Chartliste eintragen, sofern der entsprechende Button gedrückt wurde
$error = '';
if (count($_POST['platz']) != $plaetze) {
$error = 'Formulardaten ungültig!';
} elseif (count(array_unique($_POST['platz'])) != $plaetze) {
$error = 'Doppelte Einträge sind nicht möglich!';
} else {
$values = array();
foreach ($_POST['platz'] as $platz => $song_id) {
if (intval($song_id) == 0) {
$error = 'Jeder Platz muss mit einem Song belegt sein!';
break;
}
$values[] = '('.intval($song_id).', '.intval($platz).', '.$woche.')';
}
if (empty($error)) {
$query = '
INSERT INTO `charts_lists` (`song_id`, `platz`, `woche`)
VALUES '.join(', ', $values);
mysql_query($query) or die($query.mysql_error());
header('Location: chartedit.php');
}
}
if (!empty($error)) {
echo htmlentities($error);
}
}
if (isset($_POST['addsong'])) {
// Neuen Song in die Datenbank einfügen
$result = mysql_query('
INSERT INTO `charts_songs` (`interpret`, `titel`)
VALUES ('.qstr($_POST['interpret']).', '.qstr($_POST['titel']).')'
);
echo '<p>"'.htmlentities($_POST['interpret'].' - '.$_POST['titel']).'" ';
if ($result) {
// Alles ok, neuer Eintrag wurde erstellt
echo 'hinzugefügt!';
} else {
// Duplikat
echo 'bereits vorhanden!';
}
echo '</p>';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
<head>
<title>Chart Editing</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<table>
<form action="chartedit.php" method="post">
<h2>Charts erstellen</h2>
<table>
<tr><th>Platz</th><th>Song</th><th>Aktion</th></tr>
<?php
$songs = array(0 => '(kein Eintrag)');
// Songliste holen und in Array $songs schreiben
$result = mysql_query('SELECT `song_id`, `interpret`, `titel` FROM `charts_songs` ORDER BY `interpret`, `titel`');
while ($row = mysql_fetch_assoc($result)) {
$songs[$row['song_id']] = htmlentities($row['interpret'].' - '.$row['titel']);
}
$chart_data = array();
if (count($_POST) == 0) {
// Formular wurde noch nicht abgeschickt
// Chart-Liste von Vorgängerwoche holen und in $chart_data speichern
$result = mysql_query('SELECT `platz`, `song_id` FROM `charts_lists` WHERE `woche` = '.($woche-1).' ORDER BY `platz` ASC');
while ($row = mysql_fetch_assoc($result)) {
$chart_data[$row['platz']] = $row['song_id'];
}
if (count($chart_data) < $plaetze) {
// Zu wenig/keine Platzierungen in Vorwoche
for ($i = count($chart_data) + 1; $i <= $plaetze; ++$i) {
$chart_data[$i] = 0;
}
}
} else {
// Formular wurde abgeschickt
// Chart-Liste aus Formulardaten holen
$chart_data = $_POST['platz'];
if (isset($_POST['pos'])) {
// Song verschieben
$platz = array_pop(array_keys($_POST['pos']));
if ($_POST['pos'][$platz] == '+' && isset($chart_data[$platz-1])) {
// Einen Platz nach oben verschieben
$temp = $chart_data[$platz-1];
$chart_data[$platz-1] = $chart_data[$platz];
$chart_data[$platz] = $temp;
} elseif ($_POST['pos'][$platz] == '-' && isset($chart_data[$platz+1])) {
// Einen Platz nach unten verschieben
$temp = $chart_data[$platz+1];
$chart_data[$platz+1] = $chart_data[$platz];
$chart_data[$platz] = $temp;
}
}
}
// Chart-Tabelle mit Dropdown-Feldern zur Songauswahl aus $chart_data erstellen
foreach ($chart_data as $platz => $song_id) {
echo '<tr>';
echo '<td>'.$platz.'</td>';
echo '<td><select name="platz['.$platz.']">';
// Songliste aus $songs in Dropdown-Feld schreiben
foreach ($songs as $id => $name) {
echo '<option value="'.$id.'"';
// Aktuell gewählten Song laut $chart_data vorselektieren
if ($id == $song_id) echo ' selected="selected"';
echo '>'.$name.'</option>';
}
echo '</select></td>';
echo '<td>';
if ($platz > 1) echo '<input type="submit" name="pos['.$platz.']" value="+" />';
if ($platz < $plaetze) echo '<input type="submit" name="pos['.$platz.']" value="-" />';
echo '</td>';
echo '</tr>'."\n";
}
?>
</table>
<input type="submit" name="addnew" value="Charts für Woche #<?php echo $woche; ?> speichern" />
<h2>Song hinzufügen</h2>
<label for="addsong-interpret">Interpret:</label> <input id="addsong-interpret" name="interpret" /><br />
<label for="addsong-titel">Titel:</label> <input id="addsong-titel" name="titel" /><br />
<input name="addsong" type="submit" />
</form>
</body>
</html>