doudao5287 2015-04-16 09:37
浏览 64
已采纳

使用group_by显示所有行 - Codeigniter

I am working with codeigniter. Below is my code

public function get_content(){
   $this->db->select('*');
        $this->db->from('content_table');
        $this->db->where('status', "Active");
        $this->db->group_by('MONTH(content_publish_date)');
        $query = $this->db->get();
        return $query->result();
}

I want to extract the rows by month & result will be shown month wise.. But as per the above query i am getting only one row of each month.. i need all the rows to show results monthwise.. Please help.

Result needed

  • 写回答

3条回答 默认 最新

  • doufu8588 2015-04-16 09:52
    关注

    first of all your where clause has extra parenthesis in statement

    $this->db->where('status'), "Active");
    

    change it like this

    $this->db->where('status', "Active");
    

    secondly add order by instead of group by , but order by should be on date

    $this->db->order_by('DATE(content_publish_date)', 'DESC');
    

    thirdly get current record's month in select as

    $this->db->select('*,MONTH(content_publish_date) as content_publish_month');
    

    mean your final query will be

        $this->db->select('*,MONTH(content_publish_date) as content_publish_month');
        $this->db->from('content_table');
        $this->db->where('status', "Active");
        $this->db->order_by('DATE(content_publish_date)', 'DESC');
        $query = $this->db->get();
        return $query->result_array();
    

    then in view you will have to add a variable which will check if month is same as previous record's month then just show record else show month header too e.g:

    $lastMonth = 0;
    foreach($result as $oneRec)
    {
        if(($lastMonth == 0) || ($lastMonth != $oneRec['content_publish_month'])
        {
            //show header
            echo date('F Y', strtotime($row['content_publish_date']));
            //check if its first record or not
            if($lastMonth != 0)
            {
                echo '</table>';
            }
            //then add table start tag
            echo = '<table><tr>
            <th>Date</th>
            <th>Title</th>
            <th>Publication</th>
        </tr>';
        }
        //show record here
        echo = '<tr>
            <td>'.$oneRec['content_publish_date'].'</td>
            <td>'.$oneRec['title'].'</td>
            <td>'.$oneRec['publication'].'</td>
        </tr>';
        //then set current record's month as last month as
        $lastMonth = $oneRec['content_publish_month'];
    }
     echo '</table>';
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?