2011-11-05 17 views
15

como parte de un formulario HTML que estoy creando Me gustaría tener una lista desplegable que enumerará todos los nombres de usuario en mi base de datos.Cómo rellenar la lista desplegable de HTML con los valores de la base de datos

Pensé que el siguiente código haría el truco pero la lista desplegable está vacía. ¿Podría alguien ayudarme en lo que estoy haciendo mal? Gracias.

<tr> 
<td>Owner</td> 
<td> 
<select name="owner"> 
<?php 

$sql = mysqli_query($connection, "SELECT username FROM users"); 

while ($row = $sql->fetch_assoc()){ 

?> 
<option value="owner1"><?php echo $row['username']; ?></option> 

<?php 
// close while loop 
} 
?> 
</td> 
</tr> 

Respuesta

21

Supongo que tiene un problema ya que no cierra su etiqueta de selección después del ciclo. ¿Podría eso hacer el truco?

<select name="owner"> 
<?php 
$sql = mysqli_query($connection, "SELECT username FROM users"); 
while ($row = $sql->fetch_assoc()){ 
echo "<option value=\"owner1\">" . $row['username'] . "</option>"; 
} 
?> 
</select> 
+1

Agregué un ejemplo para limpiar el código un poco. –

+0

Han enmendado el código a lo anterior, pero sigue siendo el mismo problema - Estoy perplejo. – Bernard

+0

@Bernard: haga una print_r ($ row) para ver todo el contenido de la fila, para asegurarse de que la consulta ha estado tomando la columna 'nombre de usuario'. – donutdan4114

3

Sugiero seguir algunos pasos de depuración.

Primero ejecute la consulta directamente en la base de datos. Confirma que está devolviendo los resultados. Incluso con algo tan simple como esto, puede descubrir que ha cometido un error, o que la mesa está vacía, o algo así como una rareza.

Si lo anterior está bien, intente repetir y repetir el contenido de $ row directamente en el código HTML para ver lo que está obteniendo en mysql_query - vea si coincide con lo que obtuvo directamente en el DB.

Si sus datos se envían a la página, mire lo que está fallando en su formato HTML.

Sin embargo, si no sale nada de $ row, entonces descubra por qué mysql_query no funciona, p. ¿El usuario tiene permiso para consultar que DB, ¿tiene una conexión a base de datos abierta, puede que el servidor web conectarse a la base de datos, etc [algo en estas líneas a menudo puede ser una Gotcha]

Cambiar su consulta poco a

$sql = mysql_query("SELECT username FROM users") or die(mysql_error()); 

puede ayudar a resaltar los errores: http://php.net/manual/en/function.mysql-error.php

+0

Gracias Kris esto me ayudó a encontrar la salida de error – Bernard

8

a continuación código es agradable .. se le ha dado por otra persona nombrada aaronbd en link

<?php 

$conn = new mysqli('localhost', 'username', 'password', 'database') 
or die ('Cannot connect to db'); 

    $result = $conn->query("select id, name from table"); 

    echo "<html>"; 
    echo "<body>"; 
    echo "<select name='id'>"; 

    while ($row = $result->fetch_assoc()) { 

        unset($id, $name); 
        $id = $row['id']; 
        $name = $row['name']; 
        echo '<option value="'.$id.'">'.$name.'</option>'; 

} 

    echo "</select>"; 
    echo "</body>"; 
    echo "</html>"; 
?> 
+0

¿me puede decir por qué ">" se usa en la opción? y cómo funciona –

+3

@SmitSaraiya ">" se usa en opción como sintaxis html estándar. – Imon

2
<select name="owner"> 
<?php 
$sql = mysql_query("SELECT username FROM users"); 
while ($row = mysql_fetch_array($sql)){ 
echo "<option value=\"owner1\">" . $row['username'] . "</option>"; 
} 
?> 
</select> 
+0

No estaría de más agregar algunas líneas que explican qué estás haciendo o cuál es la diferencia entre la tuya y la solución del usuario. – nKn

1
<?php 
$query = "select username from users"; 
$res = mysqli_query($connection, $query); 
?> 


<form> 
    <select> 
    <?php 
     while ($row = $res->fetch_assoc()) 
     { 
     echo '<option value=" '.$row['id'].' "> '.$row['name'].' </option>'; 
     } 
    ?> 
    </select> 
</form> 
Cuestiones relacionadas