将mysql数据作为数组检索并显示在多个组合框中

时间:2011-06-02 19:20:10

标签: php mysql drop-down-menu

我正在尝试将mysql数据项用于选择组合框。它基本上运行良好,但问题是当有多个组合框时,它对服务器负载很大,因为添加每个组合框需要花费很多时间。我想找出一个更好的方法。可能会将一次拉入数组只是为了会话并将其放在组合框中。 逻辑基本上是一个报价单,其中约3500个项目将显示为下拉列表,用户将选择然后输入价格和其他详细信息。用户动态添加或删除行。 我目前正在使用以下代码: -

<?php
$con = mysql_connect('blah blah blah');
if (!$con)  {
die ('Could not connect: ' . mysql_error());}
$db = mysql_select_db('blah',$con);
$extract1 = mysql_query("query") OR die (mysql_error());
$numrows1 = mysql_num_rows($extract1);
echo "<select name='itemname' title='select Item Name'>";
echo "
<option>Select Item Description</option>
    ";
while ($row1=mysql_fetch_assoc($extract1)) 
{
    $ic=$row1['ItemName'];
echo    "   
    <option>$ic</option>
    ";
}
    echo    "</select>";
mysql_close($con);
?>

3 个答案:

答案 0 :(得分:1)

请勿在您的while语句中回显您的选项:

$ic[]=$row1['ItemName'];

然后在页面上任何位置的while循环之外:

foreach($ic as $i){
    echo "<option>".$i."</option>";
}

答案 1 :(得分:0)

是的,如果您的数据不经常更改,最好将数据放入会话中的数组中,并从那里进行渲染。根据数据更改的频率,您可以将其呈现为非会话数据元素(例如,文件系统上的文件)并从那里填充组合框(或者只是渲染所有选择)进入该文件中的组合框元素,并直接使用该数据);当然,这取决于数据更新的频率。

答案 2 :(得分:0)

首先,Don't use mysql_* functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial


<?php

$con = mysql_connect('blah blah blah') or die(mysql_error());
$db = mysql_select_db('blah',$con) or die(mysql_error());
$result = mysql_query("query MAYBE NARROW DOWN TO MORE RELEVANT RESULT SET") or die (mysql_error());

$option = '<select size="1" name="optionBox">';

if(mysql_num_rows($result)>=1){
    while ($row=mysql_fetch_assoc($result)){
        $option .="<option selected value=\"".$row['ItemName']."\">".$row['ItemName']."</option>\n";
    }
}else{
    $option .='<option selected value="0">No items to list</option>';
}
$option .='</select>';

echo $option;

mysql_close($con);
?>