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

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2014
    Messages : 31
    Points : 16
    Points
    16

    Par défaut Comment utiliser les relations n-n avec le module QxModelView ?

    Bonjour,

    comment fait on pour remplir la table temporaire d'une relation n-n.

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    avril 2010
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 478
    Points : 3 954
    Points
    3 954

    Par défaut



    La table supplémentaire qui permet de gérer une relation n-n est gérée automatiquement par la bibliothèque QxOrm.

    Si tu souhaites avoir la main sur cette table, il faut alors décomposer ta relation : au lieu de définir une relation n-n (donc 2 entités), tu peux définir 2 relations 1-n puis n-1 (donc 3 entités) ==> tu auras ainsi la main sur les 3 tables.
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2014
    Messages : 31
    Points : 16
    Points
    16

    Par défaut

    Salut,

    en faite ma question était plutôt, comment on s'en sert avec le model_service et dans le code?

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    avril 2010
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 478
    Points : 3 954
    Points
    3 954

    Par défaut

    Il n'y a pas de particularité aux relations n-n : d'un point de vue utilisation, c'est pareil qu'une relation 1-n ou n-1.

    Le code que génère QxEntityEditor pour gérer les relations avec le moteur Model/View de Qt est plus basé pour un contexte d'utilisation QML.
    Tu peux suivre ce tutoriel pour comprendre comment ça fonctionne : http://christophe-dumez.developpez.c...les-imbriques/
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2014
    Messages : 31
    Points : 16
    Points
    16

    Par défaut

    Bonsoir,

    cela me m'aide pas du tout. Je suis complément perdu avec les relations n-n avec QxOrm. Pourtant avec les autres relations j'ai pas de soucis, mais avec la n-n, je n'y arrive pas.
    Je vois pas comment faire un insert dans la table qui sert pour la relation n-n avec mon model.

  6. #6
    Membre expert

    Profil pro
    Inscrit en
    avril 2010
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 478
    Points : 3 954
    Points
    3 954

    Par défaut

    cela me m'aide pas du tout
    Va falloir donner un peu de matière pour t'aider (du code, un exemple de ce que tu veux faire, plus de détails).

    Tout ce que je peux t'indiquer pour le moment est cet exemple de relation n-n dans le tutoriel suivant :
    http://marty-lionel.developpez.com/t...-qxblog/#LVIII
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2014
    Messages : 31
    Points : 16
    Points
    16

    Par défaut

    En faite, pour les relations de type 1-n ou n-1, je fais comme ça puisque je peux accéder à la colonne de ma table qui stock l'id de l'autre table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QUuid teamId = _teamModel->getModelValue(teamIndex.row(), "Uuid").toUuid();
    _userModel->setModelValue(userIndex.row(), "team_id", teamId.toString());
    _userModel->qxSaveRow(userIndex.row());
    mais pour un relation n-n, les id sont dans une extra table. D'où ma question, comment fait on ? Peut-être que j'utilise très mal les relations aujourd'hui, mais je vois pas comment faire d'autre.

  8. #8
    Membre expert

    Profil pro
    Inscrit en
    avril 2010
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 478
    Points : 3 954
    Points
    3 954

    Par défaut

    Ok, je commence à comprendre comment tu utilises le module QxModelView avec les relations 1-n et n-1 (pour info, j'ai modifié le titre du sujet pour indiquer que tu essayes d'utiliser les relations n-n avec le module QxModelView, c'est important comme détail !).
    En effet, avec les relations de type 1-n et n-1, ce que tu fais doit fonctionner.

    Avant de t'expliquer une autre façon de faire pour gérer les relations avec le module QxModelView, je pense qu'il est important de lire et comprendre :
    1- ce topic dans la FAQ de QxOrm : Comment utiliser le moteur de relations pour récupérer des données associées à plusieurs tables ? ;
    2- ce tutoriel : Exposer des modèles C++ imbriqués à QML.

    Remarque : concernant le tutoriel, même si il y a écrit QML dans le titre, ce qui suit fonctionne également avec une utilisation non QML.

    Pour utiliser les relations (1-n, n-1 ou n-n) avec le module QxModelView, il est important de comprendre qu'il peut y avoir une hiérarchie entre modèles (un modèle parent peut avoir plusieurs modèles enfants associés, c'est la notion de modèles imbriqués du tutoriel ci-dessus).
    Si je reprends ton exemple, tu as 2 modèles (_teamModel et _userModel) liés par une relation n-n, voici comment tu peux instancier tes 2 modèles pour avoir cette notion de hiérarchie (je le fais avec la classe qx::QxModel<T> mais c'est exactement le même principe avec qx::QxModelService<T, S>) :

    1- en une seule requête (requête SQL si utilisation de qx::QxModel<T>, ou bien requête client-serveur si utilisation de qx::QxModelService<T, S>) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    qx::IxModel * _teamModel = new qx::QxModel<Team>();
    _teamModel->qxFetchById(<my_quuid>, "*"); // le paramètre "*" signifie qu'on récupère toutes les relations sur 1 niveau, on peut mettre aussi "User" si on souhaite récupérer uniquement la relation "User"
    qx::IxModel * _userModel = ((_teamModel->rowCount() > 0) ? static_cast<qx::IxModel *>(_teamModel->list_of_user(teamIndex.row())) : NULL); // la méthode list_of_user() est celle générée par QxEntityEditor pour gérer les relations avec le module QxModelView
    2- ou bien en 2 requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    qx::IxModel * _teamModel = new qx::QxModel<Team>();
    _teamModel->qxFetchById(<my_quuid>);
    qx::IxModel * _userModel = ((_teamModel->rowCount() > 0) ? static_cast<qx::IxModel *>(_teamModel->list_of_user(teamIndex.row(), true)) : NULL); // le 2ème paramètre (true) indique qu'on souhaite récupérer les données de la BDD, ce qui exécute une requête SQL ou client-serveur
    Que tu utilises la méthode 1- ou 2-, tes 2 modèles _teamModel et _userModel sont liés par une hiérarchie parent-enfants.
    Pour la sauvegarde, il suffit d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _teamModel->qxSaveRow(teamIndex.row(), "*"); // le paramètre "*" signifie qu'on enregistre en BDD le modèle ainsi que toutes ses relations, on peut aussi mettre "User" si on souhaite enregistrer le modèle + la relation nommée "User"
    Remarque : sur le fetch je pense que ça devrait fonctionner correctement. Sur la sauvegarde, j'ai un doute en relisant le code, je pense qu'il manque une synchronisation des données du modèle avant d'envoyer la requête. Si il y a un soucis sur la sauvegarde, j'apporterai une correction...
    Dans tous les cas, c'est la façon 'générique' d'utiliser les relations avec le module QxModelView (relations 1-n, n-1 et n-n).

    Autre remarque : pour utiliser les relations avec le module QxModelView, il est nécessaire d'utiliser QxEntityEditor pour générer toutes les méthodes d'accès aux relations.
    Par défaut, les classes qx::QxModel<T> et qx::QxModelService<T, S> exposent au modèle toutes les propriétés simples enregistrées dans le contexte QxOrm, pour les relations (les propriétés complexes) il faut QxEntityEditor.
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2014
    Messages : 31
    Points : 16
    Points
    16

    Par défaut

    Bonsoir,

    j'ai ajouté via une requête des lignes dans la table pivot (relation n-n, entre les teams et les tounaments).

    Pour le fetch, cela marche bien si je modifie le model généré pour qu'il utilise le service.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void coreWindow::on_listViewTournament2_clicked(const QModelIndex &index)
    {
        if (index.isValid())
        {
            _teamTournamentModel = static_cast<model_view::Team_model *>(_tournamentModel->list_of_teams(index.row(), true));
            _ui->listViewTournamentTeam->setModel(_teamTournamentModel);
            _ui->listViewTournamentTeam->setModelColumn(1);
        }
    }
    Par contre, comme vous l'avez remarqué, l'insert dans cette table ne marche pas.

    sur le fetch je pense que ça devrait fonctionner correctement. Sur la sauvegarde, j'ai un doute en relisant le code, je pense qu'il manque une synchronisation des données du modèle avant d'envoyer la requête. Si il y a un soucis sur la sauvegarde, j'apporterai une correction...
    J'ai fait ceci pour tenter un update dans ma table pivot:

    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
     
    void coreWindow::on_buttonAddTeamTournament_clicked()
    {
        QModelIndex tournamentIndex = _ui->listViewTournament2->currentIndex();
        QModelIndex teamIndex = _ui->listViewTeam3->currentIndex();
     
        if (tournamentIndex.isValid() && teamIndex.isValid())
        {
            model_view::Tournaments_model * _testModel = new model_view::Tournaments_model();
            QStringList relation;
            relation << "*";
            _testModel->qxFetchById(tournamentIndex.row(), relation);
     
            _teamTournamentModel = static_cast<model_view::Team_model *>(_testModel->list_of_teams(tournamentIndex.row(), true));
            _teamTournamentModel->qxInsertRow(teamIndex.row());
            _testModel->qxSaveRow(teamIndex.row(), relation);
            _ui->listViewTournamentTeam->setModel(_teamTournamentModel);
        }
    }
    Pouvez vous voir si cela vient de mon coté ou du votre ?

    merci.

    ps: Bonne année et meilleur vœux

  10. #10
    Membre expert

    Profil pro
    Inscrit en
    avril 2010
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 478
    Points : 3 954
    Points
    3 954

    Par défaut

    Pour le fetch, cela marche bien


    Ton fetch est nickel : ta variable _tournamentModel est le modèle parent, et _teamTournamentModel est un modèle enfant.
    IMPORTANT : à présent, si tu veux enregistrer, il faut toujours utiliser le modèle parent.

    l'insert dans cette table ne marche pas.
    Pouvez vous voir si cela vient de mon coté ou du votre ?
    Il y a certainement un soucis sur l'enregistrement dans le module QxModelView (comme je l'ai dit je pense qu'il manque une synchronisation des données (des relations) avec le modèle avant enregistrement), mais voici comment tu devrais faire (je repars de ton fetch) pour insérer des éléments dans _teamTournamentModel :
    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
     
    void coreWindow::on_listViewTournament2_clicked(const QModelIndex &index)
    {
        if (index.isValid())
        {
            _teamTournamentModel = static_cast<model_view::Team_model *>(_tournamentModel->list_of_teams(index.row(), true));
            _ui->listViewTournamentTeam->setModel(_teamTournamentModel);
            _ui->listViewTournamentTeam->setModelColumn(1);
     
            // on ajoute un élément à _teamTournamentModel
            _teamTournamentModel->insertRow();
            // ici tu rentres les données que tu souhaites pour ce nouvel élément
            _teamTournamentModel->setData(....);
            // Enfin on enregistre en BDD (ou en utilisant les services), en passant par le modèle parent et en indiquant en paramètre qu'on souhaite enregistrer les relations
            _tournamentModel->qxSaveRow(my_row, "*");
        }
    }
    Tu peux essayer comme ça (en tout cas, c'est comme ça que ça doit fonctionner), si ça ne fonctionne pas, j'apporterais une correction pour effectuer cette synchronisation entre les données (des relations) et le modèle avant enregistrement...
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2014
    Messages : 31
    Points : 16
    Points
    16

    Par défaut

    Bonjour,

    j'ai beau essayer, cela ne marche pas.

    Tu peux essayer comme ça (en tout cas, c'est comme ça que ça doit fonctionner), si ça ne fonctionne pas, j'apporterais une correction pour effectuer cette synchronisation entre les données (des relations) et le modèle avant enregistrement...
    Pouvez vous apporter un correctif ?

  12. #12
    Membre expert

    Profil pro
    Inscrit en
    avril 2010
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 478
    Points : 3 954
    Points
    3 954

    Par défaut

    Pouvez vous apporter un correctif ?
    Voici un correctif, il faut mettre à jour QxOrm (version 1.3.1 BETA 33) et exporter ton projet avec la nouvelle version de QxEntityEditor (version 1.1.7 BETA 64) :
    - QxOrm 1.3.1 BETA 33 : http://www.qxorm.com/version/QxOrm_1.3.1_BETA_33.zip
    - QxEntityEditor 1.1.7 BETA 64 : http://www.qxorm.com/version/QxEntit...64_win_32b.zip

    Remarque : il est nécessaire de ré-exporter ton projet avec QxEntityEditor car de nouvelles méthodes sont générées pour effectuer la synchronisation des modèles imbriqués (ceux liés à une relation) avant d'envoyer les données en BDD.

    Comme tu utilises les modèles connectés aux services, je te conseille d'utiliser la nouvelle option qui permet de générer des modèles basés sur la nouvelle classe qx::QxModelService<T, S> (menu Tools >> Export to C++ model/view project (settings)) :
    Nom : qxee_export_model_view.png
Affichages : 79
Taille : 32,6 Ko
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2014
    Messages : 31
    Points : 16
    Points
    16

    Par défaut

    Il y a toujours un problème avec le génération des Models avec les services.

    Les méthodes ne dépendent toujours pas du services.

    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
    QObject * Session_model::list_of_modules(int row, bool bLoadFromDatabase /* = false */, const QString & sAppendRelations /* = QString() */)
    {
       QString sRelation = "list_of_modules";
       qx::IxModel * pChild = (bLoadFromDatabase ? NULL : this->getChild(row, sRelation));
       if (pChild) { return static_cast<QObject *>(pChild); }
    
       if ((row < 0) || (row >= this->m_model.count())) { qAssert(false); return NULL; }
       Session_model_base_class::type_ptr ptr = this->m_model.getByIndex(row);
       if (! ptr) { qAssert(false); return NULL; }
       QUuid id = ptr->getSession_id();
       Session::type_list_of_modules value = ptr->getlist_of_modules();
    
       if (bLoadFromDatabase)
       {
          if (! sAppendRelations.isEmpty() && ! sAppendRelations.startsWith("->") && ! sAppendRelations.startsWith(">>")) { sRelation += "->" + sAppendRelations; }
          else if (! sAppendRelations.isEmpty()) { sRelation += sAppendRelations; }
          Session tmp;
          tmp.setSession_id(id);
          this->m_lastError = qx::dao::fetch_by_id_with_relation(sRelation, tmp);
          if (this->m_lastError.isValid()) { return NULL; }
          value = tmp.getlist_of_modules();
          ptr->setlist_of_modules(value);
       }
    
       model_view::Module_model * pNewChild = NULL;
       pChild = qx::model_view::create_nested_model_with_type(this, QModelIndex(), value, pNewChild);
       if (pChild) { this->insertChild(row, "list_of_modules", pChild); }
       return static_cast<QObject *>(pChild);
    }
    cela sera t-il corrigé ?

  14. #14
    Membre expert

    Profil pro
    Inscrit en
    avril 2010
    Messages
    478
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 478
    Points : 3 954
    Points
    3 954

    Par défaut

    Les méthodes ne dépendent toujours pas du services.
    Ah oui, mince ! J'avais oublié ça
    Voici un correctif (QxEntityEditor 1.1.7 BETA 67) : http://www.qxorm.com/version/QxEntit...67_win_32b.zip
    Il faut que tu ré-exportes ton projet model/view avec cette nouvelle version de QxEntityEditor.
    Le site de la bibliothèque QxOrm : bibliothèque C++ de gestion de données (Mapping Objet Relationnel ou ORM) basée sur les frameworks Qt et boost.
    QxEntityEditor : éditeur graphique pour la bibliothèque QxOrm (application multi-plateforme pour gérer graphiquement le modèle d'entités).

    Tutoriel : installer un environnement de développement avec QxOrm sous Windows.
    Tutoriel qxBlog : gestion de blogs en C++/Qt.
    Tutoriel qxClientServer : création d'un serveur d'applications en C++/Qt.

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

Discussions similaires

  1. comment utiliser les API avec Perl?
    Par megapacman dans le forum Langage
    Réponses: 5
    Dernier message: 23/08/2006, 15h18
  2. Comment utiliser les fichiers *.PNG avec Delphi ?
    Par HopeLeaves dans le forum Composants VCL
    Réponses: 2
    Dernier message: 17/09/2005, 20h59
  3. [CF][PPC/VB.NET] Comment utiliser les Socket avec Pocket PC ?
    Par joefou dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 17/05/2005, 14h24
  4. Comment utiliser les styles XP avec Dev-C++?
    Par abraxas dans le forum Dev-C++
    Réponses: 3
    Dernier message: 05/10/2003, 19h47

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