某段时间内的读者墙

前言:读者墙,我想大家都很熟悉了,目前网上流传的代码版本主要有2个,一个是水--岩之源(博客已关闭)原创的按自然月统计的,一个是willin修改的按最近30天内的(我博客目前使用的)

本文的产生:木木木木木同学昨天迎来了他的博客二周年,正在搞评论有奖活动《喜迎小站二周年,评论有奖活动》,荒淫大家踊跃参与,其内容如下

活动时间:2010.8.1 16:16~2010.08.31 24:00

活动奖项:

1.沙银:3名,活动期间沙发数最多的前3人,将分别获得¥30、¥20、¥10;

2.水银:3名,活动期间评论数最多的前3人,将分别获得¥30、¥20、¥10;

活动说明:活动结束后,会通知获奖的银,通过支付宝直接支付,活动的一切解释权归林木木所有! ^ ^

很多朋友就说了,这跟本文有啥关系呢?因为本活动木木需要即时统计按评论数量排列活动期间的读者头像,于是就需要对现有的读者墙代码进行修改鸟,木木自己没搞定。

木木来问我,我也不熟悉 SQL,很多代码都是测试出来的,于是立马测试,没想到乱撞还是搞定鸟。

问题的解决:代码如下:

<ul class="ffox_most_active">
     <?php
     $limit_num = '16';
     $noneurl = get_bloginfo ('url');
     $my_email = "'" . get_bloginfo ('admin_email') . "'";
     $counts = $wpdb->get_results("
         SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email
         FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts
         ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID)
         WHERE comment_date > date_sub( '2010-09-01 00:00:00', INTERVAL 43664 MINUTE )
         AND user_id='0'
         AND comment_author_email != $my_email
         AND post_password=''
         AND comment_approved='1'
         AND comment_type='') AS tempcmt    GROUP BY comment_author_email
         ORDER BY cnt DESC LIMIT $limit_num
     ");
     foreach ($counts as $count) {
       $c_url = $count->comment_author_url;
       if ($c_url == '') $c_url = $noneurl;
       $mostactive .= '<li class="mostactive">' . '<a href="'. $c_url . '" title="' . $count->comment_author . ' ('. $count->cnt . 'comments)">'.get_avatar($count->comment_author_email,$size='40').'</a></li>';
     }
     echo $mostactive;
     ?>
 </ul>

说明:核心部分就是代码中橙色部分代码,2010-09-01 00:00:00 是结束时间,43664 MINUTE 是指统计范围为 2010.9.1 0:00 前30天过7小时44分内,其实就是 2010.8.1 16:16 ~2010.8.31 24:00这个时段啦。

一些例子

1. 2010.8.18~2010.8.20内的读者墙:date_sub( '2010-08-20 00:00:00', INTERVAL 3 DAY)

2. 最近一周内:date_sub(NOW(), INTERVAL 1 WEEK)

……

====================================

附:SQL 的 date_sub() 函数

DATE_SUB() 函数从日期减去指定的时间间隔。

语法

DATE_SUB(date,INTERVAL expr type)

date 参数是合法的日期表达式;expr 参数是您希望添加的时间间隔。

Type 值

MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

====================================

OK,喜欢折腾的朋友慢慢折腾吧。

zww
or
oooo

“某段时间内的读者墙”有135条评论

  1. 林木木 says:

    杀呀!

  2. bolo says:

    添加运算符的话应该可以变得更灵活的

  3. 林木木 says:

    用上后效果明显哟~

    1. zwwooooo says:

      @林木木 呵呵,更有利于竞争

  4. bolo says:

    再看了遍代码,INTERVAL 1 MONTH 不就行了,干嘛换成分钟算?

    1. zwwooooo says:

      @bolo 因为木木那里刚好不是一个月,就是一个月还差10几个小时,所以比较纠结

    2. bolo says:

      @zwwooooo 可以直接写时间的,囧。。。

    3. zwwooooo says:

      @bolo 这就是我等不懂代码折腾代码的囧~

  5. ifenwen says:

    呵呵 刚一开始 那边已经很火爆了

    1. zwwooooo says:

      @ifenwen 对啊,很火爆,谁不喜欢钱呢?

  6. 囧啊囧 says:

    我也想弄一个,没有弄出来

    1. zwwooooo says:

      @囧啊囧 现在不就行了

  7. 久酷 says:

    火爆

  8. 阿修 says:

    不过想想木木一周好像文章数目有限……沙发难做啊。纯围观,不参与了。。

    1. 流年 says:

      @阿修 可以水啊!!

  9. BoKeam says:

    读者墙一直没弄好过 :evil:

    1. zwwooooo says:

      @BoKeam 不是很简单么?照着做就行了

  10. 久酷 says:

    提个建议啊,大叔这里也弄个发钱活动啊 :smile: :smile: :smile:

    1. zwwooooo says:

      @久酷 哈哈,这钱可以买半罐奶粉了,我压力大

    2. Ygs says:

      @zwwooooo 原来同学你生儿育女了,恭喜恭喜啊

    3. snowxh says:

      @zwwooooo 你已然需要买奶粉了么。。。

    4. zwwooooo says:

      @Ygs 我老大不小啦

    5. zwwooooo says:

      @snowxh 那你以为我还是学生么?

    6. snowxh says:

      @zwwooooo 不是学生也不用立刻去买奶粉么-_-

    7. zwwooooo says:

      @snowxh 社会大学十多年了 - -

  11. Tangboke says:

    很特别。

  12. dengmin says:

    我也正想写一个这东西。。。

  13. MOPVHS says:

    - -! 貌似水王和沙发王都没了~~~

    1. zwwooooo says:

      @MOPVHS 还有一个月,慢慢抢

  14. 这样的活动一定要参加。

  15. 集趣 says:

    我以前的口水王活动,不久是那样的功能吗?

    1. zwwooooo says:

      @集趣 没注意到啊

  16. 球犯 says:

    木木那边会很火爆的 哈哈~

    1. zwwooooo says:

      @球犯 对啊,加上金钱的诱惑

  17. Firm says:

    呵呵,终于整出来的,俺上次也是用你整的代码

    1. zwwooooo says:

      @Firm 哈哈,上次的不够完善

  18. erick says:

    :cool: 强大啊~~

    1. zwwooooo says:

      @erick 折腾一下而已

  19. mice says:

    留名 用到再来搜索..

回复给 zwwooooo ¬
取消回复

昵称 *

网址

B em del U Link Code Quote