| |
| * Link führt ins Internet |
|
| |
Newsportal via MySQL - MiniCMS
|
|
Abschliessend wollen wir Ihnen noch ein Newsportal vorstellen, welches Ihnen als Grundlage für die Umsetzung von Content Management Systeme (CMS) dienen kann. Das Newsportal setzt sich hierbei aus einem administrativen und einen öffentlichen Bereich zusammen. Insgesamt werden zwei Datenbanktabellen (newstab und newskomm) benötigt. Bei den Tabellen liegt eine 1:n Beziehung vor, einer Nachricht der newstab-Tabelle können beliebig viele Kommentare der newskomm-Tabelle zugewiesen sein.
Die Funktionalität des CMS umfässt folgende Optionen:
. Anzeigen von Nachrichten
. Hinzufügen von Nachrichten
. Bearbeiten von Nachrichten
. Entfernen von Nachrichten
. Entfernen von Kommentaren
. Nachrichtenübersicht
. Seitennavigation
Initialisierungsdateien
. config.inc.php - in diesem Skript befinden sich die wesentlichen Zugriffsdaten und der Verbindungsaufbau zur MySQL Datenbank.
. install.php - mit Hilfe dieses Skripts sind Sie in der Lage die benötigten Datenbanktabellen für die Umfrage-Anwendung festzulegen. Sie müssen das Skript lediglich im Browseraufrufen. Achten Sie darauf das Skript anschliessend von Server zu entfernen!
Datenbanktabellen
CREATE TABLE newstab (
newsid int(11) NOT NULL auto_increment,
newstitel varchar(100) NOT NULL default '',
newsdatum datetime NOT NULL default '0000-00-00 00:00:00',
newsautor varchar(40) NOT NULL default '',
newsinhalt text NOT NULL,
newsurl varchar(100) NOT NULL default '',
newsrubrik varchar(40) NOT NULL default '',
PRIMARY KEY (newsid),
KEY newsid (newsid)
)
|
CREATE TABLE newskomm (
kid int(11) NOT NULL auto_increment,
kombetreff varchar(80) NOT NULL default '',
komdatum datetime NOT NULL default '0000-00-00 00:00:00',
komname varchar(40) NOT NULL default '',
komemail varchar(80) NOT NULL default '',
komhome varchar(100) NOT NULL default '',
kominhalt text NOT NULL,
knewsid int(11) NOT NULL default '0',
PRIMARY KEY (kid),
KEY kid (kid)
)
|
Auch in diesem Fall stellt der administrative Bereich den interessantesten Teil der Anwendung dar, daher werden wir Ihnen diesen im folgenden Abschnitt vorstellen.
Administrationsdateien:
. newsadmin.htm - in dieser Seite befindet sich die Eingabemaske (Formular) mit deren Hilfe die Nachrichten erzeugt werden können. Die Seite ist mit dem Skript erzeugenews.php verknüpft.
. navigator.html - diese Seite wird in sämtlichen Seiten via include()-Anweisung eingebunden um die Navigation innerhalb des administrativen Bereich zu erleichtern.
. erzeugenews.php - mit diesem Skript werden die Nachrichten innerhalb der newstab-Tabelle angelegt.
. newsauswahl.php - mit diesem Skript werden die zu bearbeitenden Nachrichten ausgewählt und die Daten an das Skript newsbearbeiten.php weitergeleitet.
. newsbearbeiten.php - in diesem Skript befindet sich das Bearbeitungs-Formular. Die bearbeiteten Daten werden anschliessend an das Skript newsupdate.php weitergeleitet.
. newsupdate.php - mit diesem Skript werden die bearbeiteten Daten in der newstab-Tabelle aktualisiert.
. newsloeschen.php - mit diesem Skript sind Sie in der Lage vorhandene Nachrichten zu entfernen.
. kommloeschen.php - mit diesem Skript sind Sie in der Lage vorhandene Kommentare zu entfernen.
1. newsadmin.htm
<html>
<head>
<title>Newsportal - Administration</title>
<link rel='stylesheet' type='text/css' href='../css/umfrage.css'>
<link rel='stylesheet' type='text/css' href='../css/main.css'>
</head>
<body>
<div><img src='../bilder/logo.gif' width='656' height='42'></div><p>
<h3>Newsportal [Administration]</h3>
<form method='post' action='erzeugenews.php'>
<table width='500' border='0' cellspacing='2' cellpadding='2'>
<tr>
<td width='95' valign='top'>Newstitel:</td>
<td width='391'>
<input type='text' name='ntitel' maxlength='100' size='30'>
</td>
</tr>
<tr>
<td width='95' valign='top'>Newsautor: </td>
<td width='391'>
<input type='text' name='nautor' maxlength='40' size='30'>
</td>
</tr>
<tr>
<td width='95' valign='top'>Newsinhalt:</td>
<td width='391'>
<textarea name='ninhalt' cols='30' rows='5' wrap='PHYSICAL'></textarea>
</td>
</tr>
<tr>
<td width='95' valign='top'>Newsurl: </td>
<td width='391'>
<input type='text' name='nurl' maxlength='100' size='30' value=''>
</td>
</tr>
<tr>
<td width='95' valign='top'>Newsrubrik: </td>
<td width='391'>
<input type='text' name='nrubrik' maxlength='40' size='30'>
</td>
</tr>
<tr>
<td width='95' valign='top'> </td>
<td width='391'> </td>
</tr>
</table>
<p class='blocksatz'>Adminstrator:
<input type='text' name='fadmin' size='20' maxlength='40'>
Passwort:
<input type='password' name='fpwd' size='20' maxlength='40'>
</p>
<p>
<input type='submit' name='anlegen' value='News Anlegen'>
<input type='reset' name='Löschen' value='Reset'>
</p>
</form>
<table width='600'>
<tr align='left'>
<td class='latestnews' colspan='2'>Admin-Navigator</td>
</tr>
<tr>
<td colspan='2' class='autor'>
<table width='100%' border='0' cellspacing='2' cellpadding='2'>
<tr>
<td><a href='../index.php' target=_blank class="autorblack">Newsportal</a></td>
<td><a href='newsadmin.htm' class="autorblack">News - Hinzufügen</a></td>
<td><a href='kommloeschen.php' class="autorblack">Kommentare - Löschen</a></td>
<td><a href='newsauswahl.php' class="autorblack">News - Bearbeiten</a></td>
<td><a href='newsloeschen.php' class="autorblack">News - Löschen</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan='2' class='latestnews'> </td>
</tr>
</table>
</body>
</html>
|
1.1 navigator.html
<table width='600'>
<tr align='left'>
<td class='latestnews' colspan='2'>Admin-Navigator</td>
</tr>
<tr>
<td colspan='2' class='autor'>
<table width='100%' border='0' cellspacing='2' cellpadding='2'>
<tr>
<td><a href='../index.php' target=_blank class="autorblack">Newsportal</a></td>
<td><a href='newsadmin.htm' class="autorblack">News - Hinzufügen</a></td>
<td><a href='kommloeschen.php' class="autorblack">Kommentare - Löschen</a></td>
<td><a href='newsauswahl.php' class="autorblack">News - Bearbeiten</a></td>
<td><a href='newsloeschen.php' class="autorblack">News - Löschen</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan='2' class='latestnews'> </td>
</tr>
</table>
|
1.2 erzeugenews.php
<html>
<head>
<title>News - Erzeugt</title>
<link rel='stylesheet' type='text/css' href='../css/umfrage.css'>
<link rel='stylesheet' type='text/css' href='../css/main.css'>
</head>
<body>
<div><img src="../bilder/logo.gif" width="656" height="42"></div><p>
<h3>Atomic-News [Administration]</h3>
<?php
require ("../config.inc.php");
if (isset($_POST['anlegen']) && $_POST['fadmin'] == $admin && $_POST['fpwd'] == $pwd) {
//Schreibarbeit durch Umwandlung ersparen
foreach ($_POST as $key=>$element) {
//Eingaben Filtern
${"f_".$key} = $element;
}
$f_ndatum=date("Y-m-d H:i:s");
mysql_query("INSERT INTO $dbtabelle VALUES('','$f_ntitel','$f_ndatum','$f_nautor','$f_ninhalt','$f_nurl','$f_nrubrik')");
echo"<table width='300'>
<tr>
<td align='center' colspan='3'>- NEWS ERZEUGT - <br>
Die NEWS $f_ntitel wurde erzeugt.<br>
</td>
</tr>
</table>";
} else {
echo"<table width='300'>
<tr>
<td align='center' colspan='3'>- FEHLER - <br>
Umfrage konnte nicht erzeugt werden.<br>
Versuchen Sie es bitte erneut!<br>
<a href='javascript:history.back()'>Zurück</a></td>
</tr>
</table>";
}
include("navigator.html");
?>
</body>
</html>
|
2. newsauswahl.php
<html>
<head>
<title>News Auswahl</title>
<link rel='stylesheet' type='text/css' href='../css/umfrage.css'>
<link rel='stylesheet' type='text/css' href='../css/main.css'>
</head>
<body>
<div><img src="../bilder/logo.gif" width="656" height="42"></div><p>
<h3>News - Auswahl (Bearbeitung)</h3>
<form method='post' action='newsbearbeiten.php'>
<?php
require ("../config.inc.php");
$satz = mysql_query("SELECT * FROM $dbtabelle ORDER BY newstitel");
while ($row = mysql_fetch_array($satz)) {
extract($row);
echo "<table width='600'>
<tr align='left'>
<td class='latestnews' colspan='2'>Thema: $newstitel [News-ID: $newsid]</td>
</tr>
<tr>
<td colspan='2' class='autor'>
<table width='100%' border='0' cellspacing='2' cellpadding='2'>
<tr>
<td class='autorblack'>Autor</td>
<td class='autorblack'>Datum</td>
<td class='autorblack'>Rubrik</td>
</tr>
<tr>
<td class='autorblack'>$newsautor</td>
<td class='autor'>$newsdatum</td>
<td class='autor'>$newsrubrik</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan='2' class='latestnews'><input type='radio' name='auswahl' value='$newsid'></td>
</tr>
</table><p>";
}
?>
<input type='submit' name="wahl" value='News'>
</form>
<?php
include("navigator.html");
?>
</body>
</html>
|
2.1 newsbearbeiten.php
<html>
<head>
<title>News [Bearbeiten]</title>
<link rel='stylesheet' type='text/css' href='../css/umfrage.css'>
<link rel='stylesheet' type='text/css' href='../css/main.css'>
</head>
<body>
<div><img src="../bilder/logo.gif" width="656" height="42"></div><p>
<h3>News - Bearbeiten</h3>
<p>
<?
require ("../config.inc.php");
if (isset($_POST[wahl]) && isset($_POST[auswahl])) {
$satz = mysql_query("SELECT * FROM $dbtabelle WHERE newsid=$auswahl");
$row = mysql_fetch_array($satz);
echo "
<form method='post' action='newsupdate.php'>
<table width='500' border='0' cellspacing='2' cellpadding='2'>
<tr>
<td width='95' valign='top'>Newstitel:</td>
<td width='391'>
<input type='text' name='ntitel' value='$row[newstitel]' maxlength='100' size='30'>
</td>
</tr>
<tr>
<td width='95' valign='top'>Newsautor: </td>
<td width='391'>
<input type='text' name='nautor' value='$row[newsautor]'maxlength='40' size='30'>
</td>
</tr>
<tr>
<td width='95' valign='top'>Newsinhalt:</td>
<td width='391'>
<textarea name='ninhalt' cols='50' rows='5' wrap='PHYSICAL'>$row[newsinhalt]</textarea>
</td>
</tr>
<tr>
<td width='95' valign='top'>Newsurl: </td>
<td width='391'>
<input type='text' name='nurl' maxlength='100' size='30' value='$row[newsurl]'>
</td>
</tr>
<tr>
<td width='95' valign='top'>Newsrubrik: </td>
<td width='391'>
<input type='text' name='nrubrik' value='$row[newsrubrik]' maxlength='40' size='30'>
</td>
</tr>
<tr>
<td width='95' valign='top'> </td>
<td width='391'> </td>
</tr>
</table>
<input type='hidden' name='auswahl' value='$row[newsid]'>
<p class='blocksatz'>Adminstrator:
<input type='text' name='fadmin' size='20' maxlength='40'>
Passwort:
<input type='password' name='fpwd' size='20' maxlength='40'>
</p>
<p>
<input type='submit' name='bearbeiten' value='News Bearbeiten'>
<input type='reset' name='Löschen' value='Reset'>
</p>
</form>
";
} else {
echo"<table width='300'>
<tr>
<td align='center' colspan='3'>- FEHLER - <br>
News konnte nicht bearbeitet werden.<br>
Versuchen Sie es bitte erneut!<br>
<a href='javascript:history.back()'>Zurück</a></td>
</tr>
</table>";
}
include("navigator.html");
?>
</body>
</html>
|
2.2 newsupdate.php
<html>
<head>
<title>News [Bearbeiten]</title>
<link rel='stylesheet' type='text/css' href='../css/umfrage.css'>
<link rel='stylesheet' type='text/css' href='../css/main.css'>
</head>
<body>
<div><img src="../bilder/logo.gif" width="656" height="42"></div><p>
<h3>News - Bearbeitet</h3>
<p>
<?php
require ("../config.inc.php");
if (isset($_POST[bearbeiten]) && $_POST['fadmin'] == $admin && $_POST['fpwd'] == $pwd) {
$tab_news = "
UPDATE $dbtabelle
set newstitel = '$ntitel',
newsautor = '$nautor',
newsinhalt = '$ninhalt',
newsurl = '$nurl',
newsrubrik = '$nrubrik'
WHERE newsid = $auswahl";
if (mysql_query($tab_news)) {
echo"<table width='300'>
<tr>
<td align='center' colspan='3'>- NEWS - <br>
News wurde bearbeitet.
</td>
</tr>
</table>";
unset($auswahl);
}
} else {
echo"<table width='300'>
<tr>
<td align='center' colspan='3'>- FEHLER - <br>
News konnte nicht bearbeitet werden.<br>
Versuchen Sie es bitte erneut!<br>
<a href='javascript:history.back()'>Zurück</a></td>
</tr>
</table>";
}
include("navigator.html");
?>
</p>
</body>
</html>
|
3. newsloeschen.php
<html>
<head>
<title>News [Löschen]</title>
<link rel='stylesheet' type='text/css' href='../css/umfrage.css'>
<link rel='stylesheet' type='text/css' href='../css/main.css'>
</head>
<body>
<div><img src="../bilder/logo.gif" width="656" height="42"></div><p>
<h3>News - Löschen</h3>
<form method='post' action='<?php echo $PHP_SELF; ?>'>
<p>
<?php
require ("../config.inc.php");
if (isset($_POST[newsloeschen]) && !empty($ergebnis) && $_POST['fadmin'] == $admin && $_POST['fpwd'] == $pwd) {
$tab_news = "DELETE FROM $dbtabelle WHERE newsid=$ergebnis";
$tab_komm = "DELETE FROM $dbkomtabelle WHERE knewsid=$ergebnis";
if (mysql_query($tab_news) && mysql_query($tab_komm)) {
echo "News wurder erfolgreich entfernt!<p>\n";
unset($ergebnis);
}
} else {
echo "Bitte wählen Sie...<br>Hinweis: Adminname und Passwort sind erforderlich!<p>\n";
}
$satz = mysql_query("SELECT * FROM $dbtabelle");
while ($row = mysql_fetch_array($satz)) {
extract($row);
echo "<table width='600'>
<tr align='left'>
<td class='latestnews' colspan='2'>Thema: $newstitel [News-ID: $newsid]</td>
</tr>
<tr>
<td colspan='2' class='autor'>
<table width='100%' border='0' cellspacing='2' cellpadding='2'>
<tr>
<td class='autorblack'>Autor</td>
<td class='autorblack'>Datum</td>
<td class='autorblack'>Rubrik</td>
</tr>
<tr>
<td class='autorblack'>$newsautor</td>
<td class='autor'>$newsdatum</td>
<td class='autor'>$newsrubrik</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan='2' class='latestnews'><input type='radio' name='ergebnis' value='$newsid'></td>
</tr>
</table><p>";
}
?>
</p>
<p class='blocksatz'>Adminstrator:
<input type="text" name="fadmin" size="20" maxlength="40">
Passwort:
<input type="password" name="fpwd" size="20" maxlength="40">
</p>
<input type='submit' name='newsloeschen' value='News Entfernen'>
</form>
<?php
include("navigator.html");
?>
</body>
</html>
|
4. kommloeschen.php
<html>
<head>
<title>Kommentare [Löschen]</title>
<link rel='stylesheet' href='../css/umfrage.css' type='text/css'>
<link rel='stylesheet' href='../css/main.css' type='text/css'>
</head>
<body>
<div><img src="../bilder/logo.gif" width="656" height="42"></div><p>
<h3>Kommentar - Löschen</h3>
<form method='post' action='<?php echo $PHP_SELF; ?>'>
<p>
<?php
require ("../config.inc.php");
if (isset($_POST[kommloeschen]) && !empty($ergebnis) && $_POST['fadmin'] == $admin && $_POST['fpwd'] == $pwd) {
$tab_komm = "DELETE FROM $dbkomtabelle WHERE kid=$ergebnis";
if (mysql_query($tab_komm)) {
echo "News wurder erfolgreich entfernt!<p>\n";
unset($ergebnis);
}
} else {
echo "Bitte wählen Sie...<br>Hinweis: Adminname und Passwort sind erforderlich!<p>\n";
}
$satz = mysql_query("SELECT * FROM $dbkomtabelle");
while ($row = mysql_fetch_array($satz)) {
extract($row);
echo "<table width='600'>
<tr align='left'>
<td class='latestnews' colspan='2'>Kommentar von $komname [E-mail: $komemail]</td>
</tr>
<tr>
<td colspan='2' class='autor'>
<table width='100%' border='0' cellspacing='2' cellpadding='2'>
<tr>
<td class='autorblack'>Betreff</td>
<td class='autorblack'>Datum</td>
<td class='autorblack'>Homepage</td>
<td class='autorblack'>Inhalt</td>
</tr>
<tr>
<td class='autor'>$kombetreff</td>
<td class='autor'>$komdatum</td>
<td class='autor'>$komhome</td>
<td class='autor'>$kominhalt</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan='2' class='latestnews'>Löschen: <input type='radio' name='ergebnis' value='$kid'></td>
</tr>
</table>";
}
?>
</p>
<p class='blocksatz'>Adminstrator:
<input type="text" name="fadmin" size="20" maxlength="40">
Passwort:
<input type="password" name="fpwd" size="20" maxlength="40">
</p>
<input type='submit' name='kommloeschen' value='Kommentar Entfernen'>
</form>
<?php
include("navigator.html");
?>
</body>
</html>
|
Das Newsportal selbst, in dem sich der Besucher aufhält stellt sich, wie folgt dar:
|
|
|
|
|
|
|