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 24/05/2011, 11h59   #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 shuffle rand et Simplexml

bonjour,

je n'ai pas trouvé d'exemple de l'utilisation de rand et simplexml,
en fait je voudrais savoir si on peut peut faire un tirage au sort
comme on peut le faire sur une base de données,
dans un fichier xml au lieu de faire une lecture
ordonnée des éléments comme ci-dessous ou s'il ya un code qui se rapproche
de cela !

De même je n'ai pas trouvé d'exemple pour shuffle, cela ne fonctionne pas
après la boucle foreach, shuffle($produit);

merci

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
 
<?php 
define('NB_PAR_PAGE', 10); 
 
// On récupère le num de page sur laquelle on est pagination
 
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;   
$document = simplexml_load_file('produits.xml');
 
 $count = count($document->xpath(utf8_encode("//products/product/fields[region=\"$region\"]")));  
 
$debut_pos = ($page - 1) * NB_PAR_PAGE + 1; 
$fin_pos = $page * NB_PAR_PAGE + 1;
$derniere_page = ceil($count / NB_PAR_PAGE);
 
 $produits = $document->xpath(utf8_encode("//products/product[fields/region=\"$region\"][position()>=$debut_pos and position()<$fin_pos]"));
// print_r($produits);
 
 
 foreach ($produits as $produit) {
 shuffle($produit);
 
echo'
<h3><a href="/n/url?'.url_encrypt($produit->productUrl).'" rel="nofollow" /> '. utf8_decode($produit->name) .'</a></h3>
';
 }
manuso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 12h41   #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
A ma connaissance pas de fonctions de tri avec XPath.
Tu veux afficher tes produits sélectionnés dans un ordre aléatoire ?
Ceci devrait fonctionner.

Code :
1
2
3
$produits = $xml->xpath('...') ;
shuffle($produits) ; // http://php.net/shuffle
foreach ( $produits ... ) { ...
__________________
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 24/05/2011, 15h23   #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
A ma connaissance pas de fonctions de tri avec XPath.
Tu veux afficher tes produits sélectionnés dans un ordre aléatoire ?
Ceci devrait fonctionner.

Code :
1
2
3
$produits = $xml->xpath('...') ;
shuffle($produits) ; // http://php.net/shuffle
foreach ( $produits ... ) { ...
Une fois de plus merci beaucoup, cela fonctionne
parfaitement, pour le tirage aléatoire système D,
pour ce que je veux faire tirage aléatoire sur $page
+ shuffle et c'est parfait !

mt_rand() est la fonction la plus rapide
je crois !

Code :
1
2
3
4
5
6
7
8
9
 
$derniere_page = ceil($count / NB_PAR_PAGE);
 
// Definition de l'espace pour la génération
define(RAND_SIZE, $derniere_page);
// Création du nombre aléatoire dans cet espace
$rand = mt_rand(1, RAND_SIZE);
// Nbre aléatoire à page
$page=$rand;
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 14h12.


 
 
 
 
Partenaires

Hébergement Web