묻고답하기

안녕하세요 지금 제가 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 남기남
아리선고 초보자 질문입니다.  
모르시 textyle 사이즈 조절... [1] file 2009.08.07 by 현상을 이론으로
초보거든요 exobud 페이지이동시 고정되게 소스좀 알려주세요 [1] 2009.08.07 by 현상을 이론으로
흑묘백묘 동영상 삽입문제 [1] file 2009.08.07 by 현상을 이론으로
진수짱 다시한번만 더 질문 드릴께요ㅠㅠ [2] 2009.08.07 by 김진수
chanhui 메일인증 서버 [1] 2009.08.07 by 현상을 이론으로
클럽다이 엑셀파일-> DB -> 이미지 게시판  
BCPT 파일첨부... 답답해 미치겠음 도와주세요 ㅠ.ㅠ  
전정경 기업홈피 제작시에..  
명용환 어드민 페이지 들어가러면 꼭 한번은 에러가 뜹니다  
청개굴이 업데이트 하고난후 정렬이 안되어 보이는 이유는..? [1] 2009.08.07 by 현상을 이론으로
도와주세요 XE 설치문제 [2] 2009.08.07 by sol
해돋이 게시판 list, webzine, gallery가 링크되지 않아요.. [2] 2009.08.07 by 찬이s
하늘7 접속자 수 스킨 위치 [1] file 2009.08.07 by 현상을 이론으로
지식창고★ 비밀번호 찾기 문제요^^ [1] 2009.08.07 by 찬이s
reform 윈도우8업데이트 [3] 2009.08.07 by 찬이s
쩡오 게시판에 이미지를 등록하면 오류가 생겨요~~ 해결방법 좀!! ㅠㅠ [3] file 2009.08.07 by 쩡오
민석파파 php5에서 업로드에 관련된 값..... [1] 2009.08.07 by sol
정호띠 로그인 위젯에 관한 질문입니다.  
마성의천사 현재 1.0.6 버전을 사용중에 있는데 업데이트를 하고 싶습니다.. [1] 2009.08.07 by HolyJohn
HolyJohn ZBXE 1.1 업그레이드 할 때...  
퐁퐁퐁퐁 예전 자유게시판에 유용한 글들이 없었습니까? [6] [1] 2009.08.07 by 퐁퐁퐁퐁
허동현임돠 xe project 는 뭘로 만들었나요.." 0 " ? [3] 2009.08.07 by 짜세맨
짜세맨 XE Project 레이아웃 문의  
박노열 메인 페이지의 이미지가 자주 사라집니다.  
테스696 게시판 상단에 내용을 넣으려면.. file  
kissuri 트랙백 주소에서 도메인/xe/xe ..식으로 중복되어 표기가 됩니다. [3] 2009.08.06 by beargene♂
beargene♂ Xe 게시물을 작성할 때 다른 글에 트랙백 보내는 기능이 있나요? [3] [1] 2009.08.06 by beargene♂
진수짱 [초보]질문드립니다.  
궁금이 질문드려요;