Bonjour à tous ,

Alors voici mon problème :
Je débute avec à la fois PHP, Flex et AMFPHP , donc ce que je cherche à faire à mon avis est très simple, je cherche à récupérer dans mon interface un utilisateur qui se trouve en base (MySQL), afin de faire des traitements derrière, notamment afficher un profil.

Voici ma classe PHP User :
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
<?php
 
class User {
        var $_explicitType = "com.model.User";
        var $IdUser;
        var $Nom;
        var $Prenom;
        var $Pseudo;
        var $Password;
        var $DateNaissance;
        var $Adresse;
        var $CP;
        var $Ville;
        var $Telephone;
        var $Mail;
        var $DateInscription;
        var $Abonne;
        var $Credit;
        var $Metier;
        var $Commentaires;
        var $Avatar;
 
        function User()
        {
        }
}
?>
Voici mon code PHP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
$result = mysql_query("SELECT * FROM User WHERE user.IdUser = ".$_SESSION['IdUser']);
if($result===false)
{
	$_SESSION['informations'] = "La récupération du profil de l\'utilisateur a échouée..." ;
	return "error";
}
else
{
	return mysql_fetch_object($result, 'User');
}
Alors je ne sais pas si c'est très bon comme façon de faire, mais en tout cas je sais que ça fonctionne et que, en l'occurrence ça me retourne bien l'user qui est connecté.

Ensuite ma classe AS3 User :
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
package com.model
{
	[RemoteClass(alias="com.model.User")]
 
	[Bindable]
	public dynamic class User
	{
		public var IdUser:int;
		public var Nom:String;
		public var Prenom:String;
		public var Pseudo:String;
		public var Password:String;
		public var DateNaissance:String;
		public var Adresse:String;
		public var CP:int;
		public var Ville:String;
		public var Telephone:String;
		public var Mail:String;
		public var DateInscription:String;
		public var Abonne:Boolean;
		public var Credit:int;
		public var Metier:String;
		public var Commentaires:String;
		public var Avatar:String;
 
		public function User()
		{
		}
	}
}
Et l'extrait du module Flex en question :
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
48
49
50
51
52
53
54
55
56
57
 
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="716" height="466" xmlns:ns1="com.components.*" creationComplete="getUserProfile();">
 
	<mx:RemoteObject id="services" destination="amfphp" source="ConnectClass">
	    <mx:method name="getUserProfile" 
	               result="getUserProfile_resultHandler(event)"
	               fault="getUserProfile_faultHandler(event)"/>
	</mx:RemoteObject>
 
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			import com.model.User;
			public var current:User = new User ();
 
			/*
			* handleFault
			* Si erreur, on l'affiche
			*/
			private function getUserProfile_faultHandler(fault:FaultEvent):void
			{
				navigateToURL(new URLRequest('error.html'),"_self");
				cursorManager.removeBusyCursor();
			}
 
			/*
			* getUserProfile
			* Appel de la methode getUserProfile de notre classe PHP
			*/	
			public function getUserProfile() :void
			{
				cursorManager.setBusyCursor();
				services.getOperation('getUserProfile').send();
			}
 
			/*
			* getUserProfile_resultHandler
			* Résultat pour getUserProfile 
			*/
			private function getUserProfile_resultHandler(evt:ResultEvent):void
			{
				if(evt.result.toString() == "error")
				{
					navigateToURL(new URLRequest('error.html'),"_self");
				}
				else
				{
					Alert.show("Before 'Cast'");
					current = evt.result as User;
					Alert.show("current="+current.toString());
				}
				cursorManager.removeBusyCursor();
			}
		]]>
	</mx:Script>
Le problème :
La première fois que je charge le module, je récupère bien mon User (tout fonctionne à la perfection), j'en ai la confirmation par l'alerte qui s'afficher et qui me dit "[object User]".
Les fois suivantes mon 'busyCursos' ne disparait jamais, et je n'ai que l'alerte "Before 'Cast'" et pas celle se situant juste après le "current = evt.result as User;"

Donc voilà, je ne vous cache pas que j'ai du mal à comprendre pourquoi ça passe la première fois mais pas les suivantes.
J'ai pensé que ça pouvait venir du fait que le module est mal déchargé avant que je le re-load ( et que ça plante ), alors j'ai essayé de le décharger avec unload, en mettant url=null, ou url='', mais rien ne change...

Des idées ?