Folgendes Problem:
Ich muss ein XML File auslesen und später in eine Mysql Datenbank schreiben.
Dazu möchte ich einen Insert String basteln.
Das funktioniert mit dem folgendem Code s.u. auch wunderbar.
Jedoch liest er mir immer nur den ersten datensatz aus und
setzt nicht fort.
Wie muss ich die Schleife bauen um die weiteren Datensätze auch auszulesen?
Danke schon mal im vorraus für eure Hilfe!
Ich muss ein XML File auslesen und später in eine Mysql Datenbank schreiben.
Dazu möchte ich einen Insert String basteln.
Das funktioniert mit dem folgendem Code s.u. auch wunderbar.
Jedoch liest er mir immer nur den ersten datensatz aus und
setzt nicht fort.
Wie muss ich die Schleife bauen um die weiteren Datensätze auch auszulesen?
Danke schon mal im vorraus für eure Hilfe!
PHP-Code:
<?php
$file = "myfile.xml";
$feed = array();
$key = "Agencia";
$info = "";
function startElement($xml_parser, $attrs ) {
global $feed;
}
function endElement($xml_parser, $name) {
global $feed, $info;
$key = $name;
$feed[$key] = $info;
$info = ""; }
function charData($xml_parser, $data ) {
global $info;
$info .= $data; }
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "charData" );
$fp = fopen($file, "r");
while ($data = fread($fp, 8192))
!xml_parse($xml_parser, $data, feof($fp));
xml_parser_free($xml_parser);
$sql= "INSERT INTO `Agencias` ( `";
$j=0;
$i=count($feed);
foreach( $feed as $assoc_index => $value )
{
$j++;
$sql.= strtolower($assoc_index);
if($i>$j) $sql.= "` , `";
if($i<=$j) {$sql.= "` ) VALUES ('";}
}
$h=0;
foreach( $feed as $assoc_index => $value )
{
$h++;
$sql.= utf8_decode(trim(addslashes($value)));
if($i-1>$h) $sql.= "', '";
if($i<=$h) $sql.= "','')";
}
$sql=trim($sql);
echo $sql;
?>
Kommentar