我是编程的新手,我把手放在公司的Web应用程序上,试图四处乱窜并进行一些更改。如我所知,该应用程序是使用 PHP , MySQL 和 CodeIgniter 构建的,并且已被公司用来管理订单。
当用户想要查看订单时,他单击指定的按钮,然后应用程序从数据库加载所有订单,但是由于有超过10.000个订单,因此加载速度很慢。因此,我想添加一个选项,其中第一次加载恰好获得了最近6个月的订单,如果用户想查看旧订单,则应该添加一个按钮或类似的东西并加载其余的部分。
<?php
$count=1;
$this->db->order_by("order_number", "desc");
$completed_orders=$this->db->get_where('orders' , array(
'order_status' => 'completed',
'category' => 'mesoportes'
))->result_array();
foreach ($completed_orders as $row):
?>
任何想法我该怎么做。
答案 0 :(得分:0)
我认为limit()函数应该适合您。 here ist a link
答案 1 :(得分:0)
您最初可以加载一定数量的订单,例如。 10,然后单击一个按钮即可生成AJAX调用,以加载另外10个订单,依此类推。
从数据库加载订单的方法可以是-
function get_orders($start, $limit){
return $this->db->select('*')->where(array('order_status' => 'completed','category' => 'mesoportes'))->limit($limit, $start)->order_by("order_number", "desc")->get('orders')->result_array();
}
每次将一个计数变量增加10并将其传递给此函数。
答案 2 :(得分:0)
您要实现的目标是应用分页的完美定义。分页将帮助您的应用将数据库数据拆分为单独的页面,这是一种在较小空间中显示大量记录的有效方法。但是,您想应用一个庞大的卡盘数据查询。六个月的时间很长,在此期间您可以收到很多订单。
首先,我将尝试使用您的原始想法来解决它。为此,您只需要创建一个新的get_completed_orders()
函数即可接收两个参数$start_date
和$end_date
。应该将这些参数添加到get_where
中。我猜想您的日期名称为order_datetime
,并将其与以前的参数进行比较。
$start_date = '2018-11-01';
$end_date = '2019-05-31';
$completed_orders = get_completed_orders($start_date, $end_date);
function get_completed_orders($start_date, $end_date){
return $this->db->get_where(
'orders',
array(
'order_status' => 'completed',
'category' => 'mesoportes',
'order_datetime >=' => $start_date,
'order_datetime <' => $end_date
)
)->order_by('order_number', 'desc')->result_array();
}
该方法将在两个日期之间带来所有已完成的订单。是的,但这对于移动应用程序或Web应用程序仍然无效。专门用于用户界面。 然后,如何提高效率?好吧,如果您打开gmail,则会收到最后20封电子邮件,并且使用分页功能将根据您的需要来回移动。他们不会向您显示最近六个月的千分之一的电子邮件,对吗?因此,如果我们遵循这个想法,我们都可以在$limit
上添加$offset
和get_completed_orders()
来创建类似分页的方法。
$start_date = '2018-11-01';
$end_date = '2019-05-31';
$limit = 20; // max number of orders
$offset = $prev_offset + $limit; // where is gonna to start
$completed_orders = get_completed_orders($start_date, $end_date, $limit, $offset);
$prev_offset = $offset;
// Function implementation
function get_completed_orders($start_date, $end_date, $limit, $offset) {
return $this->db->get_where(
'orders',
array(
'order_status' => 'completed',
'category' => 'mesoportes',
'order_datetime >=' => $start_date,
'order_datetime <' => $end_date
),
$limit,
$offset
)->order_by('order_number', 'desc')->result_array();
}
现在,您的界面每页将仅收到20个已完成的订单。因此,您需要修改界面以支持此新功能。