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

Flex Discussion :

Convertir un tableau associatif PHP vers Flex à travers AMFPHP


Sujet :

Flex

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Points : 35
    Points
    35
    Par défaut Convertir un tableau associatif PHP vers Flex à travers AMFPHP
    Salut à tous,
    J'ai passé des heures à essayer de resoudre ce problème mais là je baisse les bras! Décidément, je ne pourrai jamais finir d'apprendre de Flex!!!

    J'ai un service qui renvoie un tableau de tableaux associatifs.

    Quand j'utilise le service browser de AMFPHP, les données sont bien reconnus comme sur l'image jointe.

    Mais c'est pas le cas avec Flex!!! Il reconnait seulement un tableau d'Object! Et quand j'essaie d'accéder à ces Object ça met undefined!

    Autre chose, quand je transforme le tableau PHP en tableau normal à 2 dimensions (c-a-d plus de key particulier d'indexation), Flex reconnait bien ce tableau et les valeurs qu'il contient.

    Que se passe t'il? y a t-il des imports supplémentaires à faire?
    On m'a conseillé de renvoyer mon tableau sous forme de RecordSet (return new RecordSet($result); au lieu de return $result;) mais ça ne marche toujours pas!

    J'utilise Flex 3.0 et AMFPHP 1.9 beta2.

    Merci
    Images attachées Images attachées  

  2. #2
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Bonsoir

    undefined
    Déjà eu ce retour d'erreur et si mes souvenirs sont bons, celà provenait du fait que les éléments de connexion MySQL étaient inconnus de Flex, ou erronés.
    Celà peut aussi se manifester pour d'autres raisons dont je n'ai pas l'expérience, mais bon, c'est tjrs une première piste.

    undefined
    Ou bien une/des variable(s) non reconnue(s),en mode tableaux associatifs.
    Ce qui pourrait s'expliquer par le fait que si tu transformes en mode tableau normal, tu ne rencontres plus ce souci.
    C'est de ce côté là que tu devrais orienter tes recherches.

    Apparté :
    Je ne sais pas vraiment comment réagit AMFPHP dans ce cas de figure (tableaux associatifs) et de quelle manière il va retourner l'info à Flex.
    Personnellement, je ne l'utilise pas et développe en "dur", ce qui me permet de maîtriser plus facilement mes sources, notamment pour des combinaisons complexes, (et simplement associées au service HttpService).

    A mon avis, Flex n'y est pour rien, il ne fait que faire ce qu'on lui demande de faire, suffit de lui demander dans le langage et la forme qu'il aime bien entendre.

    Fais un log de ton fichier en mode tableaux associatifs et en mode normal, et compare les, tu devrais détecter ce qui les différencient en résultats et par conséquent d'identifier ce qui est undefined .
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  3. #3
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    salut,

    il va nous falloir ton code, au moins ton retour de fonction php et ton handler result de ton remoteObject coté flex

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Points : 35
    Points
    35
    Par défaut
    Ok
    Coté PHP:
    Dans ma class ResultatService, j'ai une fonction getRepondance dans laquelle je crée un tableau que je remplie dans une boucle. Je fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $result[] = array('label' => $nom_gpe, 'repondants' => $nb_rep, 'non_repondants' => ($nb_total - $nb_rep), 'total' => $nb_total);
    Évidemment les variables $nom_gpe, $nb_rep et $nb_total (cf image jointe au debut de ce thread) et après la boucle, je fais un simple return $result;

    Coté Flex/AS:
    J'appelle le service de la sorte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connection.call("ResultatService.getRepondance", new Responder(onResult_getRepondance, onFault), question, gpeArray);

    Ci-dessous le code du handler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private function onResult_getRepondance(data:Object):void
    {
    	if (data)
    	{
    		trace(data.toString());
    		var dataArr:Array = new Array(data);
    		trace(dataArr.toString()+dataArr[1]);
    		repondanceAC = new ArrayCollection(dataArr);
    		trace(repondanceAC.toArray().toString());
    		Alert.show(repondanceAC.toArray().toString());
    		Alert.show("ok");
    	} 
    }
    J'ai aussi essayé ArrayUtil.toArray pour la conversion dans le handler mais rien ne marche!

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Salut,
    que te donnent les différentes traces / Alert.show dans le code du handler stp ?
    N'oubliez pas avant de poster :

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Points : 35
    Points
    35
    Par défaut
    ça donne quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [object Object] [object Object] [object Object] 
    [object Object] [object Object] [object Object]
    Et quand j'essaie d'acceder à un élément avec dataArr[1] par exple, ça donne undefined

  7. #7
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    As tu essayé de caster ton objet de retour en ArrayCollection et en utilisant coté AMFphp le recordSet ?

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 43
    Points : 35
    Points
    35
    Par défaut
    Dans le handler, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var dataArr:Array = new Array(data);
    repondanceAC = new ArrayCollection(dataArr);
    ça suffit pour le cast non?

    Et dans PHP, j'ai aussi essayé: return new RecordSet($result); au lieu de return $result;

    Mauis la Flex me genere une erreur comme quoi il ne reconnait pas les clés "repondants", "label", etc...

  9. #9
    Membre éclairé
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Points : 875
    Points
    875
    Par défaut
    Salut,
    as-tu essayé comme ça ?
    côté php :
    côté Flex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public var repondanceAC:ArrayCollection;
    public function onResult(e:ResultEvent):void{
    		 	repondanceAC = new ArrayCollection(e.result as Array);
    		 }
    es-tu obligé de passé par un Responder ?
    N'oubliez pas avant de poster :

Discussions similaires

  1. Retour d'un tableau PHP vers Flex
    Par stage2009 dans le forum Flex
    Réponses: 4
    Dernier message: 18/11/2010, 10h32
  2. Récupérer tableau Associatif PHP en DELPHI
    Par StarMusic dans le forum Langage
    Réponses: 7
    Dernier message: 01/12/2008, 11h53
  3. Affichage tableau associatif php
    Par TwAzO dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2008, 09h25
  4. Réponses: 1
    Dernier message: 06/06/2007, 14h02
  5. Réponses: 1
    Dernier message: 28/02/2006, 17h58

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