reprise d'un xml generer par php dans flash

Eléphant du PHP | 58 Messages

30 mars 2008, 21:21

Bonjour a tous !!!!

J'ai un petit soucis pour reprendre dans mon flash un fichier xml generer par php avec appel a une base de donnees.

je m'explique.

j'ai un flash (un player son) qui reprends un fichier xml (playlist). ca ca marche quand j'y touche pas !
jusque la tout va bien.

sauf que j'ai plusieurs albums, et que je voudrais generer le fichier "playlist.xml" en fonction de l'id de mon album ramené de ma base (ex : .../playlist.php?idalbum=$idalbum).

donc, apres surfage intense sur ces si bons forums de comment ca marche, j'ai reussit a creer un script playlist.php qui me genere automatiquement mon fichier "playlist.xml" en fonction de l'id passer dans l'adresse.
jusque la ca va aussi.. le fichier xml s'affiche bien dans mon explorateur. donc ca marche. il a la bonne structure et tout, nikel.

dans mon fichier playlist.php,j'ai mis un redirect a la fin vers le fichier playlist.xml, en me disant qu'une fois executer par l'appel de flash, hop, il renverrai direct vers mon fichier playlist.xml en toute transaprence et voili !

mais que neni !!!!
si je genere la playlist.xml avant, mon flash va bloquer sur celle qui est générée, mais nela recreera pas a la demande...


je vous mets les codes :
ma page playlist.php :
<?php
 // info connexion table...

 $db = mysql_select_db($db_name, $link);


 $query = "select * from $table_name where idalbum=$idalbum order by piste asc";


 $result = mysql_query($query, $link) or die("Impossible d'interroger la base de données");
 $num = mysql_num_rows($result);


 if ($num != 0)
  { 
  $file= fopen("playlist.xml", "w"); 
  $_xml ="<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n"; 
  $_xml .="<playlist>\r\n"; 
  while
   ($row = mysql_fetch_array($result))
   { 
  if ($row["idalbum"]=8)
   { 
  $_xml .="\t<chanson num=\"".$row["piste"]."\" nom=\"".$row["mtitre"]."\" fichier=\"http://moije4.free.fr/sons/nbecoute.php?idmedias=".$row["idmedias­"]."\">";
  $_xml .="\t</chanson>\r\n";
   } 
  
   }
  $_xml .="</playlist>"; 
  fwrite($file, $_xml); 
  fclose($file); 
 //echo "Le fichier XML a etait créé <a href=\"playlist.xml\">playlist.xml.</a>";
  
 echo '<script language="Javascript">
 //<!--
document.location.replace("http://moije4.free.fr/sons/xml/playlist.xml");
// -->
</script>'; 
} 
   else
    {
	 echo "erreur";
	  } 
	  ?> 

et ensuite le code de mon flash :

Code : Tout sélectionner

playlist_xml = new XML(); playlist_xml.ignoreWhite = true; playlist_xml.onLoad = function(ok) { if (ok=true) { playliste = this.firstChild.childNodes; premiere = this.firstChild.firstChild; enCours = premiere; for (i=0; i<playliste.length; i++) { liste.addItem(enCours.attributes.num+"-"+enCours.attributes.nom, enCours.attributes.fichier); enCours = enCours.nextSibling; } } quantite=liste.getLength(); suivant=Math.ceil(quantite*Math.random()); liste.setSelectedIndex(suivant-1); }; var PlayListChoice = _root.idalbum; playlist_xml.load('http://moije4.free.fr/sons/xml/playlist.php?idalbum="+_root.idalbu­m+"'); //localisation du fichier xml
voilà avec ca mon flash ne marche pas !!

je me demande en fait pourkoi la il ne recupere pas ma playlist apres un redirect dans le lien php, alors que dans mon fichier xml je lui enoi le meme typed'info avec un compteur de lecture et ilme renvoi monmp3 normalement ?

mercide m'aider si vous le pouvez,je suis sur que c tres con,mais vu que j'y connais rienen action script, un peu plus en php, et quechien xml, ca m'aiderai biena avancer!!!

merci d'avance !

[/code][/php]

ViPHP
ViPHP | 2287 Messages

31 mars 2008, 02:07

Bonjour,

Pourquoi vouloir à tout prix écrire sur le disque ton fichier XML quand tu peux sans problème envoyer le contenu XML directement via PHP, comme tu le fais pour une page HTML classique, avec de simples echo ?.

Parceque là, à la place d'un fichier XML en bonne et due forme, tout ce que flash voit, c'est un bout de javascript entre deux balises HTML... Tu as déjà bien de la chance que ça marche dans un navigateur. Crois-tu vraiment que flash, lui, est capable d'éxécuter ça à la place du XML qu'il attendait ?

Tu aurais déjà plus de chances que Flash comprenne ce que tu cherches à faire si tu remplaces ta redirection javascript par un
header('Location: /le/chemin/du/fichier.xml');
Attention, tu vas probablement (tel que tu es parti) rencontrer des problèmes d'accès concurrents au fichier (que se passe t-il si deux personnes demandent le fichier en même temps ? etc...).

Si ça ne fonctionne toujours pas avec une redirection HTTP, ou si tu rencontres les problèmes que je te souligne, il te restera la possibilité (que je te recommande) de modifier ton script pour une sortie directe avec des echo. Ou même un simple include() (ou mieux readfile() ) à la place de la redirection, ça marche aussi.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 58 Messages

31 mars 2008, 03:21

Merci Calimerode ta reponse !!

CKler que tout ca c'est de la bidouille !

En fait je suis partisur ca,pourkoi euh... ben c'est a force de forum,p't'etre enmélangeant tout !

Pourl a redirection,si je passe un
header('Location: /le/chemin/du/fichier.xml');
Il me met qu'il arrive pas a charger le header, parce que deja chargé etc...c pour ça que je me suis apres recherches encore rabattu sur ca :?

En fait je pars d'un lecteur deja codé..et j'arrive pas trop a comprendre ce que le code appel... c pour ça, c un peu la misere, d'ou la bidouille!!

En fait je voulias éviter d'avoir 8 fichiers playlist différentes sur le serveur ! mais bon, c vrai en koi ca serait grave !??
et puis jeme demandais justemetn si deux personne creaient le meme fichier xml avec des données différentes ! je me disais qu'il y aurait bug effectivement !! bon,merci de me le confirmer ;)

en fait, je n'ai qu'a me faire un petit php pour generer ses playlist en fonction de l'entree en base d'un nouvel album oui ca serait moins compliqué !!

bref, je vasi essayer de simplifier tout ça!

en totu cas merci de ta reponse !!

bonne nuit !