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ß