Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre régulier
    Inscrit en
    août 2007
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : août 2007
    Messages : 202
    Points : 86
    Points
    86

    Par défaut Problème de service

    Bonjour!

    Je bloque sur la récupération de mes données stockées dans mySql.
    j'ai un service php (Zend) pour les insertions (qui fonctionne) et un autre pour sélectionner une ligne d'informations; le service est copié sur l'exemple fourni et largement repris par Adobe http://help.adobe.com/fr_FR/Flex/4.0...e6e8-8000.html
    http://help.adobe.com/fr_FR/Flex/4.0...0d422cf08-7ff2

    Je parviens à réaliser cette sélection dans un datagrid.
    Cependant le but consiste à dire si telle réponse est fournie pour la question 1 alors ...
    Deux optiques apparaissent suite aux recherches :
    1 Regarder du côté du dataProvider du datagrid pour chercher les données :
    Code :
    1
    2
    3
    4
    5
    6
    7
    <mx:DataGrid includeIn="StateFlo2" creationComplete="datagrid1_creationCompleteHandler(event)" 
    				 dataProvider="{getQuestionsResult.lastResult}" editable="true"> 
    		<mx:columns> 
    			<mx:DataGridColumn headerText="Question1" dataField="q1"/> 
    			<mx:DataGridColumn headerText="Question2" dataField="q2"/> 
    		</mx:columns> 
    	</mx:DataGrid>
    Il faut donc travailler sur getQuestionsResult.lastResult. Mais comment? Quand j'essaie de récupérer son contenu avec un objet ou un arrayCollection je n'y parviens pas!

    2 Insérer un événement sur la distribution du résultat du CallResponder
    Code :
    <s:CallResponder id="getQuestionsResult" result="repQuestions_resultHandler(event)"/>
    puis récupérer son contenu :
    Code :
    1
    2
    3
    4
    5
    6
    protected function repQuestions_resultHandler(event:ResultEvent):void {
     
    var essai1:ArrayCollection;
    essai1= new ArrayCollection(ArrayUtil.toArray(getQuestionsResult.lastResult));
    var essai2:Object = getQuestionsResult.lastResult as InternauteService;
    Alert.show(plist[0]['q1']);
    Vous l'aurez compris, je suis à la ramasse :-) les deux procédés se ressemblant...
    Merci d'avoir lu jusqu'ici! Un indice?

  2. #2
    Membre régulier
    Inscrit en
    août 2007
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : août 2007
    Messages : 202
    Points : 86
    Points
    86

    Par défaut

    Bonjour après moult pérégrinations franglaises j'en arrive à :
    comment récupérer monService.lastResult?
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    //1 Définition service
    <s:CallResponder id="getQuestionsResult3" result="getQuestionsResult3_resultHandler(event)"/>	
    //2 Appel service et on jeton
    protected function textInput_creationCompleteHandler(event:FlexEvent):void
    {
    getQuestionsResult3.token = internauteService.getQuestions();
    }
    //3 Traitement résultat			
     
    protected function getQuestionsResult3_resultHandler(event:ResultEvent):void
    {			
    //var myQuestionInstance :ClasseQuestion  = event.result as ClasseQuestion;
    var toto:Array=ArrayUtil.toArray(getQuestionsResult3.lastResult);
    var i:Number = new Number();
    if(toto != null){
    for(i=0;i<toto.length;i++)
    {
     
    	Alert.show(toto['q1']);//ou toto['0'] q1 étant un champ de la classe Question que j'ai typée avec "ClasseQuestion" dans la génération du service
    }
    }
    Mais je n'obtiens qu'un résultat vide... ou "Object ClasseQuestion"...

  3. #3
    Membre régulier
    Inscrit en
    août 2007
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : août 2007
    Messages : 202
    Points : 86
    Points
    86

    Par défaut


    monService.lastResult renvoie un objet de type CustomDatatype que j'ai défini lors de l'affectation du service. CustomDatatype est composé de 5 champs (q1,q2,q3,q4,q5 tous entiers) issus de champs d'une table MySql.

    J'essaie d'accéder à l'objet généré par monService.lastResult :
    Code :
    1
    2
    3
    var tenta:CustomDatatype1=new CustomDatatype1();
    				tenta=getQuestions1Result.lastResult;
    				labTest.text=tenta.q1.toString();
    Mais.... nada snifff!

  4. #4
    Membre régulier
    Inscrit en
    août 2007
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : août 2007
    Messages : 202
    Points : 86
    Points
    86

    Par défaut

    J'ai compris ma question yeahhhh!

    En modifiant ce qui sort du service php : on passe d'un tableau associatif ($row) à un integer.
    J'indique dans Flex que la méthode getQuestions est de type int et là c'est l'apothéose, j'obtiens la valeur souhaitée!!!
    Code :
    1
    2
    3
    var tenta:int=new int();
    	tenta=getQuestionsResult.lastResult;
    	labTest.text="voyons voyons" + tenta;
    Bon de retour du côté php, je remet le tableau associatif.
    Côté Flex : 2 choix soit je déclare getQuestion en "object" soit dans un nouveau type : le fameux ClasseQuestion (qui devrait s'appeler typeQuestion).

    Comment puis-je manipuler l'objet retourné (propriétés?) OU ce nouveau type (ClasseQuestion)?

  5. #5
    Membre régulier
    Inscrit en
    août 2007
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : août 2007
    Messages : 202
    Points : 86
    Points
    86

    Par défaut

    Et la petite solution qui va bien :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
     
    protected function getQuestionsResult_resultHandler(event:ResultEvent):void
    {
            var tenta:ClasseQuestion=new ClasseQuestion();
    	tenta=getQuestionsResult.lastResult[0];		
    	labTest.text="voyons " + tenta.q1;
     
    }
    En fait Flex génère une classe : ClasseQuestion dans mon cas qui correspond à celle du php service. Il n'y a plus qu'à y accéder avec le get... dans l'écouteur de la diffusion du service Php.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •