Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/09/2007, 16h31   #1
Futur Membre du Club
 
Inscription : janvier 2007
Messages : 58
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 58
Points : 15
Points : 15
Envoyer un message via MSN à nina_bee Envoyer un message via Skype™ à nina_bee
Par défaut [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
nina_bee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 16h55   #2
Futur Membre du Club
 
Inscription : janvier 2007
Messages : 58
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 58
Points : 15
Points : 15
Envoyer un message via MSN à nina_bee Envoyer un message via Skype™ à nina_bee
ouf je viens de trouver une partie de la solution:
dans mon fichier user.mxml:
Code :
1
2
3
 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*"  xmlns:samples="samples.*" layout="absolute" creationComplete="initApplication()">
//il fallait pas oublier de déclarer le xmlns:samples
et un peu plus bas:
Code :
1
2
3
4
5
6
7
8
9
10
 
public var gateway:RemotingConnection;//javais pas déclaré de variable
 
			public function initApplication() : void
            {
//j'ai changé le nom car ça n'avait pas l'air de plaire à flex...
                gateway = new RemotingConnection ( "http://www.monsite.fr/flex2php/amfphp/gateway.php" );
 
                gateway.call( "utilisateurs.getUsers", new Responder(onResult, onFault));
            }
Maintenant plus d'erreur!!! chouette je teste et.... rien n'apparait dans les colonnes (eh oui j'ai bien dit une partie du probleme)
A l'aide (avant que je ne jette cet ordi par la fenetre) !!!

edit: quand je teste ma page php elle ne renvoit rien.. est-ce normal?
nina_bee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 01h15   #3
Rédacteur
 
Avatar de loka
 
Homme Romain PERRUCHON
Architecte - Expert Technique
Inscription : novembre 2004
Messages : 2 664
Détails du profil
Informations personnelles :
Nom : Homme Romain PERRUCHON
Âge : 30
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Architecte - Expert Technique
Secteur : Service public

Informations forums :
Inscription : novembre 2004
Messages : 2 664
Points : 3 607
Points : 3 607
Bonjour,

Si ta page php ne renvoie rien malgrès quelques tests (je suppose que tu as testé si ta fonction getUsers renvoyait quelque chose ou non) c'est alors normal que rien n'apparaissent dans tes colonnes et dans ce cas le problème est du coté de php (ou du coté de la base données ^^).

Essayes de régler ton problème du coté php déjà, une fois ce problème réglé on regardera si tes colonnes se remplissent ou non
__________________
SFML - API Multimédia C++ multiplateforme !
loka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 18h25   #4
Futur Membre du Club
 
Inscription : janvier 2007
Messages : 58
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 58
Points : 15
Points : 15
Envoyer un message via MSN à nina_bee Envoyer un message via Skype™ à nina_bee
merci
maintenant ca marche
nina_bee est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h59.


 
 
 
 
Partenaires

Hébergement Web