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 :

[XML] Réorganiser de manière alétaoire les nodes d'un simplexml


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2013
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 59
    Par défaut [XML] Réorganiser de manière alétaoire les nodes d'un simplexml
    Bonjour à tous.

    Voilà je travaille sur un flux xml que j'utilise par le biais de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        $flux = simplexml_load_file($flux, null, LIBXML_NOCDATA);
    Je souhaiterais mélanger les nodes du flux avant les utiliser et là je bloc?

    J'ai essayer:
    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
     
    {
       $donnee = $flux->channel;
        $k=0;
       foreach($donnee->item as $valeur)
       {
    		$flux_out[$k] =  $valeur;
    		$k++;
       }
    }
    print_r($flux_out);
    echo "<hr>test : melage 1 <br>";
    $flux_melanger_1 = array_rand($flux_out);
    print_r($flux_melanger_1);
     
    echo "<hr>test : melage 2 <br>";
    $flux_melanger_2 = array_rand($flux_out);
    print_r($flux_melanger_2);
    Mais ni l'u, ni l'autre fonctionne et je seche totalement,

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2013
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 59
    Par défaut Une solution pas bien satisfaisante
    J'ai trouvé une solution, mais pas vraiment top:
    Si quelqu'un as une meilleur idée
    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
    function generate_id_rand_flux($flux){
        if($flux)
        {
           $donnee = $flux->channel;
            $k=0;
           foreach($donnee->item as $valeur)
           {
                $flux_out[$k] = (int)$valeur->id_product;
                $k++;
           }
              $keys = array_keys($flux_out);
          shuffle($keys);
          $random = array();
          foreach ($keys as $key)
            $random[$key] = $flux_out[$key];
     
          return $random;
        }   
    }
    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
    $donnee = $flux->channel;
        $i=0;
       foreach($id_flux_out as $id_valeur)
       {
            foreach($donnee->item as $valeur)
            {
    	  if($valeur->id_product == $id_valeur) {
    	    $i++;
    	    if ($i >=$start+1){
    	      echo '<a href="'.$valeur->link.'" class="click_visit_zone'.($zone ==1?'1':'2').'">';
    	      [...]
    	    }
    	    if ($i >= (int)$stop)  break(2);
    	  }
     
    	}
       }
    }

  3. #3
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Bonjour.
    ni l'une, ni l'autre fonctionne
    n'est pas une erreur php...
    Ton array $flux_out est-il défini avant ta boucle foreach ?
    que donne les différents print_r ?

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    Peut être qu'il faut revoir ton algo de manière globale.
    Un xml n'est pas fait pour mélanger des nodes du flux. Parcontre si tu pourrais récupérer l'information (ici par le xml) , puis, mélanger cette information (que ce soit en base de données, un tableau php ou peu importe où) et seulement alors, tu affiches ton résultat mélangé

Discussions similaires

  1. [XmlDocument] récupérer tous les nodes
    Par nikalkal dans le forum C#
    Réponses: 8
    Dernier message: 12/01/2007, 10h55
  2. [MySQL] Comment lister de manière numérotée les lignes d'une table
    Par méphistopheles dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/12/2006, 17h12
  3. [vb.net] [treeview] comment trier les nodes
    Par graphicsxp dans le forum Windows Forms
    Réponses: 8
    Dernier message: 09/02/2006, 14h28
  4. [DOM] Les nodes dans le modèle DOM
    Par Bele'nos dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/03/2005, 22h43
  5. []générer et LIRE du xml avec vb: sélection d'un node
    Par chris21 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 19/09/2003, 13h14

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