| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

14-04-2005, 15:08
|
|
Claus
Newbie
|
|
Registriert seit: Jul 2001
Ort: Muncih
Beiträge: 88
|
|
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;
?>
Geändert von Claus (14-04-2005 um 15:20 Uhr)
|

14-04-2005, 15:11
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
|

14-04-2005, 15:13
|
|
Claus
Newbie
|
|
Registriert seit: Jul 2001
Ort: Muncih
Beiträge: 88
|
|
...I'm so sorry
|

14-04-2005, 15:16
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
|

14-04-2005, 15:21
|
|
Claus
Newbie
|
|
Registriert seit: Jul 2001
Ort: Muncih
Beiträge: 88
|
|
...jawohl boss
|

14-04-2005, 15:25
|
|
penizillin
PHP Guru
|
|
Registriert seit: Feb 2004
Beiträge: 10.166
|
|
wun-der-bar.
was ist denn mit testausgaben? wo genau klappt's denn nicht?
|

14-04-2005, 15:36
|
|
Claus
Newbie
|
|
Registriert seit: Jul 2001
Ort: Muncih
Beiträge: 88
|
|
... 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.
|

14-04-2005, 15:44
|
|
marc75
PHP Senior
|
|
Registriert seit: Jul 2003
Ort: daheim
Beiträge: 1.366
|
|
schonmal was von mysql_error() gehört?
und meinste das funktioniert so wie du gedacht hast?
PHP-Code:
while ($data = fread($fp, 8192))
!xml_parse($xml_parser, $data, feof($fp));
xml_parser_free($xml_parser);
$sql= "INSERT INTO `my_table` ( `";
__________________
mfg
marc75
<Platz für anderes>
|

14-04-2005, 15:56
|
|
Claus
Newbie
|
|
Registriert seit: Jul 2001
Ort: Muncih
Beiträge: 88
|
|
...mysql_error() sagt nichts
Und was das Andere betrifft: Siehst du was, was ich nicht sehe
go and get my glasses
|

14-04-2005, 16:05
|
|
marc75
PHP Senior
|
|
Registriert seit: Jul 2003
Ort: daheim
Beiträge: 1.366
|
|
PHP-Code:
//kann mich irren aber die while wiederholt nur die erste zeile
while ($data = fread($fp, 8192))
!xml_parse($xml_parser, $data, feof($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>
|

14-04-2005, 16:11
|
|
Claus
Newbie
|
|
Registriert seit: Jul 2001
Ort: Muncih
Beiträge: 88
|
|
...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
Geändert von Claus (14-04-2005 um 16:13 Uhr)
|

14-04-2005, 16:19
|
|
LJedi
Newbie
|
|
Registriert seit: Feb 2005
Beiträge: 54
|
|
Zitat:
|
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
__________________
...und wieder hat sich die Welt weitergedreht...
|

14-04-2005, 16:21
|
|
Claus
Newbie
|
|
Registriert seit: Jul 2001
Ort: Muncih
Beiträge: 88
|
|
...nein du bist nicht blind - habs gerade eingefügt
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|