仅在下拉列表中显示X记录

时间:2010-09-07 22:03:25

标签: php drop-down-menu

我发布的代码是否有一种方法只显示下拉列表中的记录数量。我不是在谈论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);

4 个答案:

答案 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
}

我认为这是可行的