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

Flash Discussion :

[FLASH MX2004] Envoyer un xml a un script php


Sujet :

Flash

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Points : 298
    Points
    298
    Par défaut [FLASH MX2004] Envoyer un xml a un script php
    Bonjour,

    J'arrive a loader un xml generé en dynamique par un script php, mais je ne sais pas faire l'inverse (creer un xml dans fash et l'envoyer a un script php).

    Creer le xml dans flash, je devrais reussir.
    L'envoyer, ca semble etre en utilisant la fonction send().
    mais je ne vois pas quoi mettre dans le .php pour recuperer le xml.

    Est-ce que qqu'un peut m'aider ?

    merci

  2. #2
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Hello

    Alors dans flash tu ne peux envoyer que des chaines de caractères et tu ne peux recevoir que des chaines de caractère (ou presque...)

    Un XML c'est juste une chaine de caractère formatée avec des balises ouvertes et fermées... et une chaine de caractère devient un XML valide si plusieurs règle de formatage sont réalisées.
    Quand tu as un xml .. si tu tapes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var x = new XML("<item>coucou</item>") ;
    trace (x.status) ;
    la propriété status te renvoie 0 si le XML est valide.. sinon une autre valeur (voir dans le dico de flash F1)

    A partir de là si tu veux envoyer du XML vers le PHP tu as 2 méthodes :

    1 - utiliser la classe LoadVars avec la méthode sendAndLoad()
    2 - utiliser directement la classe XML avec la méthode sendAndLoad()

    LoadVars permet d'envoyer une chaine de caractère ayant pour forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var1=hello&var1=coucou&.....
    XML je te l'ait dit au dessus, cela permet d'envoyer une chaine valide XML....

    Donc, dans le PHP tu vas soit recevoir certaines variables en POST ou GET avec LoadVars ... soit une grosse chaine de caractère avec la classe XML.

    A partir de là .. c'est pas Flash qui compte mes tes compétences en PHP pour en faire ce que tu veux... parcourir le xml l'envoyer dans une base de donnée... enregistrer la chaine dans un fichier texte ayant pour extension .XML etc.. etc..

    Sinon en fait le mieux c'est de ne plus utiliser le XML avec PHP mais FlashRemoting avec le célève AMFPHP (http://www.amfphp.org)
    Cela permet .. et oui .. d'envoyer autre chose qu'une chaine de caractère vers PHP (directement un nombre, un booléen, un tableau, un objet, un tableau d'objet... et luxe du luxe.. du PHP vers FLASH directement le résultat d'une requête MYSQL qui deviendra dans flash un objet de type RecordSet !)

    EKA+

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 224
    Points : 185
    Points
    185
    Par défaut
    Citation Envoyé par ekameleon
    Hello

    Sinon en fait le mieux c'est de ne plus utiliser le XML avec PHP mais FlashRemoting avec le célève AMFPHP (http://www.amfphp.org)
    Cela permet .. et oui .. d'envoyer autre chose qu'une chaine de caractère vers PHP (directement un nombre, un booléen, un tableau, un objet, un tableau d'objet... et luxe du luxe.. du PHP vers FLASH directement le résultat d'une requête MYSQL qui deviendra dans flash un objet de type RecordSet !)

    EKA+
    tu viens de mapprendre un truc.. merci bcp.. depuis le temps que je cherchais une solution intelligente...
    Merci bcp!
    dommage que lexemple en premiere page ne marche pas....

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Points : 298
    Points
    298
    Par défaut
    Citation Envoyé par ekameleon
    Avant tout essai de bien maitriser l'utilisation des classes LoadVars et XML dans les 2 sens (recevoir et envoyer des données)
    Pourquoi est-ce que je devrai utiliser LaodVars ?
    la methode Load() d'un objet xml ne suffit pas ?

    j'ai une autre question qui sort un tout petit peu du sujet :
    mon .swf est un petit bout d'un .html. le html est generé par du php.

    Comment est-ce que je peux faire pour qu'a la generation de cette page html (comprenant le swf) php passe un entier a l'anim swf ?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Points : 298
    Points
    298
    Par défaut
    oups, j'ai rien dit.

    <param name="movie" value="clip.swf?toto=56542" />

    semble suffire !

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Points : 298
    Points
    298
    Par défaut
    <param name="movie" value="clip.swf?toto=56542" />
    comment ca se fait que ca marche uniquement sous ie ? ca ne fonctionne pas sous firefox. il y a une methode plus generale pour passer un entier a une anim flash ?

    en gros, je voudrais que le script php qui genere la page html dans laquelle se trouve le swf passe l'ID de l'utilisateur au .swf.
    grace a cet ID, le swf va pouvoir utiliser xml.load("list.php?id=" +id)
    pour recuperer un xml relatif a ce usr.

    est-ce que je m'y prends mal ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Points : 298
    Points
    298
    Par défaut
    c'est bon.

    il fallait mettre
    FlashVars="toto=super" dans embed et

    <param name=FlashVars value="toto=super"> juste au dessus...

    en plus, c'est ecrit de partout dans le forum...

    par contre, dans la FAQ, ca donne juste l'info sur <param> mais pas sur <embed>

  8. #8
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    hello

    google >> flashvars >> http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=tn_16417



    Ok sinon en fait tu veux "récupérer" un xml ? il vient d'où ton xml ?
    EKA+

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Points : 298
    Points
    298
    Par défaut
    merci,

    pour la recuperation du xml dans flash, ca devrait etre facile, j'ai deja un petit truc qui marche avec du php qui genere le xml et xml.load qui le lit.

    donc, ca devrait etre tout bon, je sais envoyer le xml dans les 2 sens entre flash et php et je sais envoyer une variable simple avec flashvars.

    y a plus qu'a bosser !

  10. #10
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Alors tout va
    Bon courage 8)

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Points : 298
    Points
    298
    Par défaut
    Citation Envoyé par ekameleon
    Ensuite dans ton PHP apprend à bien maitriser la réception des données en POST ou GET et tout ira assez facilement aprés
    j'ai deja fait pas mal de php, mais je ne vois pas comment recuperer un objet xml.

    dans flash je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    essai=new XML("<haut><milieu id=1 /><fin id=2 /></haut>");
    essai.send("cible.php", "_blank");
    et dans cible.php je fais:
    mais $xml reste vide !
    A mon avis, je me trompe sur le nom de variable a mettre dns $_POST, mais je ne vois pas comment faire !

  12. #12
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Hello

    $POST est un tableau indéxé.. essai de le parcourir (là c'est du PHP, cherche l'instruction qui permet d'énumérer un tableau indéxé en PHP)

    Si cela marche pas je ferai un petit test pour voir ce qui se passe
    Sinon fais + simple.. enfin entre guillemet lol ... tu peux utiliser la classe LoadVars :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var x i=new XML("<haut><milieu id=1 /><fin id=2 /></haut>") ;
     
    var envoi = new LoadVars ;
    envoi.xml = x.toString() ; // la chaine de caractère uniquement
    envoi.send("cible.php", "_blank") ;
    et dans ton PHP tu reçois donc la variable 'xml' (propriété dynamique que tu as attaché à l'objet de type LoadVars)

    EKA+

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Points : 298
    Points
    298
    Par défaut
    salut !

    j'ai fait plus simple en suivant ton conseil:

    actionscript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var x =new XML("<haut><milieu></milieu></haut>") ;
    var envoi = new LoadVars ;
    envoi.xml = x.toString() ;
    php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($_POST as $post_name => $post_value) {
    	print "$post_name = $post_value<br />";
    }
    et ca marche !
    je suis quand meme decu de ne pas reussir a faire fonctionner xml.send().
    pour ceux qui font la meme chose, la page generee par le php donne juste:
    xml=
    il faut aller dans le code source pour voir que la variable $xml contient bien le doc xml en string. quand je pense au temps que j'ai passé a regardé la page générée sans regarder le source html

    merci Eka !

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Points : 298
    Points
    298
    Par défaut
    pour ceux qui veulent parser un string xml venant de flash dans php et qui voudraient utilser simpleXML mais qui ne peuvent pas parcequ'ils ne sont pas en php5. et bien, il y a http://www.ister.org/code/simplexml44/index.xhtml

  15. #15
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Merci pour l'info je connaissais pas

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Points : 298
    Points
    298
    Par défaut
    re-bonjour,

    j'ai enlevé le TAG résolue, parce que je crois que mes pbs viennent de la...
    en gros, je veux passer un objet xml de flash a php.
    le pb vient des accents, au lieu d'un "é" dans la base de donnée MySQL, j'ai un "é".
    je tourne avec Flash MX2004, php 4.4.1 et MySQL 4.0.25

    voila ma table SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE build (
    id BIGINT UNSIGNED UNIQUE,
    title VARCHAR(50),
    texte MEDIUMTEXT,
    debut TIMESTAMP,
    PRIMARY KEY (id));
    voila le code de mon .fla:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var sortie_str = "<survey><titre>c'est un éléphant</titre>";
    sortie_str += "<area>hé hé</area></survey>";
     
    // var sortie_str = "<survey><![CDATA[c'est un éléphant]]>";
    // sortie_str += "<![CDATA[hé hé]]></survey>";
     
    var envoi = new LoadVars ;
    envoi.xml = sortie_str ;
    envoi.send("ar_save.php", "_self") ;
    j'ai fait des essais avec ou sans CDATA.

    voila le ar_save.php:
    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
    <?php
    require_once ('constantes.php');
    require_once('class/IsterXmlSimpleXMLImpl.php');
     
    $xmlstr = $_POST["xml"];
     
    $impl = new IsterXmlSimpleXMLImpl;
    $doc  = $impl->load_string($xmlstr);
    $title=addslashes($doc->survey->titre->CDATA());
     
    $id=rand(1000000,9999999);
    $link = mysql_connect ($BD_serveur, $BD_utilisateur, $BD_motDePasse) or die ('Erreur : '.mysql_error() );
    $select_base=mysql_selectdb("$BD_utilisateur"); 
    mysql_query("INSERT INTO db45684324.build (title, id, texte, debut) VALUES ('$title', '$id', '$xmlstr', NULL)");
    mysql_close($link);
    ?>
    require_once('class/IsterXmlSimpleXMLImpl.php'); pemet juste d'avoir acces a la classe permettant de parser facilement un xml

    le pb est que dans ma base de donnée, j'ai des é à la place des é.
    est-ce que qqu'un peut m'aider ?

    en gros, je souahite juste stocker le xml entier dans la bdd ainsi que le champ de la balise titre. ca me permettra plus tard de renvoyer le xml directement a un .swf si j'en ai besoin ou de lire le champ AREA de la table, en php, pour le parser et utiliser le contenu des balises.

    c'est tout !
    merci

  17. #17
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Hello
    Ta base de donnée est-elle en utf8 ?
    Sinon il faut que tu décodes de ce que tu reçois de flash (en utf8) avec utf8_decode... en principel vaut mieux toujours bosser dans flash comme dans ton php en utf8.
    Tu peux ajouter à ton code PHP un header qui force l'utf8 au niveau du script (là faut chercher comment faire dans la doc PHP)
    Pour le reste... pourquoi tu rentres pas ta variable $xmlstr directement dans la base de donnée ?
    Sinon l'id aléatoire il sert à quoi dans ton code ?
    EKA+

  18. #18
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Points : 298
    Points
    298
    Par défaut
    salut

    Citation Envoyé par ekameleon
    Ta base de donnée est-elle en utf8 ?
    aucun idee ! comment je peux savoir ca ?

    Citation Envoyé par ekameleon
    Sinon il faut que tu décodes de ce que tu reçois de flash (en utf8) avec utf8_decode... en principel vaut mieux toujours bosser dans flash comme dans ton php en utf8.
    je viens de faire un essai. effectivement, si je fais utf8_decode de mon $xmlstr, ca permet d'avoir les é dans la table mysql !
    j'imagine qu'avec un utf8_encode, je devrais pouvoir renvoyer le xml a flash au bon format. y a de l'espoir, merci

    Citation Envoyé par ekameleon
    Pour le reste... pourquoi tu rentres pas ta variable $xmlstr directement dans la base de donnée ?
    c'est ce que je fais, non ?

    Citation Envoyé par ekameleon
    Sinon l'id aléatoire il sert à quoi dans ton code ?
    A rien dans ce cas (rassure toi). c'est juste un exemple qui fait aussi d'autres choses, j'ai reduit le code pour poster ici, mais j'ai oublié d'enlever certain trucs...

  19. #19
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    519
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 519
    Points : 298
    Points
    298
    Par défaut
    presque !

    avec le decode et l'encode pour utf8, je peux sauver dans la base et recuperer ensuite dans flash, via php mes é.
    mais, je perds les apostrophe !
    ca mets ca a la place: &apos;
    alors que dans la base de données, ca a bien sauvé l'apostrophe: '

    pourtant, j'ai mis header("Content-type: text/css; charset=UTF-8"); en haut du php qui envoie.

    en gros, le flash fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    myXML=new XML();
    myXML.ignoreWhite=true;
    myXML.load("ar_get.php");
    _root.stop();
    myXML.onLoad=function(){
    	txt2.text = this.firstChild.childNodes[0].childNodes.toString();
    	area2.text = this.firstChild.childNodes[1].childNodes.toString();
    _root.play();
    }
    pour afficher le titre et le area dans txt2 et area2

    et voila ar_get.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    header("Content-type: text/css; charset=UTF-8");
    require_once ('constantes.php');
    $link = mysql_connect ($BD_serveur, $BD_utilisateur, $BD_motDePasse) or die ('Erreur : '.mysql_error() );
    $select_base=mysql_selectdb("$BD_utilisateur"); 
    $requete = "SELECT texte FROM db45684324.build WHERE numero_id=10";
    $result = mysql_query($requete);
    $row = mysql_fetch_array($result);
    $xml ="<?xml version='1.0' encoding='UTF-8' ?>";
    $xml .= $row[0];
    mysql_free_result($result);
    mysql_close($link);
    echo utf8_encode($xml);
    ?>

  20. #20
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    n'utilise pas toString mais nodeValue pour afficher la valeur d'un noeud.
    Sinon si tu veux afficher réellement la structure du noeud faut utiliser escape et unescape dans l'autre sens... mais en général on parcours le noeud et on utilise firstChild.nodeValue sur chaque noeud.
    EKA+

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [FLASH MX2004] petit soucis XML et caractères spéciaux
    Par Isses dans le forum Intégration
    Réponses: 20
    Dernier message: 25/04/2006, 13h24
  2. [FLASH MX2004] diaporama fichier xml
    Par penchu dans le forum Flash
    Réponses: 16
    Dernier message: 06/03/2006, 10h55
  3. [FLASH MX2004] Parser un XML en action script
    Par jejeman dans le forum Flash
    Réponses: 6
    Dernier message: 20/09/2005, 17h25
  4. [FLASH MX2004] Eval()et XML
    Par Thibo dans le forum Flash
    Réponses: 5
    Dernier message: 11/07/2005, 12h45
  5. [FLASH MX2004] Création d'un bouton Action Script
    Par chocobos dans le forum Flash
    Réponses: 12
    Dernier message: 13/04/2005, 12h03

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