基于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 相关文章推荐
WINDOWS 2000下使用ISAPI方式安装PHP
Sep 05 PHP
php基础知识:类与对象(1)
Dec 13 PHP
php+mysql 实现身份验证代码
Mar 24 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
smarty获得当前url的方法分享
Feb 14 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 PHP
PHP中怎样防止SQL注入分析
Oct 23 PHP
php查询mysql数据库并将结果保存到数组的方法
Mar 18 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
php通过文件头判断格式的方法
May 28 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
Oct 14 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
PHP初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
JavaScript 创建对象
2009/07/17 Javascript
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
jquery实现文字由下到上循环滚动的实例代码
2013/08/09 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
Python中的rjust()方法使用详解
2015/05/19 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
在Python中通过threshold创建mask方式
2020/02/19 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
Django数据统计功能count()的使用
2020/11/30 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
师范生免费教育协议书范本
2014/10/09 职场文书
2014年教育工作总结
2014/11/26 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
Mysql 如何实现多张无关联表查询数据并分页
2021/06/05 MySQL