phpbar.de logo

Mailinglisten-Archive

AW: DB-Tabelle -> XML

AW: DB-Tabelle -> XML

Dirk Lingstädt mysql-de_(at)_lists.bttr.org
Fri, 19 Apr 2002 08:47:14 +0200


Hallo,
ich nehme immer das folgende skript. das kann man auch leicht abwandeln und
die db-feldnamen als 'sprechende' xml-tags mitführen (array).
Gruß, Dirk
<?php

	require_once("inc.class.genxml.php4");

	$X = new XML();

	$X->SqlString = "SELECT * FROM `tbl` LIMIT 0, 30;";
	$X->Type = 1;
	$X->DB = "dbn";
	$X->DBhost = "dbh";
	$X->DBuser = "dbu";
	$X->DBpassword = "dbp";

	$X->DoXML();

?>


<?php /* Seite: inc.class.genxml.php4 */

class XML
{
	var $SqlString;
	var $IsError; 		// 1 there is a problem !!!
	var $ErrorString; 	// If there is an error, this string explains it
	var $Type; 			// Which format do you want your XML ?
	var $DB; 			// Database Name
	var $DBhost; 		// Database Host
	var $DBuser; 		// DataBase User
	var $DBpassword; 		// DataBase Password

// HERE I explain $Type

/* For Example :
1 (default) each value are in a tag called data
		<dataxml>
			<row>
				<data>value field1 row1</data>
				<data>value field2 row1</data>
				<data>value field3 row1</data>
			</row>
			<row>
				<data>value field1 row2</data>
				<data>value field2 row2</data>
				<data>value field3 row2</data>
			</row>
		</dataxml>

2 each value is in a tag called dataN , where N is a position of field
		<dataxml>
			<row>
				<data1>value field1 row1</data1>
				<data2>value field2 row1</data2>
				<data3>value field3 row1</data3>
			</row>
			<row>
				<data1>value field1 row2</data1>
				<data2>value field2 row2</data2>
				<data3>value field3 row2</data3>
			</row>
		</dataxml>

3 each value is in a tag called with the name of field
		<dataxml>
			<row>
				<fieldname1>value field1 row1</fieldname1>
				<fieldname2>value field2 row1</fieldname2>
				<fieldname3>value field3 row1</fieldname3>
			</row>
			<row>
				<fieldname1>value field1 row2</fieldname1>
				<fieldname2>value field2 row2</fieldname2>
				<fieldname3>value field3 row2</fieldname3>
			</row>
		</dataxml>

4 each value is in a tag with an attributes called fieldname with the name
of field
		<dataxml>
			<row>
				<data fieldname="fieldname1">value field1 row1</data>
				<data fieldname="fieldname2">value field1 row1</data>
				<data fieldname="fieldname3">value field1 row1</data>
			</row>
			<row>
				<data fieldname="fieldname1">value field1 row2</data>
				<data fieldname="fieldname2">value field1 row2</data>
				<data fieldname="fieldname3">value field1 row2</data>
			</row>
		</dataxml>


*/

function XML()
{
	// Initialize the values with DEFAULT value
	$this->IsError=0;
	$this->Type=1;
	$this->ErrorString="NO errors ;)";
	$this->SqlString="";
}

function MakeConnection ()
{
	$link = mysql_connect ($this->DBhost, $this->DBuser, $this->DBpassword) or
die ("I can't connect with DataBase :(");
	mysql_select_db ($this->DB) or die ("I'm connecting with Database Server
but I can't select your DB.");
	return $link;
}


function DoXML()
{
	if ($this->SqlString=="")
	{
		$this->IsError=1;
		$this->ErrorString="Error in Sql Query !!!";
		return -1;
	}
	$link=$this->MakeConnection();
	$result = mysql_query($this->SqlString, $link);
	if ($result==FALSE)
	{
		$this->IsError=1;
		$this->ErrorString="Error in SQL Query : ".$this->SqlString;
		return -1;
	}
	// OK... let's create XML ;)
	echo "<?xml version=\"1.0\"?>\n";
	echo "<dataxml>\n";
	// HEADER With the name of fields
	echo "	<fields>\n";
	$i = 0;
	$FieldsVector=array();
	while ($i < mysql_num_fields ($result))
	{
		$meta = mysql_fetch_field ($result);
		if ($meta)
		{
			echo "		<field>".$meta->name."</field>\n";
			$FieldsVector[]=$meta->name;
			$i=$i+1;
		}
	}
	echo "	</fields>\n";
	// And NOW the Data ...
	echo "	<rows>\n";
	while ($row = mysql_fetch_array ($result))
	{
		echo "		<row>\n";
		for ($j=0; $j<$i; $j++)
		{
			$FieldName="";			// Name of TAG
			$Attributes="";
			switch ($this->Type)
			{
				case 1:
					$FieldName="data";
					break;
				case 2:
					$FieldName="data".$j;
					break;
				case 3:
					$FieldName=$FieldsVector[$j];
					break;
				case 4:
					$FieldName="data";
					$Attributes=" fieldname=\"".$FieldsVector[$j]."\"";
			}
			echo "			<".$FieldName.$Attributes.">".$row[$j]."</".$FieldName.">\n";
		}
		echo "		</row>\n";
	}
	echo "	</rows>\n";
	echo "</dataxml>";
	//OK free ...  ;)
	mysql_free_result($result);
	mysql_close ($link);
} // End  Function : DoXML
} // Fine Class XML
?>




-----Ursprüngliche Nachricht-----
Von: mwolf_(at)_suedstern-ag.de [mailto:mwolf_(at)_suedstern-ag.de]
Gesendet: Donnerstag, 18. April 2002 11:22
An: mysql-de_(at)_lists.4t2.com
Betreff: DB-Tabelle -> XML


Hallo!

Bevor ich anfange ein php-script (oder auch in perl) zu schreiben,
welches meine
MySql-Tabellen in ein XML-Format  konvertiert (d.h. in die einfachste
Umsetzung -> Tabspalte = XML-Tag Tabname = XML-Root) und damit einen Tag
verbringe einfach eine Umfrage an Euch, ob es schon etwas dieser Art
gibt.
Es würde mich wundern, wenn noch keiner vor mir auf diesen Gedanken
gekommen ist.

Ich bedanke mich fuer jeden Hinweis schon einmal im voraus.
Markus

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive