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 :

Illegal offset type / strpo() / fatal error [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Illegal offset type / strpo() / fatal error
    Bonjour à tous,

    Suite à la migration de notre serveur LAMP (PHP5->PHP7), nous rencontrons des messages d'erreurs avec l'une de nos fonctions. N’étant pas développeur PHP, je me permet de vous contacter afin d'avoir un coup de pouce.

    Voici l'est erreurs qui apparaissent :

    Warning: Illegal offset type in /homepages/25/d448963483/htdocs/cuisines-dallemagne.com/extranet/includes/fonc_sql.php on line 128
    Warning: strpos() expects parameter 1 to be string, object given in /homepages/25/d448963483/htdocs/cuisines-dallemagne.com/extranet/includes/fonc_sql.php on line 161
    Warning: strpos() expects parameter 1 to be string, object given in /homepages/25/d448963483/htdocs/cuisines-dallemagne.com/extranet/includes/fonc_sql.php on line 165
    Recoverable fatal error: Object of class mysqli_result could not be converted to string in /homepages/25/d448963483/htdocs/cuisines-dallemagne.com/extranet/includes/fonc_sql.php
    Et voici le code de la fonction qui cause problème :

    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
    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
    //Ligne = 114        
    function suiviModif($table, $id, $action) { // enregistre dans historique modification
    	global $tables_modif;
    	$pos_espace = strpos($table, ' JOIN');
    	if ($pos_espace!==false) $table = substr($table, 0, $pos_espace); // nom table avec alias et sans join
    	// if (substr($table, 0, 10)=='propclient') die($table.' / '.$pos_espace.' / '.$id.' / '.$action); // débogage
    	$pos_court = strpos($table, ' ');
    	if ($pos_court!==false) $table_court = substr($table, 0, $pos_court); // nom table sans alias
    	else $table_court = $table;
    	if (in_array($table_court, $tables_modif) && basename($_SERVER['SCRIPT_FILENAME'])!='popcalendrier.php') {
    		// echo ' /'.$id.'/ '; //débogage
    		if ($action=='ajout' || $action=='suppr') {
    			$etait = array();
    			// $id = dernier_ajoute();
    --> 128		$etait[0][$id] = '';
    		} elseif ($action=='modif') {
    			$condition = $id;
    			if ($table_court=='propclient') {
    				// global $data;
    				// if ($data['NumeroClient']!='') $condition = "NumeroClient='".$id."'"; // client
    				// else 
    				// if ($action=='ajout' && intval($id)==$id) $condition = "idPropClient=".$id;
    				// else $condition = "idPropClient=".dernier_ajoute();
    				// $condition = "idPropClient=".$id;
    				$ignore = array('Enregistrer', 'DateClient', 'InfoSuivi', 'Obj1Voy', 'Obj2Voy', 'Bloque', 'OuvCompte', 'NumeroClientSpe', 'numProsp1', 'NumeroProspect', 'FurnplanActive');
    			} elseif ($table=='commande') {
    				// $condition = "NumeroCommande='".$id."'";
    				// $condition = $id;
    				if ($_SESSION['options']['version']>=3) $ignore = array('Enregistrer', 'date', 'DateManquant', 'DateCommande', 'DateConfirmation', 'ancienstatut', 'NumeroConfirmation', 'DelaiConfirme', 'JoursLivrPrevisionnel', 'filename', 'TypeComAnc');
    				else $ignore = array('Enregistrer', 'date', 'DateManquant', 'DateCommande', 'DateConfirmation', 'ancienstatut');
    			} elseif ($table=='conf_com') {
    				if (strpos(',', $id) > 0) $condition = substr($id, strpos(',', $id)+1); // "ID=".$id;
    				$ignore = array('Enregistrer', 'texte', 'enreg');
    			// } elseif ($table=='client') {
    				// $condition = "NumeroClient='".$id."'";
    				// $ignore = array('Enregistrer', 'DateClient', 'InfoSuivi', 'Bloque', 'OuvCompte');
    			} elseif ($table=='client_fournisseur') {
    				// $pos = strpos($id, ',');
    				// $condition = "NumeroMagasin='".substr($id, 0, $pos)."' AND NumeroFournisseur='".substr($id, $pos + 1)."'";
    				// $condition = $id; // "ID=".$id;
    				$ignore = array('enreg', 'BloquePrec', 'FurnplanActive');
    			} elseif ($table=='newsletter') {
    				// $condition = $id; // "id=".
    				$ignore = array('content', 'dest');
    			}
    			$etait = recupere_sql("SELECT * FROM ".$table." WHERE ".$condition.' LIMIT 0,1');
    		}
    --> 161	if (strpos($id, ' AND') > 0) {
    			$tablo = explode(' AND ', $id);
    			foreach ($tablo as $cle => &$ligne) $ligne = str_replace("'", '', trim(substr($ligne, strpos($ligne, '=') + 1)));
    			$id = implode(',', $tablo);
    --> 165	} elseif (strpos($id, '=') > 0) {
    			$id = str_replace("'", '', trim(substr($id, strpos($id, '=') + 1)));
    		}
    		if ($action=='ajout') {
    			/* if ($table=='client_fournisseur') { // trucage pour tables dépendantes
    				$reqId = recupere_sql("SELECT NumeroMagasin, NumeroFournisseur FROM ".$table." WHERE ID=".$id);
    				$id = $reqId[0]['NumeroMagasin'].','.$reqId[0]['NumeroFournisseur'];
    			} else */
    			if ($table=='conf_com') {
    				$reqId = recupere_sql("SELECT NumeroCommande, NumeroConfirmation FROM ".$table." WHERE ID=".$id);
    				$id = $reqId[0]['NumeroCommande'].','.$reqId[0]['NumeroConfirmation'];
    			}
    		}
    		if (is_array($etait) && array_key_exists(0, $etait)) {
    			$champModif = '';
    			$valModif = '';
    			$valDevient = '';
    			if ($action=='modif') {
    				if (basename($_SERVER['SCRIPT_FILENAME'])=='changerepr.php') {
    					if ($_POST['TypeRepr']==1) $champModif = 'LoginRep';
    					elseif ($_POST['TypeRepr']==2) $champModif = 'Commercial';
    					$valModif = $_POST['ReprOld'];
    					$valDevient = $_POST['ReprNew'];
    				} else {
    					$etait = $etait[0];
    					nettoie($_POST, 2);
    					foreach ($etait as $cle => $valeur) { // remet date format FR
    						if (substr($cle, 0, 3)=='Dat' && $valeur!='') $etait[$cle] = date10($valeur, false);
    					}
    					// if ($action!='ajout') {
    						foreach ($_POST as $cle => &$valeur) {
    							if ($valeur=='NULL') $valeur = '';
    							if (!in_array($cle, $ignore) && $valeur!=$etait[$cle]) {
    								$champModif.=(strlen($champModif) > 0 ? '\n' : '').$cle;
    								$valModif.=(strlen($valModif) > 0 ? '\n' : '').(strlen($etait[$cle])==0 ? '(vide)' : $etait[$cle]);
    								$valDevient.=(strlen($valDevient) > 0 ? '\n' : '').(strlen($valeur)==0 ? '(vide)' : $valeur);
    								// die ($valeur.' - '.$etait[$cle]); // débogage
    							}
    						}
    					// }
    					// die ($champModif.'//'.$valModif);
    				}
    			}
    			/* elseif ($action=='ajout' || $action=='suppr') {
    				$champModif = '';
    				$valModif = '';
    				$valDevient = '';
    			} */
    			if ($action!='modif' || $champModif!='') {
    --> 214			$debutReq = "'".$table_court."', '".$id."', str_to_date('".date('Y-m-d H:i:s')."','%Y-%m-%d %H:%i:%s'), '".$action."', '".$_SESSION['login']."'";
    				// echo $debutReq.", '".$champModif."', '".$valModif."', '".$valDevient."'"; // débogage
    				ajoutEnreg('modifs', 'tableau, id, dat, action, login, champ, valeur, devient', 
    					$debutReq.", '".$champModif."', '".$valModif."', '".$valDevient."'");
    			}
    		}
    	}
    	return '';
    }

    Merci d'avance pour votre aide,

    Schawy

  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
    C'est l'appel de la fonction suiviModif() qu'il faudrait voir et la définition du paramètre $id.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Merci de l'interet que tu porte à notre soucis.

    Voici la définition de $id :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $reponse = ajoutEnreg('propclient', 'idPropClient', 'NULL');
    $id = recupere_sql('SELECT LAST_INSERT_ID() AS id');
    // var_dump($id);
    $numero = $id[0]['id'];
    $condition = "idPropClient = ".$numero;
    $reponse = ajoutEnreg('login', 'login, motdepasse, codeprofil', "'".$numClient."', '".$mdp."', 'C'");
    Celui-ci appel la fonction ajoutEnreg() :

    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
    function ajoutEnreg($table, $champs, $valeurs) {
    	$resultat = '';
    	$connexion = connexion_sql();
    	if ($connexion===false) echo 'Impossible de se connecter &agrave; la base de donn&eacute;es.<br />'.mysqli_error($connexion);
    	else {
    		$requete = "INSERT INTO ".$table." ".($champs!='' && strtoupper(substr($valeurs, 0, 7))!='SELECT ' ? "(".$champs.") values (".$valeurs.")" : $valeurs);
    		// if ($_SESSION['login']=='PP') echo $requete; // débogage
    		// $id = str_replace("'", '', substr($valeurs, 0, strpos($valeurs, ',') - 1));
    		$reponse = mysqli_query($connexion,$requete);
    		// if (!$reponse) echo 'Impossible de lire la base de donn&eacute;es.<br />';
    		if ($table!='commande') $id = dernier_ajoute();
    		else $id = (string)str_replace("'", '', substr($valeurs, 0, 11));
    		suiviModif($table, $id, 'ajout');
    		// fin_sql();
    	}
    	if (mysqli_affected_rows($connexion) > 0) $resultat = 'Donn&eacute;es enregistr&eacute;es avec succ&egrave;s.'.($table=='propclient' ? $id : '');
    	elseif (mysqli_affected_rows($connexion)==0) $resultat = 'Aucune donn&eacute;e ajout&eacute;e.';
    	else $resultat = "Erreur pendant l'enregistrement !".(true || @$_SESSION['login']=='XX' || @$_SESSION['login']=='XX' ? '<br />'.mysqli_error($connexion).'<br />'.$requete.'<br />' : '');
    	return $resultat;
    }
    Qui appel la fonction suiviModif().

  4. #4
    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 ajouter les lignes de debugage entre 12 et 13 comme ci-dessous ?
    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
    if ($table!='commande') $id = dernier_ajoute();
    else $id = (string)str_replace("'", '', substr($valeurs, 0, 11));
     
    echo 'table : <br/>';
    var_dump($table);
    echo 'connexion : <br/>';
    var_dump($connexion);
    echo 'reponse : <br/>';
    var_dump($reponse);
    echo 'valeurs : <br/>';
    var_dump($id);
    echo 'id: <br/>';
    var_dump($id);
     
    suiviModif($table, $id, 'ajout');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Voici le résultat du débugage :

    table :
    string(10) "propclient"
    connexion :
    object(mysqli)#3 (19) { ["affected_rows"]=> int(1) ["client_info"]=> string(79) "mysqlnd 5.0.12-dev - 20150407 - $Id: b5c5906d452ec590732a93b051f3827e02749b83 $" ["client_version"]=> int(50012) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["field_count"]=> int(0) ["host_info"]=> string(20) "127.0.0.1 via TCP/IP" ["info"]=> NULL ["insert_id"]=> int(5281) ["server_info"]=> string(30) "5.5.5-10.1.23-MariaDB-9+deb9u1" ["server_version"]=> int(50505) ["stat"]=> string(139) "Uptime: 196527 Threads: 2 Questions: 49096 Slow queries: 0 Opens: 264 Flush tables: 1 Open tables: 160 Queries per second avg: 0.249" ["sqlstate"]=> string(5) "00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(5679) ["warning_count"]=> int(9) }
    reponse :
    bool(true)
    valeurs :
    object(mysqli_result)#4 (5) { ["current_field"]=> int(0) ["field_count"]=> int(1) ["lengths"]=> NULL ["num_rows"]=> int(1) ["type"]=> int(0) }
    id:
    object(mysqli_result)#4 (5) { ["current_field"]=> int(0) ["field_count"]=> int(1) ["lengths"]=> NULL ["num_rows"]=> int(1) ["type"]=> int(0) }

  6. #6
    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
    Bon il faudrait voir la fonction dernier_ajoute() alors.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    et voilà la fonction ;-) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function dernier_ajoute() {
    	$connexion = connexion_sql();
    	$last_co = "SELECT last_insert_id()";
    	return mysqli_query($connexion,$last_co);
    	// $requ = "SELECT LAST_INSERT_ID() AS num";
    	// $result = recupere_sql($requ);
    	// return $result[0]['num'];
    }

  8. #8
    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 ne sais pas qui a écrit ce code mais pourquoi il y a tant de parties commentées partout ?

    En tout cas cette fonction dernier_ajoute() est inutile (j'ai même un doute sur le fait qu'elle puisse fonctionner puisqu'elle établi une nouvelle connexion).

    Change simplement la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($table != 'commande') { $id = mysqli_insert_id($connexion); }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Merci, je viens de faire la modification te maintenant il me rajoute une autre erreur :

    Catchable fatal error: Object of class mysqli_result could not be converted to string in /var/www/html/ca_test_update_001/extranet/includes/fonc_sql.php on line 136
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    135 --> if ($action=='ajout' && intval($id)==$id) $condition = "idPropClient=".$id;
    136 --> else $condition = "idPropClient=".dernier_ajoute();
    137 --> $condition = "idPropClient=".$id;
    Voici le rapport de debugage :

    table :
    string(10) "propclient"
    connexion :
    object(mysqli)#3 (19) { ["affected_rows"]=> int(1) ["client_info"]=> string(79) "mysqlnd 5.0.12-dev - 20150407 - $Id: b5c5906d452ec590732a93b051f3827e02749b83 $" ["client_version"]=> int(50012) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["field_count"]=> int(0) ["host_info"]=> string(20) "127.0.0.1 via TCP/IP" ["info"]=> NULL ["insert_id"]=> int(5282) ["server_info"]=> string(30) "5.5.5-10.1.23-MariaDB-9+deb9u1" ["server_version"]=> int(50505) ["stat"]=> string(139) "Uptime: 235456 Threads: 2 Questions: 49501 Slow queries: 0 Opens: 264 Flush tables: 1 Open tables: 160 Queries per second avg: 0.210" ["sqlstate"]=> string(5) "00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(5873) ["warning_count"]=> int(9) }
    reponse :
    bool(true)
    valeurs :
    int(5282)
    id:
    int(5282)
    table :
    string(6) "modifs"
    connexion :
    object(mysqli)#2 (19) { ["affected_rows"]=> int(1) ["client_info"]=> string(79) "mysqlnd 5.0.12-dev - 20150407 - $Id: b5c5906d452ec590732a93b051f3827e02749b83 $" ["client_version"]=> int(50012) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["field_count"]=> int(0) ["host_info"]=> string(20) "127.0.0.1 via TCP/IP" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=> string(30) "5.5.5-10.1.23-MariaDB-9+deb9u1" ["server_version"]=> int(50505) ["stat"]=> string(139) "Uptime: 235457 Threads: 3 Questions: 49504 Slow queries: 0 Opens: 264 Flush tables: 1 Open tables: 160 Queries per second avg: 0.210" ["sqlstate"]=> string(5) "00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(5874) ["warning_count"]=> int(0) }
    reponse :
    bool(true)
    valeurs :
    int(0)
    id:
    int(0)

  10. #10
    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 peux remettre la fonction comme elle a l'air d'être prévue au départ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function dernier_ajoute() {
    	$connexion = connexion_sql();
    	$requ = "SELECT LAST_INSERT_ID() AS num";
    	$result = recupere_sql($requ);
    	return $result[0]['num'];
    }
    Mais comme je t'ai dit j'ai un doute sur ça.

    Sinon il faut faire la même modifiction sur $id = .... qu'on a fait.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Décembre 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Super ça fonctionne de nouveau sans message d'erreur.

    Merci pour ton aide

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

Discussions similaires

  1. Fatal error: Cannot use string offset as an array
    Par tremeur53 dans le forum Langage
    Réponses: 8
    Dernier message: 31/10/2008, 09h44
  2. [MySQL] Fatal error: Unsupported operand types in..
    Par Sekigawa dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/03/2008, 10h58
  3. Réponses: 4
    Dernier message: 14/02/2008, 20h41
  4. [Tableaux] Illegal offset type
    Par Anduriel dans le forum Langage
    Réponses: 9
    Dernier message: 27/02/2006, 16h10
  5. Aide sur Warning: Illegal offset type in ...
    Par pounie dans le forum Langage
    Réponses: 5
    Dernier message: 03/01/2006, 13h13

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