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 26/02/2011, 11h18   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 65
Points : 12
Points : 12
Par défaut Transmission d'objet de Flex vers AMFPHP

Bonjour à tous,

J'essaie depuis peu Cairngorm et pour l'instant tout se passe bien. Cependant je me trouve confronté à un curieux problème. Je possède un obj PHP qui contient les méthode d'insertion, de projection de mise à jour et de suppression. J'arrive correctement à créer, voir et supprimer mais pas à mettre à jour.

Voici ma fonction PHP :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
public function update($obj)
{
 
	$id = $obj->id_compte;
 
	$requete = "UPDATE ".$this->table." SET 
	pseudo_compte = '".mysql_real_escape_string($obj->pseudo_compte)."',
	mail_compte = '".mysql_real_escape_string($obj->mail_compte)."',
	mdp_compte = '".mysql_real_escape_string($obj->mdp_compte)."'
 
	WHERE id_compte =". $id;
 
	if(!mysql_query($requete)){
		trigger_error($requete, E_USER_ERROR);
		return ;		
	}
 
	return $this->getOne($id);
 
}
et ceci me renvoie le message d'erreur :
Citation:
[RPC Fault faultString="UPDATE comptes SET

pseudo_compte = '',

mail_compte = '',

mdp_compte = ''



WHERE id_compte =" faultCode="AMFPHP_RUNTIME_ERROR" faultDetail="C:\Users\Oscar\workspace\Flex\DouguiCairnGorm\amfPHP\services\dao\ComptesDAO.php on line 95"]
On voit clairement qu'il n'y a pas de valeurs dans mes différents attibuts.

Voici ma fonction as3 :
Code :
1
2
3
4
5
6
7
 
public function updateComptes(pComptes:Compte):void
{
	var compte:Compte = new Compte(1,"test","test","test");
	var call:Object = service.updateComptes(compte);
	call.addResponder(responder);
}
et quand je l'appelle le moniteur de réseau me dit que j'ai les bonnes valeurs transmises en paramètre.

Ma fonction de création prend aussi un objet en argument et fonctionne parfaitement.

Voici mon objet en as3 :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
package com.dougui.dougui.model.vo
{
 
 
 
	[RemoteClass(alias="vo.ComptesVO")]	
	[Bindable]
	public class Compte extends Object
	{
 
		private var _id_compte:int;
 
		public function get id_compte():int
		{
			return _id_compte;
		}
 
		public function set id_compte(value:int):void
		{
			_id_compte = value;
		}
 
		private var _pseudo_compte:String;
 
		public function get pseudo_compte():String
		{
			return _pseudo_compte;
		}
 
		public function set pseudo_compte(value:String):void
		{
			_pseudo_compte = value;
		}
 
		private var _mail_compte:String;
 
		public function get mail_compte():String
		{
			return _mail_compte;
		}
 
		public function set mail_compte(value:String):void
		{
			_mail_compte = value;
		}
 
		private var _mdp_compte:String;
 
		public function get mdp_compte():String
		{
			return _mdp_compte;
		}
 
		public function set mdp_compte(value:String):void
		{
			_mdp_compte = value;
		}
 
 
		public function Compte(id_compte:int = 0, pseudo_compte:String = null, mdp_compte:String = null, mail_compte:String = null)
		{
			super();
			this.id_compte = id_compte;
			this.pseudo_compte = pseudo_compte;
			this.mdp_compte = mdp_compte;
			this.mail_compte = mail_compte;
		}
 
 
 
	}
}
et l'équivalent en PHP :
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
 
<?php
 
 
class ComptesVO {
 
//	AMFPHP only
	var $_explicitType="vo.ComptesVO";
 
	public $id_compte;
	public $pseudo_compte;
	public $mail_compte;
	public $mdp_compte;
 
 
	public function ComptesVO() 
	{
 
	}
 
	public function mapObject($data)
	{
 
		$this->id_compte = $data["id_compte"];
		$this->pseudo_compte = $data["pseudo_compte"];
		$this->mail_compte = $data["mail_compte"];
		$this->mdp_compte = $data["mdp_compte"];
 
 
	}
 
}
?>

J'utilise AMFPHP comme gateway.

Pouvez vous m'aider?

Merci d'avance et bonne journée.
Dougui_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2011, 14h45   #2
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 65
Points : 12
Points : 12
J'ai fait exactement la même chose pour un autre objet (Pages). Et cela fait exactement la même chose. C'est rassurant et non à la fois.
Dougui_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2011, 15h25   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 65
Points : 12
Points : 12
J'ai résolu moi même mon erreur.

La cause était que les valeurs étaient transmise en Array et que je ne les transformaient pas en objets. J'ai donc utilisé la fonction mapObject générée par FCG (Flex Code Generator) pour que ma fonction soient de la sorte :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
public function update($data)
{
	$obj = new ComptesVO();
	$obj->mapObject($data);
 
	$id = $obj->id_compte;
 
	$requete = "UPDATE ".$this->table." SET 
	pseudo_compte = '".mysql_real_escape_string($obj->pseudo_compte)."',
	mail_compte = '".mysql_real_escape_string($obj->mail_compte)."',
	mdp_compte = '".mysql_real_escape_string($obj->mdp_compte)."'
 
	WHERE id_compte =". $id;
 
	if(!mysql_query($requete)){
		trigger_error("Unable to delete Update", E_USER_ERROR);
		return ;		
	}
 
	return $this->getOne($id);
 
}
Bonne journée à tous.
Dougui_bzh 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 17h10.


 
 
 
 
Partenaires

Hébergement Web