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

C# Discussion :

Effectuer une recherche dans base de donnée


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Points : 0
    Points
    0
    Par défaut Effectuer une recherche dans base de donnée
    Bonjour,

    J'aimerais que mon application puisse rechercher par "nom" ou "numéros" de téléphone dans ma base donnée MySql puis me les afficher.

    j'ai trouvé ceci sur le net

    La commande qui permet de faire cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM matable WHERE nom LIKE + textBox1.Text + ";


    Est ce vraiment cette ligne de commande car j'arrive pas a la faire fonctionner

    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2011
    Messages : 53
    Points : 83
    Points
    83
    Par défaut
    Bonjour,

    essaye de faire comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT * FROM matable WHERE nom LIKE '"+ textBox1.Text +"'";
    normalement ça devrait marcher

    EDIT:

    pour sécuriser le tout c'est encore mieux de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT * FROM matable WHERE nom LIKE '"+ textBox1.Text.Replace("'","''") +"'";

  3. #3
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Ce sujet aurais, plutôt, sa place dans une section SQL...

    Avec la requête telle quelle, rien n'empêche les injections sql -> pbm de sécurité !

    Sinon, le Like s'utilise avec un % (MySql ne doit pas être différent d'oracle ou sqlserver sur ce point).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select [tes champs] from [ta table] where [ton champ] like 'tavaleur'
    où ta valeur doit être précédée de % ou suivie ou les deux, selon la partie constante connue.

    Je m'explique :
    Dans tototiti
    toto% signifie que tu auras toutes les chaînes commençant par toto,
    %titi toutes celles qui finnissent par titi
    %toti% toute celles qui contiennent toti...

    Si tu veux faire une ségrégation par nom exact, tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select [tes champs] from [ta table] where [ton champ] = 'tavaleur'
    Ensuite ta requête doit rapporter un résultat sur le nom OU le N° tel ?
    dans ce cas, il faut ajjouter une close OR :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select [tes champs] from [ta table] where nom = 'tavaleur' or telnum = 'tavaleur'
    .

    Ensuite, si tu postes ici, tu dois être en C# donc tu peux utiliser les MySqlParameters pour passer tes valeurs et non directement la lecture des txtBox !!!


    P.S. like sans % revient à faire = ... aucun intérêt de ralentir la requête dans ce cas ! car Like est plus lent que = ...
    En plus, il faut penser aux index de champs pour optimiser la recherche.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    Normalement c'est très mal de faire ça !

    Donc déjà un tour s'impose sur la FAQ et articles pour découvrir les requêtes paramétrées, la connexion à une base de données, ...

  5. #5
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Citation Envoyé par BuchsPa Voir le message
    Bonjour,

    essaye de faire comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT * FROM matable WHERE nom LIKE '"+ textBox1.Text +"'";
    normalement ça devrait marcher

    EDIT:

    pour sécuriser le tout c'est encore mieux de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT * FROM matable WHERE nom LIKE '"+ textBox1.Text.Replace("'","''") +"'";

    Non BuchsPa !
    la substitution de ' par '' est peut-être "moins pire", mais pas le top !

    Requête paramétrée comme l'a dit mon camarade, ci-dessus !
    Tu peux te permettre de te passer de sécurité pour des test, mais pas pour une VRAIE Appli !
    Une bdd se doit d'être protégée, c'est le coeur de l'appli du point de vue client : Imagine amazone qui se fait hacker ses bases ???
    tu récupères les N° de CB de tous les clients !!!
    ou tu supprimes des infos primordiales pour leur commerce !!!

  6. #6
    Membre régulier
    Homme Profil pro
    Informaticien
    Inscrit en
    Février 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2011
    Messages : 53
    Points : 83
    Points
    83
    Par défaut
    C'est déjà mieux que rien

  7. #7
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Citation Envoyé par BuchsPa Voir le message
    C'est déjà mieux que rien
    Non c'est le mal ! Il faut faire les choses correctement donc avec des requêtes paramétrées !

    Car le cas fonctionne ici mais prenons un decimal qui aura une virgule ou un autre cas, la façon que tu proposes ne résoud pas d'avance les problèmes qui se poseront.

  8. #8
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Points : 4 574
    Points
    4 574
    Par défaut
    Je plussoie entièrement les remarques de kheironn et ostenhard. Utilises les requêtes paramétrées.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Points : 0
    Points
    0
    Par défaut
    Effectiviement je suis en c#

    voila mon 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
    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
    private void button3_Click(object sender, RoutedEventArgs e)
            {
                using (Home.wConnexion)
                {
                    // Instancier l’objet Command
                    using (MySqlCommand wCommand = Home.wConnexion.CreateCommand())
                    {
                        // Définition de la requête
                        wCommand.CommandText = "SELECT 'nom' 'nfixe' FROM test WHERE nom = " + textBox6.Text +"  OR nfixe = " + textBox17.Text ;
     
                        // Lecture des résultats
                        using (MySqlDataReader wReader = wCommand.ExecuteReader())
                        {
                            // Remplir le textbox
                            while (wReader.Read())
                            {
                                string wItem = wReader["nom"].ToString();
                                string wItems = wReader["prenom"].ToString();
                                string wItem3 = wReader["message"].ToString();
                                string wItem4 = wReader["sexe"].ToString();
                                string wItem5 = wReader["dateentre"].ToString();
                                string wItem6 = wReader["adresse"].ToString();
                                string wItem7 = wReader["cp"].ToString();
                                string wItem8 = wReader["ville"].ToString();
                                string wItem9 = wReader["nserie"].ToString();
                                string wItem10 = wReader["model"].ToString();
                                string wItem11 = wReader["marque"].ToString();
                                string wItem12 = wReader["typepc"].ToString();
                                string wItem13 = wReader["nfixe"].ToString();
                                string wItem14 = wReader["nmobile"].ToString();
                                string wItem15 = wReader["mail"].ToString();
                                string wItem16 = wReader["datesortie"].ToString();
                                string wItem17 =wReader["dcomplementaire"].ToString();
                                string wItem18 = wReader["sauprobleme"].ToString();
     
     
                                comboBox2.Items.Add(wItem4);
                                textBox2.Text = (wItem);
                                textBox3.Text = (wItems);
                                textBox4.Text = (wItem3);
                                textBox5.Text = (wItem5);
                                textBox7.Text = (wItem6);
                                textBox8.Text = (wItem7);
                                textBox12.Text = (wItem8);
                                textBox9.Text = (wItem11);
                                textBox10.Text = (wItem10);
                                textBox11.Text = (wItem9);
                                comboBox1.Items.Add(wItem12);
                                textBox13.Text = (wItem13);
                                textBox15.Text = (wItem14);
                                textBox14.Text = (wItem15);
                                textBox16.Text = (wItem16);
                                textBox1.Text = (wItem17);
                                textBox18.Text = (wItem18);
     
     
     
                            }
                        }
                    }
                }
            }

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Points : 0
    Points
    0
    Par défaut
    Merci a tous pour votre aide

    j'ai trouvé grace a vous

    Pour la sécurité ce nest pas grave l'application sera utiliser en local mais jamais sur le net

    j'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM hibis_t WHERE nom LIKE '" + textBox6.Text + "' OR nfixe LIKE '" + textBox17.Text +"'";
    Maintenant quand je clique sue le bouton afficher une premiere fois puis jefface la textbox et que je reclique sur afficher j'ai ce message d'erreur :

    L'exception System.InvalidOperationException n'a pas été gérée
    Message=Connection must be valid and open.
    Que dois je faire?

  11. #11
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    utilises = à la place de like...

    pour ton nouveau problème, passes en débug sur ton code... le message est clair : ta connection doit être fermée.

    perso, je ne fais pas de using sur les cnx. Je préfère gérer moi-même les open, close et dispose.

  12. #12
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Citation Envoyé par moonshine972 Voir le message
    Pour la sécurité ce nest pas grave l'application sera utiliser en local mais jamais sur le net
    Oui mais tes utilisateurs, tu ne sais pas à l'avance ce qu'ils vont saisir et un utilisateur par définition ça fait n'importe quoi !

    Donc libre à toi de mal faire les choses, tu es prévenu !

  13. #13
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Citation Envoyé par moonshine972 Voir le message
    Pour la sécurité ce nest pas grave l'application sera utiliser en local mais jamais sur le net
    Oui, mais cela doit être une habitude!
    Tu as vite fait de prendre de mauvais plis qui sont compliqués à oublier...

    Je me réjouis en tout cas de voir que la ligue de promotion de la requête paramétrée s'allonge

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Points : 0
    Points
    0
    Par défaut
    ok je vais essayer de rectifier le tir

    Quant a l'autre problème je rencontre un souci de connexion ouverte mais quand je la ferme et que j'appuie sur le bouton j'ai ce message:

    Invalid attempt to Read when reader is closed.

  15. #15
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    A quoi bon faire un While reader.Read() quand on ne lit qu'une seule ligne ?

  16. #16
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    Il faut que nous dise à quel endroit tu fermes ta connexion.
    Montre nous ton code modifié.

  17. #17
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    ben oui, il ne faut pas fermer avant de lire...
    Tu as déjà essayé de lire un livre fermé ? Je veux dire à part le résumé en fin de couverture ?
    Ben, c'est pareil !

    dans l'ordre, tu fais
    - open
    - execute
    - read
    - close
    - dispose

    remontre ton code modifié pour voir où est l'erreur.

  18. #18
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 106
    Points
    3 106
    Par défaut
    @kheironn : c'est vendredi, je suis sûrement fatigué, mais tu vois où qu'il ferme sa connexion avant d'accèder au DataReader ?

  19. #19
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Citation Envoyé par calagan99 Voir le message
    @kheironn : c'est vendredi, je suis sûrement fatigué, mais tu vois où qu'il ferme sa connexion avant d'accèder au DataReader ?
    il a dit qu'il avait modifié des choses et vu le message d'erreur, c'est qu'un close est fait avant un read... d'où ma demande de reposter son ode en l'tat actuel pour confirmer mes dire et faire avancer le bleme...

    je ne fais que supposer à partir de :
    Citation Envoyé par moonshine972 Voir le message
    ok je vais essayer de rectifier le tir

    Quant a l'autre problème je rencontre un souci de connexion ouverte mais quand je la ferme et que j'appuie sur le bouton j'ai ce message:

    Invalid attempt to Read when reader is closed.

    en l'occurence, dans le premier code ce ne devait pas être le cas...

    humf, je n'aime vraiment pas les using pour l'ADO... je préfère rester maître de mes étapes de traitement DB...

  20. #20
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 48
    Points : 0
    Points
    0
    Par défaut
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    private void button3_Click(object sender, RoutedEventArgs e)
            {
                    using (Home.wConnexion)
                    {
                        // Instancier l’objet Command
                        using (MySqlCommand wCommand = Home.wConnexion.CreateCommand())
                        {
                            // Définition de la requête
                            wCommand.CommandText = "SELECT * FROM hibis_t WHERE nom = '" + textBox6.Text + "' OR nfixe = '" + textBox17.Text + "'";
     
                            // Lecture des résultats
                            using (MySqlDataReader wReader = wCommand.ExecuteReader())
                            {
                                // Remplir le textbox
                                while (wReader.Read())
                                {
                                    string wItem = wReader["nom"].ToString();
                                    string wItems = wReader["prenom"].ToString();
                                    string wItem3 = wReader["message"].ToString();
                                    string wItem4 = wReader["sexe"].ToString();
                                    string wItem5 = wReader["dateentre"].ToString();
                                    string wItem6 = wReader["adresse"].ToString();
                                    string wItem7 = wReader["cp"].ToString();
                                    string wItem8 = wReader["ville"].ToString();
                                    string wItem9 = wReader["nserie"].ToString();
                                    string wItem10 = wReader["model"].ToString();
                                    string wItem11 = wReader["marque"].ToString();
                                    string wItem12 = wReader["typepc"].ToString();
                                    string wItem13 = wReader["nfixe"].ToString();
                                    string wItem14 = wReader["nmobile"].ToString();
                                    string wItem15 = wReader["mail"].ToString();
                                    string wItem16 = wReader["datesortie"].ToString();
                                    string wItem17 = wReader["dcomplementaire"].ToString();
                                    string wItem18 = wReader["sauprobleme"].ToString();
     
     
                                    comboBox2.Items.Add(wItem4);
                                    textBox2.Text = (wItem);
                                    textBox3.Text = (wItems);
                                    textBox4.Text = (wItem3);
                                    textBox5.Text = (wItem5);
                                    textBox7.Text = (wItem6);
                                    textBox8.Text = (wItem7);
                                    textBox12.Text = (wItem8);
                                    textBox9.Text = (wItem11);
                                    textBox10.Text = (wItem10);
                                    textBox11.Text = (wItem9);
                                    comboBox1.Items.Add(wItem12);
                                    textBox13.Text = (wItem13);
                                    textBox15.Text = (wItem14);
                                    textBox14.Text = (wItem15);
                                    textBox16.Text = (wItem16);
                                    textBox1.Text = (wItem17);
                                    textBox18.Text = (wItem18);
     
                                    Home.wConnexion.Close(); // j'ai rajouter ca d'ou j'obtiens ce message derreur
                                }
                            }
                        }
                    }
                }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. recherche dans base de donnée mysql
    Par alex01pernot dans le forum Bases de données
    Réponses: 13
    Dernier message: 03/05/2020, 15h50
  2. [VBA-Excel] Effectuer une recherche dans une liste view
    Par Miles Raymond dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2006, 17h21
  3. Recherche dans base de données et casse
    Par laurentdusseau dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/10/2006, 10h05
  4. Comment effectuer une recherche dans une listBox?
    Par Mickey.jet dans le forum Delphi .NET
    Réponses: 2
    Dernier message: 19/05/2006, 16h15
  5. [VB.NET] Comment créer une table dans base de données ?
    Par ptitesouris dans le forum VB.NET
    Réponses: 3
    Dernier message: 03/05/2006, 08h46

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