Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash
Flash Forum d'entraide sur la technologie Flash (Cours, FAQs, Sources)
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 25/06/2007, 18h05   #1
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 65
Points : 26
Points : 26
Par défaut Datagrid > pb affichage des données

salut tous,

je suis entrain de faire un site permettant de faire un parcours de jeux chronométré. A la fin du parcours je voudrais proposer l'enregistrement du temps général. Pour cela j'utilise le composant DataGrid...

Mon pb est le suivant : lorsque je lance mon swf via "ctrl+entrée" tout marche bien, il m'affiche toutes les entrées de la base et l'enregistrement d'une nouvelle entrée est possible via mon interface flash. Or, lorsque j'inclue tout ça dans mon site, mon dataGrid est desespérément vide, il ne m'affiche rien du tout... pourtant j'ai rien changé au code...
Auriez-vous une idée?

ps : je peux vous mettre mon code si vous voulez mais ça risque d'être long...
Pour faire tout ça je me suis appuyé sur le super tutoriel présent sur ce site
purple21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 19h18   #2
Rédacteur/Modérateur
 
Avatar de beekeep
 
Homme
Développeur informatique
Inscription : octobre 2006
Messages : 1 606
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : octobre 2006
Messages : 1 606
Points : 2 234
Points : 2 234
Lut,

a mon avis ça doit etre la recuperation des données qui marche pas, et non la dataGrid.
beekeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 19h56   #3
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 65
Points : 26
Points : 26
salut mec,

Y a t'il quelque chose à changer lorsqu'on se situe dans un site et non dans un fichier autonome?
Pour moi, le swf lancé de façon autonome marche sans pb...
Je mets mon code... je sais que c'est très long mais comme je ne sais absoluement pas d'où vient le pb...

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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
// Création dun objet LoadVar pour les requêtes de type "SELECT"
var select_lv:LoadVars = new LoadVars();
// Création dun objet LoadVar pour les requêtes de type "INSERT"
var insert_lv:LoadVars = new LoadVars();
//Tableau permettant de stocker les différents messages d'erreur
var errorMsgs:Array = [
	"",		
	"Connexion au serveur impossible",
	"Impossible de se connecter à la base",
	"Requête erronée"];
 
// Création d'une variable de type "String" pour le chemin d'accès au script PHP
var filepath:String;
 
// Création d'un tableau qui fera office de dataProvider pour le DataGrid
var scoreInfo:Array = [];
 
// Création d'un écouteur pour les clic sur les entêtes du datagrid permettant le tri des colones
var headerListener:Object = {};
headerListener.headerRelease = function(event:Object) {
	switch (event.columnIndex) {
		case 0:
			if (temps_dg.getColumnAt(0).sortedUp) {
				temps_dg.sortItemsBy(temps_dg.columnNames[0], Array.CASEINSENSITIVE | Array.DESCENDING);
			} else {
				temps_dg.sortItemsBy(temps_dg.columnNames[0], Array.CASEINSENSITIVE);
			}
			temps_dg.getColumnAt(0).sortedUp = !temps_dg.getColumnAt(0).sortedUp;
			break;
		case 1:
			if (temps_dg.getColumnAt(1).sortedUp) {
				temps_dg.sortItemsBy(temps_dg.columnNames[1], Array.CASEINSENSITIVE | Array.DESCENDING);
			} else {
				temps_dg.sortItemsBy(temps_dg.columnNames[1], Array.CASEINSENSITIVE);
			}
			temps_dg.getColumnAt(1).sortedUp = !temps_dg.getColumnAt(1).sortedUp;
			break;
		case 2:
			if (temps_dg.getColumnAt(2).sortedUp) {
				temps_dg.sortItemsBy(temps_dg.columnNames[2], Array.NUMERIC | Array.DESCENDING);
			} else {
				temps_dg.sortItemsBy(temps_dg.columnNames[2], Array.NUMERIC);
			}
			temps_dg.getColumnAt(2).sortedUp = !temps_dg.getColumnAt(2).sortedUp;
			break;
	}
}
 
// Fonction permettant de mettre un 0 devant les chiffres seuls ("1" deviendra "01")
function zerofill(n:Number):String {
	if (n<10) return '0' + n.toString();
	else return n.toString();
}
//Chemin absolu vers le script PHP
if (_url.indexOf("http") != 0) filepath = "http://localhost/wits_project/wits_project/jeux_flash/menu_jeux/";
//Chemin relatif
else filepath = "../menu_jeux/";
 
// limit fields to max characters allowed by database
prenom_ti.maxChars = 50;
nom_ti.maxChars = 50;
 
// put in some default values
temps_ti.text = 100;
date_ti.text = today.getFullYear() + '-' + zerofill(today.getMonth()+1) + '-' + zerofill(today.getDate());
 
select_lv.onLoad = function(ok:Boolean) {
	if (ok) {
		if (this.errorcode=="0") {
			for (var i:Number=0; i < this.n; i++) {
				scoreInfo.push(
					{record:this["id"+i],
					 prenom:this["prenom"+i],
					 nom:this["nom"+i],
					 temps:Number(this["temps"+i])
					});
			}
            // On affiche uniquement le prenom, le nom et le temps (pas l'id)
			temps_dg.columnNames = ["prenom", "nom", "temps"];
			// Formatage colone "Prénom"
			temps_dg.getColumnAt(0).width = 200;
			temps_dg.getColumnAt(0).sortedUp = false;
			temps_dg.getColumnAt(0).headerText = "Prenom";
			// Formatage colone "Nom"
			temps_dg.getColumnAt(0).width = 200;
			temps_dg.getColumnAt(0).sortedUp = false;
			temps_dg.getColumnAt(0).headerText = "Nom";
			// Formatage colone "Nom"
			temps_dg.getColumnAt(2).width = 160;
			temps_dg.getColumnAt(2).headerText = "Temps";
 
			// Création du DataProvider
			temps_dg.dataProvider = scoreInfo;
			// Ajout de l'écouteur pour le clic sur l'entête des colones
			temps_dg.addEventListener("headerRelease", headerListener);
			msg_ta.text = "Vous pouvez enregistrer votre temps";
		} else {
			// On affiche le code de l'erreur
			msg_ta.text = errorMsgs[Number(this.errorcode)];
			// Si c'est une erreur de requête SQL, on affiche le type d'erreur
			if (this.errorcode == "3") msg_ta.text += ": " + this.msg;
		}
	} else {
		// Si le chargement ne s'est pas fait on affiche un message d'erreur
		msg_ta.text = "Impossible de se connecter à la base";
	}
}
msg_ta.text = "Chargement des temps...";
select_lv.sendAndLoad(filepath + "getscore.php", select_lv, "GET");
 
// Fonction s'executant après l'appel au script "insertscore.php"
// Elle retourne plusieurs controles, msg (erreur SQL), id (de la plupart des enregistrements)
insert_lv.onLoad = function(ok:Boolean) {
   if (ok) {
	   if (this.errorcode == "0") {
          // Mise à jour du DataProvider pour mettre à jour le dataGrid
          scoreInfo.addItem(
             {record:this.id,
              prenom:prenom_ti.text,
			  nom:nom_ti.text,
              temps:Number(temps_ti.text)
             });
          // Initialisation des champs
          prenom_ti.text = '';
		  nom_ti.text = '';
          temps_ti.text = 100;
          msg_ta.text = "Le temps a bien été ajouté";
      } else {
         // On affiche le code de l'erreur
         msg_ta.text = errorMsgs[Number(this.errorcode)];
         // Si c'est une erreur de requête SQL, on affiche le type d'erreur
         if (this.errorcode == "3") msg_ta.text += ": " + this.msg;
	  }
   } else {
      // Si le chargement ne s'est pas fait on affiche un message d'erreur
      msg_ta.text = "Enregistrement impossible";
   }
};
 
function insertRecord() {
   // Controle au niveau du champs "prénom"
   if (prenom_ti.text == '') {
      msg_ta.text = "Tu dois entrer ton prénom !";
   } else {
	  //On envoi les données au script PHP
      insert_lv.prenom = prenom_ti.text;
      insert_lv.nom = nom_ti.text;
      insert_lv.temps = temps_ti.text;
      insert_lv.sendAndLoad(filepath + "insertscore.php", insert_lv, "GET")
   }
}
 
add_btn.addEventListener("click", insertRecord);
purple21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 22h26   #4
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 65
Points : 26
Points : 26
Bon,
alors, après remaniements, j'arrive finalement à un truc assez "bizare"...

En fait, mon swf lancé de façon autonome > tjrs aucun souci pour le datagrid

MAIS, chargé dans un swf principal, j'obtiens finalement un dataGrid vide mais je peux desormais ajouter nom,prenom,et temps en appuyant sur mon composant "button".

Mes nouvelles entrées apparaissent dans le datagrid... Cependant, lorsque je relance le site (F5) et que je reviens sur la page des classements, le Datagrid est encore vide! Mais j'ai vérifié et l'ajout des entrées a bien été fait dans ma base de données. Je travail pour le moment en local sur EasyPHP...

C'est donc un pb d'affichage des données de la base vers le datagrid...

Une idée les zamis?
purple21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 10h04   #5
Nouveau Membre du Club
 
Inscription : février 2007
Messages : 65
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 65
Points : 26
Points : 26
Bon c'est bon les zamis... alors je ne sais pas trop pourquoi mais lorsque je change la ligne :
Code :
 insert_lv.sendAndLoad(filepath + "insertscore.php", insert_lv, "GET")
par celle-ci :
Code :
 insert_lv.sendAndLoad("http://localhost/wits_project/wits_project/jeux_flash/menu_jeux/insertscore.php", insert_lv, "GET")
et idem pour ces 2 là, alors ça marche....
Code :
1
2
insert_lv.sendAndLoad("http://localhost/wits_project/wits_project/jeux_flash/menu_jeux/getscore.php", insert_lv, "GET")
 insert_lv.sendAndLoad(filepath +"getscore.php", insert_lv, "GET")
Bizare... bizare car ça marchait très bien lorsque mon fichier n'étais pas inclu dans son chargeur...

Bref, Mon pb est résolu !
purple21 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 22h30.


 
 
 
 
Partenaires

Hébergement Web