Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 代码点火器组by不工作_Php_Codeigniter - Fatal编程技术网

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();