Xml To Mysql Db

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Xml To Mysql Db

    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!



    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($fp8192))
    !
    xml_parse($xml_parser$datafeof($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;
    ?>
    Last edited by quaigon; 15-06-2006, 17:50.

  • #2
    hat sich erledigt

    Comment

    Working...
    X