我正在尝试制作存储在数据库中的事件的时间表:
我已在我的模型中使用此代码来获取数据
$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();
然后输出代码我查看
<?php
foreach($istorija as $info) {
?>
<li class="time-label">
<span class="bg-red"><?php echo ucfirst(strftime("%B %e, %Y", $info->data)); ?></span>
</li>
<li>
<i class="fa fa-<?php echo $info->ikona; ?> bg-<?php echo $info->fonas; ?>"></i>
<div class="timeline-item">
<span class="time"><i class="fa fa-clock-o"></i> <?php echo strftime("%H:%M", $info->data); ?></span>
<h3 class="timeline-header"><a href="#"><?php echo $info->pavadinimas; ?></a></h3>
<div class="timeline-body">
<?php echo nl2br($info->tekstas); ?>
</div>
</div>
</li>
<?php
}
?>
我希望它能够按日期和日期内的事件呈现 View ,即
[date 1]
- event 1
- event 2
[date 2]
- event 1
但是显示是这样的
怎样才能让它正确显示?
最佳答案
正如您刚才所演示的那样,Group By 工作得非常完美。如果按没有重复数据的列进行分组,则没有任何内容可分组。您的所有数据记录都是不同的。
鉴于您没有在数据库中使用日期字段,而是出于某种原因存储 php 时间戳,这似乎有点奇怪,如果您有两个足够相同的时间戳以进行分组,我会感到惊讶有任何影响。
鉴于您所显示的数据,您不需要分组依据,实际上,即使使用日期字段,它也不会按照您预期的方式工作。
收集数据并按时间戳升序排序。然后在您的显示中,只需为您显示的当前日期设置一个 temp_date 变量,即 2016 年 9 月 6 日。然后在循环的下一次迭代中,检查日期是否已更改,如果已更改,则显示新的日期date,设置临时变量并继续循环。像这样的东西:
<?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
....
}
?>
希望有帮助,
保罗。
关于php - codeigniter group by 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39356063/