Um die Contenido-Navigation als XML auszugeben, wird zuerst eine Klasse xmlnav angelegt und mit einer Datenbankverbindungsfunktion versehen, weils für das Beispiel einfach praktisch ist:
class xmlnav { function connect() { include "config.inc.php"; //enthält nur Datenbanklogin $this->dbuser = $DBUSER; $this->dbpass = $DBPASS; $this->dbhost = $DBHOST; $this->dbname = $DBNAME; $dbh = mysql_pconnect($this->dbhost,$this->dbuser,$this->dbpass); if(!is_resource($dbh)) { echo "Es gab einen schwerwiegenden Fehler. Bitte versuchen Sie es später wieder"; } else { mysql_select_db($this->dbname,$dbh); return $dbh; } } }
Danach braucht es Funktionen die die Tabelle mit der Navi auslesen und daraus XML erstellen:
/* Funktion zur Rückgabe der URL-Namen aus der Tabelle con_art_lang Feld = urlname; */ function get_urlname() { $arrUrlname = array(); //Array zum Auffangen der urlnamen $query = "SELECT * FROM con_art_lang"; $result = mysql_query($query,$this->connect()); while($row = mysql_fetch_assoc($result)) { array_push($arrUrlname,$row["urlname"]); } return $arrUrlname; //Rückgabe des Arrays mit den urlnamen } /* Funktion zur Erstellung des xml-Files mit der URL-Namen-Navigation. */ function create_xml_from_urlname() { $arrUrlnameFromFunction = $this->get_urlname(); //Array zum Speichern der urlnamen aus der Rückgabe der o.s. Funktion echo "<xmlnav>"; foreach($arrUrlnameFromFunction as $value) { //Kleinschreibung $value = strtolower($value); //Startseite erkennen if(eregi("artseite",$value)) { $value = "/"; } echo "<nav name='$value' />"; } echo "</xmlnav>"; }
Die ganze Klasse sieht dann so aus:
/* * Created on 29.01.2007 * * To change the template for this generated file go to * Window – Preferences – PHPeclipse – PHP – Code Templates */ class xmlnav { function connect() { include "config.inc.php"; $this->dbuser = $DBUSER; $this->dbpass = $DBPASS; $this->dbhost = $DBHOST; $this->dbname = $DBNAME; $dbh = mysql_pconnect($this->dbhost,$this->dbuser,$this->dbpass); if(!is_resource($dbh)) { echo "Es gab einen schwerwiegenden Fehler. Bitte versuchen Sie es später wieder"; } else { mysql_select_db($this->dbname,$dbh); return $dbh; } } /* Funktion zur Rückgabe der URL-Namen aus der Tabelle con_art_lang Feld = urlname; */ function get_urlname() { $arrUrlname = array(); //Array zum Auffangen der urlnamen $query = "SELECT * FROM con_art_lang"; $result = mysql_query($query,$this->connect()); while($row = mysql_fetch_assoc($result)) { array_push($arrUrlname,$row["urlname"]); } return $arrUrlname; //Rückgabe des Arrays mit den urlnamen } /* Funktion zur Erstellung des xml-Files mit der URL-Namen-Navigation. */ function create_xml_from_urlname() { $arrUrlnameFromFunction = $this->get_urlname(); //Array zum Speichern der urlnamen aus der Rückgabe der o.s. Funktion echo "<xmlnav>"; foreach($arrUrlnameFromFunction as $value) { //Kleinschreibung $value = strtolower($value); //Startseite erkennen if(eregi(‚artseite‘,$value)) { $value = "/"; } echo "<nav name='$value' />"; } echo "</xmlnav>"; } }
Jetzt beötigen wir lediglich noch eine PHP-Datei, welche die Klasse includiert und PHP zurückgibt:
header("Content-Type: text/xml"); echo "<?xml version='1.0' ?>". "\n"; include "class.xmlnav.php"; $xmlnav = new xmlnav(); $xmlnav -> create_xml_from_urlname();
Diese Datei kann nun als XML-Quelle verwendet werden.