Hier noch eine Erweiterung zum Newsscript. Ein kleiner Administrationsbereich bestehend aus 2 Seiten (unformatiert!).
Seite 1:
Hier zuerst das Listing für die Datei news_admin.php:
PHP Code:
<?php
// Mögliche Fehler im Script ausgeben
error_reporting(E_ALL ^ E_NOTICE);
$mysql_host = ""; // Meist localhost
$mysql_user = ""; // Standartmäßig ist root der Benutzername
$mysql_pass = ""; // Dein MySQL-Passwort
$mysql_data = ""; // Datenbankname
// Verbindung zur Datenbank herstellen
$link = mysql_connect($mysql_host, $mysql_user, $mysql_pass)
or die("<b>Error:</b> ". mysql_error());
mysql_select_db($mysql_data, $link)
or die("<b>Error:</b> ". mysql_error());
// Datensatz-Ausgabe festlegen
$sql = "SELECT
`id`,
`title`,
`date`,
`check`
FROM
`bero_news`";
$result = mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
// Wenn Datensatz vorhanden, diesen ausgeben, ansonsten Meldung ausgeben,
// dass kein Datensatz gefunden wurde
if (mysql_num_rows($result)) {
print "Es wurden <b>". mysql_num_rows($result) ."</b> Einträge gefunden.\n";
print "<table border=\"0\" cellpadding=\"2\" cellspacing=\"2\">\n";
for ($i = 0; $i < mysql_num_rows($result); $i++) {
$row = mysql_fetch_object($result);
// Datum ins Format Tag.Monat.Jahr - Stunde:Minute umwandeln
$date = date('d.m.Y - H:i', strtotime($row->date));
print " <tr>\n";
print " <td width=\"230\">". $row->title ."</td>\n";
print " <td width=\"140\">". $date ."</td>\n";
print " <td>\n";
print " <a href=\"news_edit.php?action=edit&id=". $row->id ."\">Bearbeiten</a> |\n";
print " <a href=\"news_edit.php?action=delete&id=". $row->id ."\">Löschen</a> |\n";
// Wenn `check` == '1' dann kann der Eintrag gesperrt werden,
// ansonsten kann er freigeschaltet werden
if ($row->check=='1') {
print " <a href=\"news_edit.php?action=lock&id=". $row->id ."\">Sperren</a>\n";
} else {
print " <a href=\"news_edit.php?action=unlock&id=". $row->id ."\">Freischalten</a>\n";
}
print " </td>\n";
print " </tr>\n";#
}
print "</table>\n";
} else {
print "Zur Zeit sind noch keine News in der Datenbank vorhanden.\n";
}
print "<a href=\"news_edit.php?action=new\">Neuer Eintrag</a>\n";
?>
Mit dieser Seite werden zunächst alle Einträge (Titel und Datum) ausgeben. Hinter jedem Eintrag stehen 3 Links (Bearbeiten, Löschen, Sperren bzw. Freischalten).
Ansonsten sollten die Kommenatre ausreichen.
Seite 2:
In dieser Datei - der news_edit.php - werden nun alle Befehle ausgeführt, die von Seite 1 kommen. Hier zunächst wieder das Listing:
PHP Code:
<?php
// Mögliche Fehler im Script ausgeben
error_reporting(E_ALL ^ ~E_NOTICE);
$mysql_host = ""; // Meist localhost
$mysql_user = ""; // Standartmäßig ist root der Benutzername
$mysql_pass = ""; // Dein MySQL-Passwort
$mysql_data = ""; // Datenbankname
// Verbindung zur Datenbank herstellen
$link = mysql_connect($mysql_host, $mysql_user, $mysql_pass)
or die("<b>Error:</b> ". mysql_error());
mysql_select_db($mysql_data, $link)
or die("<b>Error:</b> ". mysql_error());
// Verschiedene Aktionen, die durchgeführt werden können
switch ($_GET['action']) {
case "edit":
// Datensatz-Ausgabe festlegen
$sql = "SELECT
`id`,
`title`,
`text`
FROM
`bero_news`
WHERE
`id` = '". $_GET['id'] ."'";
$result = mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
$row = mysql_fetch_object($result);
if (isset($_POST['sent']) && $_POST['sent']=='1') {
// Datensatz-Eingabe festlegen
$sql = "UPDATE
`bero_news`
SET
`title` = '". $_POST['title'] ."',
`text` = '". $_POST['text'] ."'
WHERE
`id` = '". $row->id ."'";
mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
// Weiterleitung zu news_admin.php
header("Location: news_admin.php");
} else {
// Formular zum bearbeiten des Eintrags
print "<form action=\"news_edit.php?action=edit&id=". $_GET['id'] ."\" method=\"post\">\n";
print "<input name=\"title\" type=\"input\" value=\"". $row->title ."\"><br>\n";
print "<textarea cols=\"60\" name=\"text\" rows=\"10\">". $row->text ."</textarea><br>\n";
print "<input name=\"sent\" type=\"hidden\" value=\"1\">\n";
print "<input name=\"send\" type=\"submit\" value=\"Senden\">\n";
print "<input name=\"reset\" type=\"reset\" value=\"Zurücksetzen\">\n";
print "</form>\n";
}
break;
case "delete":
if (isset($_GET['check']) && $_GET['check']=='ok') {
// Datensatz-Eingabe festlegen
$sql = "DELETE FROM
`bero_news`
WHERE
`id` = '". $_GET['id'] ."'";
mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
// Weiterleitung zu news_admin.php
header("Location: news_admin.php");
} elseif (isset($_GET['check']) && $_GET['check']=='no') {
// Weiterleitung zu news_admin.php
header("Location: news_admin.php");
} else {
print "Wollen Sie den Eintrag wirklich löschen?<br>\n";
print "<a href=\"news_edit.php?action=delete&id=". $_GET['id'] ."&check=ok\">Ja</a> |\n";
print "<a href=\"news_edit.php?action=delete&id=". $_GET['id'] ."&check=no\">Nein</a>\n";
}
break;
case "lock":
// Datensatz-Eingabe festlegen
$sql = "UPDATE
`bero_news`
SET
`check` = '-1'
WHERE
`id` = '". $_GET['id'] ."'";
mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
// Weiterleitung zu news_admin.php
header("Location: news_admin.php");
break;
case "unlock":
// Datensatz-Eingabe festlegen
$sql = "UPDATE
`bero_news`
SET
`check` = '1'
WHERE
`id` = '". $_GET['id'] ."'";
mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
// Weiterleitung zu news_admin.php
header("Location: news_admin.php");
break;
case "new":
if (isset($_POST['sent']) && $_POST['sent']=='1') {
if(!$_POST['title'] OR !$_POST['text']) {
print "Bitte Prüfen Sie, ob die Felder Titel und Text ausgefüllt wurden.";
} else {
// Datensatz-Eingabe festlegen
$sql = "INSERT INTO
`bero_news` (title,
imageurl,
text)
VALUES
('". $_POST['title'] ."',
'". $_POST['imageurl'] ."',
'". $_POST['text'] ."')";
mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
// Weiterleitung zu news_admin.php
header("Location: news_admin.php");
}
}
// Formular zum Erstellen des Eintrags
print "<form action=\"news_edit.php?action=new\" method=\"post\">\n";
print "Titel: <input name=\"title\" type=\"input\"";
if (isset($_POST['title'])) {
print " value=\"". $_POST['title'] ."\" ";
}
print "><br>\n";
print "Bild: <input name=\"imageurl\" type=\"input\"";
if (isset($_POST['imageurl'])) {
print " value=\"". $_POST['imageurl'] ."\" ";
}
print "> (optional)<br>\n";
print "Text:<br>\n";
print "<textarea cols=\"60\" name=\"text\" rows=\"10\">";
if (isset($_POST['text'])) {
print $_POST['text'];
}
print "</textarea><br>\n";
print "<input name=\"sent\" type=\"hidden\" value=\"1\">\n";
print "<input name=\"send\" type=\"submit\" value=\"Senden\">\n";
print "<input name=\"reset\" type=\"reset\" value=\"Zurücksetzen\">\n";
print "</form>\n";
break;
default:
break;
}
?>
Erklärung: Mit den verschiedenen case-Abfragen werden die verschiedenen Befehle gesteuert, die von Seite 1 kommen.
1. Case-Abfrage:
PHP Code:
<?php
case "edit":
// Datensatz-Ausgabe festlegen
$sql = "SELECT
`id`,
`title`,
`text`
FROM
`bero_news`
WHERE
`id` = '". $_GET['id'] ."'";
$result = mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
$row = mysql_fetch_object($result);
if (isset($_POST['sent']) && $_POST['sent']=='1') {
// Datensatz-Eingabe festlegen
$sql = "UPDATE
`bero_news`
SET
`title` = '". $_POST['title'] ."',
`text` = '". $_POST['text'] ."'
WHERE
`id` = '". $row->id ."'";
mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
// Weiterleitung zu news_admin.php
header("Location: news_admin.php");
} else {
// Formular zum bearbeiten des Eintrags
print "<form action=\"news_edit.php?action=edit&id=". $_GET['id'] ."\" method=\"post\">\n";
print "<input name=\"title\" type=\"input\" value=\"". $row->title ."\"><br>\n";
print "<textarea cols=\"60\" name=\"text\" rows=\"10\">". $row->text ."</textarea><br>\n";
print "<input name=\"sent\" type=\"hidden\" value=\"1\">\n";
print "<input name=\"send\" type=\"submit\" value=\"Senden\">\n";
print "<input name=\"reset\" type=\"reset\" value=\"Zurücksetzen\">\n";
print "</form>\n";
}
break;
?>
Mit diesem Teil des Scripts kann man die jeweiligen Einträge mit einem Formular bearbeiten.
2. Case-Abfrage:
PHP Code:
<?php
case "delete":
if (isset($_GET['check']) && $_GET['check']=='ok') {
// Datensatz-Eingabe festlegen
$sql = "DELETE FROM
`bero_news`
WHERE
`id` = '". $_GET['id'] ."'";
mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
// Weiterleitung zu news_admin.php
header("Location: news_admin.php");
} elseif (isset($_GET['check']) && $_GET['check']=='no') {
// Weiterleitung zu news_admin.php
header("Location: news_admin.php");
} else {
print "Wollen Sie den Eintrag wirklich löschen?<br>\n";
print "<a href=\"news_edit.php?action=delete&id=". $_GET['id'] ."&check=ok\">Ja</a> |\n";
print "<a href=\"news_edit.php?action=delete&id=". $_GET['id'] ."&check=no\">Nein</a>\n";
}
break;
?>
Hiermit können einzelne Einträge gelöscht werden. Als Schutz habe ich eine Ja- Nein-Abfrage eingebaut. Ein Eintrag kann also erst gelöscht werden, wenn man auf den Link "Ja" gedrückt hat.
3. und 4. Case-Abfrage:
PHP Code:
<?php
case "lock":
// Datensatz-Eingabe festlegen
$sql = "UPDATE
`bero_news`
SET
`check` = '-1'
WHERE
`id` = '". $_GET['id'] ."'";
mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
// Weiterleitung zu news_admin.php
header("Location: news_admin.php");
break;
case "unlock":
// Datensatz-Eingabe festlegen
$sql = "UPDATE
`bero_news`
SET
`check` = '1'
WHERE
`id` = '". $_GET['id'] ."'";
mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
// Weiterleitung zu news_admin.php
header("Location: news_admin.php");
break;
?>
Mit diesen beiden Abfragen können Einträge gesperrt bzw. freigeschaltet werden. Die Kommentare sollten hierzu ausreichend sein.
5. und letzte Case-Abfrage:
PHP Code:
<?php
case "new":
if (isset($_POST['sent']) && $_POST['sent']=='1') {
if(!$_POST['title'] OR !$_POST['text']) {
print "Bitte Prüfen Sie, ob die Felder Titel und Text ausgefüllt wurden.";
} else {
// Datensatz-Eingabe festlegen
$sql = "INSERT INTO
`bero_news` (title,
imageurl,
text)
VALUES
('". $_POST['title'] ."',
'". $_POST['imageurl'] ."',
'". $_POST['text'] ."')";
mysql_query($sql)
or die("<b>Error:</b> ". mysql_error());
// Weiterleitung zu news_admin.php
header("Location: news_admin.php");
}
}
// Formular zum Erstellen des Eintrags
print "<form action=\"news_edit.php?action=new\" method=\"post\">\n";
print "Titel: <input name=\"title\" type=\"input\"";
if (isset($_POST['title'])) {
print " value=\"". $_POST['title'] ."\" ";
}
print "><br>\n";
print "Bild: <input name=\"imageurl\" type=\"input\"";
if (isset($_POST['imageurl'])) {
print " value=\"". $_POST['imageurl'] ."\" ";
}
print "> (optional)<br>\n";
print "Text:<br>\n";
print "<textarea cols=\"60\" name=\"text\" rows=\"10\">";
if (isset($_POST['text'])) {
print $_POST['text'];
}
print "</textarea><br>\n";
print "<input name=\"sent\" type=\"hidden\" value=\"1\">\n";
print "<input name=\"send\" type=\"submit\" value=\"Senden\">\n";
print "<input name=\"reset\" type=\"reset\" value=\"Zurücksetzen\">\n";
print "</form>\n";
break;
?>
Mit dem letzten Teil des Scripts können nun noch neue Einträge mit einem Formular erstellt werden. Es sind 2 Felder (Titel, Text) als Pflichtfelder angegeben. Das dritte Feld (Bild) muss nicht ausgefüllt werden. Auch hierzu sollten die Kommentare ausreichend sein.
Funktions-Referenz:
error_reporting(): http://www.php.net/manual/de/functio...-reporting.php
mysql_connect(): http://www.php.net/manual/de/function.mysql-connect.php
mysql_error(): http://www.php.net/manual/de/function.mysql-error.php
mysql_select_db(): http://www.php.net/manual/de/functio...-select-db.php
mysql_query(): http://www.php.net/manual/de/function.mysql-query.php
mysql_fetch_object(): http://www.php.net/manual/de/functio...tch-object.php
mysql_num_rows(): http://www.php.net/manual/de/functio...l-num-rows.php
date(): http://www.php.net/manual/de/function.date.php
switch(): http://de.php.net/switch
header(): http://de.php.net/header
Bookmarks