Datenbank abfrage mit PHP als xml speichern?

kollo2411

Mitglied
Hi leute habe hier ein kleines problem ich holte mir aus der Datenbank meine tabellen und habe es auch soweit das mir diese auf dem Bildschirm im XML format angezeigt werden nur möchte ich diese auch in einer xml datei speichern nur komm ich da nicht weiter mit fopen,fwrite usw hier mal mein code

if(isset($_POST['xml']))
{


/*--- Verbindung zur Datenbank aufbauen ---*/
$dbhost = 'localhost';
$dbuser = 'user';
$dbpass = 'passwort';
$dbdata = 'datenbankname';

mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
mysql_select_db($dbdata) or die(mysql_error());

/*--- Deklarierung der per Post übergebenen Daten ---*/
$dbtabelle = $_POST['tabellenname'];
$felder = $_POST['felder'];


$dbtable = $_POST['tabellenname'];
mysql_select_db($dbdata);

$result = mysql_query("SELECT $felder FROM $dbtable");

$XMLDoc = new SimpleXMLElement("<?xml version='1.0' encoding='UTF-8' standalone='yes'?><root></root>");

while($dbrow = mysql_fetch_object($result))
{
$xmlrow = $XMLDoc->addChild($dbtabelle);

foreach($dbrow as $Spalte => $Wert)
{
$xmlrow->$Spalte = $Wert;
}
}

echo $XMLDoc->asXML();





}



?>
 
Also ich geh mal davon aus, dass das XML, was über echo ausgegeben wird, korrekt ist. Dann ist das ganz einfach:

PHP:
$fd = fopen("my_file.xml", "w");
if($fd)
{
  fputs($fd, $XMLDoc->asXML() );
  fclose($fd);
}
 
Hey danke für den tipp eine frage hab ich noch wie bekomme ich es hin das die daten von oben nach unten geschrieben werden und nich wie momentan von links nach rechts bis zum zeilen ende
 
Hey danke für die nützlichen Tipps, nun muss ich das ganze noch als Vcard exportieren!? Nun frag ich mich wie das gehen soll? Und im Netz finde ich fast keine Infos, kann man den Xml Export umbauen oder ist das ne andere Geschichte?
 
Zuletzt bearbeitet:
Ja aber ich muss die ja aus einer Datenbankabfrage füllen, nicht mit festen Daten oder verstehe ich das falsch in deinem beispiel
 
Zuletzt bearbeitet:
Hi, hier noch ein kurzer Vorschlag zum XML-Export.

Ich würde statt SimplXML und dann noch den Beautifier definitiv auf XMLWriter zurückgreifen, der ist fest eingebaut (ab PHP 5) und formatiert direkt richtig und kann direkt in eine Ausgabedatei schreiben. Verwendung gestaltet sich etwa so:
PHP:
$xml = new XMLWriter();

$xml->openURI($DATEI);
$xml->setIndent(true);
$xml->setIndentString(' ');
$xml->startDocument();
...
$result = mysql_query("SELECT $felder FROM $dbtable");

while($dbrow = mysql_fetch_object($result))
{
  $xml->startElement($dbtabelle);

  foreach($dbrow as $Spalte => $Wert)
  {
    $xml->writeElement($Spalte, $Wert);
  }

  $xml->endElement();
}
...
$xml->flush();
 
Hey danke,

nur wie schreibt der das denn nun in die Datei?
Weil das mit openURI($Datei); ist doch nicht die Pfad angabe oder versteh ich das falsch?
Bekomme immer die Meldung Catchable fatal error: Object of class XMLWriter could not be converted to string
 
Zuletzt bearbeitet:
Zurück