2010-09-07 64 views
0

有没有办法将我发布的代码显示在下拉列表中只显示记录数量。我不是在谈论MySQL中的LIMIT 0,5。我有1000个记录,它导致IE挂起。 Firefox很快。如果有人能给我一些指导,我会很感激。谢谢。只在下拉列表中显示X条记录

<p><fieldset><legend class="style8">Select a Box</legend> 

     <select name="suggestTextField1" id="suggestTextField1"> 
     <option value="">Select a Box</option> 
     <?php 
do { 
?> 
     <option value="<?php echo $row_rsSuggest1['boxref']?>"><?php echo $row_rsSuggest1['boxref']?></option> 
     <?php 
} while ($row_rsSuggest1 = mysql_fetch_assoc($rsSuggest1)); 
    $rows = mysql_num_rows($rsSuggest1); 
    if($rows > 0) { 
     mysql_data_seek($rsSuggest1, 0); 
    $row_rsSuggest1 = mysql_fetch_assoc($rsSuggest1); 
    } 
?> 
     </select> 
     </fieldset> 
     </p> 


$colname_rsSuggest1 = "-1"; 
if (isset($_SESSION['kt_idcode_usr'])) { 
    $colname_rsSuggest1 = (get_magic_quotes_gpc()) ? $_SESSION['kt_idcode_usr'] : addslashes($_SESSION['kt_idcode_usr']); 
} 
mysql_select_db($database_conn, $conn); 
$query_rsSuggest1 = sprintf("SELECT DISTINCT `boxref` FROM `files` WHERE customer = '%s' AND boxstatus = 1 ORDER BY boxref ASC", $colname_rsSuggest1); 
$rsSuggest1 = mysql_query($query_rsSuggest1, $conn) or die(mysql_error()); 
$row_rsSuggest1 = mysql_fetch_assoc($rsSuggest1); 
$totalRows_rsSuggest1 = mysql_num_rows($rsSuggest1); 
+4

为什么你想获取所有1000+行然后只显示/使用其中5个? – BoltClock 2010-09-07 22:04:44

回答

1

除非您在代码中稍后使用所有记录,否则最好使用LIMIT子句。这将通过扩展加快查询和脚本。看看那里的一些分页脚本来开始。

1

您可以更改您的do{}while()循环,即插入<option>以在5循环后停止,但如果您只打算使用5,则更好的答案是仅从数据库中获取5。

+0

抱歉,伙计们。我没有使用5.我只把这个作为例子,所以你没有想到我正在寻找MySQL限制选项。谢谢 – 2010-09-07 22:24:48

+1

好吧,不管你的限制是什么,你只应该查询你会用什么。 – Robert 2010-09-07 22:38:17

+0

我也许认为它会工作,说有加载的前100个记录,然后在用户滚动列表时引入下一个100或任何其他内容?如果我使用LIMIT,我如何获得剩余记录?谢谢 – 2010-09-08 08:51:20

0
$i = 0; 
while ($i < x) { 
$i++; 
echo the records 
} 

这会工作,我觉得

1

可以完成通过将寻呼到您的下拉列表。这个想法是一次只显示一些项目,并提供允许用户查看更多的后退/下一步按钮。这很容易通过第三方库来完成,但您也可以使用CSS和Ajax自己完成。

搜索带分页支持的下拉列表。我没有使用PHP,所以我不能指出你有任何好的PHP库。似乎有一些东西在http://www.nitobi.com/products/combobox/paging/声称是PHP兼容,但在Firefox中似乎不起作用。您也可以使用YUI Paginator(http://developer.yahoo.com/yui/paginator/)建立您自己的分页下拉列表。

另一种方法是将Ajax搜索支持添加到您的下拉列表中。这将允许用户输入他们正在搜索的内容,从而将列表从数千个减少到希望更小的列表。这是相当普遍的,所以你不应该有麻烦找到库来做到这一点。