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] Pb apostrophe / passage de php a flash en xml


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] Pb apostrophe / passage de php a flash en xml
    Bonjour,

    Voila le code php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $xml="<?xml version='1.0' encoding='UTF-8' ?>";
    $xml.='<contact>';
    $xml.="<user1>apostrophe' E accent aigu é</user2>";
    $xml.='<user2>rien</user2>';
    $xml.='</contact>';
    echo $xml
    ?>
    le code actionscript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    php=new XML();
    php.ignoreWhite=true;
    php.load("xml_test2.php");
    _root.stop();
    php.onLoad=function(){
         tt.text=this.firstChild.childNodes[0].childNodes.toString();
         _root.play();
    }
    et ca donne ca (tt est un textInput):
    apostrophe&apos; E accent aigu é
    d'un coté, ca affiche correctement un accent, mais pas du tout une simple apostrophe !
    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

    Dans flash il faut
    1 - que tu utilises la fonction utf8_encode avant de parser le xml dans flash via le echo
    2 - tu peux ajouter une balise header pour changer l'encodage de ton fichier php ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    header("Content-type: text/css; charset=UTF-8")
    c'est pas obligatoire mais c'est un +

    EKA+

  3. #3
    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 !

    voila le php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    header("Content-type: text/css; charset=UTF-8");
    $xml="<?xml version='1.0' encoding='UTF-8' ?>";
    $xml.='<contact>';
    $xml.="<user1>apostrophe' E accent é aigu é</user2>";
    $xml.='<user2>rien</user2>';
    $xml.='</contact>';
    echo utf8_encode($xml)
    ?>
    ca change pas grand chose. le "é" passe tres bien grace au utf8_encode, mais l'apostrophe ressort tjrs en "&apos;"

    j'espere quand meme ne pas a avoir a faire de la recherche/remplacement de string dans flash pour les apostrophe...

  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
    c'est bon !

    il fallait mettre ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    header("Content-type: text/css; charset=UTF-8");
    $xml="<?xml version='1.0' encoding='UTF-8' ?>";
    $xml.='<contact>';
    $xml.='<user1>'.urlencode(utf8_encode('apostrophe\' E accent é aigu é   &apos;')).'</user2>';
    $xml.='<user2>rien</user2>';
    $xml.='</contact>';
     
    echo $xml;
    ?>
    et ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    php=new XML();
    php.ignoreWhite=true;
    php.load("xml_test2.php");
     
    _root.stop();
    php.onLoad=function(){
    	tt.text=unescape(this.firstChild.childNodes[0].childNodes.toString());
    	gg.text="2";
    	_root.play();
    }
    c'est un peu lourdeau quand meme comme systeme....

  5. #5
    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
    Quand tu fais une chaine de caractère (en PHP ou flash)... faut bien choisir si tu vas utiliser " (guillemet double) ou ' (guillemet simple)
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var s1 = "hello" ; // j'ouvre et je ferme ma chaine avec un "
    var s2 = 'coucou' ; // j'ouvre et je ferme ma chaine avec un '
    Maintenant si tu veux utiliser un ' entre 2 ' ou un " entre 2 " ... faut échapper ton caractère en mettant un \ devant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var s = 'la vie est belle est c\'est bien' ;
    Donc du coup ... c'est plus simple si tu fais cela dans ton code et que penses à utiliser le utf8_encode qu'à la fin comme je te l'ai dit..
    Si tu utilises utf8_encode sur tous les ' de ta chaine.. tu risque très rapidement de te prendre bien la tête ....

    Sinon n'oublie pas que si tu utilises des " tu peux mettre dedans des ' sans problème.. à moins que tu doives utiliser un " dedans.. donc là faut échapper les " entre 2 "".
    Voilà en gros le problème qu'il faut que tu règles dans ton utilisation des string en PHP ou FLASH ... c'est pareil dans presque tous les languages de programmation

    EKA+

  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
    Je ne comprends pas bien ton dernier message.
    Mon bout de code en php est correct, non ?

    pour ce qui est des ' et des ". en fait, je choisis pas. j'utilise les 2 conventions, ca depend des lignes, si ca m'arrange ou pas. je prefere les ', mais parfois, c'est un peu lourd...
    bon, c'est clair que le fait de ne pas choisir, ca ne rend pas le code tres lisible....

    pour en revenir au urlencode &Co. en fait, quand on passe de Flash a php, il faut faire un escape() dans Flash et un urldecode() dans php.

  7. #7
    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
    si tu mets un \ devant tous tes ' et " dans tes chaines tu devrais pas avoir de problème...
    Pour le escape et unescape... tu devrais tenter d'utiliser la balise CDATA dans les noeuds de ton xml :
    EKA+

  8. #8
    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
    ca a l'air bien le CDATA.
    en fait, pour toutes les données textuelles pouvant avoir des é, à, ', .. il vaut mieux utiliser CDATA ?

    si je reprends l'exemple de ton lien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" standalone="yes"?>
    <racine>
       <![CDATA[Voici un élément vide 
                correctement fermé : <balise/>.]]>
       <element>
             <![CDATA[Inutile de faire cela 
                      &lt;balise/&gt;.]]>
       </element>
    </racine>
    comment est-ce que je lis le premier CDATA dans Flash. j'ai tenté ca, mais ca marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    php=new XML();
    php.ignoreWhite=true;
    php.load("cdata.xml");
    _root.stop();
    php.onLoad=function(){
    	tt.text=this.firstChild.childNodes[0].childNodes.toString();
    	_root.play();
    }

  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
    un poil trop long.
    avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tt.text=this.firstChild.childNodes[0].toString();
    je recupere bien qque chose, mais ca donne ca dans le swf:
    Voici &apos;&apos;&apos;un
    pas terrible
    j'ai oublié qque chose ?

  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
    utilise la propriété nodeValue de ton noeud !
    Lis bien le dico de flash sur la classe XML et XMLNode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tt.text=this.firstChild.firstChild.nodeValue ;
    EKA+

  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
    merci !

    ca marche bien. ca passe les accents, les ' et les " !

    En fait, en francais, on est presque obliger d'utiliser CDATA si le champ n'est pas purement numerique. c'est bien ca ?

  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
    ou alors faut convertir dans le PHP toute la chaine de caractère avec une fonction PHP ... mais bon en général le CDATA c'est + propre et cela suit la logique d'utilisation d'un XML.. c'est pas une balise qui existe par hasard
    EKA+

  13. #13
    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
    PS : en français vaut mieux utiliser le CDATA mais en général on l'utilise surtout si le contenu contient des balises HTML qui ne doivent pas être prises en compte par le parseur XML...
    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
    merci pour tout

    il faut que je reflechisses avant de remanier tout mon .fla et mes .php...
    j'espere que je vais reussir a parser les CDATA en php par la suite!

  15. #15
    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 sans fin

    en fait, j'aurais du poser le probleme des le debut!

    voila ce que je veux faire.

    y a un formulaire dans le .swf.
    Le usr rentre des infos.
    Il peut sauver.
    Ca va ecrire les infos dans un objet xml et ensuite, ca l'envoie a un .php
    le .php copie le .xml dans un repertoire et en extrait un petit bout pour peupler une base de données.

    par la suite, le usr peut decider de recharger ses infos dans le meme formulaire. le .swf va donc aller chercher le .xml sur le serveur, le parse et repeuple le formulaire.

    c'est du tout simple ! mais je patauge vraiment.....

    Flash->PHP:
    1) je construis un string qui decrit un xml.
    2) je l'envoie avec LoadVars.send()
    est-ce qu'il faut que je le mette dans un objet xml et je le toString avant de faire le LoadVars.send() ?
    3) je receptionne dans php, et je suis tenter par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $xmlstr = $_POST["xml"];
    $handle = fopen($fichier, 'w');
    fwrite($handle, $xmlstr);
    fclose($handle);
    bon, ca marche pas terible, parce que si j'edite le fichier .xml généré, il a des é a la place des é et il echape les '

    PHP->Flash
    Ben, comme j'ai pas reussi a avoir un .xml tres propre, evidement, ca se propage un peu dans le swf.
    le swf lit le .xml directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    php=new XML();
    php.ignoreWhite=true;
    php.load("save.xml");
    il lit bien les é (ce qui est marrant parce que si j'edite le fichier, ca ressemble a rien : é). mais il se plante sur les ' (elle sont tjrs echapées).

    Il n'y a pas une methode toute claire et toute simple a suivre ? ca me semble etre vraiment du tres simple ce que je veux faire.
    est-ce que je m'y prend mal ?

  16. #16
    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
    lis l'aide...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var send = new LoadVars ;
    send.xml = myXML ;
     
    var loader = new XML ;
    loader.onLoad = function (success) {
        if (success && this.status == 0) {   
             trace (this) ;
        }
    }
     
    send.sendAndLoad("monPHP.php", loader) ;
    Pas besoin d'enregistrer en général dans un fichie texte.. tu peux pas utiliser une base de donnée MYSQL ? c'est + simple en général en fin de compte.
    EKA+

  17. #17
    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
    lis l'aide...
    Je fais que ca. mais elle est clairement pas faite pour moi. je prefere largement celle de python ou du php...
    mais bon, il faut faire des choses coté client web parfois!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var send = new LoadVars ;
    send.xml = myXML ;
    var loader = new XML ;
    loader.onLoad = function (success) {
        if (success && this.status == 0) {   
             trace (this) ;
        }
    }
    send.sendAndLoad("monPHP.php", loader) ;
    myXML est un string ? (j'imagine que oui, mais c'est pour etre sur
    En fait, ton code permet d'envoyer le xml au php et de s'en reprendre un autre en retour. c'est bien ca ?
    Moi je voulais juste envoyer un xml sur appuie bouton et quitter le swf par la suite.
    et, dans un deuxieme temps, relancer ce swf avec une FlashVars qui permet de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    myXml=new XML();
    myXml.ignoreWhite=true;
    myXml.load("xml_make.php?id=" + FlashVars);
    et donc de recuperer le doc xml.
    je pensais aussi le faire comme ca (pointer directement le fichier):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myXml.load("fichier_"+ FlashVars +".xml");
    Citation Envoyé par ekameleon
    Pas besoin d'enregistrer en général dans un fichie texte.. tu peux pas utiliser une base de donnée MYSQL ? c'est + simple en général en fin de compte.
    EKA+
    Tu veux dire que c'est mieux de stocker un document xml entier dans un champ TEXT de MySQL plutot que de creer un fichier ?

  18. #18
    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
    Tout dépend de ton utilisation mais en général c'est mieux et plus sécurisé
    EKA+

  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
    je vais voir tout ca. mais dans mon cas, ca n'est pas le plus pratique.

    au fait, sur mon autre Topic, tu m'avais conseillé AMFPHP.
    Est-ce que j'aurais eu tous ces problemes de é, ", à, ê, ', .... avec AMFPHP ou ca aurait tout bien traité de maniere completement transparante (pour moi) ?

  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
    AMFPhp tu n'auras pas de problème d'accent en principe en gardant à l'idée que ton texte doit rester tout le long en utf8 Surtout que là cela va réduire pas mal de chose au niveau de ton travail côté serveur et flash en principe.
    EKA+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. passage de variables de flash MX ( année 2002 ) à MySql par Php
    Par jitep dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 13/10/2009, 14h34
  2. Réponses: 4
    Dernier message: 02/02/2006, 09h31
  3. [FLASH MX2004] Zoom au passage de la souris
    Par pierrot10 dans le forum Flash
    Réponses: 1
    Dernier message: 26/01/2006, 10h38
  4. Réponses: 16
    Dernier message: 06/11/2005, 15h37
  5. [FLASH MX2004] Recuperation d'une variable php
    Par Shooter dans le forum Flash
    Réponses: 2
    Dernier message: 30/06/2005, 09h37

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