2010-11-15 6 views
0

Je souhaite remplir une zone de liste avec les noms de table d'une base de données. voici le code que j'ai écrit pour cela mais il ne semble pas fonctionnerremplir la zone de liste avec les noms de table

<select id="arrays" name="arrays" style="width: 403px;" class="Fieldcell"> 
<?php 
$dbname = 'myBase'; 

if (!mysql_connect('localhost', 'root', '')) { 
    echo 'Could not connect to mysql'; 
    exit; 
} 

$sql = "SHOW TABLES FROM $dbname"; 
$result = mysql_query($sql); 

if (!$result) { 
    echo "DB Error, could not list tables\n"; 
    echo 'MySQL Error: ' . mysql_error(); 
    exit; 
} 

$num_tables = mysql_num_rows($result); 


for($i=0;$i<$num_tables;$i++) 
{ 

echo "<option value=\"$row[i]\">$row[i]</option>"; 

} 

/*while ($row = mysql_fetch_row($result)) { 

echo <option value=\"$row[0]\">$row[0]</option>"; 

}*/ 


mysql_free_result($result); 
?> 
</select> 
+1

'ça ne semble pas fonctionner'. Pouvez-vous expliquer ce qui ne fonctionne pas? Vous pouvez facilement imprimer des avertissements/erreurs PHP à l'écran. Mais ce que je peux voir est que votre première boucle for-n'est pas complète. 'pour ($ i = 0; $ i' devrait être: pour ($ i = 0; $ i <$ num_tables; $ i ++) – Rhapsody

Répondre

2

La section commentée est la section qui va le faire fonctionner. Vous utilisez une boucle for où vous essayez de faire défiler une variable $ row qui n'est jamais définie. Vous devez utiliser mysql_fetch_row() pour récupérer les données du jeu de résultats. Lequel il semble que vous aviez, mais ensuite commenté. Nuke le pour lop et décommenter la boucle while. Bien que vous ayez une erreur de syntaxe dans votre boucle while (guillemets manquants). Voici ce qu'il devrait ressembler à:

while ($row = mysql_fetch_row($result)) { 
    echo "<option value='{$row[0]}'>{$row[0]}</option>"; 
} 

OU

Vous pouvez garder la façon dont il est maintenant, mais au-dessus de votre boucle vous devez ajouter

$row = mysql_fetch_all($result); 
+0

merci pour la réponse rapide, le problème est résolu et fonctionne comme prévu maintenant. – George

0
<?php 
echo '<select id="arrays" style="width: 403px;" class="Fieldcell">'; 
mysql_connect('localhost','root','') or die('Could not connect to mysql'); 
$result = mysql_query("SHOW TABLES FROM $dbname") or die("DB error, could not list tables<br />MySQL error: ".mysql_error()); 
while($r = mysql_fetch_row($result)) { 
    echo '<option value="'.$r[0].'">'.$[0].'</option>'; 
} 
echo '</select>'; 
?> 

Essayez ce.

0

essayez ceci:

mysql_connect('localhost','root','pass'); //dont forget the correct password 
$dbname=???; // insert the database name here 
$thequery=mysql_query("SELECT * FROM $dbname"); 
echo '<select id="arrays" name="arrays" style="width: 403px;" class="Fieldcell">'; 
while($currow=mysql_fetch_array($thequery)) { 
    echo '<option value="'.$currow(COLUMN NAME HERE).'">'.$currow(COLUMN NAME HERE).'</option>'; //insert the column name (the one that has the values inside) 
} 
echo '</select>'; 

Sur une note côté: ce ne est pas une bonne idée d'utiliser la base de données en tant que root. L'utilisation du compte root n'est pas sécurisée.

Questions connexes