Bonjour,
Petit soucis pour actualisé l'identifiant (id) de mon objet "Voiture" après insertion de l'objet en base.
Mon Alerte affichant l'id de voiture (idVoiture) dans le fichier "VoitureAS3.as"
var idVoiture:String = String(obj_voiture.id);
Alert.show('Après ajout : ' + idVoiture);
Affiche 0 au lieu de la valeur de l'identifiant ajouter.
IHM :
Code SQL Table Voiture :
Code de la classe PHP (pour amfphp) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE DATABASE `testvoiture` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE TABLE `testvoiture`.`voiture` ( `id` INT( 3 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `vitesse` INT( 3 ) NOT NULL , `couleur` VARCHAR( 15 ) NOT NULL ) ENGINE = MYISAM ;
Code fichier Voiture.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
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91 <?php class ServiceVoiture { protected $serveur = 'localhost'; protected $utilisateur = 'root'; protected $motDePasse = 'mdproot'; protected $baseDeDonnees = 'testvoiture'; protected $connexion = null; /** * Liste des services */ public function __construct() { } protected function connect() { $this->connexion = mysql_connect($this->serveur, $this->utilisateur, $this->motDePasse); $selectDB = mysql_select_db($this->baseDeDonnees,$this->connexion); } protected function disconnect() { if($this->connexion != null) { mysql_close($this->connexion); } } /** * Service qui permet d'obtenir la liste des voitures * * @return array Tabeau d'objet */ public function serviceListerVoitures() { //Connexion à la base de données $this->connect(); //Requête $requete = 'SELECT * FROM voiture'; //Stockage du résultat $resultat = mysql_query($requete); //Alimentation d'un tableau avec la liste des voitures while($voiture = mysql_fetch_object($resultat)) { $tableauVoitures[] = $voiture; } //Déconexion de la base de donnée $this->disconnect(); //Envoi du tableau return $tableauVoitures; } /** * Service permettant d'ajouter une nouvelle voiture * * @param $vitesse int Vitesse de la voiture * @param $couleur String Coueur de la voiture * @return int Identifiant de la voiture ajoutée */ public function serviceAjoutVoiture($vitesse, $couleur) { //Connexion à la base de données $this->connect(); //Requête SQL $requete = "INSERT INTO voiture (vitesse, couleur) VALUES ($vitesse, '$couleur')"; //Stockage du résultat $resultat = mysql_query($requete); $lastID = mysql_insert_id(); //Déconexion de la base de donnée $this->disconnect(); //Envoi de la réponse return $lastID; } } ?>
Code de la classe Voiture Action Script 3 (Voiture.as) :
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 <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script source="VoitureAS3.as"> </mx:Script> <mx:Canvas label="cv_voiture" width="100%" height="100%" creationComplete="listerVoitures();"> <mx:DataGrid id="dg_voitures" x="10" y="10" height="200" dataProvider="{tableauVoitures}" > <mx:columns> <mx:DataGridColumn headerText="Id" dataField="id" width="70"/> <mx:DataGridColumn headerText="Vitesse" dataField="vitesse" width="70"/> <mx:DataGridColumn headerText="Couleur" dataField="couleur" width="100"/> </mx:columns> </mx:DataGrid> <mx:Panel x="260" y="10" width="305" height="200" layout="absolute" title="Nouvelle Voiture" id="pn_voiture"> <mx:Form x="10" y="10" width="265" height="87"> <mx:FormItem label="Vitesse :" required="true"> <mx:TextInput id="txt_vitesse"/> </mx:FormItem> <mx:FormItem label="Couleur" required="true"> <mx:TextInput id="txt_couleur"/> </mx:FormItem> </mx:Form> <mx:Button x="99" y="105" label="Ajouter" id="btn_ajouter" click="ajouterVoiture()"/> </mx:Panel> </mx:Canvas> </mx:Application>
Code Action Script 3 du fichier VoitureAS3.as :
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 package com.exemple { import flash.events.Event; import flash.events.EventDispatcher; import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.remoting.mxml.RemoteObject; public class Voiture extends EventDispatcher { private var _id:int; private var _vitesse:int; private var _couleur:String; public function Voiture(p_id:int, p_vitesse:int, p_couleur:String) { _id = p_id; _vitesse = p_vitesse; _couleur = p_couleur; } [Bindable("monID")] public function get id():int{ return _id; } public function set id(param:int):void { _id = param; dispatchEvent(new Event("monID")); } public function get vitesse():int{ return _vitesse; } public function set vitesse(param:int):void { _vitesse = param; } public function get couleur():String { return _couleur; } public function set couleur(param:String):void { _couleur = param; } public function ajouter(param:String):void { var service:RemoteObject = new RemoteObject(); service.endpoint = param; service.showBusyCursor = true; service.destination = "amfphp"; service.source = "ServiceVoiture"; // Récupère l'id de la voiture inséré service.serviceAjoutVoiture.addEventListener("result",resultatOKAjoutVoiture); service.serviceAjoutVoiture.addEventListener("fault",resultatKOAjoutVoiture); service.serviceAjoutVoiture(_vitesse, _couleur); } public function resultatOKAjoutVoiture(e:ResultEvent):void { id = int(e.result); Alert.show("Dans classe Voiture : " + String(id)); } public function resultatKOAjoutVoiture(e:FaultEvent):void { Alert.show(e.fault.faultString, 'Error'); } } }
Pour les sources : Voiture.zip
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
58
59
60
61
62
63
64
65
66
67 import com.exemple.Voiture; import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.rpc.remoting.mxml.RemoteObject; /************************************************** * URL de AMFPHP **************************************************/ public var URL:String = "http://localhost/amfphp/gateway.php"; /************************************************** * Appel du service de listing des voitures **************************************************/ [Bindable] public var tableauVoitures:Array; public function listerVoitures():void { var service:RemoteObject = new RemoteObject(); service.endpoint = URL; service.showBusyCursor = true; service.destination = "amfphp"; service.source = "ServiceVoiture"; service.serviceListerVoitures.addEventListener("result",resultatOKListerVoiture); service.serviceListerVoitures.addEventListener("fault",resultatKOListerVoiture); service.serviceListerVoitures(); } public function resultatOKListerVoiture(e:ResultEvent):void { tableauVoitures = e.result as Array; } public function resultatKOListerVoiture(e:FaultEvent):void { Alert.show(e.fault.faultString, 'Error'); } /************************************************** * Ajout d'une voiture **************************************************/ public function ajouterVoiture():void { var id:int = 0; var vitesse:int = int(txt_vitesse.text); var couleur:String = txt_couleur.text; //Instanciation de la classe Voiture var obj_voiture:Voiture = new Voiture(id, vitesse, couleur); //Appel de la méthode d'ajout obj_voiture.ajouter(URL); //Afficher la valeur de l'identifiant de l'objet voiture ajouter. var idVoiture:String = String(obj_voiture.id); Alert.show('Après ajout : ' + idVoiture); //Mise à jour du tableau des voitures listerVoitures(); }
Merci d'avance.
Partager