您的位置:首页网页设计PHP实例 → 基于mysql的bbs设计(四)

基于mysql的bbs设计(四)

时间:2004/11/7 3:25:00来源:本站整理作者:蓝点我要评论(0)

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 );

      查询版面上,标题中包含指定内容的文章。

  }

    参数的传递是一件比较讨厌的事,从抽象的角度,希望返回的数据与

  底层无关,所以应该加以处理,但从效率的角度,又不希望数据进行多次

  复制,另一方面,空间的申请释放,究竟是在上层中完成还是在本层中完成

  呢?一不小心,很容易有内存错误。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 我的php文件怎么打开_php运算符怎么写 php 如何生成静态页面的函数PHP生成图片缩略图PHP session常见问题集锦及解决办法PHP实现同步远程Mysql

人气排行 DEDE在文章列表文章没有缩略图的不显示图片php+mysq修改用户密码我的php文件怎么打开_如何打开php文件的办法FCKeditor的配置和使用方法使用dedecms建站教程PHP+Ajax实现分页技术图片存储与浏览一例Linux+Apache+PHP+MySQLPHP生成图片缩略图