0

我正在从 MySQL 加载 30000 个值并将其加载为下拉选择。加载所有值后,它可以正常工作,但填充下拉列表需要很长时间。我做错了还是应该使用自动完成等其他方式?

谢谢

HTML 代码:

<div class="control">
  <label for="options" class="short">Fornecedor</label>
  <select id="fornecedor" name="fnd[]" multiple="multiple" class="short">
    <?php  
      $rows = getFornecedores($db);
      foreach($rows as $row): ?>
        <option value="<?php echo html_escape($row['idfornecedor']) ?>"><?php echo html_escape($row['nome']) ?></option>
    <?php endforeach; ?>
  </select>
</div>    

PHP函数:

function getFornecedores($db){
   $query = " 
    SELECT 
     idfornecedor, nome
    FROM
     fornecedor 
    ORDER BY
     nome
   "; 

   try 
   { 
      $stmt = $db->prepare($query); 
      $stmt->execute(); 
   } 
   catch(PDOException $ex) 
   {  
      die("Failed to run query: " . $ex->getMessage()); 
   }

   $rows = $stmt->fetchAll();
   return $rows;
}
4

1 回答 1

3

将 30K 元素加载到下拉列表中对用户来说并没有什么意义。你真的希望用户在这样的盒子里找到任何东西吗?尝试提供一些提示或使用自动完成功能。

于 2013-06-18T10:53:11.990 回答