Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > SimpleXML
SimpleXML Forum d'entraide pour l'extension SimpleXML, qui permet de manipuler des documents XML en PHP (approche DOM).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2011, 19h21   #1
Invité de passage
 
pat ludo
Inscription : novembre 2009
Messages : 29
Détails du profil
Informations personnelles :
Nom : pat ludo

Informations forums :
Inscription : novembre 2009
Messages : 29
Points : 0
Points : 0
Par défaut 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 :
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 :
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 :
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);
manuso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2011, 01h20   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Si j'ai bien compris tu veux récupérer des <product> selon une certaine <city>.
Il faut faire :
Code :
//products/product[fields/city='$city']
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2011, 11h19   #3
Invité de passage
 
pat ludo
Inscription : novembre 2009
Messages : 29
Détails du profil
Informations personnelles :
Nom : pat ludo

Informations forums :
Inscription : novembre 2009
Messages : 29
Points : 0
Points : 0
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 :
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
manuso est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h30.


 
 
 
 
Partenaires

Hébergement Web