Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [XML][PHP]Wyszukanie i wyświetlenie pozycji z XML, Jak ugryżć daną pozycję?
uglukha
post 20.10.2011, 14:39:14
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 5.05.2008

Ostrzeżenie: (0%)
-----


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!

Ten post edytował uglukha 20.10.2011, 14:41:44


--------------------
Death and Decay >.<
Go to the top of the page
+Quote Post
skowron-line
post 20.10.2011, 15:10:30
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


http://pl2.php.net/manual/en/simplexmlelement.xpath.php użyj tego narzędzia.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
uglukha
post 20.10.2011, 16:25:57
Post #3





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 5.05.2008

Ostrzeżenie: (0%)
-----


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?


--------------------
Death and Decay >.<
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: 18.07.2025 - 02:59