基于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 相关文章推荐
基于mysql的论坛(1)
Oct 09 PHP
php截取字符串并保留完整xml标签的函数代码
Feb 06 PHP
php+ajax导入大数据时产生的问题处理
Jun 11 PHP
C#静态方法与非静态方法实例分析
Sep 22 PHP
php用ini_get获取php.ini里变量值的方法
Mar 04 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
数组任意位置插入元素,删除特定元素的实例
Mar 02 PHP
PHP输出Excel PHPExcel的方法
Jul 26 PHP
php查看一个变量的占用内存的实例代码
Mar 29 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
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
深入解析PHP的Yii框架中的缓存功能
2016/03/29 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
phpMyAdmin无法登陆的解决方法
2017/04/27 PHP
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
jquery中的 $("#jb51")与document.getElementById("jb51") 的区别
2011/07/26 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
详解python的几种标准输出重定向方式
2016/08/15 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
Python3进制之间的转换代码实例
2019/08/24 Python
python 消费 kafka 数据教程
2019/12/21 Python
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
商务英语本科生的自我评价分享
2013/11/15 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
MySQL kill不掉线程的原因
2021/05/07 MySQL
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA