php -> xml -> swf, idyllique mais infructueux!

php -> xml -> swf, idyllique mais infructueux! - Flash/ActionScript - Programmation

Marsh Posté le 04-03-2006 à 16:25:27    

salut à tous !
 
voila, j'ai fait une petite soupe en pechant des infos à droite et à gauche. en clair, j'ai fait le boulot en 2 phases.
la premiere : j'ai fait un fla qui charge un xml et affiche les infos dans du texte... sans probleme !
la deuxieme : j'ai fait un fichier php qui renvoie le meme xml (vraiment identique!) et dans le fla j'ai juste changé l'extension du load en ".php". en théorie ça devrait fonctionner, mais en pratique, c'est raté !
 
monfla:
image 1
 

Code :
  1. monXml = "";
  2. monXml = new XML();
  3. monXml.ignoreWhite = true;
  4. monXml.load("exif2.php" );


 
image 3
 

Code :
  1. if (!monXml.loaded) {
  2. gotoAndPlay(_currentframe-1);
  3. }


 
mon php:
 
 

Code :
  1. <?
  2. $xml = '<racine>';
  3. $rep = '../exif';$monrep = opendir($rep);
  4. $ext=".jpg";$long_ext=strlen($ext);
  5. while($fichier=readdir($monrep)){
  6. $long_file=strlen($fichier)-$long_ext;
  7. $exts = substr($fichier,$long_file,$long_ext);
  8. if ($exts==".jpg" ){
  9. $exts = $ext;
  10. }
  11. if (($fichier!="." ) and ($fichier!=".." ) and ($exts==$ext)){
  12. $filePath = $fichier;
  13. $exif = exif_read_data ($filePath, 0, true);
  14. $nom = $exif[FILE][FileName];
  15. $vitesse = $exif[EXIF][ExposureTime];
  16. $xml = $xml.'<fiche nom="'.$nom.'"vitesse="'.$vitesse.'" />';
  17. }
  18. }
  19. $xml = $xml.'</racine>';
  20. echo utf8_encode($xml);
  21. ?>


 
 
alors pourquoi ça ne fonctionne pas? la fonction load devrait etre compatible avec un fichier php (cf le tutoriel sur la galerie php)
je ne comprends pas. d'habitude je fais des erreurs de syntaxe, de construction ou de variable, mais apres 2 ou 3 jours sur le probleme, je trouve ce qui cloche et ça marche, mais là, ça me depasse, ça fait 5 jours que je suis dessus et ça ne marche pas, alors :
 
HELP ME! expliquez moi ce qui cloche s'il vous plait.
 
merci beaucoup à tous  


---------------
c'est au pied du mur que l'on voit le mieux le mur !
Reply

Marsh Posté le 04-03-2006 à 16:25:27   

Reply

Marsh Posté le 05-03-2006 à 01:46:10    

Essaye peut-être avec  

Code :
  1. header('Content-Type: text/xml');
  2. $xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";


.. au début de ton fichier php


Message édité par Mr Mala le 05-03-2006 à 01:53:06
Reply

Marsh Posté le 05-03-2006 à 09:46:08    

:hello: Mr Mala
 
sinon plutot que verifier le chargement de ton XML sur plusieur frame, utlise l'évenement xml.onLoad = [...], ca fonctionne tres bien
 
exemple de code que j'avais fait pour faire communiquer Flash et PHP via XML:
http://forum.hardware.fr/hardwaref [...] 5956-1.htm
 
en espérant que ca aide ;)


Message édité par mechkurt le 05-03-2006 à 14:58:49

---------------
D3
Reply

Marsh Posté le 05-03-2006 à 12:46:55    

merci Mr Mala, grace à l'header, le php affiche le xml (c clair non?) comme s'il sagissait d'un xml normal.
mais le swf ne retourne toujours pas les infos (nom et vitesse) comme il le fait avec un vrai xml...
 
ça progresse mais c'est toujours pas bon !
 
ps: le \n ne fait pas de retours à la ligne mais s'affiche normalement...
 
Mechkurt : merci pour le lien, je l'étudie attentivement...


---------------
c'est au pied du mur que l'on voit le mieux le mur !
Reply

Marsh Posté le 05-03-2006 à 14:58:10    

sinon sur ton site les pop-up se ferment ant que j'ai eu le temps de voir ce qu'il y a dedans...
Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.12) Gecko/20050919 Firefox/1.0.7
tu aurais pas un onload/close dans ton jaascript ?

Reply

Marsh Posté le 05-03-2006 à 15:58:41    

Un autre truc étrange, il ne te manquerait pas un espace ici :

Code :
  1. $xml = $xml.'<fiche nom="'.$nom.'"vitesse="'.$vitesse.'" />';


avant vitesse ?
Sinon, j'avais pas tilté, effectivement, comme te l'a dit mechkurt, utilise XML.onLoad() ...  

Reply

Marsh Posté le 05-03-2006 à 21:59:28    

merci, alors l'espace avant le vitesse, c'est pas grave, il y es sur mon fichier complet donc ça c'est bon.
j'ai modifié le fla sur l'image 1 en :
 

Code :
  1. monXml = "";
  2. monXml = new XML();
  3. monXml.ignoreWhite = true;
  4. monXml.onLoad = function(success) {
  5. gotoAndPlay(4);
  6. trace(monXml);
  7. };
  8. monXml.load("exif2.php" );


 
mon php commence maintenant par :
 

Code :
  1. <?
  2. header('Content-Type: text/xml');
  3. $xml = '<?xml version="1.0" encoding="UTF-8"?>';
  4. $xml = $xml.'<racine>';
  5. ...


 
je refais le test avec le xml, ça marche, et des que je mets le php, c'est foireux !
là je comprends pas...


---------------
c'est au pied du mur que l'on voit le mieux le mur !
Reply

Marsh Posté le 05-03-2006 à 23:12:22    

Et dans ton flash, comment teste-tu la bonne réception de ton XML?  
Tu le découpes ? Tu l'affiches ? ..

Reply

Marsh Posté le 05-03-2006 à 23:54:46    

ça y est, j'ai presque réussi !!!
en fait mon php est beaucoup plus complet normalement, je l'ai simplifié pour le forum.  
j'en suis arrivé à la conclusion que le php mettait trop de temps à generer le xml ce qui fait que le swf ne l'attends pas...
alors j'ai simplifié le php comme dans l'exemple que j'ai mis et oh miracle, ça marche ! et quand je remets tout ça merde !
alors j'en ai remis par petite touche et en fait j'utilise des infos exifs qui sont pas présentes dans tous les fichiers
[IFD0][Title]
[IFD0][Author]
[IFD0][Comments]
[IFD0][Subject]
[IFD0][Keywords]
 et quand je les demande pas, ça marche... donc je peux prendre toute les infos que je veux du moment qu'elles sont présentes sur toutes les images... reste plus qu'à completer les infos titre author ect... sur les autres images pour voir si ça marche !!!
je vous tiens au courant...
merci à vous


---------------
c'est au pied du mur que l'on voit le mieux le mur !
Reply

Marsh Posté le 06-03-2006 à 00:11:40    

rectification, apres test, je pense que les données exifs contenues dans la balise IFDO ne sont pas accessible à flash... mais POURQUOI ?!


---------------
c'est au pied du mur que l'on voit le mieux le mur !
Reply

Marsh Posté le 06-03-2006 à 00:11:40   

Reply

Marsh Posté le 06-03-2006 à 09:24:38    

a mon avis le PB ne vient pas de Flash, (il est pres a attendre ce qu'il faut) par contre ton PHP doit depasser les 30 secondes du maxexecutiontime et du coups renvoie rien ou un XML mal formé, si tu as le controle sur le serveur, modifie PHP.ini pour augmenter cette valeur, sinon essaye de decouper ton script pour qu'il check moins de photos (5 par 5 ou 10 par 10 par ex.), tu peux envoyer un parametre via Flash pour dire à PHP quel dossier checker par exemple avec des dossier qui contiennent moins de photo
 [:airforceone]


---------------
D3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed