ホームページ >バックエンド開発 >PHPチュートリアル >bbs.5isotoi5.org mysql に基づいた BBS デザイン (4)

bbs.5isotoi5.org mysql に基づいた BBS デザイン (4)

WBOY
WBOYオリジナル
2016-07-29 08:33:548393ブラウズ

5.レイアウトモジュールの設計
いわゆる分類は、CQ66 モードでは、ユーザーが自分の希望に従って分類できます
いずれにせよ、最終的にはバージョンに基づいて直接アクセスされます。
レイアウト記事へのアクセスは、保存時に記事全体がパラメータとして使用されます
上位レイヤーがブロック単位で送信すると、すべてのデータが上位に送信されます。結合後、パラメータはこの層に送信されます。
読み取り時に、この層はブロック単位でアクセスされます。
の結合作業は上位層で行われます。 、この層に関係なく。
上位層の動作に影響を与えずに独立したインデックスを作成するかどうかについては、主に下位層のデータベース構造に関連し、主に実現可能性、効率要件などを考慮します。
権限チェックはどこで行われますか?実際、Telnet サーバー側では、
および cq66 クライアントは通常のユーザーに特別なコマンド メニューをまったく表示しません。もちろん、ユーザーは
直接 cq66 コマンドを送信できます。チェックする。ただし、関数モジュール層を使用せずに再度チェック
するべきではありません。 Class BoardManage {
private:
public:
// 分類関連の操作
int GetClassNameInfo( int maxclass, char **classid,
char ** classname ); 分類情報、中国語名と英語名を返します。
int GetBoardName( int maxboards, char *classid,
char **boardname );
一般カテゴリの場合は、直接選択します。
sboard から
where boardclass == .... 特殊なカテゴリの場合は、ボード情報を返します。カテゴリ、対応するテーブルを検索します。 。 。 。 int newclass(char * newClassName、intタイプ);つまり、このレイヤーは一貫性に責任があり、上層は対応するレイアウトの分類情報を他のものに変更する責任があります。カテゴリの名前を変更するには、まずカテゴリを削除してから作成します。
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 が変更された場合は、対応するテーブルの名前も変更する必要があります。
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);
記事を削除してもマークが付けられるだけで、対応するテーブルはすぐには変更されません。
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);
タイトルに指定されたコンテンツが含まれるフォーラムの記事をクエリします。
}
抽象的な観点から見ると、返されたデータは最下層とは関係がないため、処理される必要がありますが、効率の観点からは、そうしません。データを複数回コピーしたくないのですが、一方で、領域解放の申請は上位層で完了する必要がありますか、それともこの層で完了する必要がありますか?注意しないと、メモリエラーが発生しやすくなります。
上記は、bbs.5isotoi5.org のコンテンツを含む、mysql (4) に基づく bbs.5isotoi5.org の bbs デザインを紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。