web-dev-qa-db-ja.com

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

私の推測では、ループ後にselect-tagを閉じないので問題があると思います。それでうまくいきますか?

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

以下のコードはニースです。これはaaronbdという名前の誰かによって与えられました このフォーラムで

<?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>";
?> 
14
Imon

いくつかのデバッグ手順に従うことをお勧めします。

最初に、データベースに対して直接クエリを実行します。結果が戻っていることを確認します。これほど簡単なものでも、間違いを犯したか、テーブルが空であるか、またはそのような奇妙なことがわかります。

上記で問題ない場合は、$ rowの内容をループしてHTMLに直接エコーアウトし、mysql_queryで何が返されているかを確認します。DBで直接取得したものと一致するかどうかを確認します。

データがページに出力される場合は、HTML書式設定の何が問題なのかを確認してください。

ただし、$rowから何も出力されない場合は、mysql_queryが機能していない理由を見つけてください。ユーザーがそのDBを照会する権限を持っているか、オープンDB接続を持っているか、WebサーバーがDBに接続できるかなど[これらの行の何かがしばしば落とし穴になります]

クエリをわずかに変更します

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

エラーを強調表示するのに役立つ場合があります: php manual

6
Kris C
<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>
2
user2806221
<?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>
2
rashedcs

代わりにOOP conceptを使用します。関数でクラスを作成します

class MyClass {

...

function getData($query) {
    $result = mysqli_query($this->conn, $query);
    while($row=mysqli_fetch_assoc($result)) {
        $resultset[] = $row;
    }       
    if(!empty($resultset))
        return $resultset;
} }

そして、クラスオブジェクトを使用してコード内の関数を呼び出します

<?php 

    $obj = new MyClass();
    $row = $obj->getData("select city_name from city"); 
?>
<select>
    <?php foreach($row as $row){ ?>
        <option><?php echo $row['city_name'] ?></option>

<?php  } ?>
</select>

完全なコードと説明はここにあります

1
tim3in