Autor Zpráva
Manny
Profil *
Ahoj, pokouším se uložit data z XML, která mají následující strukturu:
<product> 
<a>a</a>
 <b>b</b>
 <c>c</c>
 <d name="barva/velikost">
  <d_varianta value="zluta/s">
  <d_varianta value="zelena/m">
 </d>
</product>


<product> 
<a>a</a>
 <b>b</b>
 <c>c</c>
 <d name="barva">
  <d_varianta value="zluta">
  <d_varianta value="zelena">
 </d>
</product>


<product> 
<a>a</a>
 <b>b</b>
 <c>c</c>
 <d name="velikost">
  <d_varianta value="s">
  <d_varianta value="m">
 </d>
</product>


V prvním případě, kdy c name="barva/velikost" zpracovat umím - na řádek si ulopříslušnou barvu s velikostí (kolik d_varianta value, tolik řádků).

Problém ale nastává u těch zbylých 2 variant - potřebuji to uložit do db stejně, jako v prvním případě, avšak zde to potřebuji nějak takto:
zluta s
zluta m
zelena s
zelena m


Zkouším to zpracovat nějak takhle, ale ten druhý způsob se mi stále nedaří:
foreach()
{
...zde nacitam obsah elementu a, b, c

foreach()
{
..zde vnorene elementy (element d)

if($variant['name'] == 'barva')
{
...zde jsem nejak chtel zpracovat, kdy d name="barva"
}

elseif($variant['name'] == 'velikost')
{
...zde jsem nejak chtel zpracovat, kdy d name="velikost" a pak to ulozit do db, ale nevim jak :/
}

if($variant['name'] == 'Barva/Velikost')
{
...a tady ukladam hned tu prvni variantu - jde v poradku
}
}
}


Kdyby někdo poradit, jak ukládat tu barvu a velikost do tabulky, byl bych rád:)
tiso
Profil
Manny: 2. a 3. produkt majú ten istý názov? Alebo skrátka nie je uvedený jeden z parametrov a pre druhý sa majú použiť všetky možnosti? Poprosím upresniť.
Manny
Profil *
tiso
Udělal jsem tam ale chybu, správně to XML má vypadat takto"

<product> 
<a>a</a>
 <b>b</b>
 <c>c</c>
 <d name="barva/velikost">
  <d_varianta value="zluta/s">
  <d_varianta value="zelena/m">
 </d>
</product>


<product> 
<a>a</a>
 <b>b</b>
 <c>c</c>
 <d name="barva">
  <d_varianta value="zluta">
  <d_varianta value="zelena">
 </d>
 <d name="velikost">
  <d_varianta value="s">
  <d_varianta value="m">
 </d>
</product>


Předpokládejme, že v XML jsou 2 produkty a mjí strukturu takovou, jaká tam je uvedena. Potřebuji je uožit do db. U toho prvního produktu to zvládám uložit pomocí explode. Problém ale nastává u toho druhého, kdy nevím jak to zpracovat
tiso
Profil
V tom prípade:
//vytiahnut vsetky farby do pola $param1
//vytiahnut vsetky velkosti do pola $param2
foreach($param1 as $val1){
  foreach($param2 as $val2){
    //vloz produkt do databazy
  }
}
Lamicz
Profil
Manny: ve well-formed XML by IMHO mel byt root element, ktery obaluje cely XML tree, napr.:
<products>
<product>
...
</product>
<product>
...
</product>
</products>
Manny
Profil *
Lamicz
???

tiso
takhle nějak jsem to chtěl udělat, ale problém nastal s tím ukládáním do pole:
foreach()
{
...zde nacitam obsah elementu a, b, c

foreach()
{
..zde vnorene elementy (element d)

if($variant['name'] == 'barva')
{
 $pole=Array();
$pole[]=$nactena-hodnota-z-xml; //tak tady se mi ulozila jen ta posledni hodnota vzdycky - byla tam tedy vzdy jen jedna
...zde jsem nejak chtel zpracovat, kdy d name="barva"
}

elseif($variant['name'] == 'velikost')
{
...zde jsem nejak chtel zpracovat, kdy d name="velikost" a pak to ulozit do db, ale nevim jak :/
}

if($variant['name'] == 'Barva/Velikost')
{
...a tady ukladam hned tu prvni variantu - jde v poradku
}
}
}


Nevím kde ta pole přesně definovat, když jsem to pole definoval před podmínkami ještě, tak se mi do něj neuložilo vůbec nic :/ a když v podmínce, tak vždy jen ta poslední hodnota (jak je to v zdrojáku)

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: