Autor | Zpráva | ||
---|---|---|---|
Pavel Strašák Profil |
#1 · Zasláno: 18. 2. 2015, 13:57:07
Dobrý den,
Mám dva XML feedy, ze kterých importuji data do PHP scriptu, který později vygeneruje jeden XML soubor. První XML feed obsahuje produkty, druhý jejich ceny. Oba dva obsahují kromě dalších dat i kód produktu, podle kterého se přiřazuje cena (např. produkt má kód 1234, takže se k němu musí přiřadit cena, která má také kód 1234). Produktů je ve feedu velké množství a každý má unikátní kód. Momentálně používám tento kód : foreach( $root as $root ) { $cena = $root->getAttribute( 'price_vat' ); $cenaOdDodavatele = $root->getAttribute( 'price' ); $kodKPorovnani = $root->getAttribute( 'kod' ); if( $kodKPorovnani = $kod ) { $prodejniCena = $cena; $nakupniCena = $cenaOdDodavatele; } } Děkuji. Celý kód : <!DOCTYPE html> <head> <meta charset="utf-8"> <title>FlexiMedia XML importer</title> </head> <body> <?php $doc2 = new DOMDocument(); $doc2->load ( 'http://www.redo.cz/export_client.php' ); $root = $doc2->getElementsByTagName( "item" ); $doc = new DOMDocument(); $doc->load( 'http://www.redo.cz/publicdoc/cz_complete_03_nw.xml' ); $shop = $doc->getElementsByTagName( "product" ); $winstrom = array(); foreach( $shop as $product ) { $nazvy = $product->getElementsByTagName( "nazev" ); $nazev = $nazvy->item(0)->nodeValue; $kody= $product->getElementsByTagName( "kod" ); $kod= $kody->item(0)->nodeValue; $popisy = $product->getElementsByTagName( "popis" ); $popis = $popisy->item(0)->nodeValue; $shortpopisy = $product->getElementsByTagName( "popisshort" ); $popisshort = $shortpopisy->item(0)->nodeValue; $stavskladu = $product->getElementsByTagName( "stav" ); $stav = $stavskladu->item(0)->nodeValue; $kategorie = $product->getElementsByTagName( "category" ); $category = $kategorie->item(0)->nodeValue; $obrazky = $product->getElementsByTagName( "images" ); $images = $obrazky->item(0)->nodeValue; $vyrobci = $product->getElementsByTagName( "manufacturer" ); $vyrobce = $vyrobci->item(0)->nodeValue; $vlastnosti = $product->getElementsByTagName( "parameters" ); $vlastnost = $vlastnosti->item(0)->nodeValue; foreach( $root as $root ) { $cena = $root->getAttribute( 'price_vat' ); $cenaOdDodavatele = $root->getAttribute( 'price' ); $kodKPorovnani = $root->getAttribute( 'kod' ); if( $kodKPorovnani = $kod ) { $prodejniCena = $cena; $nakupniCena = $cenaOdDodavatele; } } if($stav = 0) { $dodacilhuta = 0; } else { $dodacilhuta = 5; } if($popisshort = "Gabol, Španělsko") { $kratkypopis = "$nazev, Gabol"; } else { $kratkypopis = "$popisshort"; } foreach($vlastnosti as $nazevVlastnosti) { $nazevVlastnosti1 = $nazevVlastnosti->item['name']; } echo "Název : <b>$nazev</b><br>Cena : $prodejniCena<br>Dodací lhůta je $dodacilhuta dnů<br>Krátký popis : $kratkypopis <br> Kód : $kod Je stejny jako tento ? $kodKPorovnani<br>Vlastnosti : $vlastnost - $nazevVlastnosti1<br>Popis : $popis\n<br>"; $winstrom [] = array( 'nazev' => $nazev, 'kod' => $kod, 'popis' => $popis, 'kratkyPopis' => $kratkypopis, 'dodaciLhuta' => "$dodacilhuta.0", 'vyrobce' => "code:GABOL", 'obrazek' => $images, 'linkPicture' => "true", 'dph' => 21, 'imgName' => "$images 1", 'imgType' => "image/jpeg", 'cena' => "$prodejniCena.0", 'zaruka' => 24, 'typceny' => "typCeny.bezDph", 'cena2' => $nakupniCena, ); } $doc = new DOMDocument('1.0', 'utf-8'); $doc->formatOutput = true; $r = $doc->createElement( "winstrom" ); $doc->appendChild( $r ); foreach( $winstrom as $cenik ) { $b = $doc->createElement( "cenik" ); $nazev = $doc->createElement( "nazev" ); $nazev->appendChild( $doc->createTextNode( $cenik['nazev'] ) ); $b->appendChild( $nazev ); $kod = $doc->createElement( "kod" ); $kod->appendChild( $doc->createTextNode( $cenik['kod'] ) ); $b->appendChild( $kod ); $typceny = $doc->createElement( "typCenyDphK" ); $typceny->appendChild( $doc->createTextNode( $cenik['typceny'] ) ); $b->appendChild( $typceny ); $popis = $doc->createElement( "popis" ); $popis->appendChild( $doc->createTextNode( $cenik['popis'] ) ); $b->appendChild( $popis ); $popisshort = $doc->createElement( "kratkyPopis" ); $popisshort->appendChild( $doc->createTextNode( $cenik['kratkyPopis'] ) ); $b->appendChild( $popisshort ); $dodacilhuta = $doc->createElement( "dodaciLhuta" ); $dodacilhuta->appendChild( $doc->createTextNode( $cenik['dodaciLhuta'] ) ); $b->appendChild( $dodacilhuta ); $zaruka = $doc->createElement( "zaruka" ); $zaruka->appendChild( $doc->createTextNode( $cenik['zaruka'] ) ); $b->appendChild( $zaruka ); $cenaDPH = $doc->createElement( "cenaZaklVcDph"); $cenaDPH->appendChild( $doc->createTextNode( $cenik['cena'] ) ); $b->appendChild ($cenaDPH); $vyrobce = $doc->createElement( "vyrobce" ); $vyrobce->appendChild( $doc->createTextNode( $cenik['vyrobce'] ) ); $atributShowAs2 = $doc->createAttribute('showAs'); $atributShowAs2->value = ( 'GABOL: REDO s.r.o.' ); $vyrobce->appendChild($atributShowAs2); $b->appendChild( $vyrobce ); $dodavatele = $doc->createElement( "dodavatele" ); $b->appendChild( $dodavatele ); $dodavatel = $doc->createElement( "dodavatel" ); $dodavatele->appendChild( $dodavatel ); $firma = $doc->createElement( "firma" ); $firma->appendChild( $doc->createTextNode( $cenik['gabol'] ) ); $atributShowAs = $doc->createAttribute('showAs'); $atributShowAs->value = ( 'GABOL: Gabol, Španělsko' ); $firma->appendChild($atributShowAs); $dodavatel->appendChild( $firma ); $nakupCena = $doc->createElement('nakupCena'); $nakupCena->appendChild( $doc->createTextNode( $cenik['cena2'] ) ); $dodavatel->appendChild( $nakupCena ); $prilohy = $doc->createElement( "prilohy" ); $b->appendChild( $prilohy ); $priloha = $doc->createElement( "priloha" ); $prilohy->appendChild( $priloha ); $link = $doc->createElement( "link" ); $link->appendChild( $doc->createTextNode( $cenik[ 'obrazek' ] ) ); $priloha->appendChild( $link ); $linkPicture = $doc->createElement( "linkPicture" ); $linkPicture->appendChild( $doc->createTextNode( $cenik[ 'linkPicture' ] ) ); $nazSoub = $doc->createElement( "nazSoub" ); $nazSoub->appendChild( $doc->createTextNode( $cenik[ 'imgName' ] ) ); $priloha->appendChild( $nazSoub ); $typSoub = $doc->createElement( "contentType" ); $typSoub->appendChild( $doc->createTextNode( $cenik[ 'imgType' ] ) ); $priloha->appendChild( $typSoub ); $szbDph = $doc->createElement( "szbDph" ); $szbDph->appendChild( $doc->createTextNode( $cenik['dph'] ) ); $b->appendChild( $szbDph ); $r->appendChild( $b ); } echo $doc->saveXML(); $doc->save("vystup.xml") ?> } </body> |
||
lionel messi Profil |
#2 · Zasláno: 18. 2. 2015, 14:01:11
Pavel Strašák:
Kód som bližšie neskúmal, ale základnou chybou je použitie operátora = na porovnávanie. Tento operátor totiž znamená priradenie. Porovnanie obstará operátor == .
|
||
Pavel Strašák Profil |
#3 · Zasláno: 18. 2. 2015, 14:06:44
lionel messi:
Děkuji za opravu, php jsem již delší dobu nepsal, takže jsem některé věci zapomněl. Bohužel, problém to nevyřešilo, XML stále vypisuje cenu 0 |
||
tiso Profil |
#4 · Zasláno: 18. 2. 2015, 16:05:28
foreach ($root as $item) { $kodKPorovnani = $item->getAttribute('kod'); if ($kodKPorovnani == $kod) { $prodejniCena = $item->getAttribute('price_vat'); $nakupniCena = $item->getAttribute('price'); break 1; } } |
||
Pavel Strašák Profil |
#5 · Zasláno: 18. 2. 2015, 16:37:02
tiso:
Děkuji, pomohlo :) |
||
Časová prodleva: 10 let
|
0