基于mysql的bbs设计(四)


Posted in PHP onOctober 09, 2006

5。版面模块设计
  所谓分类,更多的是为telnet服务端考虑的,在cq66模式下,用户可以按
照自己的意愿进行分类,反正最后都是直接以版为基本单位访问的。
  对于版面文章的访问,存放的时候以整篇文章为参数,文章的分块由本层
完成,如果上层以块为单位传送,则在上层全部传完,组合后,再传参到本层
分解;在读取 的时候,本层则以块为单位访问,如果上层要以全文为单位访问
,则在上层做合并 工作,本层不管。
  至于要不要独立出索引,不影响上层的操作,主要和下层的数据库构造有
关, 主要考虑可行性,效率需求等。
  权限的检查放在哪里进行呢?还是放在上层吧,其实就telnet服务器端,
和cq66 的客户端,根本不会给一般用户显示特殊指令的菜单,当然,用户可
以直接发送cq66 的指令,服务器方还是要检查的。但应该不用在它下面的功
能模块层再检查一次吧
。   Class BoardManage {
  private:

  public:
    // 有关分类的操作
    int GetClassNameInfo( int maxclass, char **classid,
              char ** classname );
      返回分类的信息,中英文名。
    int GetBoardName( int maxboards, char *classid,
              char **boardname );
      返回某分类中的版面信息,一般分类,直接select ..
      from sboard
      where boardclass == .... 特殊分类则查相应的表。。。。

    // 修改需要版面管理员以上的特权
    int NewClass( char * newclassname, int type );
      新建分类,普通分类还是特殊分类,
    int DeleteClass( char *newclassname );
      删除分类,但不cascade,即本层不负责一致性,由上层负责将
      相应的版面的分类信息改为别的。分类改名也是先删再建,
    int AddClassBoard( const char *classname, char *newboardname );
      将已建好的版加入某分类中,专门针对特殊分类,对一般分类,其
      效果和modifyboardinfo一样,
    int DeleteClassBoard( const char *classname, char *boardname );
      从分类中删除某个版,也是针对特殊分类,对一般分类,效果也
      是和modifyboardinfo一样,一个版的分类属性可以为空,即不属
      于任何分类。

    // 有关版的信息的操作。
    int NewBoard( const char *boardid,char *boardname);
      新建一个版,建立对应的表。其他参数取默认值。
    int DeleteBoard( const char *boardid );
      删除一个版,删除对应的表。
    int GetBoardInfo( const char *boardid, char *boardname,
            int& numposts, char *masters, char *class,
            long &level );
      取的版面的信息。
    int ModifyBoardId( const char *oldid, char *newid );
      改变版的英文id,对应table的名称也要改变,
    int ModifyBoardInfo( const char *boardid, char *boardname,
            int numposts, char *masters, char *class,
            long level );
      修改版面信息,需要特权。

    // 有关版面文章的操作。
    int AddText( char *boardid, char *title, char *writer,
            char *text );
      往版面中增加文章,内部将长文章分割成2k的块。
    int DeleteText( char *boardid, int num );
      删除文章,只是做一个标记,并不立刻修改对应的table。
    int FlushTable( char *boardid );
      刷新版面,删除被删文章的对应的记录。
    int MarkText( char *boardid, int num, char mark );
      给文章做标记。
    int ModifyTitle( char *boardid, int num, char *newtitle );
      修改文章的标题。
    int ModifyText( char *boardid, int num, char *newtext );
      修改文章内容,不是自己的文章需要特权。
    int GetTextInfo( const char *boardid, int num, char *title,
            char *writer, char& mark );
      取得文章的标题信息。
    int GetText( const char *boardid, int num, int block,
            char *text );
      读取文章的内容,以块为单位。

    // 文章和作者的查询
    // 一次将查询的结果全部返回?
    int QueryWriter( const char *boardid, char *writer,
            char **result );
      查询版面上,某作者的文章。
    int QueryTitle( const char *boardid, char *title,
            char **result );
      查询版面上,标题中包含指定内容的文章。
  }
    参数的传递是一件比较讨厌的事,从抽象的角度,希望返回的数据与
  底层无关,所以应该加以处理,但从效率的角度,又不希望数据进行多次
  复制,另一方面,空间的申请释放,究竟是在上层中完成还是在本层中完成
  呢?一不小心,很容易有内存错误。

PHP 相关文章推荐
PHP4中实现动态代理
Oct 09 PHP
一个ubbcode的函数,速度很快.
Oct 09 PHP
NT IIS下用ODBC连接数据库
Oct 09 PHP
dedecms模板标签代码官方参考
Mar 17 PHP
php自动加载的两种实现方法
Jun 21 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
Jun 21 PHP
WordPress中对访客评论功能的一些优化方法
Nov 24 PHP
PHP弱类型的安全问题详细总结
Sep 25 PHP
ecshop适应在PHP7的修改方法解决报错的实现
Nov 01 PHP
PHP实现多图上传和单图上传功能
May 17 PHP
PHP接口类(interface)的定义、特点和应用示例
May 18 PHP
PHP使用Http Post请求发送Json对象数据代码解析
Jul 16 PHP
PHP+DBM的同学录程序(3)
Oct 09 #PHP
PHP+DBM的同学录程序(2)
Oct 09 #PHP
基于mysql的bbs设计(一)
Oct 09 #PHP
基于mysql的bbs设计(二)
Oct 09 #PHP
基于mysql的bbs设计(三)
Oct 09 #PHP
支持oicq头像的留言簿(一)
Oct 09 #PHP
NT IIS下用ODBC连接数据库
Oct 09 #PHP
You might like
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
Javascript中的相等与不等运算
2010/04/25 Javascript
JS实现的省份级联实例代码
2013/06/24 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
JS实现的表头列头固定页面功能示例
2017/01/10 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
python复制文件到指定目录的实例
2018/04/27 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
python matplotlib实现将图例放在图外
2020/04/17 Python
python可迭代对象去重实例
2020/05/15 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
商务英语求职自荐信范文
2013/12/24 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
小学音乐课歌曲《堆雪人》教学反思
2016/02/18 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
使用Redis实现实时排行榜功能
2021/07/02 Redis
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技
移除Selenium中window.navigator.webdriver值
2022/06/10 Python