Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
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 08/01/2011, 21h46   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
Par défaut Rafraîchir dataprovider xml

Bonsoir tout le monde,

Alors voilà mon problème, j'ai un datagrid qui est alimenté par un dataprovider, lorsque je clique sur un bouton connexion ce bouton appelle une fonction php qui génère un fichier xml en fonction de la base de données, après ceci les colonnes du datagrid et les données sont chargées. Jusque là pas de soucis, mais j'ai une fonction supprimer qui me permet de supprimer un enregistrement dans la base de donnée, lorsque je clique sur le bouton supprimer après avoir choisi une ligne dans le datagrid la suppression se fait bien mais la ligne reste affiché dans le datagrid, pourtant je rappelle la fonction qui re-génère le fichier xml puis ensuite je remplis à nouveau le dataprovider avec le nouveau fichier xml mais mon datagrid ne se rafraichit pas, quelqu'un aurait-il une idée?

Merci beaucoup
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 22h01   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Le code
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 00h09   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
Voilà le code du bouton supprimer qui supprime l'entrée dans la base de données en fonction de son id, le souci est là après la suppression mon datagrid ne se rafraîchit pas :
Code :
1
2
3
4
5
6
7
8
9
10
 
                var id1:String;
        id1 = dataGrid.selectedItem.id;
        mysql.deleteContact(id1); -----> fonction sql qui supprime l'enregistrent marche nickel
 
        generefichierbdd(); -------> appel de la fonction qui génère le fichier xml de la base de données après la suppression de l'élément marche nickel
 
        dataGrid.dataProvider=fichierXML.contact; -----> voilà le souci cette ligne n accomplis pas sa fonction l'enregistrement effacé 
est toujours présent comme si le nouveau fichier xml n'existait pas pourtant la fonction generebdd
 remplace bien l'ancien fichier xml par le nouveau avec l'enregistrement supprimé en moins
Merci
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 10h26   #4
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
C'est probablement parce que generefichierbdd() marche de facon asynchrone et que donc dataGrid.dataProvider=fichierXML.contact; s'exécute en même temps que tu constitues le fichier. Il faut que tu executes cette dernière instruction dans l'événement de fin dispatché par generefichierbdd()
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 13h14   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
D'accord je vois ce que tu veux dire et je me doutais que c'était quelque chose comme ça. Qu'est-ce que t'entend en disant qu'il faut exécuter cette instruction dans l'événement?

Merci
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 14h17   #6
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Montre nous ta fonction generefichierbdd() stp
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 14h26   #7
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
Voila le code de la fonction c'est assez long
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
$serveur = mysql_connect("localhost","root","");
if (!$serveur)
{
	die('Non connecté : ' . mysql_error());
} 
$db = mysql_select_db("MyPMEAssistant", $serveur); 
if (!$db)
{
	die ('Impossible d\'utiliser la base : ' . mysql_error());
} 
	$query = "select * from `contact`";
	$result = mysql_query($query) or die("Impossible d'interroger la base de données");
	$num = mysql_num_rows($result);
	$nb = mysql_num_fields($result);
 
if ($num != 0) {
	$file= fopen("contact.xml", "w");
	$_xml ="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n";
	$_xml .="<root>\r\n";
	while ($row = mysql_fetch_array($result)) {		
		$_xml .="\t<contact>\r\n";		
			for ( $i=0; $i<$nb; $i++ ){
				$nomchamp = mysql_field_name($result, $i);
				$_xml .="\t\t<".$nomchamp.">" . $row[$i] . "</".$nomchamp.">\r\n";			
			}
		$_xml .="\t</contact>\r\n";		
	}
	$_xml .="</root>";
	fwrite($file, $_xml);
	fclose($file);
	}
 
	$query = "select * from `contact`";
	$result = mysql_query($query) or die("Impossible d'interroger la base de données");
	$num = mysql_num_rows($result);
	$nb = mysql_num_fields($result);
 
if ($num != 0) {
	$file= fopen("contactchamp.txt", "w");
	$nom ="nb=".$nb;
 
			for ( $i=0; $i<$nb; $i++ ){
				$nomchamp = mysql_field_name($result, $i);
				$nom .="&varia".$i."=".$nomchamp;			
			}	
 
	fwrite($file, $nom);
	fclose($file);
	}
 
 echo "ok";
La première partie génère le fichier xml en fonction de la base de donnée et la seconde génère un fichier texte avec le nombre et le nom des colonnes de la base de donnée.
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 14h41   #8
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Nop je parle du code AS3

le retour de la fonction en particulier

EDIT: pourquoi constituer un fichier XML à partir d'une base de données et de ne pas exploiter la base directement ?
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 16h36   #9
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
Ah désolé

Voilà le code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public function generefichierbdd():void{
 
    var variables:URLVariables = new URLVariables();
    var echanges:URLLoader;
    echanges = new URLLoader();
    echanges.addEventListener( Event.COMPLETE, retourbdd );    
    var requete:URLRequest = new URLRequest
        ("http://localhost/MyPMEAssistant/xmlbdd.php");        
    requete.method = URLRequestMethod.POST;
    requete.data = variables;
    echanges.load ( requete );    
}
 
public function retourbdd ( pEvt:Event ):void
{
    var retourserv:String;
    retourserv = pEvt.target.data;
    if ( retourserv=="ok" ) {
        dataGrid.dataProvider=fichierXML.contact;        
    }
}
Voilà en fait j'appelle mon fichier php qui s'exécute et après si le fichier retourne ok je tente un rafraichissement de mon datagrid mais là est le souci ^^.

En fait je fais ça c'est pour avoir un datagrid complètement disons autonome en fonction de ma base de données, que je rajoute une colonne à ma base de données mon datagrid la rajoutera aussi avec les données correspondantes ? Voilà mais une fois le problème résolu je posterai la totale tu y verras plus claire je pense.
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 18h54   #10
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
C'est parce que je pense que ton service fonctionne en asynchrone ET envoie les données parties par parties. Envoi le code
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 21h09   #11
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
De quelle code as tu besoin?
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 21h24   #12
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Tout
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 21h39   #13
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
Ok mais par rapport à la fonction tout le code concerné est donnée, le reste du code c'est des gestion de différents bouton qui n'ont pas de rapport avec la fonction qui pose problème. J'ai un bouton supprimer qui me permet de supprimer la ligne sélectionné dans mon datagrid.

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
 
protected function sup_clickHandler(event:MouseEvent):void
{
				var id1:String;
				id1 = dataGrid.selectedItem.id;
				mysql.deleteContact(id1);  --->supprime le contact choisit de la base de donnée grâce à une fonction php fonctionne nickel
				generefichierbdd();
}
 
public function generefichierbdd():void{
 
	var variables:URLVariables = new URLVariables();
	var echanges:URLLoader;
	echanges = new URLLoader();
	echanges.addEventListener( Event.COMPLETE, retourbdd );	
	var requete:URLRequest = new URLRequest
		("http://localhost/MyPMEAssistant/xmlbdd.php");		
	requete.method = URLRequestMethod.POST;
	requete.data = variables;
	echanges.load ( requete );	
}
 
public function retourbdd ( pEvt:Event ):void
{
	var retourserv:String;
	retourserv = pEvt.target.data;
	if ( retourserv=="ok" ) {
		dataGrid.dataProvider=fichierXML.contact;		
	}
}
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 21h55   #14
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Il me faut ce qui est en référence avec fichierXML
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 22h00   #15
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 60
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 60
Points : 12
Points : 12
ok

Code :
<fx:XML id="fichierXML" source="http://localhost/MyPMEAssistant/contact.xml"/>
Je met cette ligne dans les déclarations dans le fichier mxml, j'espère que c'est ça dont tu me parlais ^^
xclue est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 10h34   #16
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonjour,

Il ne faut pas que ces 2 instructions se suivent :

Code :
1
2
3
 
mysql.deleteContact(id1);  
generefichierbdd();
le generefichierbdd() doit se trouver dans le retour du service mysql afin que les 2 traitements ne se chevauchent pas
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h19.


 
 
 
 
Partenaires

Hébergement Web