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

JavaScript Discussion :

Passage et recupération de paramètre Closure


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut Passage et recupération de paramètre Closure
    Bonjour,

    J'ai un problème concernant deux fonctions dont une imbriqué, le résultat retourner est undefined et la valeur que je désire récuperer et stocké dans "Closure" avec le debugger de chrome.

    J'aimerais savoir comment accéder à cette valeur :
    Voici en "gros de chez gros mon code".

    fonction 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function modifier(){
    return(getres(id));
    }
    fonction 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function getres(id){
    this.id=id;
    db.transaction(function(tx){
    tx.executeSql("...",[],function (tx,resu) { return value; }, function (tx,error) { return 0; });
    });
    }
    J'ai donc ma value dans "closure" et l'appel de la fonction modifier() me retourne undefined.

    Merci d'avance.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 082
    Points : 44 698
    Points
    44 698
    Par défaut
    Bonjour,
    pas tout bien compris MAIS ta fonction ne peut pas retourner autre chose que undefined attendu qu'elle ne reçoit pas de paramètre lui permettant d'identifier id.

    Le code que tu nous montres est à mon sens insuffisant pour cerner ton problème.

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Je rajouterais qu'en plus, vu que ta fonction getres ne retourne rien,
    renverra toujours undefined :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function globale(fn){
        alert(fn());
    }
    function fn1(){
        var txt = 'Hello world !';
    }
    function fn2(){
        var txt = 'Hello world !';
        return txt;
    }
    globale(fn1);
    globale(fn2);

  4. #4
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Bonjour,
    pas tout bien compris MAIS ta fonction ne peut pas retourner autre chose que undefined attendu qu'elle ne reçoit pas de paramètre lui permettant d'identifier id.

    Le code que tu nous montres est à mon sens insuffisant pour cerner ton problème.
    "id" pourrait très bien être global, par contre comme le dit bovino, "modifier" est censé retourner le résultat de "getres" mais "getres" ne retourne rien. (il n'y a pas de mot clé "return" dans la fonction ormis celui appartenant à une autre fonction imbriquée.)

    n'ayant pas assez d'éléments pour proposer une réponse, je tente au pif-o-mètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function getres(id){
    this.id=id;
    return db.transaction(function(tx){tx.executeSql("...",[],function (tx,resu) { return value; }, function (tx,error) { return 0; });});
    }
    ou alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function getres(id){
    this.id=id;
    db.transaction(function(tx){tx.executeSql("...",[],function (tx,resu) { return value; }, function (tx,error) { return 0; });});
    return this;}
    ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function modifier(){
    return new getres(id);
    }

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 082
    Points : 44 698
    Points
    44 698
    Par défaut
    Citation Envoyé par Willpower
    "id" pourrait très bien être global, par contre comme le dit bovino, "modifier" est censé retourner le résultat de "getres" mais "getres" ne retourne rien. (il n'y a pas de mot clé "return" dans la fonction ormis celui appartenant à une autre fonction imbriquée.)
    tu as tout à fait raison, je me suis simplement pris à penser que quelqu'un qui instancie un objet ne ferait pas l'erreur de passer en paramètre une variable globale à une fonction alors qu'il ne le fait pas sur la fonction qui la contient.

    Je dois reconnaître que Bovino à mis le doigt sur le pourquoi le plus légitime.

    Reflexion: Mais combien a-t-il de doigts?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    Débutant je n'ai pas très bien compris ta réponse Bovino.

    Willpower j'avais pensé à faire cela mais ce qui m'amène ici est le "déroulement" de ma fonction.

    Je vais donc vous expliquer en détail:

    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
            function modifier(){
                var idselect = ; // je recupere l'id d'un select
    			console.log(idselect); // me retourne l'entier id
                db.transaction(function(tx) {
                        tx.executeSql("ma requete WHERE id=?", [idselect],
                        function(tx,resu){
    						// je rentre ici et donc ma requête s'execute convenablement
                            console.log(getres(idselect)); // la j'obtient undefined
                            },
                        function(tx,error)
                            {
                                return;
                            });
                    });
            }
     
     
    		        function getres(id){
                    this.id=id;
    				console.log(id); // me retourne l'entier id passé en paramètre et affecter à la fonction
                    db.transaction(function(tx) {
                        tx.executeSql("ma requete WHERE id=?", [id],
                        function(tx,resu){
                            // je construit un array à partir d'un SELECT
                            table = array2json(table); // je json l'array
                            console.log(table); // me retourne l'array en json
                            return table;
                        },
                        function(tx,error)
                            {
                                document.write("Impossible d'inserer ces donnees: "+error.message);
                            });
                    });
                    }
    Le problème est que les breakpoint afficher à tous mes logs, me montrent que l'appel de la fonction getres dans modifier me retourne undefined mais qu'ensuite je passe bien dans getres et le return est celui que j'attend.

    Les fonctions fonctionnent, le return de getres aussi, l'appel aussi.
    Je ne sais pas si je n'arrive pas à atteindre le return qui est fortement imbriqué via un getres(id) tout simple, si c'est une histoire de timeOut ou autre.

    Merci d'avance.

  7. #7
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par anoninc Voir le message
    Bonjour,

    Merci pour vos réponses.

    Débutant je n'ai pas très bien compris ta réponse Bovino.

    Willpower j'avais pensé à faire cela mais ce qui m'amène ici est le "déroulement" de ma fonction.

    Je vais donc vous expliquer en détail:

    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
            function modifier(){
                var idselect = ; // je recupere l'id d'un select
    			console.log(idselect); // me retourne l'entier id
                db.transaction(function(tx) {
                        tx.executeSql("ma requete WHERE id=?", [idselect],
                        function(tx,resu){
    						// je rentre ici et donc ma requête s'execute convenablement
                            console.log(getres(idselect)); // la j'obtient undefined
                            },
                        function(tx,error)
                            {
                                return;
                            });
                    });
            }
     
     
    		        function getres(id){
                    this.id=id;
    				console.log(id); // me retourne l'entier id passé en paramètre et affecter à la fonction
                    db.transaction(function(tx) {
                        tx.executeSql("ma requete WHERE id=?", [id],
                        function(tx,resu){
                            // je construit un array à partir d'un SELECT
                            table = array2json(table); // je json l'array
                            console.log(table); // me retourne l'array en json
                            return table;
                        },
                        function(tx,error)
                            {
                                document.write("Impossible d'inserer ces donnees: "+error.message);
                            });
                    });
                    }
    Le problème est que les breakpoint afficher à tous mes logs, me montrent que l'appel de la fonction getres dans modifier me retourne undefined mais qu'ensuite je passe bien dans getres et le return est celui que j'attend.

    Les fonctions fonctionnent, le return de getres aussi, l'appel aussi.
    Je ne sais pas si je n'arrive pas à atteindre le return qui est fortement imbriqué via un getres(id) tout simple, si c'est une histoire de timeOut ou autre.

    Merci d'avance.

    Ta fonction "getres" ne renvoit toujours rien ....


    voila en résumé la fonction getres que tu nous donnes (sans le parametre de transaction qui est une longue fonction) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function getres(id){
    	this.id=id;
    	console.log(id); // me retourne l'entier id passé en paramètre et affecter à la fonction
    	db.transaction(param_sous_form_de_fonction);
    }

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Débutant je n'ai pas très bien compris ta réponse Bovino.
    J'avais benoitement pensé que l'exemple donné était assez éloquent...

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Willpower Voir le message
    Ta fonction "getres" ne renvoit toujours rien ....
    Mais peut tu m'expliquer pourquoi ? étant donné que le log me dis qu'en return j'ai bien table remplis suivant l'id passé en paramètre ..

    Il faudrait que j'appel par getres puis transaction puis resu c'est ca ? ?

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Bovino Voir le message
    J'avais benoitement pensé que l'exemple donné était assez éloquent...
    Merci tout de même pour ta réponse mais je suis ultra débutant avec le JS.
    Biensur si tu as du temps pour m’expliquer en détail je ne serais que preneur.

  11. #11
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par anoninc Voir le message
    Mais peut tu m'expliquer pourquoi ? étant donné que le log me dis qu'en return j'ai bien table remplis suivant l'id passé en paramètre ..

    Il faudrait que j'appel par getres puis transaction puis resu c'est ca ? ?
    J'ai édité ma réponse précédente, il n'y a tout simplement pas de return dans ton getres. (il y en a seulement dans les fonctions qu'il appelle ou passe en paramètre)

    quelle est la variable que tu souhaites retourner ? "table" ?

    sais-tu ce que retournes les fonctions "db.transaction" et "tx.executeSql" ?

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Willpower Voir le message
    J'ai édité ma réponse précédente, il n'y a tout simplement pas de return dans ton getres. (il y en a seulement dans les fonctions qu'il appelle ou passe en paramètre)

    quelle est la variable que tu souhaites retourner ? "table" ?

    sais-tu ce que retournes les fonctions "db.transaction" et "tx.executeSql" ?
    J'ai vu ta réponse que je n'avoue pas avoir entièrement saisie.
    La variable que je souhaite retourner est table si je suis passé dans la fonction tx-resu, sinon rien si je suis passé dans tx-error.

    Non je ne sais pas ce que retourne ces fonctions, probablement un booleen pour tx.executeSql sans certitude. à vrai dire je ne peux disposer du code qu'après ce we.

  13. #13
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par anoninc Voir le message
    J'ai vu ta réponse que je n'avoue pas avoir entièrement saisie.
    La variable que je souhaite retourner est table si je suis passé dans la fonction tx-resu, sinon rien si je suis passé dans tx-error.

    Non je ne sais pas ce que retourne ces fonctions, probablement un booleen pour tx.executeSql sans certitude. à vrai dire je ne peux disposer du code qu'après ce we.
    Essaye dans un premier temps de séparer tes fonctions en les nommant, tu y verras plus clair(une fois toute l’exécution bien assimilée, tu les ré-incluera dans tes closures anonymes) :



    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
    function modifier(){
    	function sqlSucces(tx,resu){
    		// je rentre ici et donc ma requête s'execute convenablement
    		console.log(getres(idselect)); // la j'obtient undefined
    		// NE RETOURNE RIEN ?
    	}
    	function sqlError(tx,error){
    		return;
    	}
    	function do_transation(tx) {
    		tx.executeSql("ma requete WHERE id=?", [idselect],sqlSucces,sqlError); // QUE RETOURNE tx.executeSql ?
    		// NE RETOURNE RIEN ?
    	}
     
    	var idselect = ; // je recupere l'id d'un select
    	console.log(idselect); // me retourne l'entier id
    	db.transaction(do_transation); // QUE RETOURNE db.transaction ?
    	// NE RETOURNE RIEN ?
    }
     
    function getres(id){
    	function sqlSucces(tx,resu){
    		// je construit un array à partir d'un SELECT
    		table = array2json(table); // je json l'array
    		console.log(table); // me retourne l'array en json
    		return table;
    	}
    	function sqlError(tx,error){
    		document.write("Impossible d'inserer ces donnees: "+error.message);
    		// NE RETOURNE RIEN ?
    	}
    	function do_transaction(tx) {
    		tx.executeSql("ma requete WHERE id=?", [id],sqlSucces,sqlError); // QUE RETOURNE tx.executeSql ?
    		// NE RETOURNE RIEN ?
    	}
    	this.id=id;
    	console.log(id); // me retourne l'entier id passé en paramètre et affecter à la fonction
    	db.transaction(do_transaction); // QUE RETOURNE db.transaction ?
    	// NE RETOURNE RIEN ?
    }

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    D'accord et bien merci.

    Je te ferais part de mon retour ce we si possible ou lundi.

    Je m'attendais à quelque chose de très simple pour atteindre table.
    J'ai encore du mal à comprendre pourquoi modifier me retourne rien avant de passer dans getres et qu'ensuite getres me retourne ce que je veux (mais a priori trop tard).

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Voila j'ai trouvé un post similaire à mon problème :
    http://stackoverflow.com/questions/6...158821#9158821

    En faites avec des breaks point j'ai pu voir que ma fonction modifier() s'execute, va dans getres lors de l'appel mais que getres n'execute pas directement la fonction db.transaction mais seulement à la fin de modifier().
    Comment avoir le return ... telle est la question. :/

    Merci d'avance.

  16. #16
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut ajax asynchrone
    c'est un problème récurrent, ton code produit probablement un appel ajax asynchrone.

    c'est à dire, qu'il fait un appel externe et continue à exécuter ton code sans attendre la réponse.

    pour gérer la réponse, tu dois te servir de ton callback(dans le cas présent, c'est probablement les fonctions que tu passes en paramètre).

    explications :

    un code traditionnel, séquentiel, ou synchrone exécute les instructions les unes après les autres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function(){
        instruction1;
        requete_synchrone;
    // nous passons à la ligne suivant une fois que la requete synchone à recu sa réponse
        instruction2;
    }
    un code avec des requêtes Asynchrones, fonctionne comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function(){
        instruction1;
        requete_asynchrone;
    // nous passons directement à la ligne suivant sans attendre la réponse de la requete asynchone 
        instruction2;
    }
    le résultat de la requête peut être récupéré grace à une fonction de callback déclenché par l'événement de réception de la réponse (onSucces, onreadystate, ...)

    il faut donc penser le code autrement si l'on veut que la suite des instructions accèdent à notre résultat, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function(){
        instruction1;
        requete_asynchrone(
            function callback(resultat){
                // la fonction passée en paramètre à notre requete traitera la réponse une fois celle-ci obtenue 
                instruction2;
            }
        );
    // la suite des instructions à été déplacé dans la fonction de callback pour leurs donner accès à la réponse de la requête.
    }

    à première vue l'appel asynchrone peut te paraitre un peu plus compliqué que le synchrone, mais en réalité une fois que tu as compris le principe, c'est du pareil au même, il suffit de placer tes instructions au bon endroit.

    aussi, l'appel syncrhone (le premier exemple qui semble plus simple) est souvent déconseillé car il est bloquant... ton code est en pause jusqu'a obtention de la réponse alors que tu pourrais concevoir de continuer à vouloir animer ta page en javascript(ou effectuer diverses actions) en attendant une réponse du serveur.


    edit: Ainsi, ton return doit être géré autrement, tu dois selon le traitement que tu comptais faire du return, exécuter ce traitement non pas sur le return mais dans la fonction de callback directement.

    edit2: exemple, au lieu de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function modifier(){
        db.transaction();
        return null;
    }
    traitement(modifier());
    tu devrais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function modifier(){
        db.transaction(traitement);
    }
    modifier();

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    J'ai quasi fait ce que tu proposais dans ton dernier message.

    Je te remercie donc pour ton aide et ta patience.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB]Passage de Fonction en paramètre (d'une autre fonction)
    Par Australia dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 21/03/2006, 18h55
  2. [InputStream]Passage d'inputStream en paramètre...
    Par joseph_p dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 03/01/2006, 14h18
  3. Passage de tableau en paramètre...
    Par Doomi dans le forum C
    Réponses: 14
    Dernier message: 20/10/2005, 14h08
  4. [DLL] Passage d'objet en paramètre
    Par TitiFr dans le forum Langage
    Réponses: 4
    Dernier message: 20/08/2005, 23h18
  5. Réponses: 2
    Dernier message: 15/09/2004, 18h17

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