Autor Zpráva
Pavel Strašák
Profil
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;
}
}
Bohužel, tento kód vždy do XML exportuje pouze hodnotu 0 u každé ceny. Kde je chyba, popřípadě jak mám porovnat dva kódy v XML a přiřadit produktu cenu?

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
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
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
        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
tiso:
Děkuji, pomohlo :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: