【问题标题】:Populate table with many elements用许多元素填充表格
【发布时间】:2013-12-16 12:41:53
【问题描述】:

我正在使用 codeigniter 的网站上工作,并且我有这张表将填充来自数据库的信息。 当我填充我的表时,它需要相当长的时间,因为我的数据库中有 15000 行,并且浏览器在加载时会卡住一两分钟。

这是我的部分代码

查看:

<div class="portlet-body">
                 <table class="table table-striped table-bordered table-hover table-full-width" id="sample_1">
                    <thead>
                       <tr>
                          <th>ID</th>
                          <th class="hidden-xs">Serial Number</th>
                          <th class="hidden-xs">Codigo</th>
                          <th class="hidden-xs">Estado</th>
                          <th class="hidden-xs">Data de inserção</th>
                          <th class="hidden-xs">Provider</th>
                       </tr>
                    </thead>
                    <tbody>   
                       <?php  foreach ($query->result_array() as $row): {                              

                        ?>
                        <tr>
                          <td><?php echo $row['product_id'] ?></td>
                          <td><?php echo $row['serial_number'] ?></td>
                          <td class="hidden-xs"><?php echo $row['product_code'] ?></td>
                          <td class="hidden-xs"><?php echo $row['product_status'] ?></td>
                          <td class="hidden-xs"><?php echo $row['product_insertion_date'] ?></td>
                          <td class="hidden-xs"><?php echo $row['product_provider'] ?></td>
                       </tr>

                       <?php }  endforeach; ?>

                    </tbody>
                 </table>
              </div>

控制器:

public function loadProdutos(){

    $this->load->model('produtos_model'); 
    $tmp = $this->produtos_model->getProdutos();

    $data['query'] = $tmp;


    $this->load->view('produtos',$data);
}

型号:

function getProdutos() {

    $query = $this->db->get('products');
    return $query;  
}

我的问题是,在这种情况下是否有最佳实践,或者其他方式?

【问题讨论】:

    标签: php html codeigniter html-table


    【解决方案1】:

    第一选择

    您可能想尝试在其中放置一个分页,以便将结果分成不同的页面并且不会一次全部加载。

    Codeigniter 在他们的库中提供了pagination

    第二个选项

    当您到达页面底部时,您也可以尝试在其中放置一个 ajax 负载,尽管这可能会有点困难。

    您可以找到教程here,或在谷歌上搜索找到适合您的教程。

    第三个选项

    加载更多按钮,与上面的类似,但没有“如果您到达页面底部”

    如果您在实施这些方面需要任何帮助,请告诉我,我会尽可能提供帮助。 如果这三个选项都不是您想要的,那么我也没有想法。

    【讨论】:

      【解决方案2】:

      您最简单快捷的解决方案可能是使用pagination。这将减少服务器负载以及浏览器上的负载,因为它一次只需要显示几行而不是全部 15,000 行。

      【讨论】:

        【解决方案3】:

        您应该使用分页来限制结果,而不是获取所有结果,因此每页返回 20 个结果。查看 CodeIgnitor 如何为其他视图处理这个问题,因为这应该是相当好的构建它。

        作为起点,您可以参考此文档 - http://ellislab.com/codeigniter%20/user-guide/libraries/pagination.html

        【讨论】:

          【解决方案4】:

          您需要的是分页,您可以使用 DataTables 和 data_source ajax 轻松实现这一点:http://datatables.net/examples/data_sources/ajax.html

          您还可以对内容进行 gzip 压缩。当您输出 15.000 行时,您可能有一个大小为几兆字节的请求。当您 gzip 时,它会变得更小..

          不过,最好的更新还是分页。

          【讨论】:

            【解决方案5】:

            您可以使用分页选项。如果数据库有更多行,则加载数据是更好的选择。因为它只加载每页。

            【讨论】:

              猜你喜欢
              • 2011-05-07
              • 2011-11-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-01-21
              • 2017-10-31
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多