2011-11-05 21 views
15

HTMLフォームの一部として作成しています。データベースのすべてのユーザー名をリストするドロップダウンリストが必要です。データベースからの値を持つHTMLドロップダウンリストに値を設定する方法

私は次のコードがトリックを行うだろうと思ったが、ドロップダウンリストは空である - 誰かが私が間違っていることで私を助けることができるだろうか?ありがとう。

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

答えて

21

私の推測では、ループの後に選択タグを閉じることがないため、問題があると思います。それはトリックをすることができますか?

<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

コードを少しきれいにする例を追加しました。 –

+0

上記のコードを修正しましたが、同じ問題が残っています - 私は困惑しています。 – Bernard

+0

@Bernard - print_r($行)を実行して行の内容全体を確認し、クエリが 'username'列を取得していることを確認します。 – donutdan4114

3

いくつかのデバッグ手順を実行することをお勧めします。

まず、DBに対して直接クエリを実行します。結果が戻ることを確認します。これほどシンプルなものであっても、間違いやテーブルが空であること、あるいは奇妙なことが分かります。

上記の場合は、$ rowの内容をループ処理してHTMLに直接出力して、mysql_queryに戻ってきたものが何であるかを確認してください。

データがページに出力されている場合は、HTMLフォーマットで何が問題になっているかを見てください。

しかし、$ rowから何も出力されない場合、mysql_queryが動作しない理由を理解してください。 、ウェブサーバは、などのDBに接続することができ、ユーザは、そのDBを照会する権限を持っているあなたは、オープンDB接続を持っているん[これらの行に何かが頻繁にすることができ落とし穴]

$sql = mysql_query("SELECT username FROM users") or die(mysql_error()); 
に少しあなたのクエリを変更します

は、すべてのエラーを強調するために役立つことがあります。http://php.net/manual/en/function.mysql-error.phpコード以下は

+0

ありがとうございました。これはエラー出力を見つけるのを助けました – Bernard

8

は素晴らしい..ですそれは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>"; 
?> 
で他の誰かの名前 aaronbdによって与えられました
+0

なぜ私は ">"オプションで使用されたのですか?どのように動作しますか? –

+3

@SmitSaraiya ">"はオプションで標準のhtml構文として使用されます。 – 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

何をしているのかを説明する行を追加しても、あなたとあなたのソリューションの違いは何ですか? – 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> 
関連する問題