Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][xml]problem z xml php i pętlą
Forum PHP.pl > Forum > Przedszkole
niko
mam plik xml:
  1. <?xml version='1.0' encoding='iso-8859-2'?><kraje>  <k>    <nk>Poland</nk>    <kk>pl</kk>    <ok>1001.00</ok>    <dk>501.00</dk>  </k>  <k>    <nk>Slovakia</nk>    <kk>sk</kk>    <ok>1002.00</ok>    <dk>502.00</dk>  </k></kraje>
mam w php taki skrypt:
  1. <?php$dane = file_get_contents(&#092;"plik.xml\");$parser = xml_parser_create();xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);xml_parse_into_struct($parser, $dane, $struktura);xml_parser_free($parser); foreach ($struktura as $klucz => $wartosc) { if ($wartosc[\"type\"]==\"open\" or $wartosc[\"type\"]==\"complete\") { if ($zamykajacy==$wartosc[\"tag\"]) {  eval('$nr = count($t'.$drzewo.'[\"'.$wartosc[\"tag\"].'\"]);'); } else $nr=0; $drzewo .= '[\"'.$wartosc[\"tag\"].'\"]['.$nr.']'; } if ($wartosc[\"type\"]==\"complete\") { // echo '$t'.$drzewo.'=\"'.$wartosc[\"value\"].'\";'.\"<br />\"; eval('$t'.$drzewo.'=\"'.$wartosc[\"value\"].'\";'); } if ($wartosc[\"type\"]==\"close\" or $wartosc[\"type\"]==\"complete\") { $drzewo = substr($drzewo,0,strrpos($drzewo,\"[\")); $drzewo = substr($drzewo,0,strrpos($drzewo,\"[\")); $zamykajacy = $wartosc[\"tag\"]; }} echo \"<pre>\";print_r($t);echo \"</pre>\";?>
robi mi sie tabelka i teraz jak sie odwołam do niej poprzez:
  1. <?php$nazwa_new=$t[&#092;"kraje\"][0][\"k\"][0][\"nk\"][0];$kod_new=$t[\"kraje\"][0][\"k\"][0][\"kk\"][0];$obrot_new=$t[\"kraje\"][0][\"k\"][0][\"ok\"][0];$dystrybutor_new=$t[\"kraje\"][0][\"k\"][0][\"dk\"][0];echo\"nazwa: <b>$nazwa_new</b> | kod: <b>$kod_new</b> | obrót: <b>$obrot_new</b> | ilość dystrybutorów: <b>$dystrybutor_new</b> |\";?>
to mi wszystko działa smile.gif jak zrobie sobie pętlę:
  1. <?phpfor($i=1;$i<250;$i++){ $nazwa_new=$t[&#092;"kraje\"][0][\"k\"][$i][\"nk\"][0]; $kod_new=$t[\"kraje\"][0][\"k\"][$i][\"kk\"][0]; $obrot_new=$t[\"kraje\"][0][\"k\"][$i][\"ok\"][0]; $dystrybutor_new=$t[\"kraje\"][0][\"k\"][$i][\"dk\"][0]; echo\"\"; print (\"<br>nazwa: <b>$nazwa_new</b> | kod: <b>$kod_new</b> | obrót: <b>$obrot_new</b> | ilość dystrybutorów: <b>$dystrybutor_new</b> |\");}?>
też mi działa ale nie chce jechać w pętli na stałe z ilością bo xml sie mi zmienia co do ilości - ktoś wie jak można zrobić to w
  1. <?phpforeach(){}?>
no ale już głowiłem sie nad tym foreach() i chodzi mi o to zeby wywlekało mi takie dane jak sobie ręcznie wywołuje czytałem o tej pętli ale nie bardzo umiem to zastosować sad.gif ktoś może mi pomóc ?
Cysiaczek
oj ; )

  1. <?php
  2. foreach($t['kraje'][0]['k'] as $klucz=>$wartosc_klucza)
  3. {
  4. print $wartosc_klucza[$klucz]['nk'][0];
  5. }
  6. ?>


Albo

  1. <?php
  2. $ilosc=count($t['kraje'][0]['k']);
  3. for($i=0; $i <= $ilosc; $i++)
  4. {
  5.  //tresc twojej petli for()
  6. }
  7. ?>


Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.