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