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

Langage Delphi Discussion :

Programmeur php vers delphi, mise à jour d'un tdbgrid vers la db


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 76
    Points : 25
    Points
    25
    Par défaut Programmeur php vers delphi, mise à jour d'un tdbgrid vers la db
    Bonjour, je suis un développeur web, php, mysql et co.

    Je dois récupérer le travail d'une autre personne, il développait en Delphi. Du coup j'apprends le langage.
    J'essaye d'éviter dans la mesure du possible d'utiliser les composants graphiques.

    J'ai le code ci dessous, je me connecte sur une db firebird, et j'affiche un record via des tdbgrid (es-ce le bon composant à utiliser)
    Je voudrais pouvoir vérifier en premier les données insérées puis effectuer la mise à jour vers la db.Je bloque sur ses deux points :-(

    Voici le début du 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
     
    var
      Qry: TSQLQuery;
      dsp: TDataSetProvider;
      cds: TClientDataSet;
      dts: TDataSource;
    begin
     
    // Set up your connection as above, and open it
     
      Qry := TSQLQuery.Create(nil);
      Qry.SQLConnection := tuto_d2010fb;
     
      Qry.SQL.Add('SELECT FIRST 1 * ');
      Qry.SQL.Add('from personne');
      Qry.SQL.Add('where username =:username; ');
      Qry.Params.ParamByName('username').AsString := 'beletot';
     
      dsp := TDataSetProvider.Create(nil);
      dsp.DataSet := Qry;
     
      cds := TClientDataSet.Create(nil);
      cds.SetProvider(dsp);
      cds.Active := True;
     
      dts := TDataSource.Create(nil);
      dts.DataSet := cds;
     
      // assign data to the tdbEdit
      dbedt_id_pers.DataSource := dts;
      dbedt_id_pers.DataField := 'id_pers';
     
      dbedt_nom.DataSource := dts;
      dbedt_nom.DataField := 'nom';
     
      dbedt_prenom.DataSource := dts;
      dbedt_prenom.DataField := 'prenom';
     
      dbedt_username.DataSource := dts;
      dbedt_username.DataField := 'username';
    Je ne vois pas bien quoi faire après pour sauver les données ?

    Merci pour votre aide.

    Bertrand

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 064
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par beletot Voir le message
    Bonjour, je suis un développeur web, php, mysql et co.
    Je dois récupérer le travail d'une autre personne, il développait en Delphi. Du coup j'apprends le langage.
    Bonjour et bienvenue
    J'essaye d'éviter dans la mesure du possible d'utiliser les composants graphiques.
    je ne vois pas bien pour quelle raison, c'est une des forces de Delphi, je crois que vous voulez plutôt dire que vous préférez utiliser créer les composants d'accès aux données au runtime
    J'ai le code ci dessous, je me connecte sur une db firebird
    , et j'affiche un record via des tdbgrid (est-ce le bon composant à utiliser)
    donc vous utilisez des composants graphique
    pour répondre à la question une DBGrid (ce qui veut dire que vous travaillez avec la VCL, reste plus qu'à avoir la version de Delphi) n'est pas forcément le bon composant si seulement un record (select first 1 .....) est affiché un DBEdit par champ est peut être mieux
    Je voudrais pouvoir vérifier en premier les données insérées puis effectuer la mise à jour vers la db.Je bloque sur ses deux points :-(
    à contrario si vous voulez voir toutes les données SELECT * FROM PERSONNE [ORDER BY id_pers] la DBGrid peut être 'la solution'

    Je passe sur la citation du code (on voit que vous avez les "habitudes" PHP )


    Je ne vois pas bien quoi faire après pour sauver les données ?
    ce qui vous manque c'est un ApplyUpdates ,entre nous je ne suis pas un grand pratiquant des DBExpress et je préfère donc vous renvoyer à ce lien
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    Bonjour Sergio,
    Merci pour ta réponse.

    je crois que vous voulez plutôt dire que vous préférez utiliser créer les composants d'accès aux données au runtime
    Effectivement c'est ce que je voulais dire.

    pour répondre à la question une DBGrid (ce qui veut dire que vous travaillez avec la VCL, reste plus qu'à avoir la version de Delphi) n'est pas forcément le bon composant si seulement un record (select first 1 .....) est affiché un DBEdit par champ est peut être mieux
    Je suis sous delphi xe2, je n'ai pas pu choisir la version.
    Effectivement une grid pour afficher une ligne n'a pas d'intérêt. J'ai un composant tdbEdit es-ce le même que DBEdit ?

    ce qui vous manque c'est un ApplyUpdates ,entre nous je ne suis pas un grand pratiquant des DBExpress et je préfère donc vous renvoyer à ce lien
    Pour DBExpress c'est juste un lien que j'avais trouvé, es-ce déconseillé de l'utiliser ? Il y a t-il d'autres composants plus performant ?
    Je vais regarder ton lien.

    Un grand merci pour ta réponse.
    Et désolé si je ne suis pas très clair, c'est un nouvel environnement pour moi j'ai encore beaucoup de choses à découvrir.

    Bertrand

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    pourquoi passer par un DataSetProvider et un ClientDataSet ?

    c'est bien de vouloir tout faire à la main, mais c'est s'embêter pour pas grand chose

    1) Créer un nouveau projet Delphi VCL
    2) dans l'Explorateur de données (sur la droite, un onglet en bas du Gestionnaire de projets), ouvrir la base de données désirée
    3) faire un drag&drop de la table voulue vers la fiche !
    4) ajouter un TDataSource
    5) ajouter une DBGrid
    6) lier DBGRid->DataSource->Query

    et c'est fini !

    NB: sous Delphi, le Query qui fait un SELECT est capable de générer tout seul les requêtes INSERT/UPDATE/DELETE quand on fait appel respectivement à Query.Insert, Query.Edit et Query.Delete

    de même le TDBEdit déclenche tout seul le Query.Insert/Query.Edit quand on modifie son contenu, il reste à placer un TDBNavigator pour avoir un Bouton Valider (qui fait un Query.Post) et c'est fini !

    il est aussi possible de faire tout cela à la main, mais pas sans une certaine connaissance de l'architecture des objets Delphi
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 064
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par beletot Voir le message
    Je suis sous delphi xe2, je n'ai pas pu choisir la version.
    Effectivement une grid pour afficher une ligne n'a pas d'intérêt. J'ai un composant tdbEdit es-ce le même que DBEdit ?
    que tu n'ai pu choisir la version c'est pas le plus important, l'important était pour nous était de connaitre la version utilisée
    et oui un DBEdit et un TDBEdit c'est pour moi la même chose
    Pour DBExpress c'est juste un lien que j'avais trouvé, es-ce déconseillé de l'utiliser ?
    perso je n'aime pas DBExpress donc je serais obligatoirement partial en disant que OUI
    ma raison principale on est obligé de déployer des DLL en plus , secondaire beaucoup de composants à mettre pour une simple Query
    Il y a t-il d'autres composants plus performant ?
    il est dommage que ta version soit XE2 depuis XE4 Firedac (fourni avec) est considéré comme le set de composants pour accéder aux bases de données
    en palliatifs, plus simple à mon avis que DBExpress, il y a les ZEOSDBO tu pourras trouver dans mon blog des liens sur un début de tutoriel (justement pour Firebird)

    pour le reste, j'abonde dans le sens de Paul en disant que tout créer au runtime avec Delphi est "s'embêter pour pas grand chose", je préfère utiliser la création de requête au runtime uniquement pour des Querys (ou autre) ponctuels, non liées aux composants visuels

    Serge
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    Bonjour Paul, Sergio

    J'ai continué mes tests hier.

    pourquoi passer par un DataSetProvider et un ClientDataSet ?
    Effectivement avec un TEdit j'ai pu constater que le DataSetProvider et le ClientDataSet ne servaient à rien.

    Pour ce que je comprends, avec une grid
    1. le DataSetProvider s'occupe des queries select, update, insert et delete ?
    2. le ClientDataSet -> de la navigation
    3. ET DataSource lie la grid avec le clientDataset


    Simple question technique histoire de bien comprendre, si je lie directement le DataSetProvider sur le DataSource, que va t'-il se passer ?
    • Ce n'est pas possible ?
    • Je ne pourrai modifier que mon premier record ?


    c'est bien de vouloir tout faire à la main, mais c'est s'embêter pour pas grand chose
    Dans le cadre d'une grid pour je comprends bien que passer uniquement par du runTime demanderait beaucoup plus de programmation.

    Je préfère ne pas permettre de modifier directement les champs dans une grid car je suis entouré de stars du : dans un champ email j'enregistre pas d'adresse email
    Si je laissais la possibilité de modifier les donnes directement dans la grid, je devrais pouvoir vérifier les données avant d'effectuer une update.
    Es-ce que la mise à jour s'effectuera lors du changement de ligne ou dès que je sortirai d'une cellule ?

    de même le TDBEdit déclenche tout seul le Query.Insert/Query.Edit quand on modifie son contenu, il reste à placer un TDBNavigator pour avoir un Bouton Valider (qui fait un Query.Post) et c'est fini !
    Tu veux dire que delphi va préparer la queries mais ne va effectuer qu'un insert lors de l'utilisation du bouton valider ?
    L'ancien programmeur avait réussi à insérer les données physiquement dans la db sans devoir appuyer sur le bouton Valider

    en palliatifs, plus simple à mon avis que DBExpress, il y a les ZEOSDBO
    Je vais tester ta proposition. Pour le moment je suis juste content quand j'arrive à faire fonctionner quelque chose.

    Pour résumé
    Grid j'utilise les composants graphiques pas de run time
    TEdit je préfère passer par le runtime
    Y a t'il d'autres composants que vous utilisez régulièrement et uniquement avec le même principe qu'une grid ?

    Un grand merci pour votre aide.

    J'avance doucement mais surement :-)

    Bonne journée

    Bertrand

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 064
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par beletot Voir le message

    Je préfère ne pas permettre de modifier directement les champs dans une grid car je suis entouré de stars du : dans un champ email j'enregistre pas d'adresse email
    Si je laissais la possibilité de modifier les données directement dans la grid, je devrais pouvoir vérifier les données avant d'effectuer une update.
    c'est largement possible via l'évènement OnValidate
    Est-ce que la mise à jour s'effectuera lors du changement de ligne ou dès que je sortirai d'une cellule ?
    avec DBExpress la/les mise(s) à jour est/sont en mémoire , c'est le ApplyUpdates qui fera ensuite les mises à jour sur la BDD
    Tu veux dire que delphi va préparer la queries mais ne va effectuer qu'un insert lors de l'utilisation du bouton valider ?
    Oui sauf si comme "l'ancien programmeur" tu gères le changement de ligne . Comment ? en utilisant les évènements sur l'ensemble de données : changement de ligne dans une grille = changement de record actif donc, si avant ce changement si le record actif précédent était en modif/insert il suffit de faire un Post

    ZEOSDBO : Je vais tester ta proposition.
    à mon avis ces composants d'accès aux données sont plus simple (mais je suis partial )
    Pour résumer
    Grid j'utilise les composants graphiques pas de run time
    TEdit je préfère passer par le runtime
    non, tous les composants visuels, il vaut mieux les poser en mode design , tu vas te casser la tête en positionnement, liaison avec l'ensemble de données etc...
    beaucoup de code pour peu de gain
    Y a t'il d'autres composants que vous utilisez régulièrement et uniquement avec le même principe qu'une grid ?
    j'utilise, je devrais dire utilisais, beaucoup TVirtualTree et la smdbGrid (DBGrid évolué), depuis les versions XE je penche plus vers les composants TMS que ce soit VCL ou FMX
    J'avance doucement mais surement :-)
    si tu as le temps ...
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par beletot Voir le message
    Effectivement avec un TEdit j'ai pu constater que le DataSetProvider et le ClientDataSet ne servaient à rien.
    j'ai lu trop vite, en fait c'est lié à dbExpress qui est unidirectionnel, alors que la DBGrid est bidirectionnelle, du coup on utilise un ClientDataSet comme cache local.

    mais avec FireDAC, UniDAC, uib, ... tu as un accès bidirectionnel sous Firebird, donc pas besoin d'un cache. Cependant j'ai toujours préféré l'approche par pagination (comme en PHP/MySQL) que j'ai connu aussi sur AS/400 ^^ la DBGrid c'est pratique mais c'est loin d'être optimal, par défaut il charge 1000 enregistrements à la fois...pour en afficher une dizaine...tu peux très bien utiliser un StringGrid ou une DrawGrid pour afficher des enregistrements chargés à la main.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 064
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Paul TOTH
    UIB, ... tu as un accès bidirectionnel sous Firebird
    non Paul, UIB est unidirectionnel + lecture seule contrairement aux autres cités (sauf bien sur à rajouter le grizzlypack)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    la DBGrid c'est pratique mais c'est loin d'être optimal, par défaut il charge 1000 enregistrements à la fois.
    Tu ne peux pas décider du nombre d'enregistrement que le dbGrid charge ?
    Du style
    SELECT first 5 * from ..
    Perso dès qu'il y a plus de 20 lignes, j'utilise une recherche.

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 064
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    Certains composants te permettent d'indiquer un nombre d'enregistrements par paquets sans avoir à en limiter le nombre dans la requête
    (fetchoptions des TQuery de FireDac , fecthrows de ZEOSDBO etc...)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par beletot Voir le message
    Tu ne peux pas décider du nombre d'enregistrement que le dbGrid charge ?
    Du style


    Perso dès qu'il y a plus de 20 lignes, j'utilise une recherche.
    ce n'est pas le but, la DBGrid est supposée te permettre de naviguer sur l'ensemble de ta table en avant, en arrière, page suivante, page précédente...

    si tu limites ton Query à 20 lignes, la scrollbar de la DBGrid ne permettra de naviguer que sur ces 20 enregistrements.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 76
    Points : 25
    Points
    25
    Par défaut
    si tu limites ton Query à 20 lignes, la scrollbar de la DBGrid ne permettra de naviguer que sur ces 20 enregistrements.
    Oui c'est certain, je suppose que selon le contenu de ta grid tu afficheras l'ensemble des lignes soit les premières lignes.
    Dans notre db qui est clairement mal créée nous avons des tables avec des champs calculées, l'affichage de l'ensemble de la table peut s'avérer assez long.

    Merci pour vos réponses.

    Bertrand

Discussions similaires

  1. problème mise à jour FreeBSD 6.2 vers FreeBSD 7.0
    Par gorgonite dans le forum BSD
    Réponses: 2
    Dernier message: 07/05/2008, 12h02
  2. Réponses: 2
    Dernier message: 29/10/2007, 19h17
  3. mise à jour automatique d'Access vers Excel
    Par dirtyjs dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 19/10/2006, 21h55
  4. [Eclipse 3.1] Mise à jour de 3.0 vers 3.1
    Par anaon dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 15/01/2006, 17h49
  5. Mise à jour de Mysql4.0 vers 4.1
    Par Zebulonn dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 18/10/2005, 17h50

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