Gerch2003: Mehrere XML-Files aus einlesen und in Mysql-Tabelle schreiben

Beitrag lesen

Mein fertiger Code sieht jetzt so aus.
Weis nicht obs die beste Lösung ist, aber er funktioniert prächtig ;-)

Kurz zur Erklärung:

Das PHP-Script liest alle xml-Dateien aus dem Verzeichnis aus und speichert die XML-Attribute nacheinander in ein Array mit der Variable $inhalt[0], $inhalt[1] usw. (wichtig ist hierbei, dass ein Array bei 0 anfängt zu zählen.

Als letztes werden die Variablen mit den Inhalten in eine Mysql-Tabelle geschrieben.

Das alles geschieht nacheinander, sodass man für jedes XML-File eine einzelne Zeile bekommt.

WICHTIG: Das script funktioniert nur, wenn die XML-Files alle die selbe Struktur aufweisen!

WICHTIG: Das script muss sich außerdem im selben Verzeichnis wie die XML-Files befinden!

  
<?php  
  
	$SQL_Server = "localhost";  
	$SQL_User = "root";  
	$SQL_Pword = "1234";  
	$SQL_DB = "test";	  
	  
	mysql_connect($SQL_Server, $SQL_User, $SQL_Pword);  
	mysql_select_db($SQL_DB);  
	  
	foreach (glob("*.xml") as $filename)	{  
  
  
			if(file_exists($filename)) {  
			$xml = simplexml_load_file($filename);     //Lädt die XML-Dateien ein  
			$inhalt = array("$xml->Text1", "$xml->Text2", "$xml->Text3");     }   // $xml->Text1 bezieht sich auf das Attribut Text1 des XML-Files und muss angepasst werden.  
	  
	  
		mysql_query("INSERT INTO formular (Text1,Text2,Text3) VALUES ('".$inhalt[0]."','".$inhalt[1]."','".$inhalt[2]."')");  
  
       // (Text1,Text2,Text3) stellt die einzelnen Spalten in der Mysql-Tabelle dar und muss entsprechend angepasst werden.  
  
//Je nach Menge und Inhalt des XML-Files muss alles natürlich angepasst werden.  
  
    }	  
?> 

Nun noch die XML-Files, welche alle so aufgebaut sind.

<?xml version="1.0" encoding="utf-8"?>  
<user>  
  <Text1>Text1</Text1>  
  <Text2>Text2</Text2>  
  <Text3>Text3</Text3>  
</user>  

Die Struktur der Mysql-Tabelle ist wie folgt aufgebaut und muss natürlich auch angepasst werden:

CREATE TABLE IF NOT EXISTS `formular` (  
  `ID` int(11) NOT NULL auto_increment,  
  `Text1` varchar(100) collate latin1_general_ci NOT NULL,  
  `Text2` varchar(100) collate latin1_general_ci NOT NULL,  
  `Text3` varchar(100) collate latin1_general_ci NOT NULL,  
  PRIMARY KEY  (`ID`)  
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=13 ;

Was hierzu noch zu sagen ist, die ID wird nicht aus dem XML-File gelesen, sondern erhöht sich automatisch um 1 pro Zeile. Dies geschieht allerdings automatisch in der Mysql-Tabelle

So ich denke ich konnte es gut veranschaulichen und hoffe dass das Script auch bei euch funktioniert :-)

PS: dedlfix, danke für deinen Gedankenanstoß

Gruß