私が作成している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>
私の推測では、ループ後に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>
以下のコードはニースです。これは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>";
?>
いくつかのデバッグ手順に従うことをお勧めします。
最初に、データベースに対して直接クエリを実行します。結果が戻っていることを確認します。これほど簡単なものでも、間違いを犯したか、テーブルが空であるか、またはそのような奇妙なことがわかります。
上記で問題ない場合は、$ 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
<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>
<?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>
代わりに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>