在coldfusion中编写每月存档

时间:2014-04-06 23:19:54

标签: sql coldfusion

在我的SQL数据库中,我有一个名为Date的常规日期格式列(1/1/2001 12:35:05 AM)。

如何在页面存档中显示每月和每年发布的帖子数量。

我可以理解,我需要以某种方式计算每个月的每个帖子,然后以某种方式根据计数将它分开。

我真的不能留下一个代码示例,因为我很困惑这是如何工作的。

<div  class="leftbracketholder">

<div class="leftboxes">
  <li><A Href="Fish.com">0</a></li>


 </div>

<cfquery name="Archive" datasource="FishingRackets"> Select Date From Posts </cfquery>

2 个答案:

答案 0 :(得分:3)

让我看看能否帮助解决你的问题。

首先你要做一些事情,所以让我们简化它们。

您正在生成要查看的报告,并在该报告中显示:

每年按月计算,对吗?所以我们需要一个好的SQL select语句。

然后您使用cfquery将查询发送到数据库并返回数据以供使用。

然后,您需要使用cfoutput以有意义的方式输出该数据。

因此,让我们使用一些假设(基于提供的有限代码)。

SQL:从帖子中选择日期对您没有用处(免责声明:我不知道您的特定SQL种类,因此这是一个为了让您思考而提供的一个愚蠢的未经测试的示例)。

你说你有一个常规日期字段。我假设这是一个日期时间字段。

因此,您可以做的一件事是按日期时间创建计数,并按月和年进行计算。

select month(dateField) as month, year(dateField) as year 
  from posts 
 order by month, year

接下来让我们调整你的cfquery东西......

<cfquery name="archive" datasource="fishingRackets">
select month(dateField) as month, year(dateField) as year 
  from posts 
 order by month, year
</cfquery>

现在让我们把这些div东西放在cfoutput下组织。请注意,cfoutput循环遍历数据并做得更好,它会为您分组。

因此,如果你需要按月计算,你可以通过以下几种方式实现:

<div>

<cfoutput query="archive" group="year">
<h2>#year#</h2>

<cfoutput>
<div>
<li><a href="yourlinkhere.com/somepage.cfm?month=#month#&year=#year#">#month#/#year#</a></li>
</div>
</cfoutput>

<cfoutput>
</div>

你在另一个cfoutput中看到cfoutput?这就是决定分组的原因。

BUT!你只完成了一半链接到下一页将得到一个像这样的精致查询:

(这只是举例来说,Coldfusion Gurus很容易)。

在链接中:

yourlinkhere.com/somepage.cfm?month=#month#&year=#year#

您可以抓取这些URL变量并修复SQL,如下所示:

<cfquery name="archive" datasource="fishingRackets">
select month(dateField) as month, year(dateField) as year 
  from posts 
 WHERE DATEPART(mm, Date) = #url.month# 
   AND DATEPART(yyyy, Date) = #url.year#
 order by month, year
</cfquery>

(上面的查询并不准确,可能根本不起作用。但这里的想法是你转到你的链接,然后将查询细化为年和月的结果。并将它们转储出去到页面(如果你需要走这么远)。

有关cfquery / cfoutput /和SQL +日期的更多信息

Google-fu on datetime month/year group select etc.

cfquery stuff

See this post on another type of group example (basically what I created above with more detail).

See more on your handy-dandy cfoutput tag here.

最后的想法:了解SQL,cfquery和cfoutput,它们是面包和黄油/肉和土豆/母亲所有的融化'东西'和'东西'。 (换句话说,它就是我们所有人开始并削减我们的冷灌牙的地方)。

这足以让你入门。祝你好运!

答案 1 :(得分:0)

此查询将为您提供您正在寻找的内容。从那里通过循环查询将它输出到页面应该很容易。

SELECT month(date) as month, year(date) as year, count(post_id) as posts
FROM posts
WHERE date BETWEEN <cfqueryparam cfsqltype="cf_sql_date" value="startDate"> 
  AND <cfqueryparam cfsqltype="cf_sql_date" value="endDate">
GROUP BY month(date), year(date)
ORDER BY year, month