Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][PHP]Wyszukanie i wyświetlenie pozycji z XML
Forum PHP.pl > Forum > Przedszkole
uglukha
Witajcie,
trochę się namęczyłem żeby okroić kod i masę niepotrzebnych Wam do czytania rzeczy do niezbędnego minimum smile.gif A więc tak, chciałbym wyszukać i wyświetlić na stronie pozycje z XML. Utknąłem w głupim miejscu, ale nie wiem jak to ugryźć.

XML wygląda tak:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <wszystkie>
  3.  
  4. <prd>
  5. <nam>nazwa</nam>
  6. <tit>tytul</tit>
  7. <cen>30</cen>
  8. <prm>0</prm>
  9. <frm>4</frm>
  10. <sek>2</sek>
  11. <stn>5</stn>
  12. <wag>987</wag>
  13. </prd>
  14.  
  15. <prd>
  16. <nam>nazwa2</nam>
  17. <tit>tytul2</tit>
  18. <cen>49</cen>
  19. <prm>0</prm>
  20. <frm>1</frm>
  21. <sek>5</sek>
  22. <stn>2</stn>
  23. <wag>1000</wag>
  24. </prd>
  25.  
  26. </wszystkie>



Chodzi mi teraz o wyszukanie pozycji <prd> tych, w których <stn> wynosi 2. Czyli w tym przykładzie będzie to drugi "wpis" z xmla.

Mój kod:
  1. $xmlstr = file_get_contents('plik.xml'); //zaladowanie .xml
  2. $xml = new SimpleXMLElement($xmlstr); //przygotowanie .xml do uzycia
  3. $ilosc = count(explode('<prd>', $xmlstr)); //tym licze ile jest sumie pozycji
  4. $szukane = count(explode('<stn>2</stn>', $xmlstr)); //tym licze ile jest pozycji z stn 2, aby zrobic petle do wyswietlania majaca ilosc krokow rowna $szukane
  5.  
  6. //i co dalej?
  7.  
  8. //i tu jeszcze petla
  9.  
  10. while ($szukane == 0):
  11. echo $xml->prd[$a]->nam;
  12. echo $xml->prd[$a]->tit; //itd
  13. $szukane=$szukane-1;
  14. endwhile;
  15.  


I teraz moje pytanie, jak stwierdzić, że ten szukany <stn>2</stn> jest w pozycji numer 2, aby na stronie wyświetlić nie tylko szukane 2, ale i całą resztę czyli:
Cytat
nam=nazwa2
tit=tytul2
cen=49
prm=0
frm=1
sek=5
stn=2
wag=1000


Mam nadzieję, że w miarę jasno to opisałem ;(

Dzięki za pomoc i pozdrawiam!
skowron-line
http://pl2.php.net/manual/en/simplexmlelement.xpath.php użyj tego narzędzia.
uglukha
Hej skowron-line,
dzięki za odpowiedź,ale niestety tą funkcją się nie da tego zrobić, ona wyszukuje czy istnieje, w moim przypadku, prd/stn, ale nie sprawdzi jaka jest wartość w stn.

  1. $result = $xml->xpath('prd/stn');
  2.  
  3. while(list( , $node) = each($result)) {
  4. echo 'stn: ',$node,"\n";
  5. }


Jeszcze jakieś propozycje?
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.