我正在开发一个项目,这是一个酒店预订系统。
我的问题是我想每个月循环,比如1是1月2是2月,以此类推。如果它是1,那么通过将它与 cout_created
列,并添加每条记录的所有利润,稍后将其放入如下数组中:
$monthlyreport = [
1 => 6000,
2 => 5000,
3 => 3000,
4 => 12000,
5 => 8000,
6 => 4000,
7 => 6000,
8 => 9000,
9 => 4000,
10 => 6000,
11 => 9000,
12 => 4000,
];
这是mysql数据库表模式的一个示例行:
Row Name Row Data
id 9
gst_id 1
cout_tin 2018-07-01
cout_tout 2018-07-02
cout_nodays 1
cout_single 1
cout_double 2
cout_family 1
cout_roombal 13000
cout_billbal 1120
cout_totalbal 14120
cout_downbal 6500
cout_result 7620
cout_created 2018-07-15 09:34:12
我使用php和codeigniter框架。
1条答案
按热度按时间whlutmcx1#
您需要做的是在php中将数据库查询与一个简单的for循环相结合。
首先,您必须了解如何获取月份内的所有值。
cout_created
是时间戳/日期时间字段。在mysql中,您可以使用如下查询获取数据:SELECT * FROM yourtable WHERE MONTH(cout_created) = XX
使用此查询,在php中,您将得到以下结果:这将是理解如何做到这一点的最简单方法,但我们可以做得更好。mysql允许我们通过直接在mysql上使用其内置的sum()函数来实现同样的功能,因此我们不必在php上进行额外的处理。我们可以这样做:
我没有测试它,因为我没有一个php环境在这里进行测试,但让我知道它是如何工作的,我会相应地更新答案。
编辑:我提供了另一个解决方案,它只对数据库执行一个查询,但这取决于数据库大小和记录数的性能:
SELECT SUM(cout_result) as profit, MONTH(cout_created) as mymonth FROM yourtable GROUP BY MONTH(cout_created)
这样,您只需要使用foreach
直接通过mymonth
```$sql = "SELECT SUM(cout_result) as profit, MONTH(cout_created) as mymonth FROM yourtable GROUP BY MONTH(cout_created)"
$query = $this->db->query($sql);
$monthlyreport = array();
foreach ($query->result() as $row) {
$monthlyreport[$row->mymonth] = $row->profit;
}