xml -> sql

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • xml -> sql

    Servus,
    krieg es mit dem xml nicht auf die Reihe.
    Versuche mit folgendem script die Daten in die db zu schreiben.
    Bei der Ausgabe wird aber nur der letzte Datensatz angezeigt.
    Und er wird noch nicht einmal in die Tabelle eingefügt. Bin schon betriebsblind - vielleicht sieht einer mehr.
    PHP-Code:
    <?
    $file = "2784_2005-03-31_02-02-13.xml";
    $feed = array();
    $key = "";
    $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 `my_table` ( `";
    $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;
    ?>
    Zuletzt geändert von Claus; 14.04.2005, 13:20.

  • #2
    nicht ohne die php-tags

    Kommentar


    • #3
      ...I'm so sorry

      Kommentar


      • #4
        beweise es

        Kommentar


        • #5
          ...jawohl boss

          Kommentar


          • #6
            wun-der-bar.

            was ist denn mit testausgaben? wo genau klappt's denn nicht?

            Kommentar


            • #7
              ... echo $sql am Ende gibt nur den letzten Datensatz der xml-Datei aus:

              INSERT INTO `energia_vital` ( `merchantcategory` , `cat` , `mappingcategories` , `mfname` , `mfpn` , `name` , `brand` , `description` , `promotiontext` , `parameter`....

              Scheint also an der Schleife zu hapern.
              Es sollte dann aber wenigstens der Datensatz eingetragen werden - macht er aber auch nicht.

              Kommentar


              • #8
                schonmal was von mysql_error() gehört?

                und meinste das funktioniert so wie du gedacht hast?
                PHP-Code:
                  while ($data fread($fp8192))
                !
                xml_parse($xml_parser$datafeof($fp));
                xml_parser_free($xml_parser);

                $sql"INSERT INTO `my_table` ( `"
                mfg
                marc75

                <Platz für anderes>

                Kommentar


                • #9
                  ...mysql_error() sagt nichts

                  Und was das Andere betrifft: Siehst du was, was ich nicht sehe

                  go and get my glasses

                  Kommentar


                  • #10
                    PHP-Code:
                    //kann mich irren aber die while wiederholt nur die erste zeile

                    while ($data fread($fp8192))
                    !
                    xml_parse($xml_parser$datafeof($fp));
                    xml_parser_free($xml_parser);
                    //mach hier mal eine Testausgabe, und schau selbst
                    echo 123//beispiel 
                    danach gehe zu php.net und schaue unter while
                    mfg
                    marc75

                    <Platz für anderes>

                    Kommentar


                    • #11
                      ...hab auch gerade gesehen, dass nach while die { fehlt.
                      Jetzt werden alle Datensätze angezeigt.

                      PHP-Code:
                      INSERT INTO energia_vital ( `merchantcategory` , `cat` , ...'' )
                      VALUES ('Pflanzenextrakte''958''''''''Beschreibun€''''', ...'''http://....137.jpg''''6.95''',''
                      Dafür krieg ich jetzt ne Fehlermeldung
                      Warning: xml_parse(): 3 is not a valid XML Parser resource in
                      Und in die db wird auch nichts geschrieben - shit
                      Zuletzt geändert von Claus; 14.04.2005, 14:13.

                      Kommentar


                      • #12
                        Und in die db wird auch nichts geschrieben
                        vielleicht bin ich ja blind, aber ich seh auch nirgends in deinem Code einen Versuch in eine DB zu schreiben

                        Kommentar


                        • #13
                          ...nein du bist nicht blind - habs gerade eingefügt

                          Kommentar

                          Lädt...
                          X