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

PHP & Base de données Discussion :

Ventiler des données CSV pour importation en base de données


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut Ventiler des données CSV pour importation en base de données
    Bonjour,
    J'ai un formulaire qui établi la correspondance entre les champs CSV et ceux de la base de données. Je n'arrive pas à ventiler les données CSV pour les adapter aux tables de la vase de données.
    Exemple de fichier CSV:
    Société;CP;Ville;Forme juridique;Prénom;Nom
    Maguin;02800;Charmes;4;Marcel;Dupont
    Métal Industriel de Chauny;02300;Chauny;2;Max;Durand
    ROTOPLAST;02700;Condren (Aisne);1;;
    SOMACO;02103;SAINT QUENTIN Cedex;2;;
    Maguin;02800;Charmes;4;Jean;Petit
    Dans ce fichier, on remarque que pour Maguin, la société forme un doublon avec un interlocuteur différent.

    Structure de la bdd:
    Code SQL : 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
    CREATE TABLE IF NOT EXISTS `dat_customers` (
      `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `id_subscriber` int(10) UNSIGNED NOT NULL,
      `company_name` varchar(60) NOT NULL DEFAULT 'customer_name=`id`' COMMENT 'Default value by import when customer_name doesn''t exist.',
      `company_fullname` varchar(60) DEFAULT NULL,
      `address1` varchar(60) DEFAULT NULL,
      `address2` varchar(60) DEFAULT NULL,
      `country` varchar(2) DEFAULT NULL,
      `zipcode` varchar(6) DEFAULT NULL,
      `locality` varchar(25) DEFAULT NULL,
      `create_date` datetime DEFAULT CURRENT_TIMESTAMP,
      `update_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      UNIQUE KEY `unique` (`id_subscriber`,`company_name`,`address1`,`address2`,`zipcode`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    CREATE TABLE IF NOT EXISTS `dat_infos` (
      `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `legal_status` varchar(15) DEFAULT NULL,
      `capital` mediumint(9) DEFAULT NULL COMMENT 'en k€',
      `turnover` mediumint(9) DEFAULT NULL COMMENT 'en k€',
      `create_date` datetime DEFAULT CURRENT_TIMESTAMP,
      `update_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    ALTER TABLE `dat_infos`
      ADD CONSTRAINT `dat_infos_ibfk_1` FOREIGN KEY (`id`) REFERENCES `dat_customers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
     
    CREATE TABLE IF NOT EXISTS `dat_employees` (
      `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `id_customer` int(10) UNSIGNED DEFAULT NULL,
      `gender` varchar(15) DEFAULT NULL,
      `title` tinyint(2) DEFAULT NULL,
      `firstname` varchar(20) DEFAULT NULL,
      `familyname` varchar(20) DEFAULT NULL,
      `directcall` varchar(20) DEFAULT NULL,
      `directfax` varchar(20) DEFAULT NULL,
      `directmail` varchar(65) DEFAULT NULL,
      `gsm` varchar(20) DEFAULT NULL,
      `create_date` datetime DEFAULT CURRENT_TIMESTAMP,
      `update_date` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`),
      UNIQUE KEY `unique` (`id_customer`,`familyname`,`firstname`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    ALTER TABLE `dat_employees`
      ADD CONSTRAINT `dat_employees_ibfk_1` FOREIGN KEY (`id_customer`) REFERENCES `dat_customers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
    Remarques sur ces tables:
    L'id des tables dat_customers et dat_infos est le le même.
    Ce même id se trouve dans la colonne id_customer de la table dat_employees.

    Un formulaire permet d'établir la correspondance entre les champs de la table CSV d'origine et la base de données:
    Code HTML : 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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    		<fieldset><legend>Données adresse</legend>
    			<label><span>company_name</span><select name='source[0][2]'>
    				<option value='' label='&lt; ---- &gt;'></option>
    				<option value='0'>Société</option>
    				<option value='1'>CP</option>
    				<option value='2'>Ville</option>
    				<option value='3'>Forme juridique</option>
    				<option value='4'>Prénom</option>
    				<option value='5'>Nom</option>
    			</select></label><br>
    			<label><span>address</span><select name='source[0][4]'>
    				<option value='' label='&lt; ---- &gt;'></option>
    				<option value='0'>Société</option>
    				<option value='1'>CP</option>
    				<option value='2'>Ville</option>
    				<option value='3'>Forme juridique</option>
    				<option value='4'>Prénom</option>
    				<option value='5'>Nom</option>
    			</select></label><br>
    			<label><span>country</span><select name='source[0][6]'>
    				<option value='' label='&lt; ---- &gt;'></option>
    				<option value='0'>Société</option>
    				<option value='1'>CP</option>
    				<option value='2'>Ville</option>
    				<option value='3'>Forme juridique</option>
    				<option value='4'>Prénom</option>
    				<option value='5'>Nom</option>
    			</select></label><br>
    			<label><span>zipcode</span><select name='source[0][7]'>
    				<option value='' label='&lt; ---- &gt;'></option>
    				<option value='0'>Société</option>
    				<option value='1'>CP</option>
    				<option value='2'>Ville</option>
    				<option value='3'>Forme juridique</option>
    				<option value='4'>Prénom</option>
    				<option value='5'>Nom</option>
    			</select></label><br>
    			<label><span>locality</span><select name='source[0][8]'>
    				<option value='' label='&lt; ---- &gt;'></option>
    				<option value='0'>Société</option>
    				<option value='1'>CP</option>
    				<option value='2'>Ville</option>
    				<option value='3'>Forme juridique</option>
    				<option value='4'>Prénom</option>
    				<option value='5'>Nom</option>
    			</select></label><br>
    		</fieldset>
    		<fieldset><legend>Autres infos</legend>
    			<label><span>legal_status</span><select name='source[1][1]'>
    				<option value='' label='&lt; ---- &gt;'></option>
    				<option value='0'>Société</option>
    				<option value='1'>CP</option>
    				<option value='2'>Ville</option>
    				<option value='3'>Forme juridique</option>
    				<option value='4'>Prénom</option>
    				<option value='5'>Nom</option>
    			</select></label><br>
    			<label><span>capital</span><select name='source[1][2]'>
    				<option value='' label='&lt; ---- &gt;'></option>
    				<option value='0'>Société</option>
    				<option value='1'>CP</option>
    				<option value='2'>Ville</option>
    				<option value='3'>Forme juridique</option>
    				<option value='4'>Prénom</option>
    				<option value='5'>Nom</option>
    			</select></label><br>
    			<label><span>turnover</span><select name='source[1][3]'>
    				<option value='' label='&lt; ---- &gt;'></option>
    				<option value='0'>Société</option>
    				<option value='1'>CP</option>
    				<option value='2'>Ville</option>
    				<option value='3'>Forme juridique</option>
    				<option value='4'>Prénom</option>
    				<option value='5'>Nom</option>
    			</select></label><br>
    		</fieldset>
    		<fieldset><legend>Données interlocuteurs</legend>
    			<label><span>gender</span><select name='source[2][2]'>
    				<option value='' label='&lt; ---- &gt;'></option>
    				<option value='0'>Société</option>
    				<option value='1'>CP</option>
    				<option value='2'>Ville</option>
    				<option value='3'>Forme juridique</option>
    				<option value='4'>Prénom</option>
    				<option value='5'>Nom</option>
    			</select></label><br>
    			<label><span>title</span><select name='source[2][3]'>
    				<option value='' label='&lt; ---- &gt;'></option>
    				<option value='0'>Société</option>
    				<option value='1'>CP</option>
    				<option value='2'>Ville</option>
    				<option value='3'>Forme juridique</option>
    				<option value='4'>Prénom</option>
    				<option value='5'>Nom</option>
    			</select></label><br>
    			<label><span>firstname</span><select name='source[2][4]'>
    				<option value='' label='&lt; ---- &gt;'></option>
    				<option value='0'>Société</option>
    				<option value='1'>CP</option>
    				<option value='2'>Ville</option>
    				<option value='3'>Forme juridique</option>
    				<option value='4'>Prénom</option>
    				<option value='5'>Nom</option>
    			</select></label><br>
    			<label><span>familyname</span><select name='source[2][5]'>
    				<option value='' label='&lt; ---- &gt;'></option>
    				<option value='0'>Société</option>
    				<option value='1'>CP</option>
    				<option value='2'>Ville</option>
    				<option value='3'>Forme juridique</option>
    				<option value='4'>Prénom</option>
    				<option value='5'>Nom</option>
    			</select></label><br>
    		</fieldset>
    J'ai créé le code php suivant mais je n'arrive pas à ventiler mes données pour chaque table.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    		var_dump($post);
    		// VOIR POUR AJOUTER LE id dans les infos ET LE id_customer DANS LES INTERLOCUTEURS 
    		$inData = [];
    		for($i=0;$i<3;$i++){
    			$Max = count($post['source'][$i]);
    			$num	= 0;
    			while(($data = fgetcsv($in,null,$delimiter)) !== false and $num<$Max){
    				$num++;
    				$inData[$i][] = $convertEncoding ?
    					mb_convert_encoding($data,"UTF-8",$code):
    					$data;
    			}
    		}
    		fclose($in);
    		var_dump($inData);	// LES TROIS TABLES SONT CUMULEES DANS LE MEME TABLEAU
    Ce code produit le résultat suivant:
    var_dump($post):
    array (size=1)
      'source' => 
        array (size=3)
          0 => 
            array (size=16)
              1 => string '2' (length=1)
              2 => string '0' (length=1)
              3 => string '' (length=0)
              4 => string '' (length=0)
              5 => string '' (length=0)
              6 => string '' (length=0)
              7 => string '1' (length=1)
              8 => string '2' (length=1)
              9 => string '' (length=0)
              10 => string '' (length=0)
              11 => string '' (length=0)
              12 => string '' (length=0)
              13 => string '' (length=0)
              14 => string '' (length=0)
              15 => string '' (length=0)
              16 => string '' (length=0)
          1 => 
            array (size=11)
              1 => string '3' (length=1)
              2 => string '' (length=0)
              3 => string '' (length=0)
              4 => string '' (length=0)
              5 => string '' (length=0)
              6 => string '' (length=0)
              7 => string '' (length=0)
              8 => string '' (length=0)
              9 => string '' (length=0)
              10 => string '' (length=0)
              11 => string '' (length=0)
          2 => 
            array (size=17)
              2 => string '' (length=0)
              3 => string '' (length=0)
              4 => string '4' (length=1)
              5 => string '5' (length=1)
              6 => string '' (length=0)
              7 => string '' (length=0)
              8 => string '' (length=0)
              9 => string '' (length=0)
              10 => string '' (length=0)
              11 => string '' (length=0)
              12 => string '' (length=0)
              13 => string '' (length=0)
              14 => string '' (length=0)
              15 => string '' (length=0)
              16 => string '' (length=0)
              17 => string '' (length=0)
              18 => string '' (length=0)
    
    var_dump($inData) erroné:
    array (size=1)
      0 => 
        array (size=5)
          0 => 
            array (size=6)
              0 => string 'Maguin' (length=6)
              1 => string '02800' (length=5)
              2 => string 'Charmes' (length=7)
              3 => string '4' (length=1)                    // Ligne en trop ici
              4 => string 'Marcel' (length=6)             // Ligne en trop ici       
              5 => string 'Dupont' (length=6)           // Ligne en trop ici   
          1 =>  
            array (size=6)
              0 => string 'Métal Industriel de Chauny' (length=27)
              1 => string '02300' (length=5)
              2 => string 'Chauny' (length=6)
              3 => string '2' (length=1)                                          // Ligne en trop ici
              4 => string 'Max' (length=3)                                      // Ligne en trop ici
              5 => string 'Durand' (length=6)                                 // Ligne en trop ici
          2 => 
            array (size=6)
              0 => string 'ROTOPLAST' (length=9)
              1 => string '02700' (length=5)
              2 => string 'Condren (Aisne)' (length=15)
              3 => string '1' (length=1)                                          // Ligne en trop ici
              4 => string '' (length=0)                                            // Ligne en trop ici
              5 => string '' (length=0)                                            // Ligne en trop ici
          3 => 
            array (size=6)
              0 => string 'SOMACO' (length=6)
              1 => string '02103' (length=5)
              2 => string 'SAINT QUENTIN Cedex' (length=19)
              3 => string '2' (length=1)                                           // Ligne en trop ici
              4 => string '' (length=0)                                             // Ligne en trop ici
              5 => string '' (length=0)                                             // Ligne en trop ici
          4 => 
            array (size=6)
              0 => string 'Maguin' (length=6)
              1 => string '02800' (length=5)
              2 => string 'Charmes' (length=7)
              3 => string '4' (length=1)                                           // Ligne en trop ici
              4 => string 'Jean' (length=4)                                      // Ligne en trop ici
              5 => string 'Petit' (length=5)                                      // Ligne en trop ici
    var_dump($inData) voulu:
    array (size=1)
      0 => 
        array (size=5)
          0 => 
            array (size=6)
              0 => string 'Maguin' (length=6)
              1 => string '02800' (length=5)
              2 => string 'Charmes' (length=7)
           1 =>  
            array (size=6)
              0 => string 'Métal Industriel de Chauny' (length=27)
              1 => string '02300' (length=5)
              2 => string 'Chauny' (length=6)
          2 => 
            array (size=6)
              0 => string 'ROTOPLAST' (length=9)
              1 => string '02700' (length=5)
              2 => string 'Condren (Aisne)' (length=15)
          3 => 
            array (size=6)
              0 => string 'SOMACO' (length=6)
              1 => string '02103' (length=5)
              2 => string 'SAINT QUENTIN Cedex' (length=19)
          4 => 
            array (size=6)
              0 => string 'Maguin' (length=6)
              1 => string '02800' (length=5)
              2 => string 'Charmes' (length=7)
      1 => 
        array (size=5)
          0 => 
            array (size=6)
              0 => string '4' (length=1)
          1 =>  
            array (size=6)
              0 => string '2' (length=1)
          2 => 
            array (size=6)
              0 => string '1' (length=1)
          3 => 
            array (size=6)
              0 => string '2' (length=1)
          4 => 
            array (size=6)
              0 => string '4' (length=1)
      2 => 
        array (size=5)
          0 => 
            array (size=6)
              0 => string 'Marcel' (length=6)    
              1 => string 'Dupont' (length=6)
          1 =>  
            array (size=6)
              0 => string 'Max' (length=3)
              1 => string 'Durand' (length=6)
          2 => 
            array (size=6)
              0 => string '' (length=0)
              1 => string '' (length=0)
          3 => 
            array (size=6)
              0 => string '' (length=0)
              1 => string '' (length=0)
          4 => 
            array (size=6)
              0 => string 'Jean' (length=4)
              1 => string 'Petit' (length=5)
    

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjoru,
    Si votre CSV est un fichier et qu'il garde toujours la même structure alors ceci devrais vous mettre sur la piste

    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
     
    $file = file('test.csv');
     
    $compteur = count($file);
     
    for ($i = 1; $i < $compteur; $i++) {
        $line = explode(';', $file[$i]);
        $data[0][$i][] = $line[0];
        $data[0][$i][] = $line[1];
        $data[0][$i][] = $line[2];
        $data[1][$i][] = $line[3];
        $data[2][$i][] = $line[4];
        $data[2][$i][] = $line[5];
    }
     
    print_r($data);

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Si votre CSV est un fichier et qu'il garde toujours la même structure alors ceci devrais vous mettre sur la piste
    Il s'agit bien d'un fichier CSV mais sa structure est variable. Elle dépend de la saisie de l'utilisateur qui fait correspondre les colonnes source et les colonnes cible dans un formulaire (voir le var_dump($post)).
    En outre, je dois respecter l'intégrité référentielle à l'insertion, (voir la structure des tables) ce qui complique encore.
    Je pense donc simplifier mon projet en important uniquement les données destinées à ma table 'dat_customers' en laissant tomber les données destinées aux tables 'dat_infos' et 'dat_employees' que l'utilisateur devra alors remplir manuellement.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 718
    Par défaut Filrage des données: GALERE, GALERE
    J'ai besoin de filtrer les données à importer et je n'y arrive pas.
    Point de départ:
    • Un tableau $post['source'] où l'utilisateur a sélectionné les colonnes du fichier source CSV à importer.
    • Un tableau $aTargets qui contient la liste des colonnes de la table 'dat_customers' où doivent être importées les données.

    Ces deux tableaux ont les mêmes clés (2 à 16) qui correspondent à l'ordre des colonnes de la table cible 'dat_customers'.
    Je n'arrive pas à éliminer les données sources CSV qui n'ont pas été sélectionnées par l'utilisateur dans le premier tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if(!empty($post['goOn']) and $_SESSION['tab'] == 2){
    	unset($post['goOn']);
     
    	var_dump($post['source']);
    	var_dump($aTargets);
    	$inData = [];
    	while(($data = fgetcsv($in,null,$delimiter)) !== false){
    		$inData[] = $convertEncoding ?
    			mb_convert_encoding($data,"UTF-8",$code):
    			$data;
    	}
    	fclose($in);
    	var_dump($inData);
    }
    var_dump ligne 4
    Les valeurs de ce tableau correspondent aux numéro de colonne du fichier CSV
    array (size=15)
      2 => string '0' (length=1)
      3 => string '' (length=0)
      4 => string '' (length=0)
      5 => string '' (length=0)
      6 => string '' (length=0)
      7 => string '1' (length=1)
      8 => string '2' (length=1)
      9 => string '' (length=0)
      10 => string '' (length=0)
      11 => string '' (length=0)
      12 => string '' (length=0)
      13 => string '' (length=0)
      14 => string '' (length=0)
      15 => string '' (length=0)
      16 => string '' (length=0)
    var_dump ligne 5:
    array (size=15)
      2 => string 'company_name' (length=12)
      3 => string 'company_fullname' (length=16)
      4 => string 'address1' (length=8)
      5 => string 'address2' (length=8)
      6 => string 'country' (length=7)
      7 => string 'zipcode' (length=7)
      8 => string 'locality' (length=8)
      9 => string 'phone' (length=5)
      10 => string 'fax' (length=3)
      11 => string 'mail' (length=4)
      12 => string 'url' (length=3)
      13 => string 'language' (length=8)
      14 => string 'notice' (length=6)
      15 => string 'create_date' (length=11)
      16 => string 'update_date' (length=11)
    Extrait du var_dump ligne 13:
    array (size=5)
      0 => 
        array (size=6)
          0 => string 'Maguin' (length=6)
          1 => string '02800' (length=5)
          2 => string 'Charmes' (length=7)
          3 => string '4' (length=1)
          4 => string 'Marcel' (length=6)
          5 => string 'Dupont' (length=6)
      1 => 
        array (size=6)
          0 => string 'Métal Industriel de Chauny' (length=27)
          1 => string '02300' (length=5)
          2 => string 'Chauny' (length=6)
          3 => string '2' (length=1)
          4 => string 'Max' (length=3)
          5 => string 'Durand' (length=6)
    Dans cet extrait, on voit que les lignes 3 à 5 n'ont pas été sélectionné par l'utilisateur (cf. $post['source']) et doivent être éliminées mais je ne sais pas comment faire puisque ces lignes peuvent être dans un ordre quelconque.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/04/2010, 12h31
  2. Réponses: 1
    Dernier message: 12/02/2010, 14h55
  3. aide pour importer une base de données sous MySQL
    Par karimeri dans le forum Débuter
    Réponses: 4
    Dernier message: 20/01/2010, 18h02
  4. [MySQL] Création d'un systeme de repartition/ventilation des données
    Par runcafre91 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/01/2010, 20h23
  5. que faut-il pour importer une base de données
    Par cladsam dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 25/09/2007, 14h41

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