基于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发电子邮件
Oct 09 PHP
利用PHP扩展vld查看PHP opcode操作步骤
Mar 04 PHP
PHP无限分类(树形类)的深入分析
Jun 02 PHP
微信支付PHP SDK之微信公众号支付代码详解
Dec 09 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
Aug 15 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 09 PHP
php学习笔记之字符串常见操作总结
Jul 16 PHP
Yii 实现数据加密和解密
Mar 09 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(2)
2006/10/09 PHP
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
2013/09/10 Javascript
js的.innerHTML = ""IE9下显示有错误的解决方法
2013/09/16 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
AngularJs Modules详解及示例代码
2016/09/01 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
Python 制作糗事百科爬虫实例
2016/09/22 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
Python decimal模块使用方法详解
2020/06/08 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
美国工业用品采购网站:Zoro.com
2020/10/27 全球购物
婚礼答谢宴主持词
2014/03/14 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
社区禁毒工作方案
2014/06/02 职场文书
班级体育活动总结
2014/07/05 职场文书
初中同学会活动方案
2014/08/22 职场文书
国庆促销活动总结
2014/08/29 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书
话题作文之自信作文
2019/11/15 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL