Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> DOM Wybór elementu wg numer
rafalddd
post 14.02.2011, 20:56:19
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 smile.gif
Go to the top of the page
+Quote Post
Noidea
post 14.02.2011, 21:05:35
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


--------------------
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: 10.06.2024 - 16:08