PHP Newssystem Kommentare Funktion Script
Newssystem mit Kommentar-FunktionTutorials » PHP/MySQL Tutorials » Newssystem mit Kommentar-Funktion
Verfasst von Alice am 04.05.2009 - wurde schon 48694 mal gelesen
Newssystem mit Kommentar-Funktion - Tutorial
Im Wishbook wurde ein Tutorial gewuenscht, welches die Erstellung eines Newssystem aufzeigt, also zeig ich euch heute wie man sich ein simples Newssystem mit Kommentarfunktion erstellt ...Was wird benoetigt
- PHP / MySql Grundkenntnisse
- 1 MySql Datenbank
- Webspace der PHP unterstuetzt
Wie sieht es am Schluss aus?
Administration
- admin.php - Artikeluebersicht
- post_news.php - Artikel verfassen
- post_news.php - Artikel bearbeiten
- show_comments.php - Kommentare auflisten
- edit_comments.php - Kommentar bearbeiten
- cats.php - Kategorien
- cats.php - Kategorien bearbeiten
Ausgabe
- news.php - NewsArtikel
- news.php - NewsArtikel - Archiv / Kategorien
- comments.php - Kommentare
Step 1
Als erstes erstellen wir uns eine neue Tabelle, fuer die Autoren, in der Datenbank(mit PHPMyAdmin)
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(48) NOT NULL,
`email` varchar(255) NOT NULL,
`passwort` varchar(48) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
);
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(48) NOT NULL,
`email` varchar(255) NOT NULL,
`passwort` varchar(48) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
);
Dann legen wir gleich mal einen User an, die Daten bitte Anpassen!
INSERT INTO `user` (`id`, `name`, `email`, `passwort`) VALUES
(1, 'DeinUsername', 'DeineEmailAdresse', 'DeinPasswort');
(1, 'DeinUsername', 'DeineEmailAdresse', 'DeinPasswort');
Und noch eine Tabelle, fuer die einzelnen Artikel
CREATE TABLE IF NOT EXISTS `news` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`autor` varchar(48) NOT NULL,
`title` varchar(255) NOT NULL,
`cat` varchar(255) NOT NULL,
`news` text NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
);
`id` int(11) NOT NULL AUTO_INCREMENT,
`autor` varchar(48) NOT NULL,
`title` varchar(255) NOT NULL,
`cat` varchar(255) NOT NULL,
`news` text NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
);
Und nun noch eine Tabelle fuer die Kommentare
CREATE TABLE IF NOT EXISTS `comments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(38) NOT NULL,
`email` varchar(255) NOT NULL,
`url` varchar(255) NOT NULL,
`comment` text NOT NULL,
`date` datetime NOT NULL,
`news_id` int(11) NOT NULL,
`ip` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(38) NOT NULL,
`email` varchar(255) NOT NULL,
`url` varchar(255) NOT NULL,
`comment` text NOT NULL,
`date` datetime NOT NULL,
`news_id` int(11) NOT NULL,
`ip` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
Step 2 - DB Verbindung | config.inc.php
Config.inc.php heisst unsere Datei mit der wir eine Verbindung zur Datenbank herstellen, ohne die geht gar nichts!
Sie enthaelt ebenfalls die im NewsSystem haeufig verwendeten Funktionen, die z.B. u.a. fuer das 'Saeubern' der Daten zustaendig ist, welche mit der DB zu tun haben, die Seitennavigation(Blaetterfunktion) und die BBCode Funktion.
<?php // config.inc.php //--------------------------- $host = "localhost"; // Adresse des Datenbankservers, fast immer localhost $dbuser = ""; // Dein MySQL Benutzername $dbpass = ""; // Dein MySQL Passwort $dbase = ""; // Name der Datenbank //--------------------------- $connection = mysql_connect($host,$dbuser,$dbpass) OR DIE ("Keine Verbindung zu der Datenbank moeglich."); $db = mysql_select_db($dbase , $connection) OR DIE ("Auswahl der Datenbank nicht moeglich."); error_reporting(E_ALL ^ E_NOTICE); //----------------------------------------------------------------------------------------------- // Funktion um die DB-Eintraege zu pruefen => SQL Injektions //----------------------------------------------------------------------------------------------- function clean_it($dirty){ // Auswirkungen von magic_quotes_gpc zuruecksetzen, wenn ON if (get_magic_quotes_gpc()) { $clean = mysql_real_escape_string(stripslashes(htmlspecialchars($dirty))); }else{ $clean = mysql_real_escape_string(htmlspecialchars($dirty)); } return $clean; } // Funktion zum Fehler ausgeben function get_error($var){ $fehler = "<div class=\"error\"><h2>Error ...</h2>\n<p>".$var."</p>\n</div>\n"; return $fehler; } // Funktion um no error ausgeben function get_okay($var){ $fehler = "<div class=\"no_error\"><h2>Prima ...</h2>\n<p>".$var."</p>\n</div>\n"; return $fehler; } //----------------------------------------------------------------------------------------------- // Blaetterfunktion => Seitennavigation //----------------------------------------------------------------------------------------------- function get_navi($go, $total, $pfad, $ausgabe = false, $ende = 10, $p = 3){ //----------------------------------------------------------------------------------------------- // $pfad => Dateipfad // $total => Anzahl der in DB // $ende => Anzahl der Datensaetze die Pro Seite angezeigt werden sollen // $p => Anzahl der Links die in der Seitenavigation ausgegeben werden // $ausgabe = false => Seitennavigation NICHT ausgeben oberhalb der DB Abfrage //----------------------------------------------------------------------------------------------- $seiten = ceil($total / $ende); // Berechnet die Seitenanzahl insgesamt if(!isset($go)){ // korrigieren der aktuellen Seite $go = 1; // Sofern $go nicht uebergeben wurde }elseif($go <= 0 || $go > $seiten){ $go = 1; // Variable definieren }else{ // Wenn Obiges nicht zutraf $go = clean_it($go); // Variable definieren } $links = array(); // Linkkette bilden // Seite die vor der aktuellen Seite kommt definieren if(($go - $p) < 1){ $davor = $go - 1; }else { $davor = $p; } // Seite die nach der aktuellen Seite kommt definieren if(($go + $p) > $seiten){ $danach = $seiten - $go; }else{ $danach = $p; } $off = ($go - $davor); // Variable definieren if ($go- $davor > 1){ // Link definieren => Zur Erste Seite springen $first = 1; $links[] = "<a href=\"".$pfad."".$first."\" title=\"Zur ersten Seite springen\">« Erste ...</a>\n"; } if($go != 1){ // Link definieren => eine Seite zurueck blaettern $prev = $go-1; $links[] = "<a href=\"".$pfad."".$prev."\" title=\"Eine Seite zurueck blaettern\">«</a>\n"; } for($i = $off; $i <= ($go + $danach); $i++){ // einzelne Seitenlinks erzeugen if ($i != $go){ // Link definieren $links[] = "<a href=\"".$pfad."".$i."\">$i</a>\n"; }elseif($i == $seiten) { // aktuelle Seite, ein Link ist nicht erforderlich $links[] = "<span class=\"current\">$i</span>\n"; }elseif($i == $go){ // aktuelle Seite, ein Link ist nicht erforderlich $links[] = "<span class=\"current\">$i</span>\n"; } // close if $i }// close for if($go != $seiten){ // Link definieren => eine Seite weiter blaettern $next = $go+1; $links[] = "<a href=\"".$pfad."".$next."\" title=\"Eine Seite weiter blaettern\">»</a>\n"; } if($seiten - $go - $p > 0 ){ // Link definieren => Zur letzen Seite springen $last = $seiten; $links[] = "<a href=\"".$pfad."".$last."\" title=\"Zur letzten Seite springen\">... Letzte »</a>\n"; } $start = ($go-1) * $ende; // Berechne den Startwert fuer die DB $link_string = implode(" ", $links); // Zusammenfuegen der einzelnen Links zu einem String // -------------------------------------- Seitennavigation ausgeben ---------------------------- if($ausgabe == true){ echo "<div id=\"navigation\">\n"; echo "<span class=\"pages\">Seite $go von $seiten</span>\n"; echo $link_string; // Ausgabe der Seitennavigation echo "</div> \n"; } //close ausgabe // -------------------------------------- Seitennavigation ende -------------------------------- return array($start, $ende); } // close function //----------------------------------------------------------------------------------------------- // BB Code funktion //----------------------------------------------------------------------------------------------- function bbcode($bb){ $php_header = '<div class="php">'; $php_footer = '</div>'; // PHP Code zwischenspeichern $c = md5(time()); preg_match_all("/\[ php \](.*?)\[\/ php \]/si", $bb, $results); for($i=0;$i<count($results[1]);$i++) { $bb = str_replace($results[1][$i], $c.$i.$c, $bb); } // Formatierung $search[] = '[b]'; $search[] = '[/b]'; $search[] = '[i]'; $search[] = '[/i]'; $search[] = '[u]'; $search[] = '[/u]'; $search[] = '[quote]'; $search[] = '[/quote]'; $search[] = '[left]'; $search[] = '[/left]'; $search[] = '[right]'; $search[] = '[/right]'; $search[] = '[center]'; $search[] = '[/center]'; $search[] = '[ code ]'; $search[] = '[/ code ]'; $replace[] = '<b>'; $replace[] = '</b>'; $replace[] = '<i>'; $replace[] = '</i>'; $replace[] = '<u>'; $replace[] = '</u>'; $replace[] = '<blockquote>'; $replace[] = '</blockqoute>'; $replace[] = '<div style="text-align: left">'; $replace[] = '</div>'; $replace[] = '<div style="text-align: right">'; $replace[] = '</div>'; $replace[] = '<div style="text-align: center">'; $replace[] = '</div>'; $replace[] = '<pre class="code">'; $replace[] = '</pre>'; $bb = str_replace($search, $replace, $bb); $search = array(); $replace = array(); $bb = preg_replace("/\[color=(.*)\](.*)\[\/color\]/Usi", "<span color=\"\1\">\2</span>", $bb); $bb = preg_replace("/\[email=(.*)\](.*)\[\/email\]/Usi", "<a href=\"mailto:\1\">\2</a>", $bb); $bb = preg_replace("/\[url=(.*)\](.*)\[\/url\]/Usi", "<a href=\"\1\">\2</a>", $bb); $bb = preg_replace("/\[img\](.*)\[\/img\]/Usi", "<img src=\"\1\" alt=\"\" \>", $bb); $bb = nl2br($bb); // PHP Code highlighten for($i=0;$i<count($results[1]);$i++) { ob_start(); highlight_string(trim(html_entity_decode($results[1][$i]))); $ht = ob_get_contents(); ob_end_clean(); $all = $php_header.$ht.$php_footer; $bb = preg_replace("/\[ php \]".$c.$i.$c."\[\/ php \]/siU", $all, $bb); } function get_bbcode($wo){ // BBCode Funktion $bb = '<div class="bbcode">'; $bb.= '<img onclick="add(\'[b] [/b]\');" style="cursor:pointer" src="images/bold.png" alt="fett" title="fett" />'; $bb.= '<img onclick="add(\'[i] [/i]\');" style="cursor:pointer" src="images/italic.png" alt="krusiv" title="krusiv" />'; $bb.= '<img onclick="add(\'[u] [/u]\');" style="cursor:pointer" src="images/underline.png" alt="unterstrichen" title="unterstrichen" />'; $bb.= '<img onclick="add(\'[left] [/left]\');" style="cursor:pointer" src="images/left.png" alt="links ausrichten" title="links ausrichten" />'; $bb.= '<img onclick="add(\'[center] [/center]\');" style="cursor:pointer" src="images/center.png" alt="zentriert" title="zentriert" />'; $bb.= '<img onclick="add(\'[right] [/right]\');" style="cursor:pointer" src="images/right.png" alt="rechts ausrichten" title="rechts ausrichten" />'; $bb.= '<img onclick="add(\'[url=] [/url]\');" style="cursor:pointer" src="images/link.png" alt="Link einfuegen" title="Link einfuegen"/>'; $bb.= '<img onclick="add(\'[email=] [/email]\');" style="cursor:pointer" src="images/email.png" alt="Email Adresse einfuegen" title="Email Adresse einfuegen" />'; $bb.= '<img onclick="add(\'[img] [/img]\');" style="cursor:pointer" src="images/img.png" alt="Bild einfuegen" title="Bild einfuegen" />'; if($wo != "comi"){ $bb.= '<img onclick="add(\'[video] [/video]\');" style="cursor:pointer" src="images/video.png" alt="Video Einfuegen" title="Video Einfuegen" />'; } $bb.= '<img onclick="add(\'[quote] [/quote]\');" style="cursor:pointer" src="images/zitat.png" alt="Zitat einfuegen" alt="Zitat einfuegen" />'; $bb.= '<img onclick="add(\'[code]0[/code]\');" style="cursor:pointer" src="images/code.png" alt="Code einfuegen" title="Code einfuegen" />'; $bb.= "<img onclick='add(\"[p h p] [/p h p] \");' style='cursor:pointer' src='images/php.png' alt='PHP Code einfuegen title="PHP Code einfuegen" />'; $bb.= '</div>'; echo $bb; } ?>
Wichtig
Die in [p h p] und [/p h p] enthaltenenLeerzeichen in Zeile 239 MUESSEN entfernt werden, sofern der Code hier
heraus kopiert wird. Die Leerzeichen dienen nur der korrekten Darstellung hier
im Tutorial!
Step 3 - header.php
Die Datei header.php wirin alle Datein eingebunden, die fuer die Administration der News zustaendig
sind, sie enthaelt zum einen einen Zugriffsschutz, sowie den oberen Teil des
immer wieder benoetigen HTML Grundgeruests ...
<?php // header.php session_start(); // Session starten include('config.inc.php'); // DB-Verbindung einbinden //ob_start(); // startet den Ausgabepuffer $pfad = $_SERVER['SCRIPT_NAME']; // aktuellen Dateipfad ermitteln if(!isset($_SESSION['login']) AND (basename($pfad) != 'admin.php')){ // Sofern NICHT eingeloggt header("Location: admin.php"); // Weiterleitung } ?> <!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"> <head> <title>GrafixxNews</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="imagetoolbar" content="no" /> <meta http-equiv="Content-Language" content="de" /> <link rel="stylesheet" href="style.css" type="text/css" /> </head> <body> <div id="ram"> <div id="header"> <ul id="navi"> <li><a href="admin.php">Home</a></li> <li><a href="admin.php">News</a></li> <li><a href="cats.php">Kategorien</a></li> <li><a href="show_comments.php">Kommentare</a></li> </ul> <h1>GrafixxNews</h1> </div> <div id="content">
Step 4 - footer.php
Die Datei footer.php wird ebenfalls, wie zuvor schon die header.php,in alle Datein eingebunden, welche fuer die Administration der News
zustaendig sind, die Datei enthaelt den abschliessenden Teil des
HTML-Grundgeruestes, sowie die Navigation...
<?php echo "</div>"; include("sidebar.php"); ob_end_flush(); // leert den Ausgabepuffer ?> <div id="footer"> <p><a href="http://unnecessary.de">GrafixxNews</a> - <a href="http://alice-grafixx.de" titel="Photoshop Community"> Alice-Grafixx.de</a></p> </div> </body> </html>
Step 5 - sidebar.php
Die Datei sidebar.phpenthaelt zum einen den Loginbereich, eine Moeglichkeit sich wieder auszuloggen,
die Navigation und listet die letzen 3 Kommentar auf ...
<?php // sidebar.php echo "<div id=\"sidebar\">\n"; isset($_GET['action']) ? $action = clean_it($_GET['action']) : $action = ''; // Variable definieren if(isset($_POST['submit_login'])){ $log_user = clean_it($_POST['log_user']); // Variable definieren $log_pass = clean_it($_POST['log_pass']); // Variable definieren => MD5 Verschluesselung $login = mysql_query("SELECT id FROM user WHERE name='$log_user' AND passwort='$log_pass'"); if(mysql_num_rows($login) > 0){ // korrekt eingeloggt $row = mysql_fetch_object($login); // DATEN aus DB $_SESSION['login'] = $row->id; // Session zuweisen $_SESSION['user'] = $log_user; // Session zuweisen header("Location: admin.php"); // Weiterleitung }else{ echo get_error(' Logindaten fehlerhaft ...'); } } //-------------------------------------------------------- // Wenn Eingeloggt //-------------------------------------------------------- if(isset($_SESSION['login'])){ echo "<h2>Welcome ".$_SESSION['user']."<small>"; echo "<a href=\"?action=logout\">Logout</a></small></h2>"; echo "<p><a href=\"post_news.php\" class=\"the_button\">Neuen Artikel verfassen</a></p>"; echo "<br />"; //-------------------------------------------------------- // Letzte Kommentare //-------------------------------------------------------- echo "<h2>Neusten Kommentare</h2>\n"; $new_comi = mysql_query("SELECT id, name, comment, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM comments ORDER BY id DESC LIMIT 3"); if(mysql_num_rows($new_comi)<1){ echo "<p>Derzeit existieren keine Kommentare...</p>"; } echo "<ul class=\"list\">"; // News ausgeben ausgeben while($row_c = mysql_fetch_object($new_comi)){ echo "<li><strong>".$row_c->id.".</strong>"; echo substr($row_c->comment, 0, 80)." [..] <br />\n"; echo "<div class=\"right\">\n"; echo "<a href=\"edit_comments.php?id=".$row_c->id."\">Bearbeiten</a> \n"; echo "<a href=\"edit_comments.php?action=loeschen&id=".$row_c->id."\">[x]</a>\n"; echo "</div>\n "; echo "<small>".$row_c->name." » <span class=\"green\">".$row_c->datum."</span></small>\n"; echo "</li>\n"; } // close while echo "</ul>"; //-------------------------------------------------------- // Logout //-------------------------------------------------------- if($action == 'logout'){ session_unset(); // Sessionvariable loeschen session_destroy(); // Session zerstoeren header("Location: admin.php"); // Weiterleitung } }else{ ?> <form action="" method="post"> <fieldset> <legend><span class="blue">Grafixx</span> Login</legend> <label>Name</label> <input type="text" name="log_user" /><br /> <label>Passwort</label> <input type="password" name="log_pass" /> <br /><br /> <input type="submit" value="Login" name="submit_login" class="button"/> </fieldset> </form> <?php } /* Close login */ ?> </div> </div>
Step 6 - admin.php
Die Datei admin.php listet alle bishergeschriebenen Artikel auf, sie ist die Seite auf die jemand weitergeleitet wird,
sofern man nicht eingeloggt ist, dieser bekommt dann einen Hinweis zu sehen,
dass er sich doch bitte einzuloggen hat ;)
<?php // admin.php include('header.php'); // header einbunden if(isset($_SESSION['login'])){ // Sofern eingeloggt echo "<h2>NewsArtikel</h2>\n"; // DB Abfragen $abfrage = mysql_query("SELECT id FROM news"); $total = mysql_num_rows($abfrage); // Anzahl aller Zeilen in DB ermitteln // ---------------------- Seitennavigationsdaten -------------------------------------------------- $per_page = "10"; // Anzahl der Links die Pro Seite angezeigt werden sollen $p = "3"; // Anzahl der Links die in der Seitenavigation ausgegeben werden isset($_GET['go']) ? $go = clean_it($_GET['go']) : $go = ''; // Variable definieren // Blaetterfunktion aufrufen list ($start, $ende) = get_navi($go, $total, $pfad.'?go=', false, $per_page, $p); // ---------------------- ENDE Seitennavigationsdaten---------------------------------------------- $abfrage = mysql_query("SELECT id, title, news, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM news ORDER BY id DESC LIMIT $start,$ende"); if($total < 1){ // Pruefen ob Eintraege vorhanden echo "<p>Bisher existieren keine Newsartikel ...</p>"; }else{ echo "<ul class=\"list\">"; // News ausgeben ausgeben while($row = mysql_fetch_object($abfrage)){ // Anzahl der Kommentare ermitteln $comments = mysql_query("SELECT id FROM comments WHERE news_id='$row->id'"); $com_num = mysql_num_rows($comments); // Anzahl der Kommentare echo "<li>"; echo "<div class=\"right\">\n"; echo "<a href=\"post_news.php?action=edit&id=".$row->id."\">Bearbeiten</a> \n"; echo "<a href=\"post_news.php?action=loeschen&id=".$row->id."\">[x]</a>\n"; echo "</div>\n "; echo "<strong><span class=\"green\">".$row->id.".</span> ".$row->title."</strong>\n"; echo "<p>".substr($row->news, 0, 80)." [...]</p>\n"; echo "<small>".$row->datum." » <a href=\"show_comments.php?id=".$row->id."\">".$com_num." Kommentar(e)</a>\n"; echo "</small>\n </li>\n"; } // close while echo "</ul>\n<br /><br />"; // ---------------------- Seitennavigation ausgeben ------------------------------------------ // Blaetterfunktion aufrufen = > Ausgeben get_navi($go, $total, $pfad.'?go=', true, $per_page, $p); } // close Eintrage vorhanden //------------------------------------------------------------------------------ }else{ // Sofern nicht eingeloggt ... echo "<h2>Zugriff verweigert ...</h2>"; echo "<p>Du musst eingeloggt sein, um diese Seite aufrufen zu koennen ...</p>"; } // close eingeloggt include('footer.php'); // Footer einbinden ?>
Step 7 - post_news.php
Die Datei post_news.php ist zumEinen zum Erstellen eines neuen Artikels zustaendig, sowie als auch zur
Bearbeitung eines bestehenden Artikels
<?php // post_news.php include('header.php'); // header einbunden //------------------------------------------------------------------------------ if(isset($_GET['id'])){ // Sofern ID uebergeben wurde $id = clean_it($_GET['id']); // Variable definieren // DB Abfrage der Daten $abfrage = mysql_query("SELECT title, news, cat FROM news WHERE id='$id'"); $row = mysql_fetch_object($abfrage); } //------------------------------------------------------------------------------ // Newseintrag loeschen //------------------------------------------------------------------------------ isset($_GET['action']) ? $action = clean_it($_GET['action']) : $action = ''; // Variable definieren if($action == 'loeschen'){ // Artikel loeschen $delete = mysql_query("DELETE FROM news WHERE id='$id'"); // Kommentare zu diesem Artikel loeschen $delete_com = mysql_query("DELETE FROM comments WHERE news_id='$id'"); if($delete AND $delete_com){ // Wenn Loeschung nicht erfolgt header("Location: admin.php"); // Weiterleitung }else{ // Wenn Eintrag nicht geloescht wurde => Fehlermeldung echo get_error('Der Eintrag konnte leider nicht geloescht werden! ".mysql_error()."'); } } //------------------------------------------------------------------------------ // Formular auswerten //------------------------------------------------------------------------------ if(isset($_POST['submit'])){ // Sofern Eintragen gedrueckt $title = clean_it($_POST['title']); // Variable definieren $news = clean_it($_POST['news']); // Variable definieren $autor = clean_it($_SESSION['user']); // Variable definieren if(empty($title) || empty($news) || empty($autor)){ // pruefen ob alles ausgefuellt wurde echo get_error('Bitte Danke alle benoetigten Felder ausfuellen!'); }else{ // wenn alles ausgefuellt wurde // Kategorien if(empty($_POST['new_cat'])){$cat = clean_it($_POST['cat']);}else{$cat = clean_it($_POST['new_cat']);} if(($_GET['action']) == 'edit'){ // Wenn action == edit $eintragen = mysql_query("UPDATE news SET autor='$autor', title='$title', news='$news', cat = '$cat' WHERE id='$id' "); }else{ // wenn action = new $eintragen = mysql_query("INSERT INTO news (autor, title, news, cat, date) VALUES ('$autor','$title','$news','$cat', now())"); }// close action if($eintragen){ // Sofern Eintrag geklappt hat header("Location: admin.php"); // Weiterleitung }else{ // Wenn Eintrag nicht geklappt hat => Fehlermeldung echo get_error('Der Eintrag war leider nicht erfolgreich! ".mysql_error()."'); } }// close empty }// close isset //------------------------------------------------------------------------------ if($action == 'edit'){ // Headline fuers Formular ermitteln $headline = "Artikel ".$id." bearbeiten"; }else{ $headline = "Artikel verfassen"; }// close Headline ermitteln //------------------------------------------------------------------------------ // Formular ausgeben //------------------------------------------------------------------------------ ?> <script type="text/javascript"> /* Funtionn BBCode */ var n = 1; function add(code) { document.getElementById('bbcode').news.value += " " + code ; } </script> <form action="" method="post" id="bbcode"> <fieldset> <legend><?php echo $headline; ?></legend> <label>Titel</label> <input type="text" name="title" value="<?php echo $row->title; ?>" /> <br /><br /> <label>Kategorie</label> <?php // wenn vorhandene - Kategorien auslesen $query = mysql_query("SELECT DISTINCT cat FROM news WHERE cat != ''"); if(mysql_num_rows($query) != '0'){ echo "<select name=\"cat\" size=\"1\">\n"; echo "<option value=\"\">Kategorie waehlen</option>"; echo "<option value=\"\">---------------------</option>"; while($rows = mysql_fetch_object($query)){ echo "<option value=\"".$rows->cat."\">".$rows->cat."</option>"; } echo "</select><br />\n"; } ?> <input name="new_cat" type="text" value="<?php echo $row->cat;?>"/> <small> Neue Kategorie erstellen</small> <br /><br /> <?php get_bbcode('admin'); /* BBCode ausgeben */ ?> <textarea rows="10" cols="85" name="news"><?php echo $row->news;?></textarea> <br /><br /> <input type="submit" value="Eintragen" name="submit" class="button"/> </fieldset> </form> <?php include('footer.php'); ?>
Step 8 - show_comments.php
Die Datei show_comments.phplistet alle bisher verfassen Kommentare auf und biete jeweils immer einen Link
zum Bearbeiten und zum Loeschen eines Kommentares an
<?php // show_comments.php include('header.php'); // header einbinden if(isset($_GET['id'])){ // Wenn ID uebergeben wurde, alle Kommentare zu dieser news_ID ausgeben $id = clean_it($_GET['id']); // Variable definieren echo "<h2>Kommentare zu Artikel ".$id."</h2>\n"; // News auslesen $result = mysql_query("SELECT id, name, url, comment, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM comments WHERE news_id ='$id'"); $pfad = "show_comments.php?id=".$id."&go="; // URL => Seitennavigation }else{ echo "<h2>Kommentare</h2>\n"; // News auslesen $result = mysql_query("SELECT id, name, url, comment, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM comments"); $pfad = "show_comments.php?go="; } $total = mysql_num_rows($result); // Anzahl aller Zeilen in DB ermitteln // ---------------------- Seitennavigationsdaten -------------------------------------------------- $per_page = "5"; // Anzahl der News die Pro Seite ausgegeben werden sollen $p = "5"; // Anzahl der Links die in der Seitenavigation ausgegeben werden isset($_GET['go']) ? $go = clean_it($_GET['go']) : $go = ''; // Variable definieren // Blaetterfunktion aufrufen = > Ausgeben list ($start, $ende) = get_navi($go, $total, $pfad, false, $per_page, $p); // ---------------------- ENDE Seitennavigationsdaten---------------------------------------------- if(isset($_GET['id'])){ $abfrage = mysql_query("SELECT id, name, url, comment, email, ip, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM comments WHERE news_id ='$id' ORDER BY date DESC LIMIT $start, $ende"); }else{ $abfrage = mysql_query("SELECT id, name, url, comment, email, ip, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM comments ORDER BY date DESC LIMIT $start, $ende"); } if($total < 1){ // Pruefen ob Eintraege vorhanden echo "<p>Zur Zeit existieren keine Kommentare ...</p>"; }else{ echo "<ul class=\"list\">"; // Kommentare ausgeben ausgeben while($row = mysql_fetch_object($abfrage)){ if(empty($row->url)){ // Pruefen ob Website angegeben $autor = $row->name; // Variable definieren }else{ // Wenn Website angegeben $autor = "<a href=\"".$row->url."\">".$row->name."</a>"; } echo "<li>"; echo "<div class=\"right\">\n"; echo "<a href=\"edit_comments.php?id=".$row->id."\">Bearbeiten</a> \n"; echo "<a href=\"edit_comments.php?action=loeschen&id=".$row->id."\">[x]</a>\n"; echo "</div>\n "; echo "<p>".substr($row->comment, 0, 80)." [...]</p>\n"; echo "<small>von ".$autor." - ".$row->email." am ".$row->datum." | ".$row->ip."\n"; echo "</small>\n </li>\n"; } // close while echo "</ul>\n<br />"; // -------------------------------------- Seitennavigation ausgeben ---------------------------- // Blaetterfunktion aufrufen = > Ausgeben get_navi($go, $total, $pfad, true, $per_page, $p); // -------------------------------------- Seitennavigation ende -------------------------------- } // close Eintrage vorhanden include('footer.php'); // footer einbinden ?>
Step 9 - edit_comments.php
Die Datei edit_comments.phpist fuer das Bearbeiten und Loeschen eines Kommentares zustaendig
<?php // edit_comments.php include('header.php'); // header einbunden //------------------------------------------------------------------------------ $id = clean_it($_GET['id']); // Variable definieren //------------------------------------------------------------------------------ // Kommentar loeschen //------------------------------------------------------------------------------ if(($_GET['action']) == 'loeschen'){ $delet = mysql_query("DELETE FROM comments WHERE id='$id' "); if($delet){ // Wenn Loeschung nicht erfolgt header("Location: show_comments.php"); // Weiterleitung }else{ // Wenn Eintrag nicht geloescht wurde => Fehlermeldung echo "<div class=\"error\"><h2>Error ...</h2>\n"; echo "<p>Der Eintrag konnte leider nicht geloescht werden! ".mysql_error()."</p>\n</div>\n"; } } //------------------------------------------------------------------------------ // Kommentar bearbeiten //------------------------------------------------------------------------------ if(isset($_POST['submit'])){ // Sofern Eintragen gedrueckt $name = clean_it($_POST['name']); // Variable definieren $email = clean_it($_POST['email']); // Variable definieren $url = clean_it($_POST['url']); // Variable definieren $comment = clean_it($_POST['comment']); // Variable definieren if(empty($name) || empty($email) || empty($comment)){ // pruefen ob alles ausgefuellt wurde echo "<div class=\"error\"><h2>Error ...</h2>\n"; echo "<p>Bitte Danke alle benoetigten Felder ausfuellen!</p>\n</div>\n"; }else{ // wenn alles ausgefuellt wurde $eintragen = mysql_query("UPDATE comments SET name='$name', email='$email', url='$url', comment='$comment' WHERE id='$id' "); if($eintragen){ // Sofern Eintrag geklappt hat header("Location: show_comments.php"); // Weiterleitung }else{ // Wenn Eintrag nicht geklappt hat => Fehlermeldung echo "<div class=\"error\"><h2>Error ...</h2>\n"; echo "<p>Da lief was schief ... ".mysql_error()."</p>\n</div>\n"; } }// close empty }// close isset // Kommentar aus DB holen $abfrage = mysql_query("SELECT name, email, url, comment FROM comments WHERE id='$id'"); $row = mysql_fetch_object($abfrage); //------------------------------------------------------------------------------ // Formular ausgeben //------------------------------------------------------------------------------ ?> <script type="text/javascript"> /* Funtionn BBCode */ var n = 1; function add(code) { document.getElementById('bbcode').comment.value += " " + code ; } </script> <form action="" method="post" id="bbcode"> <fieldset> <legend>Kommentar bearbeiten</legend> <label>Name</label> <input type="text" name="name" value="<?= $row->name; ?>" /><br /> <label>Email</label> <input type="text" name="email" value="<?= $row->email; ?>" /><br /> <label>URL</label> <input type="text" name="url" value="<?= $row->url; ?>" /><br /> <?php get_bbcode('admin'); /* BBCode ausgeben */ ?> <textarea rows="5" cols="80" name="comment"><?= $row->comment; ?></textarea> <br /><br /> <input type="submit" value="Speichern" name="submit" class="button" /> </fieldset> </form> <?php include('footer.php'); ?>
Step 10 - cats.php
Die Datei cats.php listet alleexistierenden Kategorien auf und ist fuer das Bearbeiten und Loeschen einer
Kategorie zustaendig
<?php // cats.php include('header.php'); // header einbinden //------------------------------------------------------------------------------ // Kategorie Bearbeiten //------------------------------------------------------------------------------ if($_GET['action'] == 'edit'){ if(isset($_POST['submit']) && !empty($_POST['cat'])){ // Sofern speichern gedrueckt // DB Updaten $update = mysql_query("UPDATE news SET cat = '".clean_it($_POST['cat'])."' WHERE cat = '".clean_it($_GET['cat'])."' "); if($update){ header("Location: cats.php"); // Weiterleitung } } // close submit ?> <form action="" method="post" id="bbcode"> <fieldset> <legend>Kategorie bearbeiten</legend> <input type="text" name="cat" value="<?php echo clean_it($_GET['cat']); ?>" /> <input type="submit" value="Speichern" name="submit" class="button"/> </fieldset> </form> <?php //------------------------------------------------------------------------------ // Kategorie loeschen //------------------------------------------------------------------------------ }else if($_GET['action'] == 'delete'){ // DB Updaten $update = mysql_query("UPDATE news SET cat = '' WHERE cat = '".clean_it($_GET['cat'])."' "); if($update){ header("Location: cats.php"); // Weiterleitung } //------------------------------------------------------------------------------ // Kategorien auflisten //------------------------------------------------------------------------------ }else{ echo "<h2>Kategorien</h2>\n"; // DB Abfrage $abfrage = mysql_query("SELECT DISTINCT cat FROM news WHERE cat != ''"); $total = mysql_num_rows($abfrage); // Anzahl aller Zeilen in DB ermitteln if($total < 1){ // Pruefen ob Eintraege vorhanden echo "<p>Zur Zeit existieren keine Kategorien ...</p>"; }else{ echo "<ul class=\"list\">"; // Kategorien ausgeben ausgeben while($row = mysql_fetch_object($abfrage)){ echo "<li>"; echo "<div class=\"right\">\n"; echo "<a href=\"cats.php?action=edit&cat=".urlencode($row->cat)."\">Bearbeiten</a> \n"; echo "<a href=\"cats.php?action=delete&cat=".urlencode($row->cat)."\">[x]</a>\n"; echo "</div>\n "; echo "<p>".$row->cat."</p></li>\n"; } // close while echo "</ul>\n<br />"; } // close Eintrage vorhanden }// close $action include('footer.php'); // footer einbinden ?>
Step 11 - news.php
Die Datei news.php ist fuer dieOeffentlichkeit bestimmt, sie ist fuer die Ausgabe der News zustaendig. Hier
muss darauf geachtet werden, dass die Pfade der einzelnen include() Befehle u.U.
angepasst werden muessen, sofern die Datei nicht im selben Ordner liegt wie die
einzubindenden Dateien!
<!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"> <head> <title>GrafixxNews</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="imagetoolbar" content="no" /> <meta http-equiv="Content-Language" content="de" /> <link rel="stylesheet" href="style.css" type="text/css" /> </head> <body> <div id="ram"> <div id="header"> <h1>GrafixxNews</h1> </div> <div id="content"> <?php // news.php include('config.inc.php'); // DB-Verbindung einbinden // Sofern Kategorie angegeben if(isset($_GET['cat'])){ $where = "WHERE cat = '".clean_it($_GET['cat'])."'"; echo "<h2 class=\"blue\">Abgelegtes unter '".clean_it($_GET['cat'])."'</h2>"; $pfad = "news.php?cat=".urlencode(clean_it($_GET['cat']))."go="; }else{ $pfad = "news.php?go="; } // News auslesen $abfrage = mysql_query("SELECT id FROM news ".$where.""); $total = mysql_num_rows($abfrage); // Anzahl aller Zeilen in DB ermitteln // ---------------------- Seitennavigationsdaten -------------------------------------------------- $per_page = "5"; // Anzahl der News die Pro Seite ausgegeben werden sollen $p = "5"; // Anzahl der Links die in der Seitenavigation ausgegeben werden isset($_GET['go']) ? $go = clean_it($_GET['go']) : $go = ''; // Variable definieren // Blaetterfunktion aufrufen list ($start, $ende) = get_navi($go, $total, $pfad, false, $per_page, $p); // ---------------------- ENDE Seitennavigationsdaten---------------------------------------------- $abfrage = mysql_query("SELECT id, autor, title, cat, news, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM news ".$where." ORDER BY date DESC LIMIT $start,$ende"); // News ausgeben ausgeben while($row = mysql_fetch_object($abfrage)){ // Anzahl der Kommentare ermitteln $comments = mysql_query("SELECT id FROM comments WHERE news_id='$row->id'"); $com_num = mysql_num_rows($comments); // Anzahl der Kommentare echo "<div class=\"news\">\n"; echo "<h2>".$row->title."\n <small>verfasst von ".$row->autor." am ".$row->datum." | \n"; if(!empty($row->cat)){ // sofern Kategorie angegeben echo "abgelegt unter: <a href=\"news.php?cat=".urlencode($row->cat)."\">".$row->cat."</a> | \n"; } echo "<a href=\"comments.php?id=".$row->id."\">Kommentare ".$com_num."</a></small>\n </h2>"; if(isset($_GET['cat'])){ // Kategorieseite nur einen Auszug ausgeben $max_show = "250"; // max 450 Zeichen anzeigen if (strlen($row->news) > $max_show){ // sofern $news mehr als 450 Zeichen enthaelt echo "<p>".bbcode(substr($row->news, 0, strpos($row->news, ".", 120 )+1 ))."\n"; // Ab 150 Zeichen nach nem punkt suchen und alles das was davor enthalten ist ausgeben echo "<a href=\"comments.php?id=".$row->id."\" class=\"right\">read more...</a>\n"; echo "<br style=\"clear: right;\" /></p>"; // link ausgeben }else{ // komplett ausgeben echo "<p>".bbcode($row->news)."</p>"; } }else{ echo "<p>".bbcode($row->news)."</p>"; } echo "</div>\n"; } // close while // -------------------------------------- Seitennavigation ausgeben ---------------------------- get_navi($go, $total, $pfad, true, $per_page, $p); // -------------------------------------- Seitennavigation ende -------------------------------- ?> </div> </div> <div id="footer"> <p class="right">Valid <a href="http://validator.w3.org/check/referer" title="This page validates as XHTML 1.0 Transitional"> <abbr title="eXtensible HyperText Markup Language">XHTML</abbr></a> | Valid <a href="http://jigsaw.w3.org/css-validator/check/referer" title="CSS ist valide!"><abbr title="Cascading Style Sheets"> CSS</abbr></a> </p> <p><a href="http://unnecessary.de">GrafixxNews</a> - <a href="http://alice-grafixx.de"> Alice-Grafixx.de</a></p> </div> </body> </html>
Step 12 - comments.php
Die Datei comments.phplistet die einzelnen Kommentare zu einem Artikel, sowahl als auch den Artikel
selbst nochmals auf und bietet leichzeitig die Moeglickeit den Artikel zu
kommentieren. Hier gilt das selbe wie schon bei der Datei news.php
sofern sich die Datei nicht im selben Ordner wie, die Dateien befindet, die
eingebunden werden, muessen die Pfadangaben des jeweiligen include(); Befehls
angepasst werden!
<?php // comments.php include('config.inc.php'); // DB-Verbindung einbinden ob_start(); // startet den Ausgabepuffer ?> <!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"> <head> <title>GrafixxNews</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="imagetoolbar" content="no" /> <meta http-equiv="Content-Language" content="de" /> <link rel="stylesheet" href="style.css" type="text/css" /> </head> <body> <div id="ram"> <div id="header"> <h1>GrafixxNews</h1> </div> <div id="content"> <?php if(!isset($_GET['id'])){ // Sofern keine ID uebergeben wurde => Fehlermeldung echo "<div class=\"error\"><h2>Error ...</h2>\n"; echo "<p>Es wurde keine ID uebermittelt ...</p>\n</div>\n"; }else{ // Wenn ID uebergeben wurde $id = clean_it($_GET['id']); // Variable definieren $pfad = "comments.php?id=".$id."&go="; // aktuellen Dateipfad ermitteln // Artikel abrufen $artikel = mysql_query("SELECT id, autor, title, news, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM news WHERE id='$id'"); // Artikel ausgeben ausgeben while($row = mysql_fetch_object($artikel)){ echo "<div class=\"news\">\n"; echo "<h2>".$row->title."</h2>\n"; echo "<p>".bbcode($row->news)."</p>"; echo "</div>\n"; } // close while echo "<h2>Kommentare</h2>"; // Kommentare abfragen $result = mysql_query("SELECT id FROM comments WHERE news_id='$id'"); $total = mysql_num_rows($result); // Anzahl aller Zeilen in DB ermitteln // ---------------------- Seitennavigationsdaten -------------------------------------------------- $per_page = "5"; // Anzahl der News die Pro Seite ausgegeben werden sollen $p = "5"; // Anzahl der Links die in der Seitenavigation ausgegeben werden isset($_GET['go']) ? $go = clean_it($_GET['go']) : $go = ''; // Variable definieren list ($start, $ende) = get_navi($go, $total, $pfad, false, $per_page, $p); // ---------------------- ENDE Seitennavigationsdaten---------------------------------------------- $abfrage = mysql_query("SELECT id, name, email, url, comment, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM comments WHERE news_id='$id' ORDER BY date DESC LIMIT $start,$ende"); if($total < 1){ // Pruefen ob Eintraege vorhanden echo "<p>Bisher sind noch keine Kommentare vorhanden ...</p>"; }else{ echo "<ul class=\"list\">"; // Kommentare ausgeben ausgeben while($row = mysql_fetch_object($abfrage)){ if(empty($row->url)){ // Pruefen ob Website angegeben $autor = $row->name; // Variable definieren }else{ // Wenn Website angegeben $autor = "<a href=\"".$row->url."\">".$row->name."</a>"; } $default = "http://www.deine-seite.de/default.jpg"; // Standard GRAVATAR Icon - BITTE ANGEBEN $grav_url = "http://www.gravatar.com/avatar/".md5(strtolower(trim($row->email)))."?d=".urlencode($default)."&s=40"; echo "<li>\n"; echo "<img src='".$grav_url."' alt='' class='go_left'/>"; echo "<p>".bbcode($row->comment)."</p>\n"; echo "<small>schreib ".$autor." am ".$row->datum."\n"; echo "</small>\n </li>\n"; } // close while echo "</ul>\n<br />"; // -------------------------------------- Seitennavigation ausgeben ---------------------------- // Blaetterfunktion aufrufen = > Ausgeben get_navi($go, $total, $pfad, true, $per_page, $p); // -------------------------------------- Seitennavigation ende -------------------------------- } // close Eintrage vorhanden //------------------------------------------------------------------------------ // Kommentar verfassen //------------------------------------------------------------------------------ if(isset($_POST['submit'])){ // Sofern Submit gedrueckt $name = clean_it($_POST['name']); // Variable definieren $email = clean_it($_POST['email']); // Variable definieren $url = clean_it($_POST['url']); // Variable definieren $comment = clean_it($_POST['comment']); // Variable definieren $math = clean_it($_POST['math']); // Variable definieren $ip = clean_it($_SERVER['REMOTE_ADDR']);// Variable definieren if(empty($name) || empty($email) || empty($comment) || empty($math)){ // pruefen ob alles Benoetigte ausgefuellt wurde echo get_error('Bitte Danke alle benoetigten Felder ausfuellen!'); }else{ // wenn alles Benoetigte ausgefuellt wurde if($math != 7){ // Antispam-Rechnung pruefen echo get_error('Die hast die Rechenaufgabe nicht korrekt geloest!'); }else{ // Wenn richtig gerechnet wurde if (!(eregi("^.+@.+\..+$", $email))){ // Email Adresse auf korrektheit pruefen echo get_error('Du hast keine korrekte E-Mail Adresse angegeben!'); }else{ // Sofern ne korrekte Email Adresse angegeben wurde // Abfragen ob schon ein Kommentar in den letzen 2 Min zu diesem Artikel verfasst wurde... $check_ip = mysql_query("SELECT id FROM comments WHERE ip='$ip' AND news_id='$id' AND date > now() - INTERVAL 2 MINUTE "); if(mysql_num_rows($check_ip) > 1){ // sofern schon ein Kommentar in den letzen 2 Minuten => Warnung echo get_error('Du hast schon einen Kommentar in den letzen 2 Minuten hinterlassen!<br /> Probier es doch spaeter noch mal ;)'); }else{ // sofern noch kein Kommentar in den letzen 2 Min verfasst $eintragen = mysql_query("INSERT INTO comments (name, email, url, comment, news_id, date, ip) VALUES ('$name','$email', '$url', '$comment', '$id', now(), '$ip')"); if($eintragen){ // Sofern Eintrag geklappt hat header("Location: ".$pfad."?id=".$id.""); // Weiterleitung }else{ // Wenn Eintrag nicht geklappt hat => Fehlermeldung echo get_error(' Der Eintrag war leider nicht erfolgreich! ".mysql_error()."'); } } // close check_ip } // close check email } // close Antispam }// close empty }// close isset //------------------------------------------------------------------------------ // Formular ausgeben //------------------------------------------------------------------------------ ?> <br /><br /> <script type="text/javascript"> /* Funtionn BBCode */ var n = 1; function add(code) { document.getElementById('bbcode').comment.value += " " + code ; } </script> <form action="" method="post" id="bbcode"> <fieldset> <legend>Kommentar hinterlassen</legend> <label>Name</label> <input type="text" name="name" value="<?= $name; ?>" /><br /> <label>Email</label> <input type="text" name="email" value="<?= $email; ?>" /><br /> <label>URL</label> <input type="text" name="url" value="<?= $url; ?>" /><br /> <?php get_bbcode('comi'); /* BBCode ausgeben */ ?> <textarea rows="5" cols="50" name="comment"><?= $comment; ?></textarea> <br /><br /> <label>AntiSpam</label> Die Summe aus 5 + 2 = <input type="text" name="math" style="width: 50px"/><br /><br /> <input type="submit" value="Eintragen" name="submit" class="button"/> </fieldset> </form> </div> <?php }// close ID uebergeben ob_end_flush(); // leert den Ausgabepuffer ?> </div> <div id="footer"> <p><a href="http://unnecessary.de">GrafixxNews</a> - <a href="http://alice-grafixx.de" titel="Photoshop Community"> Alice-Grafixx.de</a></p> </div> </body> </html>
Die in der get_bbcode Funktion genutzen Grafiken koennen hier heruntergeladen werden.
Credit: FamFamFam - Silk Icons
Wir haben also nun folgende Dateien:
- config.inc.php - Baut die Verbindung zur DB auf u. enthaelt u.a. die Funktion zum 'Saeuber' von Daten welche mit der DB was zu tun haben
- header.php - enthaelt Zugriffsschutz und einen Teil des HTML-Grundgeruestes
- footer.php - enthaelt den anschliessenden Teil des HTML-Grundgeruestes
- sidebar.php - enthaelt den Login/Logout und die Navigation und listet die letzen Kommis auf
- admin.php - listet alle bisher verfassten Artikel auf
- post_news.php - ist zum Verfassen eines Artikel da, ebenso wie zum Bearbeiten
- cats.php - listet alle existierenden Kategorien auf, ist zum Bearbeiten/Loeschen einer Kategorie da
- show_comments.php - listet alle bisher verfassen Kommentare auf
- edit_comments.php - ist zum Bearbeiten/Loeschen eines Kommentares da
- news.php - listet die NewsArtikel auf
- comments.php - listet die Kommentare zu einem Artikel auf, mit Kommentarfunktion, welche Gravatar unterstuetzt
Wichtig
All diese Dateien sollte sich in ein und dem selben Ordner befinden, ggf. muessen sonst die einzelnen Pfadangaben angepasst werden!Zusaetzlich wird noch eine CSS Datei benoetigt,
welche die Darstellung des Ganzen etwas auffrischt, diese kann hier heruntergeladen werden ;)
Tutorial Dateien Downloaden
Viel Spass damit,
sollten Fragen zum Newssystem auftauchen oder gar Probleme damit bestehen, bitte die Kommentarfunktion hier nutzen ;)
Hinweis: Dieses Tutorial wurde am 01.03.2012 vom Autor ueberarbeitet - BBCode Darstellungsproblem des Archives behoben
Hinweis: Dieses Tutorial wurde am 01.02.2012 vom Autor ueberarbeitet - u.a. Kategorien hinzugefuegt, Gravatar Unterstuetzung eingebaut
Hinweis: Dieses Tutorial wurde am 07.05.2009 vom Autor ueberarbeitet - u.a. BBCode hinzugefuegt
Hinweis: Dieses Tutorial wurde am 11.09.2009 vom Autor ueberarbeitet...
Kommentar schreibenHinterlasse einen Kommentar
Du musst angemeldet sein, um einen Kommentar zu hinterlassen...
Du bist noch kein Mitglied von Alice-Grafixx.de?
Dann kannst du dich hier kostenlos registrieren ...