Php Codeigniter 2.1-每月以DB为单位统计数据

Php Codeigniter 2.1-每月以DB为单位统计数据,php,mysql,codeigniter,codeigniter-2,Php,Mysql,Codeigniter,Codeigniter 2,我有一个小的日历页面,你可以点击特定的月份,并获得该月份的所有文章。有几个月没有文章,我想避免用户点击那个月却发现它是空的部分。我如何计算一年中每个月的所有文章,然后在视图部分显示数据 DB for article如下所示: articles id_articles -> **number** title -> **varchar** text -> **text** date_created -> timestamp (CURRENT_TIMESTAMP - MM/DD

我有一个小的日历页面,你可以点击特定的月份,并获得该月份的所有文章。有几个月没有文章,我想避免用户点击那个月却发现它是空的部分。我如何计算一年中每个月的所有文章,然后在视图部分显示数据

DB for article如下所示:

articles
id_articles -> **number**
title -> **varchar**
text -> **text**
date_created -> timestamp (CURRENT_TIMESTAMP - MM/DD/YYYY HH:MM:SS ) 
HTML代码:

<nav id="arcive" class="clearfix">
        <ul>
            <li>
                <a role=slide rel=2012 class="current" >2012</a>
                <ul rel=2012 class="month">
                    <li>
                        <a href="#">December</a>
                        <a href="#">November</a>
                        <a href="#">October</a>
                        <a href="#">September</a>
                        <a href="#">August</a>
                        <a href="#">July</a>
                        <a href="#">Jun</a>
                        <a href="#">May</a>
                        <a href="#">April</a>
                        <a href="#">March</a>
                        <a href="#">February</a>
                        <a href="#">January</a>
                    </li>
                </ul>
            </li>
    </ul>
    </nav>


动态创建菜单的PHP如下所示:

$year = '2012'; // set this to whatever the year to be queried is

$sql = 'SELECT GROUP_CONCAT(MONTH(`date_created`)) `date_created`  '
     . 'FROM `articles` '
     . 'WHERE YEAR(`date_created`) = ' . (int) $year; // typecast for security

// run query to return list of numeric months with articles
$query = $this->db->query($sql);  
$result = $query->row();
$months = explode(',', $result->date_created);

$articles_per_month = array_count_values($months); // get count of articles per each month    

for ($i = 1; $i <= 12; $i++) // Loop Through 12-months
{
    $month_name = date('F', mktime(0, 0, 0, $i)); // Get the name of the month from the numeric month

    echo (in_array($i, $months)) // Check to see if articles for month, if so create link otherwise SPAN
        ? "<a href='/calendar/month/$i'>$month_name (" . $articles_per_month[$i] . ")</a>\n" // print link with number of articles
        : "<span>$month_name</span>\n";
}
$year='2012';//将其设置为要查询的年份
$sql='选择组CONCAT(月(`date\u created`)`date\u created`'
. '来自“文章”
. '其中年份(`date_created`)='。(int)$year;//防伪打字
//运行查询以返回包含项目的数字月份列表
$query=$this->db->query($sql);
$result=$query->row();
$months=分解(“,”,$result->date\u created);
$articles_per_month=数组_count_值($months);//每月获取文章数

对于($i=1;$i您可以发布表结构吗?=o),这样我们就可以知道所处理的字段类型,因为这可能需要使用内置MySQL函数来计算月份。还有日历附带的HTML表单以及与之相关的任何PHP代码。要做到这一点,我们需要的不仅仅是表列列表。@cryptic我添加了HTML代码。上面的表结构就是这些文章的全部内容。表列的字段类型是什么?@cryptic添加了字段类型。这是一个很好的解决方案,有点头疼和流感;)@MD.SahibBinMahboob谢谢你,但是我对答案不满意,于是重新编辑了它,现在好多了=o)@cryptic抱歉让你久等了,即使noob程序员也需要睡觉:D.谢谢你的解决方案:)@cryptic一个简单的问题。有没有办法计算每月的文章数?@cryptic非常感谢:)。你真是个救命恩人。如果你来皮罗,打电话给我喝一杯:)