묻고답하기

안녕하세요 지금 제가 Planet 모듈 사용하느데요 이걸 다른 프로그램이랑 연동하려면 스키마가 필요하데요

근데 어떻게 해야하는지 모르겠어요 





// 테이블 생성 schema 작성
            $table_name = $xml_obj->table->attrs->name;
            if($this->isTableExists($table_name)) return;
            $table_name = $this->prefix.$table_name;

            if(!is_array($xml_obj->table->column)) $columns[] = $xml_obj->table->column;
            else $columns = $xml_obj->table->column;

            foreach($columns as $column) {
                $name = $column->attrs->name;
                $type = $column->attrs->type;
                $size = $column->attrs->size;
                $notnull = $column->attrs->notnull;
                $primary_key = $column->attrs->primary_key;
                $index = $column->attrs->index;
                $unique = $column->attrs->unique;
                $default = $column->attrs->default;
                $auto_increment = $column->attrs->auto_increment;

                if($this->column_type[$type]=='INTEGER') $size = null;
                else if($this->column_type[$type]=='BIGINT') $size = null;
                else if($this->column_type[$type]=='BLOB SUB_TYPE TEXT SEGMENT SIZE 32') $size = null;
                else if($this->column_type[$type]=='VARCHAR' && !$size) $size = 256;

                $column_schema[] = sprintf('"%s" %s%s %s %s',
                    $name,
                    $this->column_type[$type],
                    $size?'('.$size.')':'',
                    is_null($default)?"":"DEFAULT '".$default."'",
                    $notnull?'NOT NULL':'');

                if($auto_increment) $auto_increment_list[] = $name;

                if($primary_key) $primary_list[] = $name;
                else if($unique) $unique_list[$unique][] = $name;
                else if($index) $index_list[$index][] = $name;
            }

            if(count($primary_list)) {
                $column_schema[] = sprintf("PRIMARY KEY(\"%s\")%s", implode("\",\"", $primary_list), "\n");
            }

            if(count($unique_list)) {
                foreach($unique_list as $key => $val) {
                    $column_schema[] = sprintf("UNIQUE(\"%s\")%s", implode("\",\"", $val), "\n");
                }
            }

            $schema = sprintf("CREATE TABLE \"%s\" (%s%s); \n", $table_name, "\n", implode($column_schema, ",\n"));

            $output = $this->_query($schema);
            if(!$this->transaction_started) @ibase_commit($this->fd);
            if(!$output) return false;

            if(count($index_list)) {
                foreach($index_list as $key => $val) {
                    // index name 크기가 31byte로 제한으로 index name을 넣지 않음
                    // Firebird에서는 index name을 넣지 않으면 "RDB$10"처럼 자동으로 이름을 부여함
                    // table을 삭제 할 경우 인덱스도 자동으로 삭제 됨

                    $schema = sprintf("CREATE INDEX \"\" ON \"%s\" (\"%s\");",
                            $table_name, implode($val, "\",\""));
                    $output = $this->_query($schema);
                    if(!$this->transaction_started) @ibase_commit($this->fd);
                    if(!$output) return false;
                }
            }

            foreach($auto_increment_list as $increment) {
                $schema = sprintf('CREATE GENERATOR GEN_%s_ID;', $table_name);
                $output = $this->_query($schema);
                if(!$this->transaction_started) @ibase_commit($this->fd);
                if(!$output) return false;

                // Firebird에서 auto increment는 generator를 만들어 insert 발생시 트리거를 실행시켜
                // generator의 값을 증가시키고 그값을 테이블에 넣어주는 방식을 사용함.
                // 아래 트리거가 auto increment 역할을 하지만 쿼리로 트리거 등록이 되지 않아 주석처리 하였음.
                // php 함수에서 generator 값을 증가시켜 주는 함수가 있어 XE에서는 굳이
                // auto increment를 사용 할 필요가 없어보임.
                /*
                $schema = 'SET TERM ^ ; ';
                $schema .= sprintf('CREATE TRIGGER "%s_BI" FOR "%s" ', $table_name, $table_name);
                $schema .= 'ACTIVE BEFORE INSERT POSITION 0 ';
                $schema .= sprintf('AS BEGIN IF (NEW."%s" IS NULL) THEN ', $increment);
                $schema .= sprintf('NEW."%s" = GEN_ID("GEN_%s_ID",1);', $increment, $table_name);
                $schema .= 'END^ SET TERM ; ^';

                $output = $this->_query($schema);
                if(!$output) return false;
                */
            }
       }


지금 소수 파일이 이건데요

스키마에 대해 설명이나 하는법좀 알려주세요


글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
은妃 트리메뉴 상위클릭하면 펼쳐지게 하고싶어요  
빈군 재설치를 잘못하여 기존의 첨부파일 링크가 다 끊어졌습니다 [1] 2010.06.16 by 구가
검프 로그인 시간 설정??  
fullmoonsway XE 최근글 위젯에서 비밀글 노출을 없애고싶습니다.  
수 호 가가라이브 채팅삽입 file  
청춘개똥 아이폰과 아이패드에서 글쓰기 가능한 시점이 언제일까요? [1] 2010.06.15 by xe-m
nyou8797 플래시이미지에 확장변수 (링크 url)적용하기  
센스티브 조용한 게시판 웹폰트 적용 질문 [1] 2010.06.15 by xe-m
바오밥T flash 동작안됩니다. 원인을 알려주시면 ...꾸벅 [1] file 2010.06.15 by 클라데스
희망1 제로보드 게시판 사용한 후 상단에 플래시 메뉴를 넣었는데요,  
치아왕 최근게시물 색상 및 스킨없이 설정하는법 file  
제인영 FAQ 스킨있나요?? [1] 2010.06.15 by 우리아기
초보임당 비로그인시에도 공지사항은 열람하게하기  
초보예요 비회원도 ''추천'' 기능 사용할 수 있게 하려면?  
지우529 XE 지우고 새로깔기를 할때 [1] 2010.06.15 by 백성찬
이태배기 파일올리기 [1] 2010.06.15 by 백성찬
rosmin 도메인 포워딩 질문입니다.. [1] 2010.06.15 by 백성찬
.ㅣ쁜이 팝업창띄우는 방법좀....ㅠ [1] 2010.06.15 by 오르막
종명종명 게시판 확장변수에서 항목나누기 가능한가요?  
꾹이 글/댓글 에디터 좀 간편하고 유용한걸로 변환할수 없나요?  
포장지 레이아웃 하나로 여러 페이지마다 다르게 설정이 가능한가요? [1] 2010.06.15 by 느까끼
가자아자 flv파일 동영상이 깨집니다  
일산사람 XE는 게시판 모듈이 없나요 [1] 2010.06.15 by 앙띠2
이주희77 코어깔았는데 서비스관리에서 게시판이안보여요ㅠㅠ게시판나오게하려면 모듈깔아야한다는데 헤메고잇습니다 알려주세요 ㅠㅠ  
어쭈구리メ 이게시물에서 신고버튼을 누르면....  
향수a 시안,템플릿 이정확히뭔가요.. 그리구 .이거적용못하나요. [1] 2010.06.15 by nikke
아름다운사랑 갤러리게시판 제목길이 질문 [1] file 2010.06.15 by 구가
pharos.kr 게시판 오류 문의드립니다. [1] file 2010.06.14 by 쫑아빠™
KBG 755 에서 707(777)로 변경하면 500에러 뜨고요. 기냥 755로 놔두면... [1] 2010.06.14 by Gekkou
난니생각만해 모듈 관련 질문요