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 PHP SQL passage de variables tableaux


Sujet :

Flash

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut FLASH PHP SQL passage de variables tableaux
    bonjour,


    Mon problème est à la fois simple et suffisamment complexe puisque j'y ai passé plusieurs jours sans

    avoir réussi.

    C'est un problème que rencontre les pseronnes qui désirent échanger des données entre flash et MySQL.
    Aussi je vais essayer d'etre rationnel et précis dans la présentation du schéma.

    Pour commencer, précisons l'environnement serveur que j'utilise : Apache (easy PHP 1.8 qui inclut PHP

    4.3, MySQL).

    Donc, je désire récupérer des infos stockées préalablement dans ma base de données.

    Pour récupérer les données dans la BD MySQL, j'ai écrit une page (script) PHP qui via une connexion

    remplit une variable avec ma requete. Cette variable est remplie au moyen de 2 boucles (ce que je tiens

    à faire pour garder une bonne visibilité). Elle contient en fin de compte un tableau. A la fin du

    script, la variable-tableau est envoyée .
    Elle est ensuite récuperée par le navigateur dans une page html (incluant le fichier *.swf). Dans ce

    fichier flash, la page doit normalement afficher chacune des cellules de la variable-tableau dans des

    zones textes dynamiques.

    je vais placer ici dans l'ordre
    -l'extrait du script PHP
    -les codes actionscript2 de flash




    -------------------
    VOILA LE CODE PHP
    -------------------



    <html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta HTTP-EQUIV="expires" content="0">
    <meta HTTP-EQUIV="Pragma" content="no-cache">
    <meta HTTP-equiv="Cache-Control" content="no-cache">
    <title>recup_annonces_output.php</title>

    </head>

    <body>

    <?php

    // fonction de retour de variable à flash

    function envoi($var,$val) {
    echo "&".$var."=".utf8_encode($val);
    }



    // variables de connection

    $host="localhost";
    $login="moi";
    $pass="toto";
    $base="DB";

    $tableannonces="annonces";




    // connexion à la base autorisation

    $connect = mysql_connect($host, $login, $pass) or die('pas de possibilité de connection à mySQL ');


    // sélection de la base
    mysql_select_db($base,$connect) or die('selection de la base impossible : '.mysql_error());

    // la requête sql dans la table
    $requete = "SELECT id, natureann, annonce, nomann, prenomann, date,FROM $tableannonces ORDER BY date DESC " or die('la commande insert ne fonctionne pas ') ;

    // l'indice de pointage de la table
    $indice = mysql_query($requete) or die('Erreur d enregistrement');



    // récupération des informations au moyen de l'indice avec double boucle for



    for($i=0; $i<mysql_num_rows($indice); $i++)
    {
    $tableau_annonces[$i]=mysql_fetch_row($indice);

    // les echo ne sont la que pour voir le résultat dans le serveur apache PHP 4.3
    echo '<font color="red">les donnees colonne I : '.$i.' <br>';
    echo 'la categorie de l annonce est : '.$tableau_annonces[$i].' <br>';
    echo '+++++++++++++++++++++++++++++++++++++++++++++ <br>';

    for($j=0; $j<mysql_num_fields($indice); $j++ )
    {

    $tableau_annonces[$j]=mysql_fetch_field($indice);

    //ici, pour chaque itération, j'envoie le contenu de chaque cellule de ma variable $tableau_annonces[$i][$j] à flash :
    envoi("table_fla[$i][$j]",$tableau_annonces[$i][$j]);
    echo '<font color="black">le champ J : '.$j.' <br>';
    echo 'la categorie de l annonce est : '.$tableau_annonces[$i][$j].' <br>';
    echo '------------------------------------------------------- <br>';
    };

    };



    // envoi de la variable de controle a flash


    envoi("finautre","demande enregistrée");
    envoi("fin","ok");
    echo ' <br>';


    //fermeture de la connexion

    mysql_free_result($indice);
    mysql_close();


    // affichage de la variable tableau_annonce dans apache pour vérification

    echo "<pre>";
    print_r($tableau_annonces);
    echo "</pre>";


    ?>
    </body>
    </html>


    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    **********************



    -------------------
    VOILA LE CODE FLASH MX 2004 pro
    -------------------


    fichier : "publication_annonce.fla"


    <IMAGE 1 >

    ---calque action------

    // déclaration des variables

    _global.envois_sms_lv=new LoadVars();
    _global.reception_sms_lv=new LoadVars();
    _global.table_annonces= new Array();
    _global.nombre= new Number();



    <IMAGE2>

    ---calque action------

    stop();

    // il y a un bouton surlequel cliquer ( déclencher l'execution du code)

    bouton1_btn.onRelease= function()
    {

    envois_sms_lv.accord_fla.text="envoi";

    //donnees_sms_lv.send("annonces_input1.php", "POST");
    envois_sms_lv.sendAndLoad("recup_annonces_output.php", reception_sms_lv,"POST");
    //getURL("annonces_input1.php","_blank","POST");
    //loadVariables("annonces_input1.php", "saisie", "POST");

    reception_sms_lv.onLoad = function(success) {
    if (success)
    {
    info1_txt="chargement bien effectué";
    gotoAndPlay(20);

    } else {
    info1_txt="pas de retours d'info";
    gotoAndPlay(2);

    };
    };
    }






    <IMAGE 20>

    ---calque action------

    // pourquoi image 20, plutot qu'image 3 ?
    // pour laisser un peu de temps au chargement du Load à partir de PHP. En théorie, il conviendrait de venir en boucle //jusqu' à l'image ayant déclenchée le Load, tant que le chargement n'est pas totalement effectué.
    //mais avec un bouton, vela n'est pas faisable
    // par ailleurs, la fonction : =function (success) {if (success) remplace cette boucle théorique



    affiche_table.text=table_annonces


    var i:Number=0;



    duplique_txt=reception_sms_lv.finautre;

    // répartition du contenu des cellules [i] (où i=0) de la variable table_fla[i][j] envoyée par le script PHP dans (l'objet LoadVars) reception_sms_lv



    id_txt1=reception_sms_lv[i][0]; //essai pensant que l'objet LV contient implicitement le tableau
    natureann_txt1=reception_sms_lv.table_fla[i][1];
    annonce_txt1=reception_sms_lv.table_fla[$i][2]; //essai en utilisant la forme PHP des variables : $
    nomann_txt1=reception_sms_lv[i][3];
    prenomann_txt1=reception_sms_lv.table_fla;

    date_txt1=reception_sms_lv.table_fla[$i][5j];





    ---calques affichage ------

    //dans chaque calque affichage, une zone textes dynamiques, sans nom d'occurence
    // mais, chaque zone de texte est identifiée par une variable
    une zone de texte pour la vérification de la liaison (zone de texte_verif ): duplique_txt

    puis les autres zones de texte pour afficher les cellules[0] de ma variable table_fla
    la premiere zone de texte : variable id_txt1
    la deuxième zone de texte : variable natureann_txt1
    la troisième zone de texte : variable annonce_txt1
    la quatrième zone de texte : variable nomann_txt1
    la cinquième zone de texte : variable prenomann_txt1



    LE PROBLEME
    Lorsque je fais tourner la page "publication_annonce.HTML" contenant le fichier *publication_annonce.swf" dans le serveur apache PHP,
    la zone texte_verif donne bien "demande enregistrée" renvoyée par le script PHP

    les zones de texte ne donne que "UNDEFINED"




    <IMAGE 21>

    // idem page 20 sauf que
    // var i:Number=1;

    ---------------------------------------

    Donc, si vous pouvez m'expliquer pourquoi mes zones texte n'affichent pas l'objet LV
    et surtout expliquer la logique (brièvement bien sur, car votre temps est précieux)
    je vous en remercie vivement.

  2. #2
    Membre émérite Avatar de dom_dev
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 073
    Points : 2 338
    Points
    2 338
    Par défaut
    bonjour,
    pour ma part ton code et trop long pour que je puisse le débugger par contre l'histoire de l'image 20 ça sert à rien d'ailleurs tu le dis toi même dans les commentaires "reception_sms_lv.onLoad = function(success)...." est là pour le problème de temps de chargement.
    Un détail me surprend c'est que ta variable "table_fla" ne semble déclarée nulle part si je ne me trompe pas or on devrait trouver quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    table_fla =new Array(new Array());
    ensuite, si tu déclares un variable en _global.ma_variable il faut ensuite toujours la préfixer de _global pour pouvoir l'utiliser, je te suggère d'enlever le _global des objets LoadVars.

    enfin, perso je ferai quelques tests avec du code simplifié pour valider chaque étape du programme...

    En espérant t'avoir un peu aidé
    Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
    Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
    MERCI

  3. #3
    Membre averti Avatar de aorgerit
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 257
    Points : 301
    Points
    301
    Par défaut
    Bonjour,

    tu ne peux faire transiter un array php vers un array flash.

    info1_txt="chargement bien effectué";

    yep je suis d'accord mais tes infos sont sont dans un array qui ne peux transiter via flash, flash ne reçoit que des var de type sting ou number, pas des arrays.

    il te faut donc créer une struture php qui te défini en gros
    &var1=pouet&texte_associe_a_var1=pouet&var2=tagaga&texte_associe_a_var2=tsouintsouin...

    ou encore
    transmettre ton array en le stingant, pas le top..

    sinon une seule var : &chaine=pouet#pouet#tagada#tsouintsouin
    il te suffit de splitter ta chaien pour obtenir un tabelau à entrées bilinéaires.

    sinon encore générer via php un objet xml, qui va être reçu par le swf.

    bien à toi.

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut

    bonsoir

    et tout d'abord merci à vous deux d'avoir consacré du temps à lire mon message (et bien sur d'y avoir répondu)

    Ensuite, à l'attention d'aorgerit (dont j'ai lu le message en premier, ayant commencé par le bas de la page) deux petits commentaires me viennent à l'esprit :
    - bien entendu, le passage de variables string et number de PHP en flash ne pose aucun problème, et je pense que personne n'a jamais buté la-dessus.

    - la difficulté réside effectivement dans les arrays (qu'il semblerait justement possible de passer).

    Il faut "serialiser" (sourire - je suis toujours surpris par les termes techniques qu'utilisent certains concepteurs ) le tableau dans PHP avant de l'envoyer. Les deux boucles de mon CODE php sont donc là pour le faire. La "serialisation" est donc ainsi opérée sous forme de variable de variables (en strings bien sur)

    Il faut ensuite "desérialiser" au niveau de flash. Et là est le problème :
    La récupération peut se faire par LoadVars (par la biais de son objet LV), ( soit aussi par LoadVariable (dans un clip, ou un niveau - mais c'est plus rigide) ou par un objet XML (comme tu le suggères dans le cas d'un fichier xml).

    Ensuite, comment "déserialiser" l'objet récupéré.

    A dom_dev, je voulais dire qu'effectivement, il y a du code inutile (puisqu'il ne sert qu'a faire des tests) pour présenter ce problème. Mais je manquais de temps pour faire plus concis ce matin en écrivant sur le forum. Veuillez m'en excuser.

    dom_dev me dit, à bon escient, que j'ai oublié de déclarer le tableau. C'est vrai (sourire : quand on reprend les choses, plus exactement les problèmes, après les avoir laissées un certain temps, en raison de manque de temps, on rechange les noms etc... puis on oublie de mettre à jour des éléments plus ou moins directement liés.

    Et là, dom_dev me donne sans doute une piste :
    il me faut bien entendu déclarer le tableau table_fla =new Array(new Array());
    ... et peut etre ensuite le remplir... (avec push)...
    avec touts les valeurs se trouvant intrinsèquement dans l'objet LV qui sert de lien avec PHP.
    Peut etre est-ce la "déserialisation"

    Enfin, la solution doit certainement exister.
    Si quelqu'un la connait, merci de la faire connaitre.
    Car cela aidera beaucoup de monde.
    Notamment des personnes qui comme moi, ont une autre activité (en dehors de l'informatique) et

    pas forcément bcp de temps pour apprendre de nouveaux langages. C'est pour cela que je déclinais

    l'invitation d'aorgerit à utiliser le XML.

    Si je la trouve, bien entendu, je ne manquerais pas d'écrire (ou quelqu'un d'autre) le script ici ou quelque part d'autre pour que tout le monde puisse l'utiliser. Cela servira à pas mal de monde

    a+

Discussions similaires

  1. [PHP-JS] Passage de variable de php à javascript
    Par jbr_85 dans le forum Langage
    Réponses: 9
    Dernier message: 02/03/2006, 17h19
  2. [PHP-JS] Passage de variable dans un mailto javascript
    Par arsenik7 dans le forum Langage
    Réponses: 26
    Dernier message: 18/01/2006, 10h45
  3. [PHP-JS] Passage de variable php/Js
    Par dark_vidor dans le forum Langage
    Réponses: 14
    Dernier message: 09/12/2005, 22h31
  4. [PHP-JS] passage de variable de javascript à php
    Par msieurx dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2005, 20h42
  5. [PHP-JS] passage de variable php a javascript
    Par limpins dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/07/2005, 11h54

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