Meine mehr als 1.000 NW Artikel der letzten 6 Jahre habe ich in meine mySQL Datenbank übertragen. Das erleichtert den Überblick, ist gleichzeitig ein automatisches Backup und ermöglicht natürlich viele Möglichkeiten, die Texte mit eigenen neuen Scripten wieder beispielsweise nach Rubriken, Datum der Erstellung, Anzahl der Lesezugriffe etc. wieder auszugeben.
Und die Stichwortsuche wird leicht möglich, auf externe Tools wie die lokale Google-Suche kann verzichtet werden.
Letztendlich wird eine Übergabe der Inhalte in ein anderes CMS leichter möglich.
Das folgende Script überträgt bei jedem Aufruf der article.php die Artikelbestandteile plus Lese- und Comment-Counter in die Tabelle "n_archiv". Ist der Artikel schon in der DB gespeichert, werden nur die Zähler aktualisiert und das Datum des letzten Leseaufrufes gespeichert.
ACHTUNG! Das folgende Script ist nicht ready-to-use.
- Da ich nur den ersten Shorttext und den ersten Longtext verwende, entfallen entsprechende Felder in meinem Beispiel.
- Und Du musst du an anderer Stelle noch für die Herstellung der Datenbankverbindung sorgen.
Weiter unten findest du eine CREATE TABLE SQL Anweisung für die von mir verwendete Tabelle.
Artikel wird bearbeitet?Hier habe ich es mir einfach gemacht und eine Löschfunktion des Artikeldatensatzes in dem EDIT-Script des NW eingebaut. Der Artikel wird dort also vollständig entfernt, beim nächsten Useraufruf des Artikel wieder neu mit den Veränderungen eingefügt.
Hier der mySQL Teil, den ich an das Ende der article.php (vor dem letzten ?>) eingefügt habe:
// SQL Tabelle n_archiv mit Artikel füllen, Counter aktualisieren, Lastview eintragen
$date = date_german2mysql($article_data['DATE']);
$time = $article_data['TIME'];
$changeddate = date_german2mysql($article_data['CHANGEDDATE']);
$subtopic = $article_data['SUBTOPIC'];
$topic = $article_data['TOPIC'];
$title = $article_data['TITLE'];
$text = $article_data['TEXT'];
$article_text = $article_data['ARTICLE_TEXT'];
$email = $article_data['EMAIL'];
$article_no = substr($article_data['ARTICLE'], 0, strpos($article_data['ARTICLE'], '.'));
$image2text = $article_data['IMAGE2TEXT'];
$image3text = $article_data['IMAGE3TEXT'];
$link = $article_data['LINK'];
$link1 = $article_data['LINK1'];
$link2 = $article_data['LINK2'];
$url = $article_data['URL'];
$changedby = $article_data['CHANGEDBY'];
$inserted = date("d.m.y H:i");
$url_titel = $NWCONF_SYSTEM['domain_path'].'article/'.$article_data['TOPIC'].'/'.$article_no.'_'.$url_titel.'.html';
$search = mysql_query("SELECT * FROM n_archiv WHERE article_no = '$article_no'");
$searchresult = mysql_num_rows($search);
// Wenn nicht gefunden, dann einfügen ...
If ($searchresult == 0) {
$sql = "INSERT INTO n_archiv SET
date = '$date',
time = '$time',
changeddate = '$changeddate',
subtopic = '$subtopic',
topic = '$topic',
title = '$title',
text = '$text',
article_text = '$article_text',
name = '$changedby',
email = '$email',
url = '$url',
image1 = '$img1_url',
image1_align = '$img1_align',
image2 = '$img2_url',
image2_align = '$img2_align',
image2text = '$image2text',
image3 = '$img3_url',
image3_align = '$img3_align',
image3text = '$image3text',
link = '$link',
link1 = '$link1',
link2 = '$link2',
changedby = '$changedby',
article_no = '$article_no',
article_url = '$url_titel',
counter = '$counter_alt',
counter_comments = '$show_num',
lastview = '$inserted'"; }
else {
$sql = "UPDATE n_archiv SET lastview = '$inserted', counter = '$counter_alt', counter_comments = '$show_num', name = '$changedby' WHERE article_no = '$article_no'";
}
$result = mysql_query($sql);
/**
* date_german2mysql
* wandelt ein traditionelles deutsches Datum
* nach MySQL (ISO-Date).
*/
function date_german2mysql($datum) {
list($tag, $monat, $jahr) = explode(".", $datum);
return sprintf("%04d-%02d-%02d", $jahr, $monat, $tag);
}
Und hier der Code zum Erzeugen der Tabelle n_archiv, der dir die Arbeit erleichtern kann. Wie oben beschrieben, es fehlen zusätzliche Felder für Short und Longtexte 2 und 3:
CREATE TABLE n_archiv ( `id` int( 11 ) NOT NULL auto_increment ,
`DATE` date NOT NULL default '0000-00-00',
`LASTVIEW` varchar( 14 ) default NULL ,
`COUNTER` int( 4 ) NOT NULL default '0',
`COUNTER_COMMENTS` int( 4 ) default '0',
`TIME` time NOT NULL default '12:00:00',
`TOPIC` varchar( 50 ) NOT NULL default '',
`TITLE` varchar( 255 ) NOT NULL default '',
`TEXT` text NOT NULL ,
`ARTICLE_TEXT` text,
`NAME` varchar( 50 ) NOT NULL default '',
`SUBTOPIC` varchar( 255 ) NOT NULL default '',
`EMAIL` varchar( 100 ) NOT NULL default 'meine@mailadresse.de',
`URL` varchar( 255 ) default NULL ,
`LINK` varchar( 255 ) default NULL ,
`LINK1` varchar( 255 ) default NULL ,
`LINK2` varchar( 255 ) default NULL ,
`IMAGE1` varchar( 255 ) default NULL ,
`IMAGE1_ALIGN` varchar( 5 ) default NULL ,
`IMAGE2` varchar( 255 ) default NULL ,
`IMAGE2_ALIGN` varchar( 5 ) default NULL ,
`IMAGE3` varchar( 255 ) default NULL ,
`IMAGE3_ALIGN` varchar( 5 ) default NULL ,
`IMAGE2TEXT` varchar( 255 ) default NULL ,
`IMAGE3TEXT` varchar( 255 ) default NULL ,
`ARTICLE_NO` varchar( 10 ) NOT NULL default '',
`ARTICLE_URL` varchar( 255 ) default NULL ,
`CHANGEDDATE` date default '0000-00-00',
`CHANGEDBY` varchar( 50 ) default NULL ,
PRIMARY KEY ( `id` ) ,
UNIQUE KEY `ARTICLE_NO` ( `ARTICLE_NO` ) ) TYPE = MyISAM ;
Vielleicht mag es ja jemand für seine Website übernehmen.
Meine Beispielseiten zeigen die Ausgabe der NW Artikel aus der DB mit Headlines und verkürzten Vorspännen, sowie Links zu den Originalartikeln, die bei mir immer noch vom NW verwaltet werden:
http://www.berlin-bookmarks.de/berlin_news/archiv.phpViel Erfolg
Ralph