首页| 版块| 我的| 发帖| 消息
主题:2016年1月15日:修正电脑版论坛统计数据主题数和帖子数误差(部分与拆分操作有关)
zhangjingyu 
假设版块a下面有b和c,也就是a是b和c的父版块,b和c是a的子版块。现在的情况是,在父版块a的版块信息里显示的帖子总数(自己修改过代码,以是否含有子版块加以判断:如果有子版块,也就是当前版块是父版块,那提示文字为“总帖数(含子版)”,否则这个版块就是一级版块,也就是没有子版块,提示文字为“帖数”。因为经过研究发现,在父版块的“帖数”里是包含所有子版块的帖子数的,所以才会尝试修改代码)的计算公式为:Sum(a)=a+b+c。

其实,在版块信息里把子版块的帖子数也计算进去(我们看到的是显示出来)并没有什么意义。就像当初,我也是经过研究才知道是这么一回事(并研究如何修改代码,以区分)。然而,这样计算,除了没有什么实际意义外,影响却是不折不扣。最主要的就是,这样很可能导致论坛帖子总数出现偏差。因为,论坛管理里的拆分操作是避免不了的,而当初的这个拆分操作并不能及时的更新版块信息里的帖子总数,后来自己添加了代码才算基本解决。也就是,当源版块减少n个帖子后,目标版块会增加n个帖子,这个帖子数的变化自己用代码实现的。

再把拆分操作放到版块b或c里。无论b或c是目标版块,还是源版块,经过自己修改过的代码后,版块信息里的帖子总数是实时变化的,也就是版块b或c,也包括对方版块的帖子总数总是正确的。然而,这个变化却无法实时反馈到父版块a的版块信息里。

不区分父版块和子版块,所有版块的帖子数都是对的,意外情况就是求和,因为有动态变化,而这个动态变化却无法如实反馈到求和的结果上。

由于客观偏差的存在,我们才会有后续的不断的努力。按照“原理”,父版块的帖子总数是包含所有子版块的。所以,我们后来在版块信息数据表里添加了新的字段benban记录当前版块的帖子数,所有版块求和,再和数据表里的数据进行对比、校对。并且专门写了如何更新这个benban字段数据的php文件,而且前两天又重新做了修改,补充,和完善。其实,细看数据表,后来添加的benban字段的数据和原表自带的记录版块帖子数的article字段基本没什么差别,因为它本身就是用来校对,对比的。除了目前三个包含子版块的父版块的数据。

其实,我们被带偏了。

就像前面说的,其实所有版块的帖子数都是对的(不区分父版块和子版块),而且在父版块把子版块的帖子数也计算进来根本就没有什么意义,而正是这个求和很可能出现意外。

那么,重新思考。不让父版块把子版块的帖子数计算进去,而是如实反应版块自身的帖子数,也就是,论坛总帖数是所有版块的帖子数之和,不就从根本上解决问题了吗?

这就是今晚想到的,其实就一点,而文字却打了不少。
zhangjingyu回帖于2020-09-13 23:28[查看电脑版]
下一楼»:说了半天绕口令,但也应该算说到点子上了,另外也是对辛苦打字的奖励,帖内置顶。
«上一楼:44楼提到的完整代码贴下。
require/updateforum.php
function updateforum($fid,$lastin ..

查看全部回帖(203)
«返回主帖