bonjour,
Sur une requête XPath je ne souhaite récupérer que les noeuds produit ayant un fils ville_dep qui vaut lyon par exemple ici,
sur ma lecture je récupère tous les noeuds.
Je ne comprend pas pourquoi ? un problème sur la requête ?
j'ai mis un fichier test si cela intéresse quelqu'un
Merci de m'éclairer
Code PHP :
<?
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 PHP :
]<?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>