Php 代码点火器组by不工作
我正在尝试创建存储在数据库中的事件的时间线: 我在模型中使用了这段代码来获取数据Php 代码点火器组by不工作,php,codeigniter,Php,Codeigniter,我正在尝试创建存储在数据库中的事件的时间线: 我在模型中使用了这段代码来获取数据 $query = $this->db->select('*'); $query = $this->db->group_by('data'); $query = $this->db->order_by('data', 'desc'); $query = $this->db->get('istorija'); return $
$query = $this->db->select('*');
$query = $this->db->group_by('data');
$query = $this->db->order_by('data', 'desc');
$query = $this->db->get('istorija');
return $query->result();
然后输出我查看的代码
但是它是这样显示的
如何使其正确显示?正如您刚才演示的那样,Group By可以完美地工作。如果按不包含重复数据的列进行分组,则没有要分组的内容。您的所有数据记录都不同 考虑到您在数据库中没有使用日期字段,而是出于某种原因存储php时间戳,这似乎有点奇怪,如果您曾经有两个时间戳完全相同,足以让group by产生任何影响,我会感到惊讶 鉴于您显示的数据,您不需要group by,事实上,即使使用日期字段,它也不会按您的预期方式工作 收集数据并按升序时间戳排序。然后在显示器中,只需为当前显示的日期设置一个临时日期变量,即2016年9月6日。然后在循环的下一次迭代中,检查日期是否已更改,如果已更改,则显示新日期,设置temp变量并继续循环。比如:
<?php
$temp_date = '';
foreach($istorija as $info)
{
$this_date = ucfirst(strftime("%B %e, %Y", $info->data);
if ($this_date != $temp_date)
{
$temp_date = $this_date;
// output your date header
....
}
// output your date listing
....
}
?>
未测试,但使用几个mysql函数可能会起作用。不能将*用于选择,因此必须单独列出字段。select()
的第二个参数设置为FALSE
,以防止自动转义,这将破坏此sql语法
您只需在从$this->db->get('istorija')返回时将$query
赋值为等于某物代码>
您的分组由数据
组成,有3条单独的记录。你的回答是正确的。147310560014731668901473177360是。谢谢但现在它只显示了2条记录。而不是3
[date 1]
- event 1
- event 2
[date 2]
- event 1
<?php
$temp_date = '';
foreach($istorija as $info)
{
$this_date = ucfirst(strftime("%B %e, %Y", $info->data);
if ($this_date != $temp_date)
{
$temp_date = $this_date;
// output your date header
....
}
// output your date listing
....
}
?>
$this->db->select("id, data, DATE_FORMAT(FROM_UNIXTIME(`data`), '%B %e, %Y') AS data_str, ikona, fonas, pavadinimas ,tekstas", FALSE);
$this->db->group_by('data_str');
$this->db->order_by('data', 'desc');
$query = $this->db->get('istorija');
return $query->result();