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] shuffle rand et Simplexml


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Par défaut [SimpleXML] 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 : 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
     
    <?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>
    ';
     }

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 342
    Billets dans le blog
    17
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $produits = $xml->xpath('...') ;
    shuffle($produits) ; // http://php.net/shuffle
    foreach ( $produits ... ) { ...

  3. #3
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 41
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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;

Discussions similaires

  1. [SOAP] simpleXML envelope
    Par sk8world dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 09/12/2005, 09h55
  2. [SimpleXML] Comment passer de XML à MySQL et vice-versa avec PHP ?
    Par Ben42 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 05/12/2005, 21h42
  3. [SimpleXML] Utilisation chez OVH
    Par vodnok dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 25/11/2005, 09h52
  4. [SimpleXML] XML et parcours des noeuds avec foreach
    Par kult dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 15/11/2005, 15h36
  5. [SimpleXML] Comment faire pour transformer un fichier XML en PHP ?
    Par magic8392 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/09/2005, 16h22

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