Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][xml]problem z xml php i pętlą, jak zrobić pętle ?
niko
post 6.09.2007, 13:09:00
Post #1





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 2.06.2005

Ostrzeżenie: (30%)
XX---


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 ?
Powód edycji: dodalem tag (cysiaczek)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
Cysiaczek
post 6.09.2007, 20:41:23
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




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 think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 19:57