首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为每个月生成标题,按月排序。

问为每个月生成标题,按月排序。
EN

Stack Overflow用户
提问于 2014-07-22 11:41:47
回答 4查看 66关注 0票数 0

我使用for()生成每个月的标题,并从这样的数据库中选择相应的数据:

代码语言:javascript
复制
$year = '2013';

for ($i = 12; $i > 0; $i--) {
    $sql = "SELECT stuff 
    FROM table 
    WHERE year(date) = '".$year."'
    and month(date) = '".$i."'
    ORDER BY date ASC";
    $result = mysql_query($sql) or print ("Unable to select data.<br />" . $sql . "<br />" . mysql_error());
    $num = mysql_num_rows($result);
    if ($num > 0) { 
        echo '<h3>'.date('F', mktime(0, 0, 0, $i, 1, $year)).'</h3>';
        while ($row = mysql_fetch_array($result)) {
            // stuff
        }
    }
} 

这个很好用。然而,按月分组的数据集按DESC分类(2013年12月、2013年11月、2013年10月等)。我想从另一个角度对它们进行分类:2013年1月、2013年2月、2013年3月等等。我该怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-22 11:45:07

只需按以下方式更改for循环即可?

代码语言:javascript
复制
for ($i = 1; $i < 13; $i++) {
....
}
票数 1
EN

Stack Overflow用户

发布于 2014-07-22 11:46:39

代码语言:javascript
复制
for ($i = 1; $i < 13; $i++)

不是你要找的吗?

票数 0
EN

Stack Overflow用户

发布于 2014-07-22 11:47:22

在没有循环的情况下这样做:

代码语言:javascript
复制
$sql = "SELECT stuff, month(date) AS month
FROM table 
WHERE YEAR(date) = '".$year."'
ORDER BY date ASC";

然后循环所有结果并比较字段“月份”,以便按您的意愿每月处理.

代码语言:javascript
复制
while ($row = mysql_fetch_array($result)) {
    switch($row["month"]) {
        case "1":
              //Process January...
             break;
        case "2":
              //Process Fenriary...
             break;
        //And so on...
    }
}

这可不算什么!由于多个查询(特别是一个循环中的查询)对您的MySQL服务器没有好处,所以性能更好。它可以大大减缓你网站的加载时间,消耗大量的资源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24886442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档