IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Rafraîchir dataprovider xml


Sujet :

Flex

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    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

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Le code

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    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()

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    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

  6. #6
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Montre nous ta fonction generefichierbdd() stp

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    Voila le code de la fonction c'est assez long
    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
    $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.

  8. #8
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    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 ?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    Ah désolé

    Voilà le code :

    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
    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.

  10. #10
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    C'est parce que je pense que ton service fonctionne en asynchrone ET envoie les données parties par parties. Envoi le code

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    De quelle code as tu besoin?

  12. #12
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Tout

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    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 : 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
     
    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;		
    	}
    }

  14. #14
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Il me faut ce qui est en référence avec fichierXML

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    ok

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <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 ^^

  16. #16
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    Il ne faut pas que ces 2 instructions se suivent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

Discussions similaires

  1. [Flex4] Dataprovider issu de XML à plusieurs niveaux de noeuds
    Par Imadus dans le forum Flex
    Réponses: 4
    Dernier message: 29/11/2010, 17h14
  2. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29
  3. delphi XML / HTML caractéres speciaux !
    Par adem dans le forum EDI
    Réponses: 2
    Dernier message: 29/08/2002, 17h48
  4. Débutant XML
    Par viny dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 25/07/2002, 12h07
  5. Pas de casse dans les XML
    Par :GREG: dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo