Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge

 
Erweiterte Suche

6953 Beiträge in 1147 Themen- von 592 Mitglieder - Neuestes Mitglied: 0etzi

05-09-2008, 15:39:33
faqboard.info - SupportforumScriptfragenNewswriter News Management ScriptNewswriter ModdingNW Artikel in mySQL Tabelle sichern ... so geht`s
Seiten: [1]   Nach unten
Drucken
Autor Thema: NW Artikel in mySQL Tabelle sichern ... so geht`s  (Gelesen 426 mal)
Berlingo
Full Member
***
Offline Offline

Beiträge: 100



Profil anzeigen WWW
« am: 30-10-2007, 22:26:51 »

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:

Code:

// 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:

Code:
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.php

Viel Erfolg

Ralph
« Letzte Änderung: 30-10-2007, 22:31:37 von Berlingo » Gespeichert

NW SW 1.4 bei www.Berlin-Bookmarks.de - Berlins beste Seiten 2007
Seiten: [1]   Nach oben
Drucken
Gehe zu: