我正在尝试将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);
?>
答案 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,并使用PDO或MySQLi - 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);
?>