我想按年和月在我的网站上对杂志的发行进行分组。
我的数据库中有年和月字段,这些字段将用于按年和月分组数据。(例如2013年4月)。我要获取的示例(按DESC排序):
2014
December
November
October
....
2013
December
November
October
....
模型:
public function get_all_mag($type){
$this->db->where('type', $type);
$this->db->order_by("mag_year", "desc");
$query = $this->db->get('magazine');
return $query->result();
}
控制器:
$data['magarchive'] = $this->Mdl_magazine->get_all_mag($id);
看法:
<?php foreach ($magarchive as $archive): ?>
<div class="arhive_block">
<span class="year"><?php echo $archive->mag_year; ?></span>
<div class="ar_nom">
<a href="<?php echo base_url();?>magazine/issue/<?php echo $archive->id; ?>">
<img src="<?php echo base_url();?>upload/<?php echo $archive->photo_footer; ?>" alt="">
</a>
<a href="<?php echo base_url();?>magazine/issue/<?php echo $archive->id; ?>" class="month"><?php echo $archive->mag_month; ?></a>
</div>
</div>
<?php endforeach; ?>
现在,我得到了这样的东西:
2014
December
2014
November
...
2013
December
2013
November
...
我不是Codeigniter的专家,我是不久前才刚开始的,所以请不要射击初学者。太感谢了。
像您描述的那样分组和显示肯定会有些混乱。首先,你要一个添加$this->db->group_by(array("mag_year", "mag_month"));
到get_all_mag()
方法。
public function get_all_mag($type) {
$this->db->where('type', $type);
$this->db->order_by("mag_year", "desc");
$this->db->group_by(array("mag_year", "mag_month"));
$query = $this->db->get('magazine');
return $query->result();
}
这将按年然后按月对结果进行分组,因此您将获得期望的数据。不幸的是,当您输出数据时,仍然会得到相同的结果,但是如果更新get_all_mag()
方法以返回对象数组(键为Year),它将使输出数据变得更加容易。
public function get_all_mag($type) {
$this->db->where('type', $type);
$this->db->order_by("mag_year", "desc");
$this->db->group_by(array("mag_year", "mag_month"));
$query = $this->db->get('magazine');
$magarchive = array();
if ( $results = $query->result() ) {
foreach ( $results as $result ) {
if ( !isset($mag[$result->mag_year]) ) {
$magarchive[$result->mag_year] = array();
}
$magarchive[$result->mag_year][] = $result;
}
}
return $magarchive;
}
这将返回对象数组,而不是单个对象。要以所需的方式输出响应,您必须将视图更改为具有嵌套循环,以便首先输出年份,然后输出该年份下的每个月。
<?php foreach ($magarchive as $year => $months): ?>
<div class="arhive_block">
<span class="year"><?php echo $year; ?></span>
<?php foreach ( $months as $archive ) : ?>
<div class="ar_nom">
<a href="<?php echo base_url();?>magazine/issue/<?php echo $archive->id; ?>">
<img src="<?php echo base_url();?>upload/<?php echo $archive->photo_footer; ?>" alt="">
</a>
<a href="<?php echo base_url();?>magazine/issue/<?php echo $archive->id; ?>" class="month"><?php echo $archive->mag_month; ?></a>
</div>
<?php endforeach; ?>
</div>
<?php endforeach; ?>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句