野生大熊猫

Discuz帖子发布源码解析
涉及的数据库发布帖子需要几个相关数据库。pre_forum_thread 主题数据表字段类型空默认注释tidmed...
扫描右侧二维码阅读全文
21
2018/01

Discuz帖子发布源码解析

涉及的数据库

发布帖子需要几个相关数据库。

pre_forum_thread 主题数据表


字段类型默认注释
tidmediumint(8)主题id
fidmediumint(8)0上级论坛id
authoridchar(15)会员名
authormediumint(8)0会员id
subjectchar(80)0帖子标题
datelineint(10)0发表时间
lastpostint(10)0最后发表
lastposterchar(15)最后发表人id

pre_forum_forum 版块基础信息表

更新该板块对应的fidthreadsposts分别+1

可以用下面的代码操作

 C::t('forum_forum')->update_forum_counter($fid,1);

更新一下,可以使用下面的代码更新form_forum数据表。

DB::query("UPDATE ".DB::table('forum_forum')." SET lastpost='$lastpost', threads=threads+1, posts=posts+1, todayposts=todayposts+1 WHERE fid='$fid'", 'UNBUFFERED');

forum_newthread 最新主题索引表

直接用下面的代码更新即可

C::t('forum_newthread')->insert(array('tid' => $tid, 'fid' => $fid, 'dateline' => $_G['timestamp']));

引入require_once libfile('function/forum');中函数:insertpost()

function insertpost($data) {

if(isset($data['tid'])) {
    $thread = C::t('forum_thread')->fetch($data['tid']);
    $tableid = $thread['posttableid'];
} else {
    $tableid = $data['tid'] = 0;
}
$pid = C::t('forum_post_tableid')->insert(array('pid' => null), true);
$data = array_merge($data, array('pid' => $pid));

C::t('forum_post')->insert($tableid, $data);
if($pid % 1024 == 0) {
    C::t('forum_post_tableid')->delete_by_lesspid($pid);
}
savecache('max_post_id', $pid);
return $pid;

}
$data值为数组
未完待续...

Last modification:January 22nd, 2018 at 11:20 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment