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] lecture et tri avec simplexml


Sujet :

Bibliothèques et frameworks PHP

  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 [SimpleXML] lecture et tri avec simplexml
    bonsoir,


    Dans mon code, faire une lecture complète du fichier d'un fichier
    avec ces 2 lignes se passe très bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $count = count($document->xpath("//products/product/name")); 
    $produits = $document->xpath(utf8_encode("//products/product[name][position()>=$debut_pos and position()<$fin_pos]"));
    Or évidemment, j'aurai voulu faire un tri par ville ce que je n'arrive pas à faire
    je suppose donc que j'interprète mal la structure de mon fichier xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    - <products>
    - <product>
      <name></name> 
      <productUrl></productUrl> 
      <imageUrl></imageUrl> 
      <description></description> 
      <TDProductId></TDProductId> 
    - <fields>
      <city>PARIS</city> 
      </fields>
      </product>
    J'ai mis dans mon code des lignes que j'ai testé sans succès, si on peut
    m'expliquer mon erreur, en fait soit je trouve Paris en Array soit je touve ma
    liste complète en Array mais je n'arrive pas trier, bon je n'arrive pas à écrire
    correctement ces 2 lignes de code $count et $produits !

    merci d'avance si vous pouvez m'expliquer !

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     
    $ville="PARIS"; 
     
    define('NB_PAR_PAGE', 10); 
     
    // Variables liées à la pagination
    // On récupère le numéro de page sur laquelle on se trouve
     
    if (isset($_GET['objet'])) { $objet =$_GET['objet']; } else {$objet = "";}
     
    $page = isset($_GET['page']) ? intval($_GET['page']) : 1;   
    $document = simplexml_load_file('produits.xml');
     
    // ESSai 1 On compte ok
    $count = count($document->xpath("//products/product/name")); 
     
    // ESSAI 2 Bad
    $count = count($document->xpath("//products/product/fields[city='$ville']"));
     
    // ESSAI 3 Bad
    $count = count($document->xpath("//products/product/name/fields[city='$ville']"));
     
    $debut_pos = ($page - 1) * NB_PAR_PAGE + 1; 
    $fin_pos = $page * NB_PAR_PAGE + 1;
    $derniere_page = ceil($count / NB_PAR_PAGE);
     
    // 1 LECTURE COMPLETE ok mais ce n'est pas ce je recherche
     $produits = $document->xpath(utf8_encode("//products/product[name][position()>=$debut_pos and position()<$fin_pos]"));
     
     
    // ESSAi 2 bad print_r ($produits);   ---------- > SimpleXMLElement Object ( [city] => PARIS ) [75] 
     $produits = $document->xpath(utf8_encode("//products/product/fields[city='$ville'][position()>=$debut_pos and position()<$fin_pos]"));
     
    // Esaii 3 Bad ARRAY VIDE
     $produits = $document->xpath(utf8_encode("//products/product/name/fields[city='$ville'][position()>=$debut_pos and position()<$fin_pos]"));
     
     
    print_r($produits);

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Si j'ai bien compris tu veux récupérer des <product> selon une certaine <city>.
    Il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //products/product[fields/city='$city']
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    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
    Citation Envoyé par Séb. Voir le message
    Si j'ai bien compris tu veux récupérer des <product> selon une certaine <city>.
    Il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    //products/product[fields/city='$city']
    merci beaucoup Séb ! je débute avec les expressions xpath
    ce n'est pas évident, il vraiment Tip Top ce forum, non seulement
    il y a des intervenants sympas mais en plus il y des réponses justes
    et rapides

    manuso

Discussions similaires

  1. [LG]Lecture de fichier avec une adresse internet
    Par forbin dans le forum Langage
    Réponses: 8
    Dernier message: 09/02/2005, 19h00
  2. Pb de tri avec champs vide
    Par nesbla dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2004, 17h42
  3. tri avec l'ordre UPDATE et incrementation d'une colonne
    Par Staron dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/02/2004, 08h48
  4. tri avec les champs vides en dernier
    Par r-zo dans le forum Requêtes
    Réponses: 11
    Dernier message: 03/09/2003, 13h40
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

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