requete xpath avec simplexml
bonjour,
Sur une requête XPath je souhaite récupérer que les noeuds produit
ayant un fils ville_dep qui vaut lyon,
sur ma lecture je récupère tous les noeuds, au lieu des 2 premiers
depart : 2007-11-12 à lyon
depart : 2007-10-15 à lyon
depart : 2007-10-01 à marseille
depart : 2007-09-03 à paris
Je débute dans ce langage
y'at'il un problème sur la requête ?
$produits = $document->xpath(utf8_encode("//produit[position()>=$debut_pos and position()<$fin_pos and prix/unprix/ville_dep='lyon']"));
Merci d'un avis
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
<?
define('NB_PAR_PAGE', 10);
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$document = simplexml_load_file('produits.xml');
$count = count($document->xpath("//produit[prix/unprix/ville_dep='lyon']"));
$debut_pos = ($page - 1) * NB_PAR_PAGE + 1;
$fin_pos = $page * NB_PAR_PAGE + 1; $derniere_page = ceil($count / NB_PAR_PAGE);
if ($count > 0) {
$produits = $document->xpath(utf8_encode("//produit[position()>=$debut_pos and position()<$fin_pos and prix/unprix/ville_dep='lyon']"));
foreach ($produits as $produit) {
$nomp = utf8_decode((string) $produit->nom_produit);
$ville = utf8_decode((string) $produit->ville_dest);
$dep = utf8_decode((string) $produit->prix->unprix[1]->date_dep);
$desc = utf8_decode((string) $produit->accroche);
$img = utf8_decode((string) $produit->img_produit);
$pri = utf8_decode((string) $produit->prix->unprix[1]->prix);
$lien = ''; // Variable indéfinie sans
echo '<table width="90%" border="0" align="center">
foreach ($produit->prix->unprix as $unprix) {
echo '<tr>
<td>depart : ' . utf8_decode((string) $unprix->date_dep) . ' à ' . utf8_decode((string) $unprix->ville_dep) . '</td>
</tr>';
}
echo '</table>'; |
[CODE]
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <?xml version="1.0" encoding="utf-8"?>
<produit>
<nom_fournisseur>nom du fournisseur</nom_fournisseur>
<prix>
<unprix>
<ville_dep>lyon</ville_dep>
<date_dep>2007-11-12</date_dep>
<prix_produit>3621</prix_produit>
</unprix>
<unprix>
<ville_dep>lyon</ville_dep>
<date_dep>2007-10-15</date_dep>
<prix_produit>3981</prix_produit>
</unprix>
<unprix>
<ville_dep>marseille</ville_dep>
<date_dep>2007-10-01</date_dep>
<prix_produit>3981</prix_produit>
</unprix>
<unprix>
<ville_dep>paris</ville_dep>
<date_dep>2007-09-03</date_dep>
<prix_produit>3521</prix_produit>
</unprix>
</prix>
</produit> |