ajax 베이직 게시판 글답변
분류
필수
분류를 선택하세요
분류1
분류2
분류3
이름
필수
비밀번호
필수
이메일
홈페이지
제목
필수
내용
필수
웹에디터 시작
> > > 그누보드4 를 업그레이드할때 디자인 등 새롭게 작업후 최종 게시글 이전하고자 할때 > 단순 이전이 아닌 리뉴얼의 경우에는 기존 그누보드4를 운영하면서 리뉴얼을 하게 됩니다. > 이때 새로운 게시판 및 설정 등을 모두 마무리한후 최종적으로 게시글을 이전하고자 할때 사용합니다. > > 가급적 게시판 추가되지 않은 상태에서 g4_import.php 를 사용해서 한번에 이전하는 것이 좋습니다. > 아래 내용은 부득이한 경우에만 사용하세요 > > 복사 대상은 게시글 , 첨부파일 , 새글 , 추천글 , 스크랩 입니다. > > > 2017-06-30 wr_trackback 필드가 그누보드4에서는 존재했으나, 그누보드5.0b13 부터 삭제되서 이것으로 인한 글 복사에 오류가 확인되었습니다. > 그누보드5의 게시판에 wr_trackback 필드를 추가하도록 변경했습니다. > > > 1. 그누보드4 설치 및 운영 > > > 2. 그누보드5 설치후 디자인 적용 및 게시판 설치 운영 > > > 3. 그누보드5 디자인 및 프로그램 작업 완료 > > > 4. 그누보드5 / g4_import.php 실행 > 회원 및 각종 데이타 복제됨 / 게시판은 이미 생성된 상태이므로 복제 안됨 > > > 5. 그누보드4 게시글을 복제하기 위해 아래 과정을 진행 > > > 6. 그누보드5 / g4_import_board.php 파일생성 > > <?php > include_once('./_common.php'); > include_once(G5_LIB_PATH.'/connect.lib.php'); > include_once(G5_LIB_PATH.'/outlogin.lib.php'); > > $g5['title'] = '그누보드4 DB 데이터 이전'; > include_once(G5_PATH.'/theme/basic/head.sub.php'); > > //if(get_session('tables_copied') == 'done') > // alert('DB 데이터 변환을 이미 실행하였습니다. 중복 실행시 오류가 발생할 수 있습니다.', G5_URL); > > if($is_admin != 'super') > alert('최고관리자로 로그인 후 실행해 주십시오.', G5_URL); > ?> > <link rel="stylesheet" href="<?php echo G5_URL; ?>/theme/basic/css/default.css?ver=<?php echo G5_CSS_VER; ?>"> > <style> > #g4_import p {padding:0 0 10px;line-height:1.8em} > #g4_import_frm {margin:20px 0 30px;padding:30px 0;border:1px solid #e9e9e9;background:#f5f8f9;text-align:center} > #g4_import_frm .frm_input {background-color:#fff !important} > #g4_import_frm .btn_submit {padding:0 10px;height:24px} > </style> > > <!-- 상단 시작 { --> > <div id="hd"> > <div id="hd_wrapper"> > > <div id="logo"> > <a href="<?php echo G5_URL ?>">/logo.jpg" alt="<?php echo $config['cf_title']; ?>"></a> > </div> > > <ul id="tnb"> > <?php if ($is_member) { ?> > <?php if ($is_admin) { ?> > <li><a href="<?php echo G5_ADMIN_URL ?>"><b>관리자</b></a></li> > <?php } ?> > <li><a href="<?php echo G5_BBS_URL ?>/member_confirm.php?url=<?php echo G5_BBS_URL ?>/register_form.php">정보수정</a></li> > <li><a href="<?php echo G5_BBS_URL ?>/logout.php">로그아웃</a></li> > <?php } else { ?> > <li><a href="<?php echo G5_BBS_URL ?>/register.php">회원가입</a></li> > <li><a href="<?php echo G5_BBS_URL ?>/login.php"><b>로그인</b></a></li> > <?php } ?> > <li><a href="<?php echo G5_BBS_URL ?>/qalist.php">1:1문의</a></li> > <li><a href="<?php echo G5_BBS_URL ?>/current_connect.php">접속자 <?php echo connect(); // 현재 접속자수 ?></a></li> > <li><a href="<?php echo G5_BBS_URL ?>/new.php">새글</a></li> > </ul> > </div> > </div> > > <hr> > > <div id="wrapper"> > <div id="container"> > <div id="container_title"><?php echo $g5['title'] ?></div> > > <div id="g4_import"> > <p> > 게시판 생성후 그룹과 게시글 자료만 복사하기 위해 실행합니다.<br> > </p> > <p>프로그램을 실행하시려면 그누보드4의 config.php 파일 경로를 입력하신 후 확인을 클릭해 주십시오.</p> > > <form name="fimport" method="post" action="./g4_import_board_run.php" onsubmit="return fimport_submit(this);"> > <div id="g4_import_frm"> > <label for="file_path">config.php 파일 경로</label> > <input type="text" name="file_path" id="file_path" required class="frm_input required"> > <input type="submit" value="확인" class="btn_submit"> > </div> > </form> > > <p> > 경로는 그누보드5 설치 루트를 기준으로 그누보드4의 config.php 파일의 상대경로입니다.<br> > 예를 들어 그누보드4를 웹루트에 설치하셨고 그누보드5를 g5라는 하위 폴더에 설치하셨다면 입력하실 경로는 ../config.php 입니다. > </p> > > </div> > > <script> > function fimport_submit(f) > { > return confirm('그누보드4의 DB 게시글 데이터를 이전하시겠습니까?'); > } > </script> > > </div> > </div> > > <script> > $(function() { > // 폰트 리사이즈 쿠키있으면 실행 > font_resize("container", get_cookie("ck_font_resize_rmv_class"), get_cookie("ck_font_resize_add_class")); > }); > </script> > > <?php include_once(G5_PATH.'/theme/basic/tail.sub.php'); ?> > > > 7. 그누보드5 / g4_import_board_run.php 파일생성 > > <?php > include_once('./_common.php'); > > ob_end_clean(); > > include_once(G5_LIB_PATH.'/connect.lib.php'); > include_once(G5_LIB_PATH.'/outlogin.lib.php'); > > set_time_limit ( 0 ); > ini_set('memory_limit', '50M'); > > $g5['title'] = '그누보드4 DB 데이터 이전'; > include_once(G5_PATH.'/theme/basic/head.sub.php'); > > if(empty($_POST)) > alert('올바른 방법으로 이용해 주십시오.', G5_URL); > > //if(get_session('tables_copied') == 'done') > // alert('DB 데이터 변환을 이미 실행하였습니다. 중복 실행시 오류가 발생할 수 있습니다.', G5_URL); > > if($is_admin != 'super') > alert('최고관리자로 로그인 후 실행해 주십시오.', G5_URL); > > $g4_config_file = trim($_POST['file_path']); > > if(!$g4_config_file) > alert('config.php 파일의 경로를 입력해 주십시오.'); > > $g4_config_file = preg_replace('#/config.php$#i', '', $g4_config_file).'/config.php'; > > if(!is_file($g4_config_file)) > alert('입력하신 경로에 config.php 파일이 존재하지 않습니다.'); > > $is_euckr = false; > ?> > <script> > // 새로고침 방지 > function noRefresh() > { > /* CTRL + N키 막음. */ > if ((event.keyCode == 78) && (event.ctrlKey == true)) > { > event.keyCode = 0; > return false; > } > /* F5 번키 막음. */ > if(event.keyCode == 116) > { > event.keyCode = 0; > return false; > } > } > > document.onkeydown = noRefresh ; > </script> > <link rel="stylesheet" href="<?php echo G5_URL; ?>/theme/basic/css/default.css?ver=<?php echo G5_CSS_VER; ?>"> > <style> > #g4_import_run {} > #g4_import_run ol {margin: 0;padding: 0 0 0 25px;border: 1px solid #E9E9E9;border-bottom: 0;background: #f5f8f9;list-style:none;zoom:1} > #g4_import_run li {padding:7px 10px;border-bottom:1px solid #e9e9e9} > #g4_import_run #run_msg {padding:30px 0;text-align:center} > </style> > > <!-- 상단 시작 { --> > <div id="hd"> > <div id="hd_wrapper"> > > <div id="logo"> > <a href="<?php echo G5_URL ?>">/logo.jpg" alt="<?php echo $config['cf_title']; ?>"></a> > </div> > > <ul id="tnb"> > <?php if ($is_member) { ?> > <?php if ($is_admin) { ?> > <li><a href="<?php echo G5_ADMIN_URL ?>"><b>관리자</b></a></li> > <?php } ?> > <li><a href="<?php echo G5_BBS_URL ?>/member_confirm.php?url=<?php echo G5_BBS_URL ?>/register_form.php">정보수정</a></li> > <li><a href="<?php echo G5_BBS_URL ?>/logout.php">로그아웃</a></li> > <?php } else { ?> > <li><a href="<?php echo G5_BBS_URL ?>/register.php">회원가입</a></li> > <li><a href="<?php echo G5_BBS_URL ?>/login.php"><b>로그인</b></a></li> > <?php } ?> > <li><a href="<?php echo G5_BBS_URL ?>/qalist.php">1:1문의</a></li> > <li><a href="<?php echo G5_BBS_URL ?>/current_connect.php">접속자 <?php echo connect(); // 현재 접속자수 ?></a></li> > <li><a href="<?php echo G5_BBS_URL ?>/new.php">새글</a></li> > </ul> > </div> > </div> > > <hr> > > <div id="wrapper"> > <div id="container"> > <div id="container_title"><?php echo $g5['title'] ?></div> > > <div id="g4_import_run"> > <ol> > <?php > flush(); > > // g4의 confing.php > require($g4_config_file); > > if(preg_replace('/[^a-z]/', '', strtolower($g4['charset'])) == 'euckr') > $is_euckr = true; > > // group table 복사 > $columns = sql_field_names($g5['group_table']); > > $sql = " select * from {$g4['group_table']} "; > $result = sql_query($sql); > for($i=0; $row=sql_fetch_array($result); $i++) { > if($is_euckr) > $row = array_map('iconv_utf8', $row); > > // 중복체크 > $sql2 = " select count(*) as cnt from {$g5['group_table']} where gr_id = '{$row['gr_id']}' "; > $row2 = sql_fetch($sql2); > if($row2['cnt']) > continue; > > $comma = ''; > $sql_common = ''; > > foreach($row as $key=>$val) { > if(!in_array($key, $columns)) > continue; > > $sql_common .= $comma . " $key = '".addslashes($val)."' "; > > $comma = ','; > } > > sql_query(" INSERT INTO {$g5['group_table']} SET $sql_common "); > } > > echo '<li>group table 복사</li>'.PHP_EOL; > unset($columns); > unset($fiels); > > // board 복사 > $columns = sql_field_names($g5['board_table']); > $sql = " select * from {$g4['board_table']} "; > $result = sql_query($sql); > for($i=0; $row=sql_fetch_array($result); $i++) { > if($is_euckr) > $row = array_map('iconv_utf8', $row); > > // 중복체크 > $sql2 = " select count(*) as cnt from {$g5['board_table']} where bo_table = '{$row['bo_table']}' "; > $row2 = sql_fetch($sql2); > > //if($row2['cnt']) > // continue; > > $comma = ''; > $sql_common = ''; > > foreach($row as $key=>$val) { > if(!in_array($key, $columns)) > continue; > > $sql_common .= $comma . " $key = '".addslashes($val)."' "; > > $comma = ','; > } > > sql_query(" INSERT INTO {$g5['board_table']} SET $sql_common "); > //echo "sql = INSERT INTO ".$g5['board_table']." SET ".$sql_common."<br>"; > > // 게시판 테이블 생성 > $bo_table = $row['bo_table']; > $file = file(G5_ADMIN_PATH.'/sql_write.sql'); > $sql = implode($file, "\n"); > > $create_table = $g5['write_prefix'] . $bo_table; > > $source = array('/__TABLE_NAME__/', '/;/'); > $target = array($create_table, ''); > $sql = preg_replace($source, $target, $sql); > > // 게시글 초기화 > $sql5 = " delete from $create_table "; > $result5 = sql_query($sql5); > > // 게시글 복사 > //if(sql_query($sql, FALSE)) { > $write_table = $g4['write_prefix'].$bo_table; > $columns2 = sql_field_names($create_table); > > $sql3 = " select * from $write_table "; > $result3 = sql_query($sql3); > > for($k=0; $row3=sql_fetch_array($result3); $k++) { > if($is_euckr) > $row3 = array_map('iconv_utf8', $row3); > > $comma3 = ''; > $sql_common3 = ''; > > foreach($row3 as $key=>$val) { > //if(!in_array($key, $columns2)) > // continue; > > $sql_common3 .= $comma3 . " $key = '".addslashes($val)."' "; > $comma3 = ','; > } > > // wr_trackback 필드 추가 > sql_query("alter table $create_table add `wr_trackback` varchar(255) NOT NULL default '' AFTER `wr_link2_hit` ", false); > > // 첨부파일개수 > $wr_id = $row3['wr_id']; > $sql4 = " select count(*) as cnt from {$g4['board_file_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' "; > $row4 = sql_fetch($sql4); > > //echo "sql 4 = ". $sql4 ."<br>"; > > $sql_common3 .= " , wr_file = '{$row4['cnt']}' "; > > sql_query(" INSERT INTO $create_table SET $sql_common3 "); > } > > echo '<li>'.str_replace(G5_TABLE_PREFIX.'write_', '', $create_table).' 게시글 복사</li>'; > //} > } > > unset($columns); > unset($fiels); > > // 그외 테이블 복사 > $tables = array('board_file'); > //$tables = array('board_file', 'board_new', 'board_good', 'mail', 'memo', 'group_member', 'auth', 'popular', 'poll', 'poll_etc', 'scrap'); > > foreach($tables as $table) { > $columns = sql_field_names($g5[$table.'_table']); > > $src_table = $g4[$table.'_table']; > $dst_table = $g5[$table.'_table']; > $sql = " select * from $src_table "; > $result = sql_query($sql); > for($i=0; $row=sql_fetch_array($result); $i++) { > if($is_euckr) > $row = array_map('iconv_utf8', $row); > > $comma = ''; > $sql_common = ''; > > foreach($row as $key=>$val) { > //if(!in_array($key, $columns)) > // continue; > > $sql_common .= $comma . " $key = '".addslashes($val)."' "; > > $comma = ','; > } > > $result2 = sql_query(" INSERT INTO $dst_table SET $sql_common "); > //$result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ", false); > > //if(!$result2) > // continue; > } > > echo '<li>'.$table.' table 복사</li>'.PHP_EOL; > } > > // 그외 테이블 복사 > $tables = array('board_new', 'board_good', 'scrap'); > //$tables = array('board_file', 'board_new', 'board_good', 'mail', 'memo', 'group_member', 'auth', 'popular', 'poll', 'poll_etc', 'scrap'); > > foreach($tables as $table) { > $columns = sql_field_names($g5[$table.'_table']); > > $src_table = $g4[$table.'_table']; > $dst_table = $g5[$table.'_table']; > $sql = " select * from $src_table "; > $result = sql_query($sql); > for($i=0; $row=sql_fetch_array($result); $i++) { > if($is_euckr) > $row = array_map('iconv_utf8', $row); > > $comma = ''; > $sql_common = ''; > > foreach($row as $key=>$val) { > //if(!in_array($key, $columns)) > // continue; > > $sql_common .= $comma . " $key = '".addslashes($val)."' "; > > $comma = ','; > } > > $result2 = sql_query(" delete from $dst_table "); > $result2 = sql_query(" INSERT INTO $dst_table SET $sql_common "); > //$result2 = sql_query(" INSERT INTO $dst_table SET $sql_common ", false); > > //if(!$result2) > // continue; > } > > echo '<li>'.$table.' table 복사</li>'.PHP_EOL; > } > > unset($columns); > unset($fiels); > > echo '</ol>'.PHP_EOL; > > echo '<div id="run_msg">그누보드4 DB 게시글 데이터 이전 완료</div>'.PHP_EOL; > > // 실행완료 세션에 기록 > set_session('tables_copied', 'done'); > ?> > </div> > </div> > </div> > > <script> > $(function() { > // 폰트 리사이즈 쿠키있으면 실행 > font_resize("container", get_cookie("ck_font_resize_rmv_class"), get_cookie("ck_font_resize_add_class")); > }); > </script> > > <?php include_once(G5_PATH.'/'.G5_THEME_DIR.'/basic/tail.sub.php'); ?> > > > 8. 복제된 게시글의 번호가 - 번호로 보이는 경우에는 게시판 설정의 조회수 초기화를 클릭후 실행하면 정상적으로 변경됩니다. > >
웹 에디터 끝
링크 #1
링크 #2
파일 #1
파일 #2
자동등록방지
숫자음성듣기
새로고침
자동등록방지 숫자를 순서대로 입력하세요.
취소
작성완료