mixer plusieurs flux xml

yann123
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 11 Avr 2005

mixer plusieurs flux xml

Message le Ven Nov 23, 2007 18:12

Bonjour,

J'utilise sur mon site un flux xml de la maniére suivante (abrégé) :

Code: Tout sélectionner

    $file = "http://xxxxxxxxxxxxxxx";
     // je télécharge mon flux
....
....
....
...
    eregi("<login>(.*)</login>",utf8_decode( $results[$i+1] ), $login);
    // j'enregistre chaque balise dans une variable

...
...
...
    echo ".................";
   // J'affiche le flux sur mon site.



Ce que j'aimerais faire c'est la même chose mais avec 3 flux qui ont exactement la même structure.

Et j'aimerais que php affiche aléatoirement (mélangé) les résultats des trois flux.

Je ne vois pas du tous dans quel sens partir sans que ce ne soit une usine à gaz.

Donc: récupérer les trois flux, les parser et afficher les résultats aléatoirement.

Quelqu'un aurait-il une idée ou autre qui puisse m'aider dans la structure de mon script.

Merci


Kmacleod
WRInaute accro
WRInaute accro
 
Messages: 3418
Inscription: 28 Nov 2002

Message le Ven Nov 23, 2007 18:22

Fait le mélange dés la constitution du flux avec SQL avec un tri par une colonne donnée

yann123
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 11 Avr 2005

Message le Ven Nov 23, 2007 18:28

Fait le mélange dés la constitution du flux avec SQL avec un tri par une colonne donnée


Les flux ne m'appartiennent pas, je ne peux donc pas modifier leur constitution.

Je n'ai donc pas le choix de récupérer ces trois flux et de me débrouiller après avec ce qu'il contiennent.

Dans ton idée, sauf erreur de ma part, il n'y aurait plus qu'un seul flux ?
ce qui serait top mais pas possible.

Merci


Jeviensderio
WRInaute passionné
WRInaute passionné
 
Messages: 1340
Inscription: 29 Sep 2006

Message le Ven Nov 23, 2007 18:49

Au lieu de faire echo directement on met dans un tableau de tableaux (tableau d'items qui sont des tableaux title, desc, link).

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2678
Inscription: 13 Fév 2004

Re: mixer plusieurs flux xml

Message le Ven Nov 23, 2007 18:57

yann123 a écrit:
Code: Tout sélectionner
eregi("<login>(.*)</login>",utf8_decode( $results[$i+1] ), $login);


Glurps 8O Il n'y a pas des fonctions de décodage XML en PHP? Les regexp c'est amusant deux minutes, mais tu risques d'avoir des surprises un jour ou un autre...

yann123 a écrit:Et j'aimerais que php affiche aléatoirement (mélangé) les résultats des trois flux.


J'avoue que le concept du "mélangé aléatoirement" m'échappe un peu (au niveau intérêt), mais bon... Tu ajoutes un champ random à chaque ligne (je suppose que les tableaux de tableaux ça existe en php?), tu concatènes tes trois listes, et tu tries sur ce champ (aucune idée de comment ça s'écrit en php ça). Je n'ai pas l'habitude du php donc je n'essaierai pas de te pondre le code correspondant, mais en gros:

Code: Tout sélectionner
pour chaque flux
pour chaque élément du flux
  resultat[$i][0] = valeur trouvée
  resultat[$i][1] = random
  $i++
fin
fin

resultat = tri($a->[1] <=> $b->[1],resultat)

pour chaque ligne $i de resultat
afficher resultat->[$i][0]
fin

Non?

Jacques.


ecocentric
WRInaute accro
WRInaute accro
 
Messages: 3602
Inscription: 10 Fév 2004

Message le Ven Nov 23, 2007 19:02

Simple Pie fait ça nativement, me semble-t-il.

Djoudje
WRInaute discret
WRInaute discret
 
Messages: 231
Inscription: 29 Mai 2007

Message le Ven Nov 23, 2007 22:03

et avec la fonction shuffle() :
(PHP 4, PHP 5)

shuffle — Mélange les éléments d'un tableau
Description
bool shuffle ( array &$array )

shuffle() mélange les éléments du tableau array.
Source:http://www.php.net/manual/fr/function.shuffle.php

yann123
WRInaute discret
WRInaute discret
 
Messages: 124
Inscription: 11 Avr 2005

Message le Mar Nov 27, 2007 1:08

Bonjour,

et merci de vos réponses.

je commence par télécharger les trois flux individuellement.

$file = "http://xxxxxxxxxxxxxxx";
$file2 = "http://xxxxxxxxxxxxxxx";
$file3 = "http://xxxxxxxxxxxxxxx";

Comment puis-je faire ensuite, pour rassembler ces trois flux dans le même (les uns en dessous des autres puisqu'ils ont exactement la même structure)

$flux = ??????;

et ensuite je travaille avec $flux pour afficher les résultats aléatoirement.

ou encore, mettre les trois flux dans un tableau et travailler ensuite avec le tableau. Ce qui me pose problème c'est de rassembler les données des trois flux.

Merci


Jeviensderio
WRInaute passionné
WRInaute passionné
 
Messages: 1340
Inscription: 29 Sep 2006

Message le Mar Nov 27, 2007 15:33

En utilisant le lecteur de flux universel tu obtiens déjà un flux dans un tableau.

Tu utilises la fonction autant de fois que de tableaux.
Reste à supprimer le channel, et mélanger les éléments du tableau, puis les afficher avec la fonction d'affichage incluse.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités