Probleme de Select

Eléphanteau du PHP | 25 Messages

05 févr. 2006, 11:44

Salut a tous !

Petit probleme avec ce script
Lorsque j'affiche il me met 4 lignes dans mon select alors qu'il n'y a que 2 tables ! (1ligne renseignée-1ligne vide-1ligne renseignée-1ligne vide)
<select name="table" id="table">
<option value="">&nbsp;</option>
<?php

$voir_tables1=mysql_query("SHOW TABLES");
$nbtables=mysql_num_rows($voir_tables1)

while ($ligne2=mysql_fetch_row($voir_tables1))
  {
  for ($k=0;$k<$nbtables;$k++)
               {

print "<option value='".$ligne2[$k]."'>".$ligne2[$k]."</option>";
	}
   }

?>
</select>
Quelqu'un saurait pourquoi ????

Merci

JM

Eléphant du PHP | 353 Messages

05 févr. 2006, 11:50

Hello assez bizarre ton code , tu fais 1 boucle dans une autre !!
<select name="table" id="table"> 
<option value="">&nbsp;</option> 
<?php 

$voir_tables1=mysql_query("SHOW TABLES"); 
$nbtables=mysql_num_rows($voir_tables1) 

for ($k=0;$k<$nbtables;$k++) 
      { 
       $ligne2 = mysql_fetch_row($voir_tables1);
print "<option value='".$ligne2[$k]."'>".$ligne2[$k]."</option>"; 
      } 

?> 
</select> 
essaye plutot comme ça !

Eléphanteau du PHP | 25 Messages

05 févr. 2006, 12:18

Salut

C'est vrai que le code que tu propose est plus clair :)
Le problème c'est qu' il ne m'afiche plus qu'une table sur les deux , et la ligne vide apres la première table y est toujours........
Chose bizarre aussi , si je change la ligne:
for ($k=0;$k<$nbtables;$k++) 
par:
for ($k=1;$k<=$nbtables;$k++) 
Ca ne fonctionne plus du tout........
Bref le mystère reste entier

Mammouth du PHP | 19672 Messages

05 févr. 2006, 12:20

Ou encore comme ceci:
<select name="table" id="table">
<option value="">&nbsp;</option>
<?php
$voir_tables1 = mysql_query("SHOW TABLES");
$nbtables     = mysql_num_rows($voir_tables1);

while ($ligne2 = mysql_fetch_row($voir_tables1))
{
    print "<option value='".$ligne2[0]."'>".$ligne2[0]."</option>";
}
?>
</select>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 25 Messages

05 févr. 2006, 12:25

Ah ca ca marche ! :)

Tu peux juste expliquer
print "<option value='".$ligne2[0]."'>".$ligne2[0]."</option>";
Je comprends pas bien l'ecriture $ligne2[0]

Merci

JM

Mammouth du PHP | 19672 Messages

05 févr. 2006, 12:28

la fonction mysql_num_rows() retourne un tableau indexé, c'est à dire un tableau dont les index commencent à 0 puis 1, 2 etc... : dans le cas de ta requête, il n'y a qu'un seul champ, donc un seul index, donc "0"

La boucle while va lire la première ligne du tableau et $ligne2[0] va correspondre au contenu de la première cellule de ce tableau (il n'y en a de toutes façons pas d'autres), puis reboucler et lire la ligne suivante.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 25 Messages

05 févr. 2006, 12:30

OK c'est très clair, merci bien pour l'explication

@+

JM