IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

requete xpath avec simplexml


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Points : 27
    Points
    27
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  2. #2
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Non, ta requête est bonne : elle ne te retourne que les produits qui ont un fils ville_dep qui vaut lyon.

    Le "problème" c'est que dans ton cas ton produit a 4 villes qui lui sont associées. Il est donc normal que quand tu lui demande de s'afficher il affiche les 4.

    Donc là tu ne retournes qu'un seul noeud produit (et non pas 4 comme tu le dis)

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/07/2012, 10h52
  2. [DOM4J] Requete XPath avec substring
    Par bslota dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 04/12/2007, 10h27
  3. [SimpleXML] Est-il possible d'utiliser des expressions XPATH 2.0 avec simplexml ?
    Par ANISSS dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 09/11/2006, 09h14
  4. [XPath][SimpleXML] probleme avec simplexml et xpath
    Par ANISSS dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/10/2006, 16h54
  5. Réponses: 2
    Dernier message: 28/10/2006, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo