Probleme mise a jour ID objet après insertion en BDD en AS3/FLEX
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 :
http://catric.jerome.free.fr/IHM_Voiture.PNG
Code SQL Table Voiture :
Code:
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 de la classe PHP (pour amfphp) :
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 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 fichier Voiture.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
|
<?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 de la classe Voiture Action Script 3 (Voiture.as) :
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 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');
}
}
} |
Code Action Script 3 du fichier VoitureAS3.as :
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
|
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();
} |
Pour les sources : Voiture.zip
Merci d'avance.