2011-06-02 79 views
0

我試圖使用mysql數據項到選擇組合框。它基本上運行良好,但問題是,當有多個組合框,它是服務器負載很多,因爲添加每個組合框需要大量的時間。我想找出更好的方法。可能會將日期一次性拖放到數組中,然後將其放置在組合框中。 邏輯基本上是一個報價表格,其中約3500個項目將顯示爲下拉,用戶將選擇並輸入價格和其他細節。這些行由用戶動態添加或刪除。 我目前使用下面的代碼: -檢索MySQL數據在多個組合框排列顯示

<?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

首先,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); 
?> 
+0

謝謝。我想我應該縮小到兩個選擇組合,第二個選擇組合較小的結果。這樣用戶將能夠添加儘可能多的行而不影響性能。 – mmdel 2011-06-02 19:41:40

+0

呼應的瀏覽器始終是慢然後建立輸出則呼應一次,因此會加快它在那裏,但沒有刷新動態選擇不能只用PHP來完成,你可以明顯地拉的所有數據,並將其存儲在頁,但這將打敗你試圖達到我想..嘗試定義您的SQL查詢返回什麼相關基於什麼部分/類別/頁面的選擇框 – 2011-06-02 19:51:16

1

不迴應你選擇這樣做在你的while語句:

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

那麼while循環的頁面上的任何位置之外:

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

是的,如果你的數據不經常改動的是,這可能是把數據放到對會話的陣列是一個好主意,並從那裏渲染。根據數據更改的頻率,您可能會將其呈現爲非會話數據元素(例如,文件系統上的文件),並從那裏填充組合框(或僅顯示所有選項進入該文件中的組合框元素,並直接使用該數據);這當然取決於數據更新的頻率。

+0

感謝。新的項目代碼經常被添加,所以我想將它連接到數據庫,並且在將來我還想從數據庫中爲所選項目填充其餘的框,例如價格等。 – mmdel 2011-06-02 19:31:20