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 :

creation de champs dynamique


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut creation de champs dynamique
    Salut a tous
    je suis debutant donc je me permets de poster pour poser un question.
    Voila, j'ai un fichier ascii qui contient des registres.
    Chaque registre possede un nombre variable de lignes, selon les infos qu'il contient. Par contre ils sont separes par un CODE "LDR" qui est toujours le meme et creer toujours de la meme maniere:
    Voici un extrait du fichier:

    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
    000000001 LDR   L -----nam--2200301Ia-45e0
    000000001 00809 L 1220s9999    xx            000 0 und d
    000000001 022   L $$a0081-3397
    000000001 041   L $$aESPA�OL
    000000001 042   L $$a1
    000000001 088   L $$aJ.E.N. 551
    000000001 100   L $$aROMERO,-L.;TRAVESI,-A.;
    000000001 245   L $$aCODIGO "REX" PARA AJUSTE DE DATOS EXPERIMENTALES A FUNCIONES EXPONENCIALES Y SU REPRESENTACION GRAFICA
    000000001 901   L $$aJUNTA DE ENERGIA NUCLEAR (J.E.N.)
    000000001 902   L $$a11/05/89
    000000001 910   L $$aINFORMES JEN
    000000001 FMT   L BK
    000000002 LDR   L -----nam--2200301Ia-45e0
    000000002 00809 L 1220s9999    xx            000 0 und d
    000000002 022   L $$a0081-3397
    000000002 041   L $$aESPA�OL
    Comme vous pouves le voir, le registre commence par LDR et temine par FMT, les bornes en somme...
    Ensuite vous voyez que les registres ont leur numero d'ordre 0000001 0000000n et apres le code du champs.

    Mon but c'est de lire le fichier en entier et pour chaque registre, detecter certains champs, tester le contenu et en fonction du contenu, mettre une valeur dans une variable:

    ex:
    si j'ai ceci:
    000000002 041 L $$aESPA�OL
    donc le 041 comme valeur español, je voudrais que ma variale LNG soit = a 'spa'
    et comme ca avec 2 ou 3 autres champs,
    a la fin je voudrais creer un autre champs qui n'existe pas qui a une structure speciale avec les variables concatenees.

    Je sais pas si je m'explique bien....

    si j'ai ceci:
    000000001 590 L $$aINFORME
    $lettre='t'

    000000002 041 L $$aESPA�OL
    $lng='spa'
    et a la fin je voudrais avoir un champs comme ceci

    008 1023002\\\\\\\\t\\\\\\\spa
    donc le 008 el le num c'est fixe
    ensuite le t sort seulement si 590=INFORME et spa si 041 = español

    voili voilou

    J'espere que vous pourrez m'aider

    D'avance merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je n'ai rien compris a la logique de ton exemple (notamment d'ou sors le "t").

    Mais ton fichier doit pouvoir être lu comme un csv avec une tabulation comme séparateur si je devine bien.
    Donc en utilisant fgetcsv()

  3. #3
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Salut
    alors le fichier est un fichier MARC21....c'est un format de cataloguage pour bibiotheques...
    Donc le "t" ici en code Marc21 signifie que le doc est un RAPPORT..
    En español on dit INFORME
    c'est pourquoi lorsque le php trouve lke champs 590$aINFORME il faut mettre en memoire "t" pour le concatener a la fin...
    J'espere qu'avec cette info ca aidera a comprendre d'ou sort le "t" jajajaja c'est vrai que c'est pas super clair.

    Pour le coup, et vue que j'y connais vraiment rien en programation
    T'aurais pas un petit exemple de code pour lire un fichier etc¿

    D'avance merci
    PS: Pour ma part je vais chercher des exemples aussi.

  4. #4
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Je viens de trouver ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $row = 1;
    $handle = fopen("test.csv", "r");
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
    ?>
    je comprend que ceci ouvre le fichier...le 1000 apres handle ca veut dire quoi?
    Et alors si je comprend bien tout va se passer dans le while.
    Comment je fais pour dire au code que LDR c'est le debut d'un registre et que FMT la fin??

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    1000 c la taille maximale d'une ligne

    Pour voir ce que tu recoltes en faisant comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $row = 1;
    $handle = fopen("test.csv", "r");
    while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) {
       foreach ($data as $colonne=>$valeur) {
            echo "colonne " . $colonne . " : " . $valeur . " ; ";
       }
    }
    fclose($handle);
    ?>

  6. #6
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    whaaa c'est bien ce programme,
    ca recupere effectivement les champs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    colonne 0 : =LDR  00000nam  2200000Ia 45e0 ; colonne 0 : =008  100211s9999\\\\xx\\\\\\\\\\\\000\0\und\d ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =LDR  00000nam  2200000Ia 45e0 ; colonne 0 : =008  100211s9999\\\\xx\\\\\\\\\\\\000\0\und\d ; colonne 0 : =022  \\$a0081-3397 ; colonne 0 : =041  \\$aESPA��<91>OL ; colonne 0 : =042  \\$a1 ; colonne 0 : =088  \\$aJ.E.N. 551 ; colonne 0 : =090  \\$aINFORMES JEN ; colonne 0 : =245  \\$aCODIGO "REX" PARA AJUSTE DE DATOS EXPERIMENTALES A FUNCIONES EXPONENCIALES Y SU REPRESENTACION GRAFICA ; colonne 0 : =250  \\$a1 ED ; colonne 0 : =260  \\$aMADRID $b JUNTA DE ENERGIA NUCLEAR$c1983 ; colonne 0 : =300  \\$a58 P. + 5 REFERENCIAS BIBLIOGR., 1 H. DE FICHAS CON REFERENCIA BIBLIOGRAFICA Y RESUMEN DEL INFORME ; colonne 0 : =340  \\$aPAPEL ; colonne 0 : =440  \\$aINFORMES TECNICOS J.E.N. ; colonne 0 : =505  \\$aEL PROGRAMA "REX", ESCRITO EN LENGUAJE FORTRAN IV, REALIZA EL AJUSTE DE UNA SERIE DE DATOS EXPERIMENTALES A DISTINTOS TIPOS DE FUNCIONES, TALES COMO: RECTA (Y=A+BX), Y EXPONENCIALES DE DIVERSOS TIPOS (Y=A B SUP X, Y=A X SUP B, Y=A EXP (BX)), EMPLEANDO EL CRITERIO DE MINIMOS CUADRADOS. DICHOS AJUSTES SE PUEDEN HACER INDEPENDIENTE, O SIMULTANEAMENTE LOS CUATRO, LO QUE PERMITE SELECCIONAR LA FUNCION A LA QUE MEJOR SE AJUSTEN LOS DATOS, DADO QUE PRESENTA EN CADA UNO, LOS DATOS ESTADISTICOS DEL AJUSTE. ASIMISMO, PERMITE REPRESENTAR GRAFICAMENTE, A TRAVES DE UN REGISTRO GRAFICO X-Y, LA FUNCION AJUSTADA, EN UN SISTEMA DE EJES COORDENADOS, AJUSTADOS AUTOMATICAMENTE AL RANGO DE VALORES UTILIZADO. UNA OPCION ADICIONAL, PERMITE REPRESENTAR GRAFICAMENTE, LOS DATOS EXPERIMENTALES UTILIZADOS PARA EL AJUSTE. LOS DATOS NECESARIOS PARA LA EJECUCION DEL PROGRAMA, SON PEDIDOS POR LA PANTALLA MEDIANTE UN LETRERO, EN FORMA DE DIALOGO PANTALLA-OPERADOR, Y SE INTRODUCEN MEDIANTE EL TECLADO DE LA CO ; colonne 0 : NSOLA. EL PROGRAMA PUEDE SER EJECUTADO A TRAVES DE CUALQUIER TERMINAL DE PANTALLA GRAFICA CON TECLADO (CU
    Comment je fais pour dire que ceci colonne 0 : =LDR est le debut de chaque enregistrement?

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non en fait ca n'a pas marché, ce sont malheureusement des espaces entre les champs.

    Mais avec une expression régulière on s'en sort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $handle = fopen("file.csv", "r");
    if ($handle) {
    while ($data = fgets($handle)) {
    preg_match("#^([0-9]+) ([0-9A-Z]+)[[:space:]]+L (.*)$#isU", $data, $match);
     $tab[$match[1]][$match[2]] = $match[3];
    }
    fclose($handle);
    }
    echo '<pre>'; print_r($tab); echo '</pre>';
    ?>
    Tu n'as plus qu'a faire ton analyse des valeurs.

  8. #8
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Bonjour

    ca donne ca le nouveau code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    luis@server:~$ php test.php
    <pre>Array
    (
        [] => Array
            (
                [] =>
            )
     
    )
    </pre>
    de plus, je comprend pas cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("#^([0-9]+) ([0-9A-Z]+)[[:space:]]+L (.*)$#isU", $data, $match);
    Je suppose que c'est la que le script detecte la valeur qui defini le debut d'un registre: LDR...c'est bien ca?
    Je vois pas ecrit LDR ...etrange.

    D'avance merci

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je suppose que c'est la que le script detecte la valeur qui defini le debut d'un registre: LDR...c'est bien ca?
    Non il fait le decoupage des valeurs d'une ligne.

    ca donne ca le nouveau code:
    ca veut dire qu'il n'a pas pu ouvrir le fichier, vérifier nom et localisation.

  10. #10
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    mmm etrange car hier ca marchais ...
    alors voici les infos:.

    pwd
    /home/luis

    ls -la luis*
    -rw-r--r-- 1 luis luis 161378 2010-02-16 21:17 luis.mrk

    et dans le script:
    J'ai essaye les 2 façon avec le path et sans le path

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    //$handle = fopen("/home/luis/luis.mrk", "r");
    $handle = fopen("luis.mrk", "r");
    if ($handle) {
    while ($data = fgets($handle)) {
    preg_match("#^([0-9]+) ([0-9A-Z]+)[[:space:]]+L (.*)$#isU", $data, $match);
     $tab[$match[1]][$match[2]] = $match[3];
    }
    fclose($handle);
    }
    echo '<pre>'; print_r($tab); echo '</pre>';
    ?>
    a oui au fait, et je lance le script de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #php test.php
    <pre>Array
    (
        [] => Array
            (
                [] =>
            )
     
    )
    </pre>

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu pourrais nous fournir un fichier qui permette de reproduire ton problème ?

  12. #12
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Oui bien sur, j'ai juste remplacer les donnees confidencielles par d'autres valeur, mais la structure est la
    Fichiers attachés Fichiers attachés

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca ne ressemble pas du tout a l'exemple sur lequel tu m'as fait travailler.

  14. #14
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    haa pardon
    je me suis trompe de version...c'est celui ci...
    Fichiers attachés Fichiers attachés

  15. #15
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    et hop :
    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
    <?php
    $handle = fopen("exemple.txt", "r");
    if ($handle) {
    $unbom = FALSE;
    while ($data = fgets($handle)) {
    	if ($unbom != TRUE) { $data = trim($data,"\xEF\xBB\xBF"); $unbom = TRUE;} // il faut retirer le BOM sur la première ligne
    	preg_match("#^([0-9]{9}) ([A-Z0-9]*)[[:space:]]*L (.+)$#isU", $data, $match);
    	if ($match != array()) { // ligne vide
    		$tab[$match[1]][$match[2]] = substr($match[3],4);
    	}
    }
    fclose($handle);
    }
    echo '<pre>'; print_r($tab); echo '</pre>';
    ?>

  16. #16
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Salut
    a oui la ca marche bien...
    Donc maintenant j'ai plus qu'a tester la valeur de certains champs
    je vais essayer...Merci encore pour ton aide

    Ciao

  17. #17
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    TIens regarde j'ai essaye aussi avec EXPLODE() et j'y comprend mieux ce qu'il ce passe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?PHP
     $file_handle = fopen("exemple.txt", "rb");
            while (!feof($file_handle) ) {
                    $line_of_text = fgets($file_handle);
                    $parts = explode(';', $line_of_text);
                            while ($file_handle != "\n"){
                                    if ($parts[0]=="=590" && $parts[1]=="INFORME")
                                            $informe="t";
                            }
                    print $parts[0] . $parts[1]. $parts[2];
            }
     fclose($file_handle);
    ?>
    La tu vois, ca lis bien mon fichier... (je suis revenu au fichier d'origine et j'ai remplacer le double espace qui separe les champs avec un ; plus facil a utiliser...Donc j'ai dans $parts[n] les 3 parties de chaque ligne.
    ca donne ceci:

    =LDR 00000nam 2200000Ia 45e0
    =022 \\$a0081-3397
    =041 \\$aESPAÃOL
    =042 \\$a1
    =088 \\$aXXXXXXX
    =090 \\$aXXXXXXXXXXXXXX
    =245 \\$aTITRE
    =250 \\$a1 ED
    =260 \\$aMADRID $bXXXXXXXXXXX$c1983
    =300 \\$a58 P. + 5 REFERENCIAS
    =340 \\$aPAPEL
    =440 \\$aINFORMES TECNICOS J.E.N.
    =505 \\$aEL RESUMEN
    =590 \\$aINFORME
    =650 \\$a990200
    =653 \\$aCODIGOS XXXXXXXXX
    =653 \\$aR CODES XXXXXXXXXXXXX
    =700 \\$aAUEUR 1
    =700 \\$aAUTEUR2 $cENTITE
    =700 \\$aAUTEUR 3
    =710 \\$aENTITE
    =852 \\$aCENTRO DE DOCUMENTACION
    =856 \\$aURL
    =901 \\$aLIEU
    =902 \\$a11/05/89

    =LDR 00000nam 2200000Ia 45e0
    =022 \\$a0081-3397
    =041 \\$aESPAÃOL
    =042 \\$a1
    =088 \\$aXXXXXXX
    =090 \\$aXXXXXXXXXXXXXX
    =245 \\$aTITRE
    =250 \\$a1 ED
    =260 \\$aMADRID $bXXXXXXXXXXX$c1983
    =300 \\$a58 P. + 5 REFERENCIAS
    =340 \\$aPAPEL
    =440 \\$aINFORMES TECNICOS J.E.N.
    =505 \\$aEL RESUMEN
    =590 \\$aINFORME
    =650 \\$a990200
    =653 \\$aCODIGOS XXXXXXXXX
    =653 \\$aR CODES XXXXXXXXXXXXX
    =700 \\$aAUEUR 1
    =700 \\$aAUTEUR2 $cENTITE
    =700 \\$aAUTEUR 3
    =710 \\$aENTITE
    =852 \\$aCENTRO DE DOCUMENTACION
    =856 \\$aURL
    =901 \\$aLIEU
    =902 \\$a11/05/89


    Maintenant comment lui dire que un saut de ligne est la limite entre 2 registre?? Car je dois creer mon nouveau champs pour chaque registre.
    J'ai essayer avec le code que tu vois la, mais ca reste bloqu´´e....

    D'avance merci

  18. #18
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Salut a tous
    j'ai trouver ca mais c'est pas exactement ca:
    explode(PHP_EOL,$str);

    a chaque retour chariot ca fait l'explode, moi j'aimerais que ca detecte un saut de ligne

  19. #19
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu changes de fichier a chaque message et que tu n'utilises pas les méthodes qu'on te propose ça va être dur de t'aider.

    Si tu as maintenant un fichier separé avec des point-virgule, tu peux le traiter comme un csv, donc avec fgetcsv() dont on parlait au début.

  20. #20
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Salut
    oui j'imagine, desol´´e...
    J'essai de simplifier la chose.

    Je laisse tomber j'y arrive pas. Quand on est pas developpeur, ca s'invente pas.
    Merci de ton aide.

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

Discussions similaires

  1. [Javascript] Création d'un champ dynamique ??
    Par alex75 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/04/2006, 23h10
  2. [CR] Taille champ dynamique
    Par reflex dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 06/08/2004, 08h43
  3. [struts] probleme champs dynamiques
    Par rocco dans le forum Struts 1
    Réponses: 28
    Dernier message: 07/06/2004, 21h26
  4. ajouter un champ dynamiquement à une instance de table
    Par maniack dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/02/2004, 23h58
  5. Creation de fiche dynamique
    Par Mouss26 dans le forum C++Builder
    Réponses: 7
    Dernier message: 24/07/2002, 07h56

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