从数据库行中获取数据并填充select标记


Fetching data from database rows and populating select tag

快速提问。因此,我需要做的是用表中的行填充html dropist。我可以为一个html下拉列表这样做,但当我对另一个html下拉列表这样做时,它就变成了一个问题。你不能使用mysql_fetch_array两次。有什么建议吗?

下面是我引用的示例代码:

    query = mysql_query("YOUR QUERY HERE"); // Run your query
echo '<select name="DROP DOWN NAME">'; // Open your drop down box
// Loop through the query results, outputing the options one by one
while ($row = mysql_fetch_array($query)) {
   echo '<option value="'.$row['something'].'">'.$row['something'].'</option>';
}
echo '</select>';// Close your drop down box

选项1:使用下面的代码。请阅读本文档

while($row = mysql_fetch_array($query)){
   // Your code..
}
// add this line
mysql_data_seek($query, 0);
while($row = mysql_fetch_array($query)){
   // Your code..
}

mysql_data_seek()移动与指定结果标识符关联的MySQL结果的内部行指针,指向指定的行号。

选项2:您可以将mysql_fetch_array($query)存储在一个数组中并重新使用它。

$sample_array = mysql_fetch_array($query);
while($row = $sample_array){
   // Your code..
}
while($row = $sample_array){
   // Your code..
}

我的简单解决方案是,编写一个方法,该方法将接受两个数组并填充Dropdown。

function populateDropDown($values,$displayArray, $nameDropdon){
echo "<select name='$nameDropdon'>"; // Open your drop down box
// Loop through the query results, outputing the options one by one
for($i=0;i<count($values);$i++)
   echo '<option value="'.$values[$i].'">'.$displayArray[$i].'</option>';
echo '</select>';
}

不要使用过时的函数,尝试MySQLi或PDO。如果需要从数据库中调用返回元素,只需创建一个数组来存储它,并根据需要多次使用foreach。

$query = mysql_query("YOUR QUERY HERE") or die(mysql_error());
$items = array();
while ($row = mysql_fetch_array($query)) {
    $items[] = $row;
}

echo '<select name="DROP DOWN NAME">';
foreach($items as $item){
    printf('<option value="%d">%s</option>', $item['id'], $item['description']);
}
echo '</select>';