我发布的代码是否有一种方法只显示下拉列表中的记录数量。我不是在谈论mysql中的LIMIT 0,5。我有1000条记录,它导致IE挂起。 firefox很快。如果有人能给我一些指导,我将不胜感激。感谢。
<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);
答案 0 :(得分:1)
除非您在代码中稍后使用所有记录,否则最好使用LIMIT
子句。这将通过扩展加速您的查询和脚本。看看那里的一些分页脚本开始。
答案 1 :(得分:1)
您可以将插入do{}while()
的{{1}}循环更改为在5个循环后停止,但如果您只使用5,则更好的答案是仅从数据库中获取5。
答案 2 :(得分:1)
您可以通过将分页合并到下拉列表中来完成。我们的想法是一次只显示少量项目,并提供允许用户查看更多内容的后退/下一步按钮。这可以通过第三方库轻松完成,但您也可以使用CSS和Ajax自行完成。
搜索具有分页支持的下拉列表。我没有使用PHP,所以我不能指向任何好的PHP库。 http://www.nitobi.com/products/combobox/paging/似乎有些东西声称与PHP兼容,但似乎在Firefox中不起作用。您也可以使用YUI Paginator(http://developer.yahoo.com/yui/paginator/)来构建自己的分页下拉列表。
另一种选择是在下拉列表中添加Ajax搜索支持。这将允许用户键入他们正在搜索的内容,将列表从数千个减少到希望更小的内容。这是相当常见的,因此您不应该在查找库时遇到问题。
答案 3 :(得分:0)
$i = 0;
while ( $i < x ) {
$i++;
echo the records
}
我认为这是可行的