Ændring af data fra: D0 til fx: ok
Scriptet spiller 100%, men har dog brug for, at ændre D0 i linie$data = $GLOBALS['data']['D0']['D1'];
til en text med små bogstaver fx: ok
Hvordan kan det værre, at et stort "OK" virker 100% i linie:
$data = $GLOBALS['data']['OK']['D1'];
- men, at et lille "ok" fejler i linie:
$data = $GLOBALS['data']['ok']['D1'];
og som i øvrigt giver følgende fejlmeddelse:
Warning: Invalid argument supplied for foreach() in /var/www/xxx/html/test/testxml.php on line 41
Warning: First argument to array_keys() should be an array in /var/www/xxx/html/test/testxml.php on line 50
Warning: Bad arguments to implode() in /var/www/xxx/html/test/testxml.php on line 50
Warning: Invalid argument supplied for foreach() in /var/www/xxx/html/test/testxml.php on line 51
##
<?php
$GLOBALS['data'] = array();
$GLOBALS['current'] =& $GLOBALS['data'];
function startTag($parser, $name, $attribs) {
$GLOBALS['current'][$name]['parent'] =& $GLOBALS['current'];
$GLOBALS['current'] =& $GLOBALS['current'][$name];
}
function endTag($handler, $name) {
$temp =& $GLOBALS['current'];
$GLOBALS['current'] =& $temp['parent'];
unset($temp['parent']);
}
function data($handler, $data) {
$data = trim($data);
if(!empty($data)) {
$GLOBALS['current'][] = $data;
}
}
$parser = xml_parser_create('') or die('Failed to create parser');
xml_set_element_handler($parser, 'startTag', 'endTag') or die ("Failed to set element handler");
xml_set_character_data_handler($parser, 'data') or die ("Failed to set data handler");
$fp = fopen('http://www.dummydummy.dk/data.xml', 'r');
while ($xml = fread($fp, 4096))
xml_parse($parser, $xml, feof($fp))
or die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
fclose($fp);
xml_parser_free($parser);
$data = $GLOBALS['data']['D0']['D1'];
foreach($data as $name => $value) {
foreach($value as $index => $text) {
$tempArr[$index][$name] = $text;
}
}
$db = mysql_connect('xxx', 'yyy', 'zzz');
mysql_select_db('xxx', $db);
$dbfields = "D0, D1, " . implode(', ', array_keys($tempArr[0]));
foreach($tempArr as $value) {
$dbdata = implode("', '", $value);
$sql = "INSERT INTO table ($dbfields) VALUES('D0', 'D1', '$dbdata')";
mysql_query($sql, $db);
}
mysql_close($db);
?>
##
