Page 1 sur 1

remplir une liste déroulante par des variables PHP

Posté : 21 nov. 2009, 15:05
par dimi3
Bonjour,

Je voudrais afficher dans une liste déroulante les noms de toutes les tables de la base de données.
Mon code ne fonctionne pas. Il affiche tous les noms à la queue leu leu, puis affiche un long rectangle vide. Les noms des tables n'apparaissent pas dans le select. :
...
$liste_tb = mysql_list_tables("ma_base");
$n = mysql_num_rows($liste_tb);

for ($i = 0; $i < $n; $i++)
{
$evalu[$i] = mysql_tablename($liste_tb, $i);
}

?>

<form name = "formul" method="POST" action="choix_table2.php">
Relevé à modifier :  <select name = "liste" size = <?php echo $n; ?>

<?php
for ($i = 0; $i < $n; $i++)
{
echo "<option value=\"$evalu[$i]\">$evalu[$i]</option>";
[i]j'ai aussi essayé : echo "<option value=\"".$evalu[$i]."\">".$evalu[$i]."</option>";[/i]
}
?>

</select>
input type="submit" value="Ouvrir la table choisie" name="B">
</form>
Voyez-vous où j'ai fauté ? Je vous remercie beaucoup de votre aide.

Re: remplir une liste déroulante par des variables PHP

Posté : 21 nov. 2009, 15:16
par FuZZyLine
Re,

On se le refait lol
<?php
  $mysql = mysql_connect("serveur_addr", "login", "passwd") or die("1...!");
  mysql_select_db("db_name") or die("2...!");
  $query = mysql_query("SHOW TABLES;") or die("3...!");

  $cde  = "<select>\n";
  while($item = mysql_fetch_array($query, MYSQL_NUM))
  {
     $cde .= "   <option value=\"".$item[0]."\">".$item[0]."</option>\n";
  }
  $cde .= "<select>\n";
  echo $cde;

  mysql_free_result($query);
  mysql_close($mysql);

  die();
?>
Résultat après test:

Code : Tout sélectionner

<select> <option value="table_01">table_01</option> <option value="table_02">table_02</option> . . . <select>
Malheuseument si ca ne marche toujours pas je ne peux plus t'aider. 'fin si tu reprends exactement
le script l'adapter à ton propre usage devrait le faire ;)

@+ bon code ;)

Re: remplir une liste déroulante par des variables PHP

Posté : 21 nov. 2009, 16:00
par dimi3
merci beaucoup pour votre réponse.
En fait ce qui me contrarie, ce n'est pas l'affichage des noms des tables dans une page, c'est leur affichage dans une liste déroulante (<select>) qui me permettrait ensuite de récupérer le nom de la table choisie par le submit d'un formulaire.

Ce que je ne comprends pas c'est pourquoi ma ligne echo "<option value=\"$evalu[$i]\">$evalu[$i]</option>"; ne fonctionne pas.

Re: remplir une liste déroulante par des variables PHP

Posté : 21 nov. 2009, 16:20
par FuZZyLine
Re,
merci beaucoup pour votre réponse.
En fait ce qui me contrarie, ce n'est pas l'affichage des noms des tables dans une page, c'est leur affichage dans une liste déroulante (<select>) qui me permettrait ensuite de récupérer le nom de la table choisie par le submit d'un formulaire.
Ce que je ne comprends pas c'est pourquoi ma ligne echo "<option value=\"$evalu[$i]\">$evalu[$i]</option>"; ne fonctionne pas.
Ok, essai ainsi. ...En prenant garde à échapper les variables array:
"<option value=\"".$evalu[$i]."\">".$evalu[$i]."</option>"
La ca devrait marcher, @+ ;)

Re: remplir une liste déroulante par des variables PHP

Posté : 21 nov. 2009, 16:26
par dimi3
Et non ! ... J'obtiens la même chose qu'avec mon code, c'est-à-dire l'affichage à la queue leu leu des noms de tables, puis la liste déroulante en dessous complétement vide !

Re: remplir une liste déroulante par des variables PHP

Posté : 21 nov. 2009, 17:17
par FuZZyLine
Re,

Merde IE m'a kické mon post...

Bon, je reprends:
  $mysql = mysql_connect("server_name", "login", "passwd") or die("1...!");
  mysql_select_db("db_name") or die("2...!");
  $query = mysql_query("SHOW TABLES;") or die("3...!");

  $cde  = "<select>\n";
  $cdeOption = "";
  while($item = mysql_fetch_array($query, MYSQL_NUM))
  {
     $cdeOption .= "   <option value=\"".$item[0]."\">".$item[0]."</option>\n";
  }
  $cde .= "<select>\n";
  if ($cdeOption == "") die("ERROR : Empty !");
  $cde .= $cdeOption;
 
  echo $cde;

  mysql_free_result($query);
  mysql_close($mysql);

  die();
Aucune raison pour que ce que j'ai écris ne marche pas chez toi,
le résultat après test m'affiche, de mon côté:
<select>
<option value="table_01">table_01</option>
<option value="table_02">table_02</option>
.
.
.
<select>
Reprends mot à mot, analyse bien et adapte. Ca fait tout à fait ce que tu veux.

@+ bon code ;)

Re: remplir une liste déroulante par des variables PHP

Posté : 21 nov. 2009, 17:31
par dimi3
J'ai essayé votre dernier code. J'obtiens... l'inverse de tout à l'heure, c'est-à-dire l'affichage de la boîte select en premier et la liste des tables de la base de données à la queue leu leu après ! Mais malheureusement rien dans la boîte de liste déroulante !

Quoi qu'il en soit je vous remercie pour tout le temps que vous consacrez à m'aider.

Re: remplir une liste déroulante par des variables PHP

Posté : 21 nov. 2009, 17:40
par FuZZyLine
Re,
J'ai essayé votre dernier code. J'obtiens... l'inverse de tout à l'heure, c'est-à-dire l'affichage de la boîte select en premier et la liste des tables de la base de données à la queue leu leu après ! Mais malheureusement rien dans la boîte de liste déroulante !
Quoi qu'il en soit je vous remercie pour tout le temps que vous consacrez à m'aider[*].
Je comprends pas pourquoi ca marche pas chez toi :( m'énerve lol

Je te propose de mettre un peu plus de script ~10/20 lignes avant le select (peut-être) que ca
permetra d'y voir plus clair. Je dois filer, la, je re un peu plus tard.

@+ ;)

Re: remplir une liste déroulante par des variables PHP

Posté : 21 nov. 2009, 19:20
par dimi3
J'ai fait un copier-coller de votre code, sans rien ajouter. J'ai juste changé mes identifiants, c'est tout.

Moi aussi, ça me tape sur les nerfs !
En tout cas, merci pour votre patience !