1

特定の月をクリックしてその月のすべての記事を取得できる小さなカレンダーページがあります。記事がない月もありますが、ユーザーがその月をクリックして空であることに気付く部分は避けたいと思います。1年間の毎月のすべての記事をカウントし、後者がビュー部分にデータを表示するにはどうすればよいですか?

記事のDBは次のようになります。

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>
4

1 に答える 1

2

メニューを動的に作成する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";
}

これによりメニューが作成され、月に記事がない場合はSPANタグ内の月の名前が印刷され、記事がある場合はその月の記事の数とともにリンクとして月が印刷されます。

于 2012-12-12T00:41:13.590 に答える