Votre question

probleme php maj liste deroulante[RESOLU]

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
8 Octobre 2008 17:07:54

bonsoir,

a partir de ce script:

<html>
<script>
function display_liste(calqt, calql) { // Affiche le calque de la liste
calql.style.visibility = 'visible';
calql.style.top = calqt.style.top;
//calql.style.top = calqt.style.top + 40;
calql.style.left = calqt.style.left;
}
function hide_liste(calqt, calql) { // Affiche ou masque le calque de la liste suivant son dernier état
if (calql.style.visibility == 'visible') {
calql.style.visibility = 'hidden';
}
else {
display_liste(calqt, calql);
}
}
function display_down(keyc, listd, calqt, calql) { // Affiche la liste si la touche "keyc" est pressée
if (event.keyCode==keyc) {
display_liste(calqt, calql);
}
if ((event.keyCode==40) && (event.keyCode==keyc)) {
listd.focus();
}
}
function enter_list(textb, listd, calql) { // appelle getValue si la touche "Enter" est pressée dans la liste
if (event.keyCode==13) {
getValue(textb, listd, calql);
}
}
function liste_lostfocus(textb, listd, calql) { // Masque le calque si le texte et la liste n'ont pas le focus
if ( (self.document.activeElement.name != textb) && (self.document.activeElement.name != listd) ) {
calql.style.visibility = 'hidden';
}
}
function getValue(textb,listd, calql) { // Affecte la valeur de la liste choisie dans la zone de texte
textb.value=listd.item(listd.selectedIndex).text;
// textb.value=listd.item(listd.selectedIndex).value; si on veut la valeur dans le code et pas dans la liste
calql.style.visibility = 'hidden';
textb.focus();
textb.select();
}
function list_size(liste) {
t=0;
for(i=0; i<liste.length; i++) {
if(liste.options.value.length > t) {
t=liste.options.value.length;
}
}
list_size=t;
}
function text_exist(textb, listd) { // regarde si le début existe
if (textb.value != "") {
for (i=0; i<listd.length; i++) {
if (textb.value.toLowerCase() == listd.text.substring(0, textb.value.length).toLowerCase()) {
return i;
}
else {
if (listd.text > textb.value.substring(0, listd.text.length)) {
return -2;
}
}
}
}
return -1;
}
function disp_exist(textb, listd, calqt, calql) { // regarde si existe et affiche le calque de la liste
temp=text_exist(textb, listd);
if (temp != -1) {
display_liste(calqt, calql);
}
else {
calql.style.visibility = 'hidden';
}
return temp;
}
function text_match(textb, listd) { // regarde si le texte existe en entier
if (textb.value != "") {
for (i=0; i<listd.length; i++) {
if (textb.value.toLowerCase() == listd.text.toLowerCase()) {
return i;
}
}
}
return -1;
}
function insert_new(textb, listd) { // insére avant ou en fin
if (textb.value != "") {
if (text_match(textb, listd) == -1) {
pos=listd.length;
for (i=0; i<listd.length; i++) {
if (listd.text>textb.value) {
pos=i;
i=listd.length;
}
}
listd.length++;
for (i=listd.length-1; i>pos; i--) {
listd.text=listd[i-1].text;
}
listd[pos].text=textb.value;
alert("new entry added !");
}
else {
alert("Entry already exists !");
}
}
}
</script>
<body>
<div id="texte1" nowrap STYLE="border-width:2;border-style:inset;border-color:white;width:0;display:inline;visibility:visible;">
<input type="text" name="texteb" value='' style="border-width:0;font-size:14;" size="25"
onDblClick="hide_liste(document.getElementById('texte1'), document.getElementById('liste1')); document.getElementById('texteb').select();"
onblur="liste_lostfocus('texteb', 'listed', document.getElementById('liste1'));"
onkeyup="document.getElementById('listed').selectedIndex=disp_exist(document.getElementById('texteb'), document.getElementById('listed'), document.getElementById('texte1'), document.getElementById('liste1'));
display_down(40, document.getElementById('listed'), document.getElementById('texte1'), document.getElementById('liste1'));"
onkeydown="display_down(34, document.getElementById('listed'), document.getElementById('texte1'), document.getElementById('liste1'));">
<input type="button" name="bouton" value="6" style="line-height:0;height:18;font-family:webdings;font-size:10;" onClick="hide_liste(document.getElementById('texte1'), document.getElementById('liste1'));" onblur="liste_lostfocus('texteb', 'listed', document.getElementById('liste1'));">
</div>
  <input type=button style="font-family:arial;" value="Add to list" onclick="insert_new(document.getElementById('texteb'), document.getElementById('listed'));">
<div id="liste1" STYLE="postion:absolute;visibility:hidden;">
<select name="listed" size="10" onClick="getValue(document.getElementById('texteb'), document.getElementById('listed'), document.getElementById('liste1'));" onkeydown="enter_list(document.getElementById('texteb'), document.getElementById('listed'), document.getElementById('liste1'));">
<option VALUE="Item1">Item1-2</option >
<option VALUE="Item2">Item2</option>
<option VALUE="Item3">Item3</option>


</select>
</div>
<br><br><br>
</body>
<html>

je voudrais pouvoir afficher les pays dans une liste deroulante a partir d'une table

cela est faisable avec le code suivant:

<tr><td class="form1"><b>Pays</b></td>
<td class="form2">
<?
$sql="select * from pays";
$result=@mysql_db_query($dbname,$sql,$dbid);
echo '<select name="pays">';
echo '<option value="" selected></option>';

while ($rang=mysql_fetch_array($result)){

$code=$rang['code'];
$nom=$rang['pay'];
echo "<option value=\"$code\">$nom</option>";
}
echo '</select>';
?>
</td>
</tr>


, et y en inserer de nouveaux pays avec maj automatique de la liste deroulante

car mon soucis avec le script c'est que les differents champ de la liste ne sont pas enregistrer dans une table

Merci pour votre aide

Ps: je debute en PHP

Autres pages sur : probleme php maj liste deroulante resolu

a c 232 L Programmation
9 Octobre 2008 07:04:07

Salut,

  1. <html>
  2. <script>
  3. function display_liste(calqt, calql) { // Affiche le calque de la liste
  4. calql.style.visibility = 'visible';
  5. calql.style.top = calqt.style.top;
  6. //calql.style.top = calqt.style.top + 40;
  7. calql.style.left = calqt.style.left;
  8. }
  9. function hide_liste(calqt, calql) { // Affiche ou masque le calque de la liste suivant son dernier état
  10. if (calql.style.visibility == 'visible') {
  11. calql.style.visibility = 'hidden';
  12. }
  13. else {
  14. display_liste(calqt, calql);
  15. }
  16. }
  17. function display_down(keyc, listd, calqt, calql) { // Affiche la liste si la touche "keyc" est pressée
  18. if (event.keyCode==keyc) {
  19. display_liste(calqt, calql);
  20. }
  21. if ((event.keyCode==40) && (event.keyCode==keyc)) {
  22. listd.focus();
  23. }
  24. }
  25. function enter_list(textb, listd, calql) { // appelle getValue si la touche "Enter" est pressée dans la liste
  26. if (event.keyCode==13) {
  27. getValue(textb, listd, calql);
  28. }
  29. }
  30. function liste_lostfocus(textb, listd, calql) { // Masque le calque si le texte et la liste n'ont pas le focus
  31. if ( (self.document.activeElement.name != textb) && (self.document.activeElement.name != listd) ) {
  32. calql.style.visibility = 'hidden';
  33. }
  34. }
  35. function getValue(textb,listd, calql) { // Affecte la valeur de la liste choisie dans la zone de texte
  36. textb.value=listd.item(listd.selectedIndex).text;
  37. // textb.value=listd.item(listd.selectedIndex).value; si on veut la valeur dans le code et pas dans la liste
  38. calql.style.visibility = 'hidden';
  39. textb.focus();
  40. textb.select();
  41. }
  42. function list_size(liste) {
  43. t=0;
  44. for(i=0; i<liste.length; i++) {
  45. if(liste.options[i].value.length > t) {
  46. t=liste.options[i].value.length;
  47. }
  48. }
  49. list_size=t;
  50. }
  51. function text_exist(textb, listd) { // regarde si le début existe
  52. if (textb.value != "" ) {
  53. for (i=0; i<listd.length; i++) {
  54. if (textb.value.toLowerCase() == listd[i].text.substring(0, textb.value.length).toLowerCase()) {
  55. return i;
  56. }
  57. else {
  58. if (listd[i].text > textb.value.substring(0, listd[i].text.length)) {
  59. return -2;
  60. }
  61. }
  62. }
  63. }
  64. return -1;
  65. }
  66. function disp_exist(textb, listd, calqt, calql) { // regarde si existe et affiche le calque de la liste
  67. temp=text_exist(textb, listd);
  68. if (temp != -1) {
  69. display_liste(calqt, calql);
  70. }
  71. else {
  72. calql.style.visibility = 'hidden';
  73. }
  74. return temp;
  75. }
  76. function text_match(textb, listd) { // regarde si le texte existe en entier
  77. if (textb.value != "" ) {
  78. for (i=0; i<listd.length; i++) {
  79. if (textb.value.toLowerCase() == listd[i].text.toLowerCase()) {
  80. return i;
  81. }
  82. }
  83. }
  84. return -1;
  85. }
  86. function insert_new(textb, listd) { // insére avant ou en fin
  87. if (textb.value != "" ) {
  88. if (text_match(textb, listd) == -1) {
  89. pos=listd.length;
  90. for (i=0; i<listd.length; i++) {
  91. if (listd[i].text>textb.value) {
  92. pos=i;
  93. i=listd.length;
  94. }
  95. }
  96. listd.length++;
  97. for (i=listd.length-1; i>pos; i--) {
  98. listd[i].text=listd[i-1].text;
  99. }
  100. listd[pos].text=textb.value;
  101. alert("new entry added !" );
  102. }
  103. else {
  104. alert("Entry already exists !" );
  105. }
  106. }
  107. }
  108. </script>
  109. <body>
  110. <div id="texte1" nowrap STYLE="border-width:2;border-style:inset;border-color:white;width:0;display:inline;visibility:visible;">
  111. <input type="text" name="texteb" value='' style="border-width:0;font-size:14;" size="25"
  112. onDblClick="hide_liste(document.getElementById('texte1'), document.getElementById('liste1')); document.getElementById('texteb').select();"
  113. onblur="liste_lostfocus('texteb', 'listed', document.getElementById('liste1'));"
  114. onkeyup="document.getElementById('listed').selectedIndex=disp_exist(document.getElementById('texteb'), document.getElementById('listed'), document.getElementById('texte1'), document.getElementById('liste1'));
  115. display_down(40, document.getElementById('listed'), document.getElementById('texte1'), document.getElementById('liste1'));"
  116. onkeydown="display_down(34, document.getElementById('listed'), document.getElementById('texte1'), document.getElementById('liste1'));">
  117. <input type="button" name="bouton" value="6" style="line-height:0;height:18;font-family:webdings;font-size:10;" onClick="hide_liste(document.getElementById('texte1'), document.getElementById('liste1'));" onblur="liste_lostfocus('texteb', 'listed', document.getElementById('liste1'));">
  118. </div>
  119. &nbsp&nbsp<input type=button style="font-family:arial;" value="Add to list" onclick="insert_new(document.getElementById('texteb'), document.getElementById('listed'));">
  120. <div id="liste1" STYLE="postion:absolute;visibility:hidden;">
  121. <?
  122. $sql="select * from pays";
  123. $result=@mysql_db_query($dbname,$sql,$dbid);
  124. echo '<select name="listed" size="10" onClick="getValue(document.getElementById(\'texteb\'), document.getElementById(\'listed\'), document.getElementById(\'liste1\'));" onkeydown="enter_list(document.getElementById(\'texteb\'), document.getElementById(\'listed\'), document.getElementById(\'liste1\'));">';
  125. echo '<option value="" selected></option>';
  126.  
  127. while ($rang=mysql_fetch_array($result)){
  128.  
  129. $code=$rang['code'];
  130. $nom=$rang['pay'];
  131. echo "<option value=\"$code\">$nom</option>";
  132. }
  133. echo '</select>';
  134. ?>
  135. </div>
  136. <br><br><br>
  137. </body>
  138. <html>


Après, si tu as une liste vide, bah faut les remplir... ça va pas se faire automatiquement
9 Octobre 2008 15:04:33

bonjour,

merci OmaR,

le code fonctionne avec IE sous windows, mais pas avec Safari, Firefox sous windows,ou mac

comment cela se fait il?
Contenus similaires
a c 232 L Programmation
9 Octobre 2008 20:23:38

bah c'est le code que tu as donné ... j'y ai pas touché moi :)  j'ai juste assemblé les deux bouts
13 Octobre 2008 14:10:10

Bonjour,

il s'agit d'un code que j'ai recuperé sur un site,

en realité il fonctionne uniquement sur IE, mais pas sous firefox.

je pense que le probleme vient des fonctions qui ne sont pas compatible avec firefox.

pouvez vous m'aider.

merci
a c 232 L Programmation
13 Octobre 2008 15:11:03

Ok, je pense voir d'où vient le problème (pas regardé en détail).
Avec IE, le getElementById doit aussi retourner les élément par name, mais pas avec les autres navigateurs.

Dans ton input name="texteb" ajoute id="texteb", et pareil dans tes deux select name="listed", ajoute id="listed" et dans name="liste1" ajoute id="liste1"
14 Octobre 2008 07:19:24

Bonjour,
pour finir j'ai entirement supprimer le code precedent:

il ne fonctionnais pas sous Firefox a cause de activeElement

du coup j'ai utilisé ce qui suis


j'ai ce code ci:

<?
/*

Ce script se charge d'ajouter manuellement des nouvelles entrées dans la base de données. C'est un bon exemple pour tester l'enregistrement des données ... et pour y voir clair dans les champs de la base ! C'est le moment où jamais pour réviser sa liste de variables.

*/
?>

<script type="text/javascript">

// Un Javascript va vérifier que les champs sont remplis
function CheckForm () {

// Cette variable indique si un champ a été mal rempli (check=0) ou si tout est correct (check=1)
var check=1

</script>

<? $script= "index.php?mod=".$HTTP_GET_VARS['mod']; // script récursif ?>
<form action="<? echo $script ?>" method=post onSubmit="return CheckForm()">

<!--
/////////////////////////////////////////////////////////////
// FORMULAIRE
/////////////////////////////////////////////////////////////
-->

<br><br><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td height=22 width=17><img src="images/colg.gif"></td><td bgcolor="#FFCC66"><div class="title">Ajouter une nouvelle entrée</div></td><td height=22 width=17><img src="images/cold.gif"></td></tr></table><br>

<table cellspacing="2" cellpadding="1" border="0">
<tr><td class="form1"><b>pays</b></td>
<td class="form2"><input type="text" name="pay"></td>
</tr>

<tr><td colspan="2" align="right"><input type="Reset" value="Reset">  <input type="submit" name="Save" value="Enreg"></td><td><a href="javascript:coder(23);"><img src="images/c.gif" width="10" height="10" border="0" alt="Aide au développement"></a></td></tr>
</table>
</form>
<?

///////////////////////////////////////////////////////
// AJOUT DES DONNEES
///////////////////////////////////////////////////////

// Cas où des données ont été postées
if (count($HTTP_POST_VARS)) {

// On stocke toutes les variables postées dans le formulaire
$pays = rtrim($HTTP_POST_VARS['pay']);

// La belle requête MySQL !
$sql_string = "INSERT INTO pays (pay) VALUES ";
$sql_string = $sql_string."(".chr(34).$pays.chr(34).");";

echo "<div class='title'>Les données ont été sauvegardées</div>\n";

// pays.ini a-t-il prévu l'affichage de la requête ? (mode debug)
if ($ini_array['show_sql']) {
echo "La requête SQL est :<br>\n<div class='sql'>".$sql_string."</div>\n";
}
// On enregistre le tout
$store = mysql_query ($sql_string);

if (!$store) {
mysqlerror (mysql_error($dbid),$sql_string);
}

echo "<hr>\n";
}
?>


et je voudrais integrer ceci:

<html>
<form action="<? echo $script ?>" method="POST">
Insert a new pays: <input type="text" name="pays">
<input type="submit" name="submit" value="Enreg">
</form>


<form action="<? echo $script ?>" method="POST">
Display all pays: <input type="submit" name="displayall" value="All">
</form>



</html>

<?php




if($_POST['displayall']) {
echo "User clicked on the All button <br />";
$sQuery = "SELECT pay FROM pays";
$refResult = mysql_query($sQuery);
while($aRow = mysql_fetch_array($refResult, MYSQL_ASSOC))
{
echo "Pays: $aRow[pay]<br />";
}
}
elseif ($_POST['submit']) {
echo "User clicked on the Enreg button <br />";
if(!empty($_POST[pays])) {
$sql="INSERT INTO pays (pay) VALUES ('$_POST[pays]')";
mysql_query($sql) or die(mysql_error());
echo "1 record added";
print "<br>";
} else {
print "Please submit a value. A blank value is not allowed \n";
}
}

// Combo box code:
// ----------------
function comboBox()
{
// Create a variable for the combo box and call it areacombo
//$combo = "<select name=\"pays\">\n";

// Create the sql
//$sqlcombo = "select * from pays";

// Execute the sql
//$querycombo = mysql_query($sqlcombo) or die ("MySQL query failed: " . mysql_error());


//while ($resultcombo = mysql_fetch_array($querycombo, MYSQL_ASSOC))
// {
// $combo .= "\t<option value=\"" . $resultcombo[name_are] . "\">" . "\n";
// $combo .= "</select>\n";
// return $combo;
// }


$sql="select * from pays";
$result=@mysql_db_query($dbname,$sql,$dbid);
echo '<select name="pays">';
echo '<option value="" selected></option>';

while ($rang=mysql_fetch_array($result)){

$code=$rang['code'];
$nom=$rang['pay'];
echo "<option value=\"$code\">$nom</option>";
}
echo '</select>

}

comboBox();

?>


a chaque fois que je clique sur le bouton all ou enreg

j'ai le message

Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line 'ligne en cours'

j'ai vu qu'il fallait utiliser

Pour eviter cette erreur il suffit de tester si ce champs du tableau a été initialisé avec la fonction isset().

Exemple pour une variable $_POST['truc']:

// Avant d'utiliser $_POST['truc']
if (isset($_POST['truc']))
{
// Instructions si $_POST['truc'] existe
}


mais je sais pas comment faire?

je debute en php /mysql

merci de m'aider
14 Octobre 2008 07:20:32

Bonjour,

j'avais mon script qui consistait par une zone de texte a rentrer de nouvelles valeurs dans la BDD
et l'autre partie je l'ai recuperé sur http://www.experts-exchange.com/Web_Development/Web_Lan...

voila j'ai integré les 2 parties de code que j'avais:


<?
/*

Ce script se charge d'ajouter manuellement des nouvelles entrées dans la base de données. C'est un bon exemple pour tester l'enregistrement des données ... et pour y voir clair dans les champs de la base ! C'est le moment où jamais pour réviser sa liste de variables.

*/
?>

<script type="text/javascript">

// Un Javascript va vérifier que les champs sont remplis
function CheckForm () {

// Cette variable indique si un champ a été mal rempli (check=0) ou si tout est correct (check=1)
var check=1
}

</script>

<? $script= "index.php?mod=".$HTTP_GET_VARS['mod']; // script récursif ?>
<form action="<? echo $script ?>" method=post onSubmit="return CheckForm()">

<!--
/////////////////////////////////////////////////////////////
// FORMULAIRE
/////////////////////////////////////////////////////////////
-->

<br><br><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td height=22 width=17><img src="images/colg.gif"></td><td bgcolor="#FFCC66"><div class="title">Ajouter une nouvelle entrée</div></td><td height=22 width=17><img src="images/cold.gif"></td></tr></table><br>

<table cellspacing="2" cellpadding="1" border="0">
<tr><td class="form1"><b>pays</b></td>
<td class="form2"><input type="text" name="pay"></td>
</tr>

<tr><td colspan="2" align="right"><input type="Reset" value="Reset">  <input type="submit" name="Save" value="Enreg"></td><td><a href="javascript:coder(23);"><img src="images/c.gif" width="10" height="10" border="0" alt="Aide au développement"></a></td></tr>

<form method="POST">
Insert a new pays: <input type="text" name="pays">
<input type="submit" name="submit" value="Enreg">
</form>


<form method="POST">
Display all pays: <input type="submit" name="displayall" value="All">
</form>


</table>
</form>
<?

///////////////////////////////////////////////////////
// AJOUT DES DONNEES
///////////////////////////////////////////////////////

// Cas où des données ont été postées
if (count($HTTP_POST_VARS)) {

// On stocke toutes les variables postées dans le formulaire
$pays = rtrim($HTTP_POST_VARS['pay']);

// La belle requête MySQL !
$sql_string = "INSERT INTO pays (pay) VALUES ";
$sql_string = $sql_string."(".chr(34).$pays.chr(34)." );";

echo "<div class='title'>Les données ont été sauvegardées</div>\n";

// pays.ini a-t-il prévu l'affichage de la requête ? (mode debug)
if ($ini_array['show_sql']) {
echo "La requête SQL est :<br>\n<div class='sql'>".$sql_string."</div>\n";
}
// On enregistre le tout
$store = mysql_query ($sql_string);

if (!$store) {
mysqlerror (mysql_error($dbid),$sql_string);
}

echo "<hr>\n";
}
?>



if($_POST['displayall']) {
echo "User clicked on the All button <br />";
$sQuery = "SELECT pay FROM pays";
$refResult = mysql_query($sQuery);
while($aRow = mysql_fetch_array($refResult, MYSQL_ASSOC))
if($_POST['displayall']) {
echo "User clicked on the All button <br />";
$sQuery = "SELECT pay FROM pays";
$refResult = mysql_query($sQuery);
while($aRow = mysql_fetch_array($refResult, MYSQL_ASSOC))
{
echo "Pays: $aRow[pay]<br />";
}
}
elseif ($_POST['submit']) {
echo "User clicked on the Enreg button <br />";
if(!empty($_POST[pays])) {
$sql="INSERT INTO pays (pay) VALUES ('$_POST[pays]')";
mysql_query($sql) or die(mysql_error());
echo "1 record added";
print "<br>";
} else {
print "Please submit a value. A blank value is not allowed \n";
}
}

// Combo box code:
// ----------------
function comboBox()
{
// Create a variable for the combo box and call it areacombo
//$combo = "<select name=\"pays\">\n";

// Create the sql
//$sqlcombo = "select * from pays";

// Execute the sql
//$querycombo = mysql_query($sqlcombo) or die ("MySQL query failed: " . mysql_error());


//while ($resultcombo = mysql_fetch_array($querycombo, MYSQL_ASSOC))
// {
// $combo .= "\t<option value=\"" . $resultcombo[name_are] . "\">" . "\n";
// $combo .= "</select>\n";
// return $combo;
// }


$sql="select * from pays";
$result=@mysql_db_query($dbname,$sql,$dbid);
echo '<select name="pays">';
echo '<option value="" selected></option>';

while ($rang=mysql_fetch_array($result)){

$code=$rang['code'];
$nom=$rang['pay'];
echo "<option value=\"$code\">$nom</option>";
}
echo '</select>

}

comboBox();

?> {
echo "Pays: $aRow[pay]<br />";
}
}
elseif ($_POST['submit']) {
echo "User clicked on the Enreg button <br />";
if(!empty($_POST[pays])) {
$sql="INSERT INTO pays (pay) VALUES ('$_POST[pays]')";
mysql_query($sql) or die(mysql_error());
echo "1 record added";
print "<br>";
} else {
print "Please submit a value. A blank value is not allowed \n";
}
}





?>

a chaque fois que je clique sur le bouton all ou enreg

j'ai le message

Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line 'ligne en cours'

j'ai vu qu'il fallait utiliser

Pour eviter cette erreur il suffit de tester si ce champs du tableau a été initialisé avec la fonction isset().

Exemple pour une variable $_POST['truc']:

// Avant d'utiliser $_POST['truc']
if (isset($_POST['truc']))
{
// Instructions si $_POST['truc'] existe
}



et aussi un autre probleme c'est qu'a chaque fois que je clique sur un bouton cela enregistre dans la base de donnee.

la fonction combobox ne fonctionne pas.

mais je sais pas comment faire?

je debute en php /mysql

merci de m'aider
14 Octobre 2008 22:55:10

c'est bon j'ai resolu mon probleme
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS