묻고답하기

안녕하세요 지금 제가 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 남기남
허브소년 로그인 문제 xe_session. [1] 2008.12.27 by 백성찬
Jiyoung540 현재위치 공백 없애려면... [2] 2008.12.27 by Jiyoung540
roalroalroal xe 1.0.6 사용자입니다. [9] 2008.12.27 by 백성찬
simlogo 홈페이지에 게시판 넣는 법좀 알려주세요 [4] 2008.12.27 by simlogo
chris 파일첨부가 왜안될까요? 부탁드립니다. [2] 2008.12.27 by chris
엔듀 홈페이지 초보인데.... [3] 2008.12.27 by 현원
wis 제로보드4 사용자입니다..  
[武]적토마 게시판관련 질문있어요. ^^ [2] 2008.12.27 by [武]적토마
1004v 파일첨부 안되시는 분 보세요~~~ [8] file 2008.12.27 by U-Nus
영달이 1.1.3버전으로 업그래이드 시... [2] 2008.12.27 by 영달이
김지한438 zeroboard.com의 메인화면에 최근게시글 위젯 말이죠. [2] file 2008.12.27 by asgasg
구구다스 익스프레스 엔진 쓰는데 권한설정이.  
권석영314 회원 가입폼에서 소속그룹을 정할 수 있는 방법이 없을까요?? [4] 2009.06.01 by 焼酎
김영후924 메인페이지를 어떻게 설정하죠?? [3] 2008.12.27 by 김영후924
fly0204 기본모듈  
할배/정한교 왼쪽메뉴아래 부분을 권한에 따라 보이기 [1] file 2008.12.27 by 애치티
영달이 권한설정 및 파일 올리기... file  
김홍식 (급합니다..) 게시판 수정을 했더니.. [1] 2009.06.01 by 検索エンジン最適化
BY JIN 스크롤바...  
모자클럽 게시판 읽기권한 변경?