Requete avec simplxml

pepitodo Messages postés 7 Date d'inscription samedi 27 janvier 2007 Statut Membre Dernière intervention 13 octobre 2012 - 10 mai 2011 à 10:42
pepitodo Messages postés 7 Date d'inscription samedi 27 janvier 2007 Statut Membre Dernière intervention 13 octobre 2012 - 10 mai 2011 à 10:46
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



<?
            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 'foreach ($produit->prix->unprix as $unprix) {
echo '----

depart : ' . utf8_decode((string) $unprix->date_dep) . ' à ' . utf8_decode((string) $unprix->ville_dep) . ',
';
}
        echo '
';






]<?xml version="1.0" encoding="utf-8"?>

    <nom_fournisseur>nom du fournisseur</nom_fournisseur>
    
       
        <ville_dep>lyon</ville_dep>
        <date_dep>2007-11-12</date_dep>
        3621


      
      
        <ville_dep>lyon</ville_dep>
        <date_dep>2007-10-15</date_dep>
        3981


      
      
        <ville_dep>marseille</ville_dep>
        <date_dep>2007-10-01</date_dep>
        3981


      
      
        <ville_dep>paris</ville_dep>
        <date_dep>2007-09-03</date_dep>
        3521


      
    


  


   

1 réponse

pepitodo Messages postés 7 Date d'inscription samedi 27 janvier 2007 Statut Membre Dernière intervention 13 octobre 2012
10 mai 2011 à 10:46
Désolé, je reposte le code php, il en manque une partie sur le premier posté !


<?
            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 'foreach ($produit->prix->unprix as $unprix) {
echo '----

depart : ' . utf8_decode((string) $unprix->date_dep) . ' à ' . utf8_decode((string) $unprix->ville_dep) . ',
';
}
        echo '
';




0
Rejoignez-nous