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);