Autor Zpráva
bagocina
Profil
Pekný deň prajem

Na stránkach EÚ je slovník tovarov a služieb podľa tzv. CPV kódov. Tento celý slovník je dostupný vo viacerých jazykoch vo formáte .xml. Vybrať kód a názov v Slovenskom jazyku mi nerobí problém pomocou kódu:

$xml = simplexml_load_file('data/cpv_2008.xml');
$i = 1;
foreach($xml->CPV as $node) {
     echo "".$i++."<sub>)</sub>  ".$node['CODE']."- ".$node->TEXT[20]."<br>";
} 

CPV kód nie je priradený len tak. Je tvorený podľa pravidiel:


Prvé dve miesta určujú oddelenia (XX000000-Y);
Prvé tri miesta určujú skupiny (XXX00000-Y);
Prvé štyri miesta určujú triedy (XXXX0000-Y);
Prvých päť miest určuje kategórie (XXXXX000-Y);

Podľa týchto pravidiel by som potreboval spraviť select ako je na webe TU a taktiež nejaký strom, ktorý by mi zobrazil najprv najvyššie kategórie, po kliknutí na jednu z nich by sa rozbalili konkrétnejšie kategórie atď. No myslím, že ak budem vidieť hotový select, tak by som ten strom už nejak spackal.
XML je dostupný na stránkach .

Ďakujem veľmi pekne za pomoc.
Jan Tvrdík
Profil
Můžeš začít tím, že si ty data roztřídíš do asociativního pole.

$xml = simplexml_load_file('data/cpv_2008.xml');
$i = 1;
foreach($xml->CPV as $node) {
    $oddeleni = substr($node['CODE'], 0, 2);
    $skupina = substr($node['CODE'], 2, 1);
    $trida = substr($node['CODE'], 3, 1);
    $kategorie = substr($node['CODE'], 4, 1);
    
    $nodes[$oddeleni][$skupina][$trida][$kategorie] = $node;
}
bagocina
Profil
Ďakujem za radu.

Nakoniec budem potrebovať spraviť iba strom. Ten som spravil pomocou kódu:

$xml = simplexml_load_file('data/cpv_2008.xml');

foreach($xml->CPV as $node) {
    $oddelenie = substr($node['CODE'], 2, -2);
    $skupina1 = substr($node['CODE'], 2, 1);
    $skupina2 = substr($node['CODE'], 3, -2);    
    $trieda1 = substr($node['CODE'], 3, 1);
    $trieda2 = substr($node['CODE'], 4, -2);    
    $kategorie1 = substr($node['CODE'], 4, 1);
    $kategorie2 = substr($node['CODE'], 5, -2);    
    
if ($oddelenie == "000000") {     
  echo "<a href=''>".$node->TEXT[20]." - ".$node['CODE']."</a><br>\n";    
}

if ($skupina1 !== "0" AND $skupina2 == "00000") {        
  echo "&nbsp;&nbsp;&nbsp;<a href=''>".$node->TEXT[20]." - ".$node['CODE']."</a><br>\n";
  echo "</div>";
}

if ($trieda1 !== "0" AND $trieda2 == "0000") { 
  echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=''>".$node->TEXT[20]." - ".$node['CODE']."</a><br>\n";    
}

if ($kategorie1 !== "0" AND $kategorie2 == "000") {
  echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=''>".$node->TEXT[20]." - ".$node['CODE']."</a><br>\n";    
}
  
}

Len neviem ako vyriešiť rozklikávanie, ako to pri stromoch býva.

Ďakujem za rady.

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: