| Autor | Zpráva | ||
|---|---|---|---|
| Karlos Profil * |
#1 · Zasláno: 19. 5. 2015, 20:15:04
Čau lidi mám problém s importování podle SAX. V tomto kódu nejdou ukládat hodnoty z XML souboru do databáze.
Pokud tabulka není vytvořená tak se vytvoří. Psal jsem dotaz na tvrdo pro import a ten mi taky funguje. Řeším to již hodiny a nemohu najít řešení. Děkuji za odpovědi XML soubor: <?xml version='1.0' encoding='windows-1250'?> <?xml-stylesheet type='text/xsl' href='styl.xsl'?> <Kurzy> <Kurz id="29"> <jazyk>Nj</jazyk> <pocet>10</pocet> <rozsah>10</rozsah> <mesto>Praha</mesto> <cena>2500</cena> <lektori>1</lektori> <platnost>Plati</platnost> </Kurz> <Kurz id="30"> <jazyk>Aj</jazyk> <pocet>45</pocet> <rozsah>20</rozsah> <mesto>Brno</mesto> <cena>25000</cena> <lektori>3</lektori> <platnost>Neplati</platnost> </Kurz> </Kurzy> import (SAX) <?xml version='1.0' encoding='windows-1250'?>
<?xml-stylesheet type='text/xsl' href='styl.xsl'?>
<Kurzy>
<Kurz id="29">
<jazyk>Nj</jazyk>
<pocet>10</pocet>
<rozsah>10</rozsah>
<mesto>Praha</mesto>
<cena>2500</cena>
<lektori>1</lektori>
<platnost>Plati</platnost>
</Kurz>
<Kurz id="30">
<jazyk>Aj</jazyk>
<pocet>45</pocet>
<rozsah>20</rozsah>
<mesto>Brno</mesto>
<cena>25000</cena>
<lektori>3</lektori>
<platnost>Neplati</platnost>
</Kurz>
</Kurzy>
If a table is created and creates. This query works. It works when I write a query brazing. But I can not figure out why I'm not impose values from XML file.
<?php
$sql="CREATE TABLE IF NOT EXISTS Jazykove_kurzy (
ID int NOT NULL AUTO_INCREMENT,
jazyk text,
pocet int,
rozsah int,
mesto text,
cena int,
lektori int,
platnost text,
PRIMARY KEY(ID))";
if (!mysql_query($sql)) echo mysql_errno($spojeni);
$usercount = 0;
$lastdata = "";
$lastTag = "";
$userdata = array();
$file = "data.xml";
function startElement($xml_parser, $name, $attrs) {
global $tag, $userdata, $usercount, $lastdata, $lastTag;
$tag = $name;
}
function endElement($xml_parser, $name) {
global $tag, $userdata, $usercount, $lastdata, $lastTag;
$usercount++;
}
function characterData($xml_parser, $data) {
global $tag, $userdata, $usercount, $lastdata, $lastTag;
if(trim($data) != "") {
if(strcmp($lastTag, $tag) == 0) {
$data = $lastdata.trim($data);
$lastdata = $lastTag = "";
array_pop($userdata[$tag]);
$userdata[$tag][] = $data;
} else {
$lastdata = $data;
$lastTag = $tag;
$userdata[$tag][] = $data;
}
}
}
$xml_parser = xml_parser_create("utf-8");
xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, "utf-8");
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if(!($fp = fopen($file, "r"))) {
die("Nepodařilo se otevřít data.xml");
}
while($data = fread($fp, 4096)) {
if(!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("chyba: %s v řádku %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
for ($i=0;$i<=sizeof($userdata["jazyk"])-1;$i++)
{
$jazyk_hodnota = $userdata["jazyk"][$i];
$pocet_hodnota = $userdata["pocet"][$i];
$rozsah_hodnota = $userdata["rozsah"][$i];
$mesto_hodnota = $userdata["mesto"][$i];
$cena_hodnota = $userdata["cena"][$i];
$lektori_hodnota = $userdata["lektori"][$i];
$platnost_hodnota = $userdata["platnost"][$i];
$data=mysql_query("INSERT INTO `Jazykove_kurzy` (jazyk,pocet,rozsah,mesto,cena,lektori,platnost) VALUES ('$jazyk_hodnota', '$pocet_hodnota', '$rozsah_hodnota', '$mesto_hodnota',
'$cena_hodnota', '$lektori_hodnota', '$platnost_hodnota')");
}
if($data)
{
echo "<h2>Vaše data byla úspěšně uložena</h2>";
}
else
{
echo "<h2>Došlo k chybě při ukládání dat</h2>";
}
mysql_close();
?> |
||
| mimochodec Profil |
#2 · Zasláno: 19. 5. 2015, 20:59:40
Ten dotaz na ř. 102 si dej do nějaké proměnné a tu si vypiš, ať vidíš, co se snažíš provést.
|
||
| Karlos Profil * |
#3 · Zasláno: 19. 5. 2015, 21:22:46 · Upravil/a: Karlos
$prikaz="INSERT INTO `Jazykove_kurzy` (jazyk,pocet,rozsah,mesto,cena,lektori,platnost) VALUES ('$jazyk_hodnota', '$pocet_hodnota', '$rozsah_hodnota', '$mesto_hodnota',
'$cena_hodnota', '$lektori_hodnota', '$platnost_hodnota')";
if (mysql_query($prikaz)) echo "ok"; else echo mysql_errno($spojeni);Udělal jsem jen tuto změnu. Jinak, když si to chci vypsat, tak mi to nic nenapíše... mimochodec: Ale asi mi to nedochází, už na to civim dost dlouho na to abych z toho zmagořil.... |
||
| mimochodec Profil |
Karlos:
echo $prikaz; |
||
| Karlos Profil * |
#5 · Zasláno: 19. 5. 2015, 22:04:37
mimochodec:
Jo to jsem psal, že to nic nevypisuje. |
||
| mimochodec Profil |
#6 · Zasláno: 19. 5. 2015, 22:07:47
jj, dočetl jsem. Takže se to neprovádí. Co je v
$userdata["jazyk"] nad ř. 90?
|
||
| Karlos Profil * |
#7 · Zasláno: 19. 5. 2015, 22:12:11
mimochodec:
To se používá jen proto, aby bylo vidět kolikrát ma jít cyklus, jinak v tom je text, ale je tam sizeof. |
||
| mimochodec Profil |
Karlos:
Nepochopils, k čemu směřuji. Jestli ti to echo, co jsem psal, nic nevypisuje, ten for se neprovádí. Proč? To zjistíš pomocí var_dump ($userdata["jazyk"]).
|
||
| Karlos Profil * |
#9 · Zasláno: 20. 5. 2015, 08:07:25
Aha je tam NULL. Čili problém bude někde v XML, ze kterého můj kód nebere data do databáze...
|
||
|
Časová prodleva: 11 let
|
|||
0