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 PHP Discussion :

Comment bien programmer en PHP ? [Débat]


Sujet :

Langage PHP

  1. #1
    Community Manager

    Profil pro
    Inscrit en
    Avril 2014
    Messages
    4 207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2014
    Messages : 4 207
    Points : 13 061
    Points
    13 061
    Par défaut Comment bien programmer en PHP ?
    Bonjour

    ma question et la suivante :

    Comment bien programmer en PHP ?

    Donc si vous avez des conseils, des truc à utiliser/éviter et d'autres choses.

    Par exemple :
    Code le plus court :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for ($i=0; $i<count($array); $i++)
    {
      echo $array[$i];
    }
    Code le plus rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $count = count($array);
    for ($i=0; $i<$count; $i++)
    {
      echo $array[$i];
    }
    Merci d'avance
    Pour contacter les différents services du club (publications, partenariats, publicité, ...) : Contacts

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,

    pour ma part :

    - Bien indenter le code pour une meilleure lisibilité
    - Bien commenter le code , même si ça prend du temps. Tu seras content dans 6 mois d'avoir pris le temps de commenter ton code . . .

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    • Toujours bien mettre en place un algo, voir un cahier des charges bien pensé avant de se plonger dans le code. Pour cette étape, il est important de connaître les règles de sécurité, quelles peuvent être les failles : http://php.developpez.com/faq/?page=securite

    • Perso, je sépare bien les "unités" de mon programme, par exemple :
    cfg.php // Constante et variable de configuration
    bbd.php // Fonctions d'accès à la base de données
    func.php // Diverses fonctions, conversion, traitement
    mail.php // Fonctions d'envoi de mail
    forms.php // Formulaires html de saisie
    etc...
    J'inclus les unités les unes aux autres avec Require_once().

    • J'utilise les tableaux pour les constantes, variables, données... et la commande global pour les intégrer dans mes fonctions. Par exemple, dans le script "cfg.php", tu trouveras :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $cfg['db_server']  = 'localhost';         // Nom du serveur
    $cfg['db_name']    = 'mybase';            // Nom de la base
    $cfg['db_table']   = 'membres';           // Nom de la table
    $cfg['db_login']   = 'root';              // Le login d'accès de la base
    $cfg['db_pass']    = '';                  // Le mot de passe de la base
    $cfg['linkid']     = '';                  // Handle de la connection
    Et dans le script "bdd.php" :
    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
    Require_Once('cfg.php');
    Require_Once('func.php');
     
    //============================================================ 
    //  CONNECTION A LA BASE DE DONNEES
    //============================================================
    function OpenBase($first=false){
      global $cfg;
     
      //----------------------------------------------------------
      // Déjà connecté -> Exit
      //----------------------------------------------------------
      if(!empty($cfg['linkid'])) return true;
     
      //----------------------------------------------------------
      // Test de connection su serveur
      //----------------------------------------------------------
      if(!$cfg['linkid']=@mysql_connect(
        $cfg['db_server'],
    • Je commente bien mon code (mais pas trop) et j'utilise des séparations pour améliorer la lisibilité et structurer le code. Je n'utilise pas de tabulation, que des espaces car d'un éditeur à l'autre, la valeur des tabulations peuvent être différentes et desindenter ton code. Le résultat est assez surprenant parfois.

    • J'utilise les simples quotes dans tous les cas, excepté pour encadrer les requêtes SQL où j'utilise les doubles quotes, car avec mon editeur PHP, il est possible de choisir une couleur différente. Ainsi, je repère tout de suite où se trouvent les requêtes SQL.

    • J'utilise de péréférence des "echo" pour intégrer du code HTML, CSS ou Javascript dans mes scripts PHP. J'évite de fermer les balises PHP (?>) ou sinon, je mets tout le code HTML, CSS ou Javascript dans un autre fichier.

    • Bien garder à l'esprit que ton code sera probablement lu par d'autres développeurs.
    De retour parmis vous après 10 ans!!

  4. #4
    Membre régulier Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Points : 105
    Points
    105
    Par défaut
    Merci

    Donc est ce qu'il y a des normes à suivre, parce que parfois on arrive à des situations ambiguës (usine a gaz).

    Par contre en java il existe plusieurs solutions permettant de structurer la programmation.

    Donc si vous avez des exemples d’architecture ou des projets (perso) qui se base sur des architectures (MVC par exemple).

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    De retour parmis vous après 10 ans!!

  6. #6
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Il vaut mieux toujours privilégier l'optimisation.

    Par exemple les chaines de caractères avec des simples quotes et non pas des doubles. (Ne pas avoir la fleme de concaténer les variables). Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo 'Bonjour, '. $pseudo . ' Ca va ?';
    Biensûr bien identer et commenter.

    Separer au maximum les fichiers selons leur context et non pas faire un fichier de function tout bordélique.

  7. #7
    Membre régulier Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Points : 105
    Points
    105
    Par défaut
    merci
    On peut généraliser le sujet un petit peu Par exemple nous savons tous comment se connecter/déconnecter à une base de données Mysql, mais ou sein d’un projet, comment gérer cette connexion et ce qu’on doit créer des fonctions qui gère les connexions ou simplement on utilise les fonctions PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    mysql_connection
    mysql_query
    mysql_free_result
    mysql_close
    à vous

  8. #8
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Citation Envoyé par Sub0
    Pourrais-tu me dire pourquoi tu n'y crois plus ?
    J'ai cru qu'il fallait toujours optimiser son code, et je n'y crois plus parce
    qu'une optimisation n'est nécessaire que si il y a un besoin réel et pas
    juste hypothétique.

    J'ai souvent pensé qu'un code optimisé était en sois meilleur. Mais il est souvent
    moins clair, plus difficile à maintenir, et il arrive qu'il soit remplacé par un nouveau
    produit avant même d'avoir atteint ses limites.

    Mais il est vrai, que c'est un vrai plaisir d'optimiser son code... mais on devrait le
    faire que lorsqu'il s'avère que c'est économiquement nécessaire et pas avant !
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  9. #9
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    Voila un sujet que j'aime mettre mon grain de sel dedans

    Pour moi, clairement lisibilité à l'échelle de l'architecture, optimisation au niveau plus atomique.
    Car
    • Pour l'architecture en général, on gagnera peu à optimiser vraiment, ou alors c'est tres mal conçu dès le départ.
    • A l'échelle atomique (je parle en gros la syntaxe ligne par ligne), un petit gain pour une toute petite perte de lisibilité, c'est bien.
    Enfin, après c'est au jugement personnel en fonction de la demande.

    Cependant, quelques points esentiels pour moi :
    Un fichier doit être soit:
    - une page (donc directement/indirectement appelable depuis une url)
    - une classe (et une seule par fichier)
    - une config.

    Les fichiers "placards", je trouve ça pas propre. En général, je n'en fait qu'un, qui regroupe les points communs à chaque pages (inclusion des classes, autoload, récup des configs, objet $db...) et éventuellement un fichier de fonctions avec vraiment l'inclassable.

    L'important ensuite est de respecter la POO, genre l'encapsulation des données.
    Une séparation nette de la vue est obligatoire. Ecrire directement du code HTML dans du PHP ou inversement, c'est pas propre et intenable. L'utilisation de fonctions soigne un peu cet aspect, mais au final, ça reste du HTML dans du PHP, d'autant plus que l'encapsulation des données, ça compte aussi pour une fonction et qu'un echo, c'est une sortie comme une autre. (d'ailleurs, vaut mieux éviter les global dans les fonctions et y préferer le singleton, en utilisant non pas des tableaux pour la config, mais des objets conteneurs (style Entity de java)).

    Bref, pour la vue, des templates, ou mieux (mais quand même plus compliqué) le couple XML/XSLT.

    Bon oki, je n'applique pas à la lettre absolument tout ce que je dit, mais j'essaie au mieux.

    Pour répondre à Fadex, il existe le fameux MVC (Modèle vue contrôleur) qui consiste à séparer ces 3 couches.
    La vue j'en ai parlé au dessus. Le modèle correspond en gros à tes données et donc ton accès à la base dans ton cas.
    Ca signifie globalement que ton script n'a pas à savoir d'ou viennent ces données, et donc il ne faut pas utiliser de fonction spécifique à telle ou telle base, mais une classe.
    Ainsi au lieu de mysql_query, tu auras $db->query.
    Si ta base devient Postgresql, au lieu de pq_query, tu aura tjs $db->query, mais avec un $db différent. Il te suffit de changer le fichier contenant la déclaration de $db et hop, t'as changer de base.

    Bon, j'arrete avant d'écrire un livre.
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  10. #10
    Membre régulier Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Points : 105
    Points
    105
    Par défaut
    voila ce que je cherche

    Pour répondre à Fadex, il existe le fameux MVC (Modèle vue contrôleur) qui consiste à séparer ces 3 couches.
    La vue j'en ai parlé au dessus. Le modèle correspond en gros à tes données et donc ton accès à la base dans ton cas.
    il est ou le controleur ?

    Mais comment appliquer l'architecture MVC dans un projet PHP ?

    J’ai des petites expériences avec J2EE, mais ça reste pour moi une usine à gaz , oui c vrais qu’il y a beaucoup de doc mais ça reste de la théorie.

    Donc est ce que vous avez un tuto ou un site qui explique comment mettre en place cette architecture.

    Je t’encourage pour terminer le livre .

    [edit]voila ce que j'ai trouvé : PHPMVC[/edit]

  11. #11
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    D'une façon très simple, la vue, c'est un template (comme Smarty), ou la classe de PHPLib modifiée par PHPBB qui est très utilisée, par moi notamment), le modèle, tu utilises une classe de connexion à une BDD (genre PDO), le contrôleur, c'est toi et ta page.

    Pour aller plus loin, il y a des frameworks comme le Zend Framework et pleins d'autres en fait.
    Va donc faire un tour ici http://tahe.developpez.com/web/php/mvc/

    PS :
    voila ce que j'ai trouvé : PHPMVC
    Je trouve que c'est une grosse usine, c'est une reproduction en PHP de struts. Si tu trouve que J2EE est une usine, oublie PHPMVC
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  12. #12
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Mais il faut avoir des sous.

    L'utilisation de template simplifie vraiment le code.
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  13. #13
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 150
    Points
    150
    Par défaut
    Et puis un petit point de détail comme ça que je connais :

    Utiliser :

    Plutôt que

    Il y a seulement une différence de quelques millièmes de secondes à la lecture, c'est rien du tout, mais puisqu'on est dans l'optique d'optimiser le code autant le faire, ça coute 3 lettres à rajouter.

  14. #14
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Citation Envoyé par Andalor
    Et puis un petit point de détail comme ça que je connais :

    Utiliser :

    Plutôt que

    Il y a seulement une différence de quelques millièmes de secondes à la lecture, c'est rien du tout, mais puisqu'on est dans l'optique d'optimiser le code autant le faire, ça coute 3 lettres à rajouter.
    Ce ne sert pas que à ca de spécifier le "php", dans certaine configuration le "<?" n'est pas reconnu, il est donc important de le spécifier pour plus de portabilité

  15. #15
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par |PaRa-BoL
    Ce ne sert pas que à ca de spécifier le "php", dans certaine configuration le "<?" n'est pas reconnu, il est donc important de le spécifier pour plus de portabilité
    Depuis plusieurs versions de PHP la support de "<?" est désactivé par défaut pour ne pas intérferer avec l'utilisation des balises "<?xml"

  16. #16
    Membre régulier Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Points : 105
    Points
    105
    Par défaut
    Bonjour

    j'ai trouvé un article très intéressant sur le developpement Objet sous PHP, en se basant sur l'architecture mvc. avec un generateur de class.
    PHPBuilder
    donnez moi votre avis

  17. #17
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Salut,

    Je pense que le plus important dans une application PHP, ou les scripts sont à chaque appel "recompilés", il est vital d'avoir une base de données optimisée.

    Il faut mettre des index aux endroits où c'est le plus important, et avoir un modèle efficace afin que les requêtes ne soient pas un gouffre de performance. Utiliser des fichiers plats pour les définitions redondantes et simples de l'application parrait être un plus pour éviter d'encombrer la base de données avec des requêtes à tout va.

    Je ne connais pas bien Zend, mais si j'ai bien compris ils proposent une précompilation qui peut grandement accélerer php, et le rendre compétitif face à ces langages d'applications comme Java et C# qui bénéficient par nature d'une précompilation ( même si ce n'est pas du natif, les performances sont au rendez-vous ).

    De plus, un système de cache semble primordial, comme celui proposé par CakePHP. D'ailleurs je vous conseille de jeter un oeil à ce framework, qui parrait plutôt prometteur malgré son nom

    A+
    K

  18. #18
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par fadex
    Bonjour

    j'ai trouvé un article très intéressant sur le developpement Objet sous PHP, en se basant sur l'architecture mvc. avec un generateur de class.
    PHPBuilder
    donnez moi votre avis
    Oui le fait de developper avec de la POO rends ton code plus facilement maintenable et donc tu gagnes plein de temps pour corriger les bugs ou modifier ton code plus tard

  19. #19
    En attente de confirmation mail
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Bien programmer pour moi, c'est :
    - Bien indenter son code,
    - Ne pas prévilégier la vitesse d'exécution (sinon utiliser un cache),
    - Tester, re-tester, re-re-tester... son code,
    - Sécuriser son site au maximum,
    - Utiliser que la POO,
    - Bien commenter,
    - Avoir une "bonne architecture" du site... (site ordonné)

    Pour cela moi j'utilise Zend Studio (la version pro) qui est excellent, surtout son gestionnaire de projets. Il vaut vraiement le coup. Personnellement, la version standard me suffit largement... (ce magnifique prog appartient à mon frère, bon ben là je vous raconte un peu ma vie...) Son débuggeur est vraiment très utile et très puissant ! Téléchargez la version d'évaluation et vous allez voir !

    La moyenne de la vitesse d'exécution de mes scripts est de 0,0021s, voir même 0,001s (en plus sur ma machine avec 500 programmes d'ouverts...).
    Moi j'utilise un fichier index (int.php) qui inclut tous les autres fichiers et une sorte de mini-noyau pour le site autour duquel sont montés tous les autres "programmes". Je suis en train de le développer...

  20. #20
    Membre averti
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Points : 344
    Points
    344
    Par défaut
    Avec l'expérience, bien coder, c'est éviter au maximum de refaire le boulot 200 fois...

    Qui n'a pas du réécrire pour la xème fois le code pour afficher une GridView (désolé, ce terme existe pas en php, mais ceux venant d'autres langages comprendront) pour une interface de gestion? Qui n'a pas du rechercher son code pour une identification, ou un panier sécurisé, ou un système de news?

    Maintenant, je tends de plus en plus vers une optimisation, et donc la création de classe. Mais surtout, la création de classes personnalisées. Qui n'a pas été content de pouvoir récupérer 1 semaines de codage dans 12 dossiers car ca à été fait une fois de facon correcte? Le vrai pied.

    Après, coder, c'est avant tout comprendre son code, et pouvoir le relire, meme dans 6 ans. Donc pour ca:
    - identation
    - commentaire
    - utilisation de variable logique (non, $temp pour un tableau, c'est pas un nom inteligent...)
    - Séparer le contenu du contenant. Quoi de plus beau qu'une page ne contenant QUE du PHP? En laissant nos fonctions ou notre framework gérer l'affichage? En tout cas, pour le dépannage, ou les gros site, c'est un vrai bonheur!
    - Et comme précisé... Si vous faites encore du bon vieux php4, intéressez-vous sincèrement a l'orienté objet et au PHP5. C'est non seulement un gain de temps, mais de lisibilité !

    Onet
    ---
    Retrouvez tout mes tutos et mes articles: http://www.olivierlange.com

Discussions similaires

  1. Comment commencer à programmer avec PHP, SQL-Server 2000
    Par DevLib dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/05/2012, 11h51
  2. Comment bien programmer web en java?
    Par lovelace dans le forum Développement Web en Java
    Réponses: 11
    Dernier message: 19/10/2008, 00h40
  3. Comment bien commencer la Programmation
    Par Le_Faya dans le forum Débuter
    Réponses: 6
    Dernier message: 01/12/2006, 18h39
  4. Comment bien programmer en C ?
    Par lastrecrue dans le forum C
    Réponses: 14
    Dernier message: 12/07/2006, 12h44

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