基于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中使用Oracle数据库(6)
Oct 09 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
使用php get_headers 判断URL是否有效的解决办法
Apr 27 PHP
PHP引用(&)各种使用方法实例详解
Mar 20 PHP
windows下安装php的memcache模块的方法
Apr 07 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
May 09 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
Aug 11 PHP
PHP多个图片压缩成ZIP的方法
Aug 18 PHP
PHP使用函数用法详解
Sep 30 PHP
Yii框架安装简明教程
May 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 xml常用函数的集合(比较详细)
2013/06/06 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
php判断linux下程序问题实例
2015/07/09 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
2015/08/23 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
python实现linux下使用xcopy的方法
2015/06/28 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
python实现学员管理系统
2019/02/26 Python
Python字符串的一些操作方法总结
2019/06/10 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
简历自我评价怎么写呢?
2014/01/06 职场文书
优秀员工评语
2014/02/10 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
这样写python注释让代码更加的优雅
2021/06/02 Python
css中:last-child不生效的解决方法
2022/08/05 HTML / CSS