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

问题描述 投票:0回答:3

我正在尝试将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);
?>
php mysql drop-down-menu
3个回答
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);
?>

1
投票

不要在你的while语句中回显你的选项:

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

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

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.