bonjour a tous,
j'ai un petit soucis avec flash mx 2004. j'aimerai me faire une classe qui me permettrait de recuperer les données à partir d'un sgbd via l'objet loadvars
voici le code de mon fichier database.as qui me pose probleme
voici le contenu du script actions du fichier de test test.fla qui appelle la classe:
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 //**************************************************** // fichier de definition de la classe database // // @date_creation: 4 Mai 2004 // @date_modification: 11 Mai 2004 // //**************************************************** class database { // l'objet loadvars private var liste_lv:LoadVars; // est ce que l'on doit interroger un sbgbd distant? //private var isDistant:Boolean; // l'adresse de l'hote distant private var host:String; //---------------------------------------------- // @shortdesc Constructeur // // definie les methodes de l'objet LoadVars et // intialise les variables // @public //------------------------------------------------ function database(isDistant:Boolean,host:String) { //----------------------------- // Initialisation des variables //----------------------------- //this.isDistant = isDistant; if (host == undefined) host = "http://localhost/"; this.host = host; //----------------------------- // Definition de l'objet LoadVars //----------------------------- this.liste_lv = new LoadVars(); this.liste_lv.onLoad = function(pSucces) { // Si le chargement s'est bien déroulé... if (pSucces) { /* // Si le premier résultat vaut "Echec", on affiche le message d'erreur : if (this.liste_lv.resultat_0 == "Echec") { this.liste_lv.erreur = "<b>ERREUR: </b>"+this.liste_lv.erreurmsg; // Sinon on affiche les résultats } else { for (var i = 0; i<this.liste_lv.total; i++) { this.liste_lv.erreur += "<b>INFO:</b><br>"+this.liste_lv["resultat_"+i]+"<br>"; }// for }//else */ }//succes };//function } //---------------------------------------------- // @shortdesc Fonction qui realise une requete // // @param String phpfile : le fichier php a interroger // @param Number id : l'identifiant de la requete a executer // @public // @type Void //------------------------------------------------ public function getVars(phpfile:String,id:Number):Void { if (id == undefined) id = 0; this.liste_lv.load(this.host+phpfile+"?queryid="+id); for (var prop in this.liste_lv) { trace(prop+"="+this.liste_lv[prop]); } } //---------------------------------------------- // @shortdesc Retourne le contenu d'une variable // // @param String varName : le nom de la variable // @public // @type String //------------------------------------------------ public function getValue(varName:String):String { return this.liste_lv[varName]; } }
et enfin le script php get_listes.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 db = new database(true); db.getVars("get_listes.php"); trace("variable "+db.getValue("resultat_0")+"");
j'ai realisé le debuggage suivant:
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 <?php // inclusions require_once 'class_database.php'; //--------------------------------------------- // fichier de configuration // => parametres de connexions au sgbd ($dConfigDb) // => variable $queries qui contient l'enoncé des requetes a executer //---------------------------------------------- include 'configdb.php'; // creation de l'objet base de données et connexion au sgbd $db = new database($dConfigdb); if ($db->ERR_exist()) show_error("erreur de connexion"); // execution de la requete a partir de l'identifiant passé en parametre $id = intval($_GET['queryid']); if (!in_array($id,array_keys($queries))) $id = 0; $db->execute($queries[$id]); if ($db->ERR_exist()) show_error("erreur de requete"); // création de la variable a afficher $i = 0; $listeResultats = ""; // on parcourt le résultat de la requête while($enr = $db->oR->fetchRow()){ // et on concatène les résultats dans une variable listeResultats $listeResultats .="&resultat_".$i."=".urlencode(utf8_encode($enr[0])); $i++; } $listeResultats .= "&total=".$i."&"; // et on renvoie le tout à Flash : echo $listeResultats; // fonction qui termine le processus et qui affiche l'erreur function show_error($err) { echo "&resultat_0=Echec&erreurmsg=".utf8_encode($err); exit(); } ?>
- pas d'erreur de syntaxe, que ce soit dans les fichiers flash ou php
- l'affichage de la requete demandé par un trace, et son execution via un navigateur web m'affiche bien un message (d'erreur, c'est normal, la requete n'est pas bonne) mais j'ai bien quelque chose
- un trace apres le if (pSucces) me confirme bien que la requete a bien été realisée
- seulement l'affichage des variables retournées dans l'objet loadVars par le for var prop... ne m'affiche seulement que la fonction onLoad
Est ce que vous avez une idée de ce qui ne colle pas dans mon code pour que le chargement se fasse bien mais pas d'incorporation des variables dans l'objet loadVars?
merci d'avance pour votre aide
Partager