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

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] besoin d'aide sur une expression xpath


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 109
    Points : 39
    Points
    39
    Par défaut [SimpleXML] besoin d'aide sur une expression xpath
    bonjour,
    voici mon bout xml que je parsse a l’aide de simplexml :

    Code XML : 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
      <produit>
        <nom_fournisseur>nom du fournisseur</nom_fournisseur>
        <nom_produit>nom du produit</nom_produit>
        <id_produit>id produit</id_produit>
        <url_produit>url de produit</url_produit>
        <img_produit>url d'image de produit</img_produit>
        <pays_dest>pays destination</pays_dest>
        <ville_dest>ville destination</ville_dest>
        <prix>
          <unprix>
            <ville_dep>paris</ville_dep>
            <date_dep>date depart</date_dep>
            <prix_produit>prix</prix_produit>
          </unprix>
          <unprix>
            <ville_dep>lyon</ville_dep>
            <date_dep>date de depart 2</date_dep>
            <prix_produit>prix2</prix_produit>
          </unprix>
     
        </prix>
      </produit>
       .....
    je voudrais afficher la ville de départ ainsi que sa date de départ (le choix de la ville est dynamique). J essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $produits = $document->xpath(utf8_encode("//produit[prix/unprix/ville_dep='$ville_dep'"));
    avec $ville_dep=Lyon par exemple.
    Le hic est quand je fait ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach ($produits as $produit) 
    {  
     echo 'depart : '.$ date_dep.' de : '.ucfirst($vdep);
    }
    l’affichage est la première ville (dans mon cas paris) et non la ville voulu (Lyon) !?
    comment faire pour afficher que la ville voulu?

  2. #2
    Fabouney
    Invité(e)
    Par défaut
    Salut,

    pourquoi pas tout simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = $xml->xpath('/produit/prix/unprix/ville_dep');
    Cordialement.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 109
    Points : 39
    Points
    39
    Par défaut
    cette expression va me selectionner tous les villes de depart, donc j pa un controle sur celle voulu

  4. #4
    Fabouney
    Invité(e)
    Par défaut
    et ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach ($xml->xpath('/produit/prix/unprix/') as $unprix) {
          if($unprix->ville_dep == $ville_dep)
             echo $unprix->date_dep." ".$unprix->ville_dep;
    }

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 109
    Points : 39
    Points
    39
    Par défaut
    le problème c'est que je dois le faire dans la même expression xpath, car j'ai besoin de connaître le nombre total pour la pagination :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $produits = $document->xpath(utf8_encode("//produit[prix/unprix/ville_dep='$ville_depa'][position()>=$debut_pos and position()<$fin_pos]"));

  6. #6
    Fabouney
    Invité(e)
    Par défaut
    expose ton problème en une fois alors lol.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 109
    Points : 39
    Points
    39
    Par défaut
    ba desolé,je m'explique:
    je dispose de l'xml cité auparavant, est qui enorme,(de point de vue de taille et nombre de produit) je voudrais afficher certaines villes depart avec leur date de deaprt (le choix de la ville est dynamique).
    toute en gardant un affichage de 10 produits par page, mon probleme c que je coince lors de l'affichage de la ville voulu.
    j'espere que j'été clair

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Il faut comprendre vos expressions XPath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //produit[prix/unprix/ville_dep='X']
    Sélectionner tous les produits dont au moins d'une des villes de départ est X.

    L'erreur est dans votre raisonnement, il est normal que vous atteigniez la première ville si vous procédez de la sorte :
    $date_dep = $produit->prix->unprix->date_dep;
    $vdep = $produit->prix->unprix->ville_dep;
    Il faudrait en revanche reparcourir les noeuds unprix soit avec une boucle soit avec une expression XPath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach ($produits as $produit) {
        # ...
        foreach ($produit->prix->unprix as $unprix) {
            if ($unprix->ville_dep == $ville_depa) {
                echo 'depart : ' . $unprix->date_dep . ' de : '.ucfirst($unprix->ville_dep);
            }
        }
        # ...
    }
    Comme l'avais justement proposé Fabouney.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 109
    Points : 39
    Points
    39
    Par défaut
    merci pour votre aide ça marcher

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Aide sur une expression régulière toute simple
    Par tchoumak dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2005, 15h46
  2. besoin d'aide sur une requette sql
    Par maxidoove dans le forum Langage SQL
    Réponses: 13
    Dernier message: 10/10/2005, 18h42
  3. Besoin d'aide sur une fonction
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/08/2005, 17h40
  4. Réponses: 1
    Dernier message: 03/08/2005, 11h41
  5. Besoin d'aide sur une requête (JOIN + COUNT ?)
    Par PanzerKunst dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2005, 10h29

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