discuz程序的阅读(1)

今天开始阅读discuz2.5的源码,这是发现的一些收获,记录一下。有兴趣的同学可以去试试

CREATE TABLE pre_forum_post (
pid int(10) unsigned NOT NULL COMMENT '帖子id',
fid mediumint(8) unsigned NOT NULL default '0' COMMENT '论坛id',
tid mediumint(8) unsigned NOT NULL default '0' COMMENT '主题id',
`first` tinyint(1) NOT NULL default '0' COMMENT '是否是首贴',
author varchar(15) NOT NULL default COMMENT '作者姓名',
authorid mediumint(8) unsigned NOT NULL default '0' COMMENT '作者id',
`subject` varchar(80) NOT NULL default COMMENT '标题',
dateline int(10) unsigned NOT NULL default '0' COMMENT '发表时间',
message mediumtext NOT NULL COMMENT '消息',
useip varchar(15) NOT NULL default COMMENT '发帖者IP',
invisible tinyint(1) NOT NULL default '0' COMMENT '是否通过审核',
anonymous tinyint(1) NOT NULL default '0' COMMENT '是否匿名',
usesig tinyint(1) NOT NULL default '0' COMMENT '是否启用签名',
htmlon tinyint(1) NOT NULL default '0' COMMENT '是否允许HTML',
bbcodeoff tinyint(1) NOT NULL default '0' COMMENT '是否关闭BBCODE',
smileyoff tinyint(1) NOT NULL default '0' COMMENT '是否关闭表情',
parseurloff tinyint(1) NOT NULL default '0' COMMENT '是否允许粘贴URL',
attachment tinyint(1) NOT NULL default '0' COMMENT '附件',
rate smallint(6) NOT NULL default '0' COMMENT '评分分数',
ratetimes tinyint(3) unsigned NOT NULL default '0' COMMENT '评分次数',
`status` int(10) NOT NULL default '0' COMMENT '帖子状态',
tags varchar(255) NOT NULL default '0' COMMENT '新增字段,用于存放tag',
`comment` tinyint(1) NOT NULL default '0' COMMENT '是否存在点评',
replycredit int(10) NOT NULL default '0' COMMENT '回帖获得积分记录',
`position` int(8) unsigned NOT NULL auto_increment COMMENT '帖子位置信息',
PRIMARY KEY (tid, `position`),//就是这里
KEY fid (fid),
KEY authorid (authorid,invisible),
KEY dateline (dateline),
KEY invisible (invisible),
KEY displayorder (tid,invisible,dateline),
KEY `first` (tid,`first`),
UNIQUE KEY pid (pid)
) ENGINE=MyISAM COMMENT='帖子表';

这是discuz的post表,以前虽然玩过dz,但是没有仔细看过源码。

大家注意下这个表的primary key,这样设置,如果插入数据,效果是这样的,同样的tid,position是自增的,这样就很好的解决了楼层,不在需要进行计算了。

自己测试几条数据,证明确实有上述的效果。

mysql> select * from pre_forum_post;
+-----+-----+----------+
| pid | tid | position |
+-----+-----+----------+
|   1 |   1 |        1 |
|   2 |   1 |        2 |
|   3 |   2 |        1 |
+-----+-----+----------+
3 rows in set (0.00 sec)

帖子的pid应该也是一个自增的字段,dz里面是这样解决的:

CREATE TABLE pre_forum_post_tableid (
`pid` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Post ID',
PRIMARY KEY (`pid`)
) ENGINE=MyISAM COMMENT='post分表协调表';

往这个表里插入一个null,返回的pid作为帖子的pid

$pid = C::t('forum_post_tableid')->insert(array('pid' => null), true);$data = array_merge($data, array('pid' => $pid));

转载于:https://www.cnblogs.com/yimiao/archive/2012/07/15/2592645.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 742. 二叉树最近的叶节点(建立父节点信息+BFS)

文章目录1. 题目2. 解题1. 题目 给定一个 每个结点的值互不相同 的二叉树,和一个目标值 k,找出树中与目标值 k 最近的叶结点。 这里,与叶结点 最近 表示在二叉树中到达该叶节点需要行进的边数与到达其它叶结点相比最少。 而且,当…

SharePoint 大局观(4)——从开发人员角度

内容摘要 SharePoint是微软提供的一个企业级别的协作平台,目前最新的版本是2010,它的功能相当多,而且也相当灵活。为了帮助大家更好地,从相对较高的层面了解SharePoint 2010的体系结构,我这里分七讲来分别介绍。 本节讲…

LeetCode 490. 迷宫(BFS/DFS)

文章目录1. 题目2. 解题2.1 BFS2.2 DFS1. 题目 由空地和墙组成的迷宫中有一个球。 球可以向上下左右四个方向滚动,但在遇到墙壁前不会停止滚动。 当球停下时,可以选择下一个方向。 给定球的起始位置,目的地和迷宫,判断球能否在目…

android studio moudel,Android Studio 添加其他目录下的module

Android Studio 添加其他目录下的moduleadmin • 2020 年 11 月 07 日[title]需要操作的原因[/title]在我们写程序的时候,经常会因为重复性的代码而耽误工夫,所以会编写一些常用的工具类和模块进行调用。在网上搜索到的都是同一个工程下如何配置模块&…

Photoshop Blendmodi in GLSL

转载自:http://renderingpipeline.com/2012/06/photoshop-blendmodi-glsl/ I once wrote a texturing tool in which you could paint on a 3D model on multiple layers. These layers were composing the final texture just as you know it from photoshop, comp…

LeetCode 505. 迷宫 II(BFS / Dijkstra 最短路径)

文章目录1. 题目2. 解题2.1 BFS2.2 Dijkstra 最短路径1. 题目 由空地和墙组成的迷宫中有一个球。 球可以向上下左右四个方向滚动,但在遇到墙壁前不会停止滚动。 当球停下时,可以选择下一个方向。 给定球的起始位置,目的地和迷宫&#xff0c…

数据冗余的理解和相关概念

2012年6月22日有同学去完爱森哲面试回来说,有一问题是问如何消除数据冗余的,我一时也忘了数据冗余的相关概念,于是再复习了一遍: 数据冗余 关系数据库的数据冗余形成的原因:表的重复、属性的重复、元组的重复、属性值的…

红米note3android版本,小米-红米note3-LOS-安卓9.0.0-稳定版Stable3.0-来去电归属-农历等-本地化增强适配...

制作者:MOS-Developer基于版本:LineageOS Android最新安卓9.0.0代码适合机型:小米红米note3高配/标配/低配/kenzo注意事项:为了能一直更新和维护,不付费不收费,请把预装的4个软件使用3-5天后再卸载&#xf…

LeetCode 305. 岛屿数量 II(并查集)

文章目录1. 题目2. 解题2.1 超时解2.1 改进计算方法1. 题目 假设你设计一个游戏,用一个 m 行 n 列的 2D 网格来存储你的游戏地图。 起始的时候,每个格子的地形都被默认标记为「水」。 我们可以通过使用 addLand 进行操作,将位置 (row, col)…

cygwin下的gcc-4.7.1编译心得

步骤: 1、先编译gmp mpfr mpc这几个库,注意configure时--prefix/usr/local/ 2、中间碰到过can not compute suffix的错误,在命令 export LD_LIBRARY_PATH/usr/local/:${LD_LIBRARY_PATH} export LD_RUN_PATH/usr/local/:${LD_RUN_PATH} 也不行…

鸿蒙系统怎么换windows,求助~鸿蒙系统windows环境搭建(hpm-cli安装失败)!

系统win10,执行命令“npm install -g ohos/hpm-cli”,报错如下:npm ERR! code EEXISTnpm ERR! path C:\Users\jay\AppData\Roaming\npm\node_modules\ohos\hpm-cli\bin\hpmnpm ERR! dest C:\Users\jay\AppData\Roaming\npm\hpmnpm ERR! EEXIS…

LeetCode 265. 粉刷房子 II(DP)

文章目录1. 题目2. 解题1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。 当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成…

string::size_type

重读c primier, 从这个文章开始做个记录,方便以后自己查阅。 1、string::size_type,string的size()方法返回的类型,可以保证string的任意长度。作为配套类型使得string类型的操作与机器无关。 2、操作时需加上作用于操作符&#x…

鸿蒙系统笔记本价格,鸿蒙系统手机华为P50将明年3月发售,华为P40价格骤降至冰点...

原标题:鸿蒙系统手机华为P50将明年3月发售,华为P40价格骤降至冰点鸿蒙系统手机华为P50将明年3月发售,华为P40价格骤降至冰点!每一代P系列产品都基于华为研发和业界合作伙伴的最前沿的能力,实现全新的突破,明…

LeetCode 272. 最接近的二叉搜索树值 II(栈+优先队列)

文章目录1. 题目2. 解题1. 题目 给定一个不为空的二叉搜索树和一个目标值 target,请在该二叉搜索树中找到最接近目标值 target 的 k 个值。 注意: 给定的目标值 target 是一个浮点数 你可以默认 k 值永远是有效的,即 k ≤ 总结点数 题目保证…

android p dp5,谷歌释出Android P第5个开发者预览版更新!

原标题:谷歌释出Android P第5个开发者预览版更新!【PConline资讯】今天凌晨,谷歌正式推出了AndroidP的第五个开发者预览版(DP5),这标志着AndroidP终于准备好在2018年第三季度来面对广大的Android用户了。具体来说,按照…

Sax解析Xml

程序1. package WildCat.Xml.Sax; import java.io.File; import java.util.Stack; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHa…

LeetCode 750. 角矩形的数量(DP)

文章目录1. 题目2. 解题1. 题目 给定一个只包含 0 和 1 的网格,找出其中角矩形的数量。 一个「角矩形」是由四个不同的在网格上的 1 形成的轴对称的矩形。 注意只有4角的位置才需要为 1。并且,4 个 1 需要是不同的。 示例 1: 输入&#xf…

android数据库给单选赋值,如何使用android studio将单选按钮的值保存到mysql数据库?...

我想创建一个投票应用程序,其中有不同的职位,其中有两个职位每个都有两个联系人。我希望当我选择一个人记录到数据库。 [职位的disgn与它的参赛者部] 下面是XML代码的一部分:如何使用android studio将单选按钮的值保存到mysql数据库&#xff…

LeetCode 267. 回文排列 II(回溯)

文章目录1. 题目2. 解题1. 题目 给定一个字符串 s ,返回其通过重新排列组合后所有可能的回文字符串,并去除重复的组合。 如不能形成任何回文排列时,则返回一个空列表。 示例 1: 输入: "aabb" 输出: ["abba"…