使用PHP在查询结果中填充下拉列表

时间:2013-08-23 19:14:45

标签: php html sql drop-down-menu selection

代码应该打开gamename表的games列的所有行,并将1700行放入下拉菜单中,但它只显示一个包含1700行的空白下拉列表。

// Connect to server and select database.
mysql_connect("$host", "$username", "$password") or die(mysql_error());

mysql_select_db("$db_name") or die(mysql_error());
$i=0;
$result = mysql_query("SELECT gamename FROM games");
$storeArray = Array();
echo '<select name="game" style="width: 400px">';

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
      $storeArray[] =  $row[i];  

     echo "<option>".$storeArray[i]."</option>";
     $i= $i+1;
}

?>
</select>

4 个答案:

答案 0 :(得分:2)

你应该这样试试:

<?php

mysql_select_db("$db_name") or die(mysql_error());

$sql = "SELECT gamename FROM games";
$query = mysql_query($sql);

echo '<select name="game" style="width: 400px">';
while ($row = mysql_fetch_assoc($query)) {
    echo '<option>'.$row['gamename'].'</option>';
}
echo '</select>';

?>

答案 1 :(得分:1)

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $storeArray[] =  $row[i];  

    echo "<option>".$storeArray[i]."</option>";
    $i= $i+1;
}

首先,您在这里可以互换地使用i$i;这可能会也可能不会引起问题。您将i的{​​{1}}成员分配到$row,并且在第一行之后无效,因为您的SELECT中只有一个项目。

为什么不这样做:

$storeArray

答案 2 :(得分:0)

mysql_select_db("$db_name") or die(mysql_error());
$i=0;
$result = mysql_query("SELECT gamename FROM games");
$storeArray = Array();
echo '<select name="game" style="width: 400px">';

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$storeArray[] =  $row['gamename'];  

echo "<option>".$storeArray['gamename']."</option>";
$i= $i+1;
}

答案 3 :(得分:0)

这里有多个问题......但试一试。 (如果我是你,我也会开始使用PDO或mysqli。)

$result = mysql_query("SELECT gameid, gamename FROM games");
//$storeArray = Array();
echo '<select name="game" style="width: 400px">';

while ($row = mysql_fetch_assoc($result)) {
$gamename =  $row['gamename'];  
$gameid = $row['gameid'];
echo "<option'".$gameID."'>".$gamename."</option>";
}
echo '</select>';

假设您的游戏桌中有ID字段。您没有为任何值分配选项。哪个没用。你也没有按照你的方式提取数据。