묻고답하기

안녕하세요 지금 제가 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 남기남
elie2nd Textyle에서 InnoDS 적용 문의 입니다.  
파동수맨 제어판에 게시판이 없네요 [2] 2010.06.14 by Gekkou
교자 xe files폴더를 보니 처음보는것들이 생겼습니다~ file  
Akzin 즐겨찾기에 아이콘 이미지 어떻게 넣나요? [1] file 2010.06.14 by 네오랑
skjung 등록된 회원 전원에게 공지사항을 알리고 싶은데 방법이 있나요? [1] 2010.06.14 by 에비게일
바오밥T login창의 테두리가 깨져보입니다. 조치방법을 알려주시면 감사... [1] file 2010.06.14 by 김 송
유샤인 제로보드4에서 xe로 이전 중입니다. 제로보드4에서 올린 counter#로 시작하려면 어느 파일어디에 가서 이전 방문자수를 덛붙입니까? [1] 2010.06.14 by 백성찬
dreamblog 게시판 이미지 첨부가 안될때 해결방법은? [1] file 2010.06.14 by 백성찬
▶나인◀ 스마트폰 로그인가능하고 글쓰기도 가능하다고 들었는데.. [1] 2010.06.14 by 백성찬
일산사람 게시판 연결안되요 부탁 [1] file 2010.06.14 by 백성찬
arna 메인페이지 이후 페이지를 못 찾습니다 [1] 2010.06.14 by 백성찬
뷁같은 썸네일이 이상합니다. [1] file 2010.06.14 by 백성찬
Mr.일루 업데이트 후 썸네일이 없어졌습니다. [1] 2010.06.14 by 백성찬
난니생각만해 안녕하세요 제로보드를 관한 궁금중~~~ [4] 2010.06.14 by 난니생각만해
난니생각만해 모듈 관련 질문요  
KBG 755 에서 707(777)로 변경하면 500에러 뜨고요. 기냥 755로 놔두면... [1] 2010.06.14 by Gekkou
pharos.kr 게시판 오류 문의드립니다. [1] file 2010.06.14 by 쫑아빠™
아름다운사랑 갤러리게시판 제목길이 질문 [1] file 2010.06.15 by 구가
향수a 시안,템플릿 이정확히뭔가요.. 그리구 .이거적용못하나요. [1] 2010.06.15 by nikke
어쭈구리メ 이게시물에서 신고버튼을 누르면....  
이주희77 코어깔았는데 서비스관리에서 게시판이안보여요ㅠㅠ게시판나오게하려면 모듈깔아야한다는데 헤메고잇습니다 알려주세요 ㅠㅠ  
일산사람 XE는 게시판 모듈이 없나요 [1] 2010.06.15 by 앙띠2
가자아자 flv파일 동영상이 깨집니다  
포장지 레이아웃 하나로 여러 페이지마다 다르게 설정이 가능한가요? [1] 2010.06.15 by 느까끼
꾹이 글/댓글 에디터 좀 간편하고 유용한걸로 변환할수 없나요?  
종명종명 게시판 확장변수에서 항목나누기 가능한가요?  
.ㅣ쁜이 팝업창띄우는 방법좀....ㅠ [1] 2010.06.15 by 오르막
rosmin 도메인 포워딩 질문입니다.. [1] 2010.06.15 by 백성찬
이태배기 파일올리기 [1] 2010.06.15 by 백성찬
지우529 XE 지우고 새로깔기를 할때 [1] 2010.06.15 by 백성찬