基于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 相关文章推荐
php SQL之where语句生成器
Mar 24 PHP
php include加载文件两种方式效率比较
Aug 08 PHP
php define的第二个参数使用方法
Nov 04 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
thinkphp中html:list标签传递多个参数实例
Oct 30 PHP
Laravel 4 初级教程之安装及入门
Oct 30 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
php数组指针操作详解
Feb 14 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
实例讲解通过​PHP创建数据库
Jan 20 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 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应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
linux下编译安装memcached服务
2014/08/03 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
ExtJs 3.1 XmlTreeLoader Example Error
2010/02/09 Javascript
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
跟老齐学Python之用Python计算
2014/09/12 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
电脑教师的自我评价
2013/12/18 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
学生违反校规检讨书
2014/10/28 职场文书
教师年度个人总结
2015/02/11 职场文书
党小组考察意见
2015/06/02 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript
Springboot中如何自动转JSON输出
2022/06/16 Java/Android