Pb de connection BDD Flash/Php

cs_CyAn Messages postés 3 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2008 - 4 févr. 2008 à 19:02
Clubistinho Messages postés 6 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 28 avril 2011 - 6 févr. 2008 à 16:08
Bonjour,

J'ai besoin de vos lumières, j'essaye de récuperer des données qui se trouvent dans ma base pour ensuite les afficher dans un clip. Pour l'instant je le fais simplement dans un trace mais il me ressort à chaque fois undefined. Je pense que la donnée n'a pas le temps de se charger c'est pourquoi il m'en retourne ce résultat. Etant débutant en AS je ne sais pas d'où ça peut venir. J'ai refait un tuto pour reprendre le code c'est pourquoi il me semble juste et je ne vois pas d'où le problème provient.

Voici mon code :

Page Php :

<?
require_once ('class_bdd.php');




/* déclaration de la classe bdd */
class class_flashpage {


//constructeur de la classe, syntaxe obligatoire pour amfphp
function class_flashpage(){
   $this->methodTable = array
   (
    "loadArtiste" => array
    (
     "description" => "recupère les infos d'un membre dans la DB MySQL",
     "access" => "remote"
    )
   );   
  }
function loadArtiste($id_artiste){
 
   $bdd = new bdd();
   $bdd -> connexion();
   $tab_flashPage = array();   $r_flashPage "select id_artiste from artistes where id_artiste ".$id_artiste;
   $e_flashPage = mysql_query($r_flashPage);
   $t_flashPage = mysql_fetch_array($e_flashPage);
   $tab_flashPage['id_artiste'] = $t_flashPage['id_artiste'];   
   $exe = mysql_query($sql); 
   $bdd -> deconnexion();
   return $tab_flashPage;
  }
 
 
} #fin classe


?>

Mon fichier AS :

import mx.remoting.Service;
import mx.remoting.PendingCall;


//classe pour la gestion d'événements
import mx.events.EventDispatcher;


//classe qui permettra de récupérer les infos d'un artiste dans la DB MySQL
//et qui encapsulera ces infos de manière transparente


class artiste
{
 //l'id de l'artiste courant dans la base de données MySQL
 //(-1 si c'est un nouveau membre qu'on va ajouter)


 private var nid_artiste:Number;


 //variables à déclarer pour utiliser la classe EventDispatcher
 private var dispatchQueue:Function;
 private var dispatchEvent:Function;
 public var addEventListener:Function;
 public var removeEventListener:Function; 


 //Objet qui définira l'événement qu'on enverra
 //(pour qu'il puisse être entendu par un écouteur à un autre endroit)


 private var loadEvent:Object; 


 //constructeur pour faire des beaux ptis artistes :-)
 //id_artiste est l'id de l'artiste à aller rechercher dans notre DB MySQL
 public function artiste(nid_artiste:Number){  


  //on initialize notre gestionnaire d'événements
  mx.events.EventDispatcher.initialize(this); 


  //on définit l'événement (qui sera un "pwouet") sur notre artiste (this)
  loadEvent = {target:this,type:"pwouet"};  


  //AMFPHP : on définit la connexion à notre classe PHP via la passerelle PHP


  var maConnexion:Service = new Service("http://localhost/gateway.php", null, "class_flashpage");


  //appel à la méthode loadArtiste(id) de notre classe PHP et
  //comme le traitement est asynchrone, on définit un PendingCall "myPC"
  //qui préviendra quand le traitement PHP sera fini


  var myPC:PendingCall = maConnexion.loadArtiste(nid_artiste);


  //on définit une variable de type Artiste pour y stocker l'artiste courant
  //et pouvoir y accéder quand on sera dans la fonction liée à notre PendingCall


  var item:artiste = this; 
  
  //code qui sera exécuté quand le PendingCall prévient que le traitement PHP est fini
  //et qu'on a donc bien récupéré les infos pour pouvoir les utiliser
  //(ces infos sont stockées dans tab_flashPage)
  myPC.onResult = function(tab_flashPage){


   //on a les infos sur l'artiste dans tab_flashPage (qui dans notre exemple
   //est un tableau associatif contenant le nom et l'id de l'artiste)         
   //on définit la propriété 'id' de notre artiste
   item.nid_artiste = tab_flashPage["id_artiste"]; 


   //on stocke notre membre dans l'objet loadEvent (que l'on récupérera
   //à l'endroit où on entendra l'événement)       
   item.loadEvent.artiste = item;
   
   //on déclenche l'événement (pwouet dans notre exemple)
   item.dispatchEvent(item.loadEvent);


  }


 }


 //ID
 public function set id_artiste (n:Number)
 {
  nid_artiste = n;
 }


 public function get id ():Number
 {
  return nid_artiste;
 }


}

Et enfin mon fichier FLA :

import artiste;
import mx.remoting.Service;
import mx.remoting.debug.NetDebug;


NetDebug.initialize();


//on défini une instance de notre classe Artiste
//qui correspondra au Artiste dont l'id vaut 1 dans la DB MySQL
var monArtiste:artiste = new artiste(1);
  
//écouteur
var ecouteur:Object = new Object();
 
//fonction qui sera exécutée quand notre écouteur entendra l'événement "pwouet"
//que l'on aura défini dans notre classe Artiste et qui sera déclenché quand le
//chargement des infos de l'artiste sera fini
ecouteur.pwouet = function(evtObj:Object):Void
{
 //voilà on a récupéré l'id de l'artiste de manière transparente question accès DB et (amf)PHP.
 sendAndLoad(trace(evtObj.artiste.id_artiste));
}
 
//on ajoute un écouteur sur notre artiste pour qu'il réagisse à l'événement "pwouet"
monArtiste.addEventListener("pwouet",ecouteur);

Voila, merci de votre aide car là j'avoue je suis dans la penade.

1 réponse

Clubistinho Messages postés 6 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 28 avril 2011
6 févr. 2008 à 16:08
salut,

votre travail est trés compliqués,
je vous conseil de travailler avec zinc

//connection to base de données
mdm.Database.MSAccess.connect("base.mdb");
mdm.Database.MSAccess.select("SELECT * FROM Table1");

//cette code vous permet de recuperer des donées de la base
on (press) {
    mdm.Database.MSAccess.select("SELECT * FROM Table1  order by score ");
    var dataSet = mdm.Database.MSAccess.getData();
    _root.ls.dataProvider = dataSet;
    for (var l:Number = 0; l<3; l++) {
        myDP_array.addItem({label:dataSet[0][l]});
    }
}

bye...
0
Rejoignez-nous