Précédent   Forum du club des développeurs et IT Pro > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/11/2012, 12h27   #1
granchef
Membre du Club
 
Inscription : août 2007
Messages : 164
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 164
Points : 56
Points : 56
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?
granchef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2012, 11h45   #2
granchef
Membre du Club
 
Inscription : août 2007
Messages : 164
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 164
Points : 56
Points : 56
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"...
granchef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2012, 13h40   #3
granchef
Membre du Club
 
Inscription : août 2007
Messages : 164
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 164
Points : 56
Points : 56

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!
granchef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2012, 14h34   #4
granchef
Membre du Club
 
Inscription : août 2007
Messages : 164
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 164
Points : 56
Points : 56
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)?
granchef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2012, 12h20   #5
granchef
Membre du Club
 
Inscription : août 2007
Messages : 164
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 164
Points : 56
Points : 56
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.
granchef est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h28.


 
 
 
 
Partenaires

Hébergement Web