[flex 2 Builder et AMFPHP]
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:
Code:
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 de classe php utilisateurs.php dans le dossier amfphp/services:
Code:
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 );
}
}
?> |
un fichier user.mxml:
Code:
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 enfin une table user crée spécialement pour l'occasion.
Et c'est dans mon fichier user.mxml que ca se complique:
dans ma fonction initApplication() j'ai deux erreurs:
Code:
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)); |
quand je teste mon fichier , je vois ma grille avec ces 3 colonnes mais elles sont remplies chacune d'un tableauUsers.
Comment regler ce problème de renvoi des données?
Merci d'avance