Codehelper

Programmierung · Anleitungen · Codeschnipsel

Contenido Navigation als XML exportieren

18.08.2008 · PHP · XML

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";<em> //enthält nur Datenbanklogin</em>

		$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&auml;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:



<em>/*

Funktion zur Rückgabe der

URL-Namen aus der Tabelle con_art_lang

Feld = urlname;

*/

</em>



function get_urlname()

{

	$arrUrlname = array(); <em>//Array zum Auffangen der urlnamen</em>



	$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; <em>//Rückgabe des Arrays mit den urlnamen</em>

}



<em>

/*

Funktion zur Erstellung des xml-Files mit der

URL-Namen-Navigation.

*/

</em>



function create_xml_from_urlname()

{

	$arrUrlnameFromFunction = $this->get_urlname(); <em>//Array zum Speichern der urlnamen aus der Rückgabe der o.s. Funktion</em>



	echo "<xmlnav>";



	foreach($arrUrlnameFromFunction as $value)

	{

		<em>//Kleinschreibung</em>

		$value = strtolower($value);



		<em>//Startseite erkennen</em>

		if(eregi("artseite",$value))

		{

			$value = "/";

		}

		

		echo "<nav name='$value' />";

	}



	echo "</xmlnav>";



}

Die ganze Klasse sieht dann so aus:



<em>

/*

* Created on 29.01.2007

*

* To change the template for this generated file go to

* Window – Preferences – PHPeclipse – PHP – Code Templates

*/

</em>



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;

		}

	}



	<em>

	/*

	Funktion zur Rückgabe der

	URL-Namen aus der Tabelle con_art_lang

	Feld = urlname;

	*/

	</em>



	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

	}



	<em>

	/*

	Funktion zur Erstellung des xml-Files mit der

	URL-Namen-Navigation.

	*/

	</em>



	function create_xml_from_urlname()

	{

		$arrUrlnameFromFunction = $this->get_urlname(); <em>//Array zum Speichern der urlnamen aus der Rückgabe der o.s. Funktion</em>

		

		echo "<xmlnav>";



		foreach($arrUrlnameFromFunction as $value)

		{

			<em>//Kleinschreibung</em>

			$value = strtolower($value);



			<em>//Startseite erkennen</em>

			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.