Już wiem mniej więcej co i jak:). Jednak cały czas mi sie dodaje do tabeli tak: 1 rekord poprawnie i 4 puste.
To jest kod php:
Kod
<?php
$file = "storey.xml";
$uchwyt=mysql_connect('localhost','root','')
or die('Nieudane połączenie z bazą danych...');
mysql_select_db('x-project')
or die('Nie udało się wybrać bazy danych...');
function trustedFile($file)
{
// only trust local files owned by ourselves
if (!preg_match("@^([a-z]+)\:\/\/@i", $file)
&& fileowner($file) == getmyuid()) {
return true;
}
return false;
}
function startElement($parser, $name, $attribs)
{
echo "<<font color=\"#0000cc\">$name</font>";
if (count($attribs)) {
foreach ($attribs as $k => $v) {
echo " <font color=\"#009900\">$k</font>=\"<font
color=\"#990000\">$v</font>\"";
$zapytanie="INSERT INTO storey (Id) values ('$v')";
$add=mysql_query($zapytanie);
if($add) echo 'Dodano nowy rekord<br>';
else echo 'Błąd podczas dodawania<br>';
}
}
echo ">";
}
function endElement($parser, $name)
{
echo "</<font color=\"#0000cc\">$name</font>>";
}
function characterData($parser, $data)
{
echo "<b>$data</b>";
$zapytanie="INSERT INTO storey (Storey) values ('$data')";
$add=mysql_query($zapytanie);
if($add) echo 'Dodano nowy rekord<br>';
else echo 'Błąd podczas dodawania<br>';
}
function PIHandler($parser, $target, $data)
{
switch (strtolower($target)) {
case "php":
global $parser_file;
// If the parsed document is "trusted", we say it is safe
// to execute PHP code inside it. If not, display the code
// instead.
if (trustedFile($parser_file[$parser])) {
eval($data);
} else {
printf("Untrusted PHP code: <i>%s</i>",
htmlspecialchars($data));
}
break;
}
}
function defaultHandler($parser, $data)
{
if (substr($data, 0, 1) == "&" && substr($data, -1, 1) == ";") {
printf('<font color="#aa00aa">%s</font>',
htmlspecialchars($data));
} else {
printf('<font size="-1">%s</font>',
htmlspecialchars($data));
}
}
function externalEntityRefHandler($parser, $openEntityNames, $base, $systemId,
$publicId) {
if ($systemId) {
if (!list($parser, $fp) = new_xml_parser($systemId)) {
printf("Could not open entity %s at %s\n", $openEntityNames,
$systemId);
return false;
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($parser, $data, feof($fp))) {
printf("XML error: %s at line %d while parsing entity %s\n",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser), $openEntityNames);
xml_parser_free($parser);
return false;
}
}
xml_parser_free($parser);
return true;
}
return false;
}
function new_xml_parser($file)
{
global $parser_file;
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
xml_set_processing_instruction_handler($xml_parser, "PIHandler");
xml_set_default_handler($xml_parser, "defaultHandler");
xml_set_external_entity_ref_handler($xml_parser, "externalEntityRefHandler");
if (!($fp = @fopen($file, "r"))) {
return false;
}
if (!is_array($parser_file)) {
settype($parser_file, "array");
}
$parser_file[$xml_parser] = $file;
return array($xml_parser, $fp);
}
if (!(list($xml_parser, $fp) = new_xml_parser($file))) {
die("could not open XML input");
}
echo "<pre>";
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d\n",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
echo "</pre>";
echo "parse complete\n";
xml_parser_free($xml_parser);
?>
a to jest plik xml
Kod
<?xml version="1.0" encoding="UTF-8"?>
<Storeys>
<Storey Id="kd08tf605rb85u">Piwnica</Storey>
<Storey Id="bad412q07arj3p">Przyziemie</Storey>
<Storey Id="1if1tik05rb85u">Parter</Storey>
<Storey Id="puvpps106gtmjv">Parter wersja II</Storey>
<Storey Id="ookef4l07jmfc3">Półpiętro</Storey>
<Storey Id="6dlstm705rb85u">Piętro I</Storey>
<Storey Id="vh8jtpq05rb85u">Piętro II</Storey>
<Storey Id="tglstte05rb85u">Poddasze</Storey>
<Storey Id="psr01gk07aouq4">Poddasze do adaptacji</Storey>
<Storey Id="m372hg906qseap">Poddasze II</Storey>
<Storey Id="faj0tu005v66is">Poddasze wersja II</Storey>
<Storey Id="0tnou1105rb85u">Strych</Storey>
<Storey Id="vt5nvuo06qs0k4">Antresola</Storey>
</Storeys>
Czy ktoś wie czemu tak sie dzieje? Pewnie w złym miejscu wywoluje dodawanie do bazy?