2011-11-05 10 views
15

come parte di un modulo HTML che sto creando Mi piacerebbe avere un elenco a discesa che elencherà tutti i nomi utente nel mio database.Come compilare l'elenco a discesa HTML con i valori del database

Ho pensato che il seguente codice avrebbe fatto il trucco ma l'elenco a discesa è vuoto - qualcuno potrebbe aiutarmi in quello che sto facendo male? Grazie.

<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> 

risposta

21

La mia ipotesi è che si ha un problema dal momento che non si chiude il tag di selezione dopo il ciclo. Potrebbe fare il trucco?

<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

Aggiunto un esempio per ripulire un po 'il codice. –

+0

Abbiamo modificato il codice sopra ma ho ancora lo stesso problema - Sono perplesso. – Bernard

+0

@Bernard - Esegui un comando print_r ($ row) per vedere l'intero contenuto della riga, per assicurarsi che la query abbia afferrato la colonna 'username'. – donutdan4114

3

Suggerirei di seguire alcuni passaggi di debug.

Prima eseguire la query direttamente sul DB. Conferma che sta riportando i risultati. Anche con qualcosa di così semplice puoi scoprire che hai commesso un errore, o che il tavolo è vuoto, o qualcosa di strano.

Se quanto sopra è ok, quindi provare looping e facendo eco il contenuto del $ fila appena direttamente nel codice HTML per vedere ciò che hai di tornare in mysql_query - vedere se corrisponde a quello che abbiamo ottenuto direttamente nel DB.

Se i dati vengono visualizzati nella pagina, quindi guarda cosa c'è di sbagliato nella tua formattazione HTML.

Tuttavia, se non viene emesso nulla da $ row, quindi capire perché mysql_query non funziona, ad es. non l'utente ha il permesso di interrogare che DB, hai una connessione DB aperto, può il server web collegarsi al DB ecc [qualcosa su queste linee può essere spesso un Gotcha]

Modifica la query leggermente a

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

può aiutare ad evidenziare eventuali errori: http://php.net/manual/en/function.mysql-error.php

+0

Grazie Kris questo mi ha aiutato a trovare l'output dell'errore – Bernard

8

di seguito il codice è bello .. E 'stato dato da qualcun altro di nome aaronbd a 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

puoi dirmi perché ">" usato in opzione? e come funziona –

+3

@SmitSaraiya ">" è usato in opzione come sintassi html standard. – 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

Non ti farebbe male se aggiungessi alcune righe che spiegano cosa stai facendo, o qual è la differenza tra la tua e la soluzione dell'utente. – 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> 
Problemi correlati