Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[求助] discuz7.0转DX3.2的问题,如何统计积分收益

[复制链接]
amypink 发表于 2016-7-12 11:02:30 | 显示全部楼层 |阅读模式
本帖最后由 amypink 于 2016-7-12 11:04 编辑

想统计会员的积分收益(昨日,本月,上月),故此网上找了一片文章, 可是版本是7.0的,编辑后打开空白,求大神帮忙改一下,不胜感谢

主要是下面这段代码,在discuz3.2中怎么改啊,3.2中都是C::t('*')->fetch_all($*);的格式,我在class中改后,用不了,跪求帮忙,很简单的。
  1. $m_uid=$member["uid"];                             
  2.    $sql=$db->query("SELECT credits_inc FROM cdb_credits_inc WHERE uid = $m_uid ");      

  3.    $credits_arr=$db->fetch_array($sql);                        
  4.    $credits_inc=$credits_arr["credits_inc"];
复制代码



这是原来的文章

  1. mysql code:-

  2. ------------------------------------BEGIN------------------------------------

  3. ------------------积分变化记录表cdb_credits_inc--------------------

  4. ------------------credits_pre:上月初积分-------------------------------------

  5. ------------------credits_inc:上月新增积分--------------------------------

  6. ------------------month_rec:本月月份--------------------------------------------

  7. CREATE TABLE `discuz`.`cdb_credits_inc` (-

  8. `uid` MEDIUMINT( 8 ) NULL ,-

  9. `credits_pre` INT( 10 ) NULL DEFAULT '0',-

  10. `credits_inc` INT( 10 ) NULL DEFAULT '0',-

  11. `month_rec` TINYINT NULL DEFAULT '0',-

  12. PRIMARY KEY ( `uid` ) -

  13. ) ENGINE = MYISAM -

  14. DELIMITER //-


  15. ------------------触发器 member_ai---------------------------------------

  16. ------------------当每增加(注册)一名新用户时触发---

  17. CREATE TRIGGER member_ai-

  18. AFTER INSERT ON cdb_members-

  19. FOR EACH ROW-

  20. BEGIN-

  21. INSERT INTO cdb_credits_inc(uid,credits_pre,credits_inc) -

  22. VALUES(NEW.uid,NEW.credits,NEW.credits);-

  23. END;//-


  24. -------------------触发器 member_au---------------------------------------------

  25. ------------------每当修改(增加)一名用户积分时触发---

  26. CREATE TRIGGER member_au-

  27. AFTER UPDATE ON cdb_members-

  28. FOR EACH ROW-

  29. BEGIN-

  30. UPDATE cdb_credits_inc-

  31. SET uid=NEW.uid,-

  32. credits_inc=OLD.credits-cdb_credits_inc.credits_pre,-

  33. credits_pre=NEW.credits ,-

  34. month_rec= MONTH( CURDATE( )) -

  35. WHERE uid= OLD.uid -

  36. AND month_rec<> MONTH( CURDATE( ));-

  37. END;//-


  38. -------------------触发器 member_ad---------------------------------------------

  39. ------------------每当删除一名用户时触发----------------------------------

  40. CREATE TRIGGER member_ad-

  41. AFTER DELETE ON cdb_members-

  42. FOR EACH ROW-

  43. BEGIN-

  44. DELETE FROM cdb_credits_inc -

  45. WHERE uid=OLD.uid;-

  46. END;//-



  47. ------------------------------------END-------------------------------------



  48. discuz需要修改的文件及说明:-

  49. 1、-“.\templates\default\admincp.lang.php” 在$lang的array中插入code:  'credits_inc' => '月增积分',

  50. 说明:admincp.lang.php为Discuz的字符解析文件,包含了后台管理系统(admincp)中所用到的所有需要解析的文字。加入该code的作用是为了后面实现后台功能的增加做准备。





  51. 2、“.\admin\members.inc.php” 在line:50 while语句之后加入code:

  52.   /*----------------从 cdb_credits_inc表中获取会员上月新增积分 $credits_inc----------------*/

  53.    $m_uid=$member["uid"];                             
  54.    $sql=$db->query("SELECT credits_inc FROM cdb_credits_inc WHERE uid = $m_uid ");      

  55.    $credits_arr=$db->fetch_array($sql);                        
  56.    $credits_inc=$credits_arr["credits_inc"];

  57. 说明:members.inc.php是Discuz后台管理文件,包含了后台管理中会员管理的所有功能,其中第49line:while($member = $db->fetch_array($query)) 的功能是从数据库中获取所有符合条件的会员($member),所插入code的功能即在获取会员uid之后从数据库表cdb_credits_inc获取会员上月新增积分 $credits_inc。





  58. 3、“.\admin\members.inc.php” 在line:64 两个$member[]数组变量之后加入code:

  59.   /*----------------显示会员上月新增积分----------------*/

  60.  $credits_inc,  

  61. 说明:line:59的showtablerow是“.\admin\.global.func.php” 中的一个函数,其功能是显示会员列表中的每个会员的资料(即表格中每一行的信息),插入的code作为该函数的一个参数的一部分(月增积分)将被显示在会员资料中。但请注意,line:59执行该函数的结果并没有显示出来,仅把该结果赋值给$members保存,并在line:80通过echo $members; 显示。



  62. 3、“.\admin\members.inc.php” 在line:79 showsubtitle()函数的参数array()中加入"credits_inc",修改后的code:

  63.  showsubtitle(array('', 'username', 'credits', 'posts', 'credits_inc','admingroup', 'usergroup', ''));

  64. 说明:showsubtitle同样也是“.\admin\.global.func.php” 中的一个函数,其功能是显示用户管理会员列表中表头的内容(即“用户名 积分 发帖数 管理组 用户组”),修改后的code作用即在原有表头中插入“月增积分”这样的文字。因为第一步我们已经在“admincp.lang.php”中插入了 'credits_inc' => '月增积分' 的code,而showsubtitle函数显示的表头内容都是通过admincp.lang.php来转义的,因此修改后的code中'credits_inc'能够被转译成 '月增积分' 并显示在用户管理的表头中。
复制代码



⑧穿内裤 发表于 2016-7-12 11:50:18 | 显示全部楼层

回帖奖励 +5 枚金币

pre_common_credit_log自带就有日志表
回复

使用道具 举报

 楼主| amypink 发表于 2016-7-12 12:07:18 | 显示全部楼层
⑧穿内裤 发表于 2016-7-12 11:50
pre_common_credit_log自带就有日志表

我想统计出每日 每月的报表
回复

使用道具 举报

⑧穿内裤 发表于 2016-7-12 12:12:41 | 显示全部楼层
DB::fetch_all("sql语句");
回复

使用道具 举报

 楼主| amypink 发表于 2016-7-12 12:36:40 | 显示全部楼层
⑧穿内裤 发表于 2016-7-12 12:12
DB::fetch_all("sql语句");

有时间的话,可以写的详细一点么,

我现在又有一个另外的想法了,就是设置积分名称为,今日积分,昨日积分,本月积分

然后利用定时任务,把今日的积分加到昨日积分与本月积分里面,然后今日的积分清空,

这个方法相比较上面的那个触发器  哪个更容易实现点
回复

使用道具 举报

⑧穿内裤 发表于 2016-7-12 12:42:47 | 显示全部楼层
amypink 发表于 2016-7-12 12:36
有时间的话,可以写的详细一点么,

我现在又有一个另外的想法了,就是设置积分名称为,今日积分,昨日 ...

自己想去,看不懂就去看文档,那详细
回复

使用道具 举报

magentoon 发表于 2016-7-12 12:43:14 | 显示全部楼层

回帖奖励 +5 枚金币

原文章的代码已经旧了
如果只是为了统计积分,可以写个计划任务脚本,每天执行
回复

使用道具 举报

 楼主| amypink 发表于 2016-7-12 13:01:11 | 显示全部楼层
⑧穿内裤 发表于 2016-7-12 12:42
自己想去,看不懂就去看文档,那详细

我付费,这钱你赚不赚
回复

使用道具 举报

西部云xibu7.com 发表于 2016-7-12 16:16:52 | 显示全部楼层

回帖奖励 +5 枚金币

不是特别清楚
回复

使用道具 举报

ygbh 发表于 2021-7-1 13:54:46 | 显示全部楼层

回帖奖励 +5 枚金币

不是吧,还有这种事?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-4-27 03:18 , Processed in 0.100257 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表