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: 10 let
|
0