5. 레이아웃 모듈 설계
cq66 모드에서는 소위 분류가 더 많습니다.
어쨌든 결국 버전에 따라 직접 액세스할 수 있습니다.
레이아웃 기사에 접근하기 위해 기사 전체가 이 레이어에 의해 청킹이 완료됩니다
. 결합 후 다시 전송됩니다. 이 레이어의
분해를 참조하세요. 상위 레이어에서 전체- 텍스트 단위에서는 이 레이어와 관계없이 상위 레이어에서 병합 작업이 수행됩니다.
상위 계층 작업에 영향을 주지 않고 독립적인 인덱스를 생성할지 여부는 주로 하위 계층 데이터베이스 구조와 관련이 있으며
타당성, 효율성 요구 사항 등을 주로 고려합니다.
권한 확인은 어디서 하나요? 실제로 텔넷 서버 측에서는
및 cq66 클라이언트가 일반 사용자에게 특별한 명령 메뉴를 전혀 표시하지 않습니다. 물론 사용자는
직접 cq66 명령을 보낼 수 있습니다. 서버 측 아직 확인 중입니다. 하지만 아래에 있는 함수 모듈 레이어를 사용하지 말고
다시 확인해야 합니다. Class BoardManage {
private:
public:
// 분류 관련 작업
int GetClassNameInfo( int maxclass, char **classid,
char ** classname ); 카테고리 정보, 중국어 및 영어 이름.
int GetBoardName( int maxboards, char *classid,
char **boardname )
특정 카테고리, 일반 카테고리의 보드 정보를 반환하고, 직접 선택합니다.
from sboard
where boardclass == .... 특별한 카테고리에 대해서는 해당 표를 확인하세요. . . .
// 수정에는 포럼 관리자 이상의 권한이 필요합니다.
int NewClass( char * newclassname, int type )
새 카테고리, 일반 카테고리 또는 특수 카테고리를 생성합니다.
int DeleteClass( char * newclassname );
분류를 삭제하지만 캐스케이드하지 않습니다. 즉, 이 레이어는 일관성을 담당하지 않으며 상위 레이어는 해당 레이아웃
의 분류 정보를 다른 것으로 변경하는 일을 담당합니다. 카테고리 이름을 바꾸려면 먼저 카테고리를 삭제한 다음 생성하세요.
int AddClassBoard( const char *classname, char *newboardname)
이미 생성된 보드를 특정 카테고리에 추가하세요. 특히 특수 카테고리의 경우입니다. ,
효과는 adjustboardinfo와 동일합니다.
int DeleteClassBoard( const char *classname, char *boardname)
카테고리에서 특정 버전을 삭제하는 것도 특수 카테고리에 해당하며, 일반 카테고리에 대해서는 효과도
와 동일하며, 버전의 카테고리 속성은 비어 있을 수 있습니다. 즉, 어떤 카테고리에도 속하지 않습니다.
// 버전 정보와 관련된 작업입니다.
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 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.