填充表与许多元素

时间:2013-12-16 12:41:53

标签: php html codeigniter html-table

我正在使用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;  
}

我的问题是,如果在这种情况下有最佳做法,或其他一些方法吗?

5 个答案:

答案 0 :(得分:2)

第一个选项

您可能想尝试在其中添加分页,因此结果会分成不同的页面并且不会一次性加载。

Codeigniter在其库中提供pagination

第二个选项

当你到达页面底部时,你也可以尝试将ajax加载到那里,尽管这可能有点难度。

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

第三个选项

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

你还能做的就是gzip内容。当你输出15.000行时,你可能有一个大小为几兆字节的请求。当你gzip这个时,它会变得非常小..

但是,最好的更新是分页。

答案 4 :(得分:0)

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