Autor | Zpráva | ||
---|---|---|---|
Pavlas Profil * |
#1 · Zasláno: 16. 1. 2018, 13:43:19
Dobrý den,
mám xml soubor s touto strukturou: <?xml version="1.0" encoding="utf-8"?> <items> <item objc="00400-3/8-12A" nazev="vršek mosazný - Myjava 3/8" čtyřhran T 12A (matička)" cena_vcetne_dph="44.77" obrazek="http://www.sagittarius.cz/img/_/p.00400-38-12a/00400-38-t12.jpg" /> <item objc="00400-3/8-24A" nazev="vršek mosazný 8/24 - 3/8" DLOUHÝ (čep)" cena_vcetne_dph="68.97" obrazek="http://www.sagittarius.cz/img/_/p.00400-38-24a/00400-38-24a.jpg" /> <item objc="00400-3/8-24B" nazev="vršek mosazný 8/24 - 3/8" KRÁTKÝ (matička)" cena_vcetne_dph="96.8" obrazek="http://www.sagittarius.cz/img/_/p.00400-38-24b/00400-38-24b.jpg" /> <item objc="00400360" nazev="slikonový kroužek k DRM 3113" cena_vcetne_dph="24.2" obrazek="" /> <item objc="00400531" nazev="gumový kroužek k DRM 3113" cena_vcetne_dph="12.1" obrazek="" /> </items> $xml=simplexml_load_file("cenik.xml") or die("Error: Cannot create object"); foreach($xml->item[0]->attributes() as $a => $b) { echo $a,'=',$b,"<br>"; } Toto mi vypíše pouze první řádek. Jak nejlépe udělat cyklus aby mi to vypsalo všechny řádky? Druhá otázka je zda to pak z tohoto výpisu mohu rovnou ukládat do DB Mysql? Děkuji |
||
Pavlas Profil * |
#2 · Zasláno: 16. 1. 2018, 15:01:46
$xml=simplexml_load_file("cenik.xml") or die("Error: Cannot create object");
for ($i=0; $i<10000; $i++) { foreach($xml->item[$i]->attributes() as $a => $b) { echo $a,'=',$b,"<br>"; } } toto sice vypíše vše ale asi to není úplně dobré, když neznám kolik je řádku... |
||
Kajman Profil |
#3 · Zasláno: 16. 1. 2018, 15:53:55
Zkuste
foreach($xml as $item) { foreach($item->attributes() as $a => $b) { echo $a,'=',$b,"<br>"; } } |
||
Pavlas Profil * |
#4 · Zasláno: 17. 1. 2018, 08:07:29
Děkuji toto funguje. Teď jsem si chtěl vypsat například pouze attribut nazev ale nic mi to nevypíše (prázdná stránka bez chyby): Potřeboval bych vypsat všechny attributy do samostatné proměnné a tu pak vkládat do DB. Děkuji
$xml=simplexml_load_file("cenik.xml") or die("Error: Cannot create object"); foreach ($xml as $item) { foreach ($item->attributes()->nazev as $nazev) { echo $nazev . "<br>"; } } |
||
Tomášeek Profil |
Pavlas:
Začni u základů jazyka, jak foreach pracuje, co mu předat máš a co mu předáváš. Takhle to fakt nefunguje.
foreach($item->attributes() as $item) { echo $item->nazev; } |
||
Pavlas Profil * |
#6 · Zasláno: 17. 1. 2018, 11:18:17
Děkuji. Foreach jsem studoval
foreach (array as $value){} - nicméně mi to stejně není jasné. Viz tvůj kód: Pole $item s atributy jeho klíč je použit $item z prvního foreach, následně chci vypsat jenom název (nevypíše nic), když dám jenom echo $item; vypíše vše.
|
||
Kajman Profil |
#7 · Zasláno: 17. 1. 2018, 11:36:03
Pokud chcete vypsat jen konkrétní atribut, tak nedělejte foreach na všechny atributy, ale vypište si jen ten chtěný...
foreach($xml as $item) { echo $item['nazev'],"<br>"; } |
||
Časová prodleva: 6 let
|
0