![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 14.02.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam, potrzebuje pomocy.
Mam taki plik XML: <?xml version="1.0" encoding="utf-8"?> <produkty> <produkt> <nazwa>produkt 1</nazwa> <rozmiar>30</rozmiar> <kolor>20</kolor> <cena>23.30</cena> </produkt> <produkt> <nazwa>produkt 2</nazwa> <rozmiar>15</rozmiar> <kolor>10</kolor> <cena>11.30</cena> </produkt> <produkt> <nazwa>produkt 3</nazwa> <rozmiar>15</rozmiar> <kolor>12</kolor> <cena>11.30</cena> </produkt> <produkt> <nazwa>produkt 4</nazwa> <rozmiar>15</rozmiar> <kolor>12</kolor> <cena>16.30</cena> </produkt> </produkty> oraz mam taki plik PHP <?php $rekord = 1; $kolor = 12; $rozmiar = 15; $produktyXML = new DOMDocument(); $produktyXML->load('produkty.xml'); $xpath = new DOMXPath($produktyXML); $query = "produkt[rozmiar=$rozmiar and kolor=$kolor]"; $entries = $xpath->query($query); # pokaz ilosc elementów w wyniku echo $entries->length; #pokaz wszystkie elementy z zapytania (wybrane) foreach ($entries as $node){ echo $title = $node->getElementsByTagName("rozmiar")->item(0)->nodeValue; $author = $node->getElementsByTagName("kolor")->item(0)->nodeValue; echo "$title by $author\n"; } #pokaz element wybrany na podstawie numeru z całości $third = $produktyXML->getElementsByTagName('produkt')->item(0); echo sprintf('Nazwa elementu to: <b>%s</b>', $third->getElementsByTagName('rozmiar')->item(0)->nodeValue); ?> to wszytko działa, ale problemem jest że nie umiem wybrać elementu np. pierwszego czy drugiego z tych wyników spełniających warunek, a które są uzyskane z xpath. umiem wyrzucić wszystkie za koleją, ale nie umiem tego wybranego. Umiem wybrany element ale tylko z tych, które są wszystkie razem, ale nie tych które spełniają warunek który im założyłem. Może to banalne, ale dopiero uczę się php a z XML-em dopiero walczę od dwóch dni. W całości chodzi o to, że skoro mam wczytane elementy spełniające jakiś tam warunek i znam ich ilość to mógłbym zrobić stronicowanie wyników np. po 10 sztuk. Bo wybierał bym sobie: pokaz element 10, element 11 itp ![]() |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
$entries jest typu DOMNodeList. Do uzyskania konkretnego elementu użyj DOMNodeList.item
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 10.06.2024 - 16:08 |