bonjour,
apres avoir longuement tatonné, j'ai enfin réussi a installer AMFPHP sur mon serveur et à créer un mxml qui récupere la valeur d'un champ. Une fois le tout déployé, j'ai voulu acceder à ma base de donnée pour en récuperer les infos dans une grille:
id-nom-mail
J'ai donc une classe AS3 RemotingConnection dans un dossier sample a la racine de mon projet:
un fichier de classe php utilisateurs.php dans le dossier amfphp/services:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package samples { import flash.net.NetConnection; import flash.net.ObjectEncoding; public class RemotingConnection extends NetConnection { public function RemotingConnection (sURL:String) { objectEncoding = ObjectEncoding.AMF0; if (sURL) connect (sURL); } public function AppendToGatewayUrl(s:String):void { // } } }
un fichier user.mxml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 <?php //Création d'une classe php qui permet de récuperer les infos de la table user class utilisateurs { function utilisateurs () { // Méthode de remplissage du tableau $this->methodTable = array( "getUsers" => array( "description" => "Return a list of users", "access" => "remote" ) ); } //récupération des données dans la base: //1)connection //2)resquette //3)tableau suivant le méthode décrite dans la fonction sample //4)renvoi des données function getUsers () { $mysql = mysql_connect("xxx", "xxx", "xxxx") or die("erreur de conexion à la base: ".mysql_error()); mysql_select_db( "user" ); //return a list of all the users $Query = "SELECT * from user"; $Result = mysql_query( $Query ); while ($row = mysql_fetch_object($Result)) { $ArrayOfUsers[] = $row; } return( $ArrayOfUsers ); } } ?>
et enfin une table user crée spécialement pour l'occasion.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="absolute" creationComplete="initApplication()"> <mx:Script> <![CDATA[ //fichier de connection: import samples.RemotingConnection; import flash.net.Responder; import samples.RemotingConnection; import flash.events.NetStatusEvent; [Bindable] public var tableauUsers:Array; public function initApplication() : void { RemotingConnection = new RemotingConnection ( "http://www.monsite.fr/flex2php/amfphp/gateway.php" ); RemotingConnection.call( "utilisateurs.getUsers", new Responder(onResult, onFault)); } public function onResult( result : Array ) : void { tableauUsers = result; } public function onFault( fault : String ) : void { trace( fault ); } ]]> </mx:Script> <mx:DataGrid x="294" y="103" width="370" height="208" dataProvider="{tableauUsers}"> <mx:columns> <mx:DataGridColumn headerText="id" dataField="id"/> <mx:DataGridColumn headerText="nom" dataField="nom"/> <mx:DataGridColumn headerText="mail" dataField="mail"/> </mx:columns> </mx:DataGrid> </mx:Application>
Et c'est dans mon fichier user.mxml que ca se complique:
dans ma fonction initApplication() j'ai deux erreurs:
quand je teste mon fichier , je vois ma grille avec ces 3 colonnes mais elles sont remplies chacune d'un tableauUsers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 RemotingConnection = new RemotingConnection ( "http://www.monsite.fr/flex2php/amfphp/gateway.php" ); //affectation à la classe RemotingConnection incorrecte //contraine implicite d'une valeur de type sample:RemotingConnection vers un autre type sans rapport Class RemotingConnection.call( "utilisateurs.getUsers", new Responder(onResult, onFault));
Comment regler ce problème de renvoi des données?
Merci d'avance
Partager