mysql db의 여유필드 데이터값 복사에 관한 질의 정보
mysql db의 여유필드 데이터값 복사에 관한 질의본문
db작업에 능하신분의 도움글을 부탁드립니다. ^^ ;;
아래 질문의 쿼리문을 파일형식으로 만들어서
일괄적으로 처리하고자 하는게 목적입니다.
일괄적으로 처리하고자 하는게 목적입니다.
질문이 서툴러서 이해가 좀 어려울수도 있으니 양해부탁드립니다.
-------------------------------------------------
질문 1
-------------------------------------------------
- 같은테이블내에서 필드값 복사
질문 1
-------------------------------------------------
- 같은테이블내에서 필드값 복사
1. 테이블명 : g4_write_board01
- 여유필드 : wr_2 (데이터값이 들어있는 필드)
- 여유필드 : wr_5 (비어있는 필드)
g4_write_board01 이라는 게시판이 있습니다. (게시물 약 100여개 정도)
해당 게시판의 wr_2 의 여유필드를 사용하여 그곳에 간단한 데이터값을 넣어둔 상태입니다.
그런데 스킨의 수정과정에서... 사정이 생겨서 ....
모든 게시물의 wr_2의 값을 wr_5 필드로 일괄적으로 모두 옮기(or 복사)려고 합니다.
- 여유필드 : wr_2 (데이터값이 들어있는 필드)
- 여유필드 : wr_5 (비어있는 필드)
g4_write_board01 이라는 게시판이 있습니다. (게시물 약 100여개 정도)
해당 게시판의 wr_2 의 여유필드를 사용하여 그곳에 간단한 데이터값을 넣어둔 상태입니다.
그런데 스킨의 수정과정에서... 사정이 생겨서 ....
모든 게시물의 wr_2의 값을 wr_5 필드로 일괄적으로 모두 옮기(or 복사)려고 합니다.
mysql 접속상태에서 그냥...
mysql> update gr_write_board01 set wr_2 = wr_5;
라고 하면 되지만, 이걸 파일형태로 만들어서 필요할때마다 불러서 사용하려고 하는데
쿼리구문을 어떤식으로 만들어야 할지 모르겠네요.
라고 하면 되지만, 이걸 파일형태로 만들어서 필요할때마다 불러서 사용하려고 하는데
쿼리구문을 어떤식으로 만들어야 할지 모르겠네요.
-------------------------------------------------
질문 2
-------------------------------------------------
- 확장필드의 값을 각각의 여유필드값으로 다시 넣기
참고)
여유필드란 ... wr_1 ~ wr_10 을 지칭하고
확장필드란 ... 여유필드중에서 다시 확장하여 여러개의 값을 처리하기 위해 쪼개둔 필드를 말함.
1. 테이블명 : g4_write_board02
- 여유필드 : wr_9 (확장필드3개의 값이 모두 들어있는 필드)
- 여유필드 : wr_6 (비어있는 필드 / ext9_01 값을 옮길 필드)
- 여유필드 : wr_7 (비어있는 필드 / ext9_02 값을 옮길 필드)
- 여유필드 : wr_8 (비어있는 필드 / ext9_02 값을 옮길 필드)
g4_write_board02 테이블에 입력해야하는 값이 많아서
wr_9의 여유필드를 다시 쪼개어 ext9_01, ext9_02, ext9_03 으로 3개를 만든뒤,
글등록시 '확장필드' 형식으로 값을 입력받았습니다.
wr_9의 여유필드를 다시 쪼개어 ext9_01, ext9_02, ext9_03 으로 3개를 만든뒤,
글등록시 '확장필드' 형식으로 값을 입력받았습니다.
그리고 그렇게 입력받은 값은 wr_9 필드에 저장될때, '|'자로 구분하여
입력된 상태입니다.
예를 들어 '확장필드'에 입력받은 값이 아래와 같다고 할때...
ext9_01 = '자동차';
ext9_02 = '택시';
ext9_03 = '버스';
'wr_9 필드'에는 아래와 같이 저장이 됩니다.
wr_9의 값 -> '자동차|택시|버스'
질문입니다.
g4_write_board02 라는 테이블 안에서
wr_9 여유필드에 들어있는 값인 확장필드(ext9_01, ext9_02, ext9_03)의 3개값을
각각의 여유필드 wr_6, wr_7, wr_8 값으로 다시 분리해서
입력처리를 하고싶습니다.
특정한개의 값이 아니라, 테이블 내의 게시물 모두를 일괄적으로 처리하려고 합니다.
이 경우에는 파일형식으로 mysql 쿼리구문을 만들어서 처리를 해야 할거 같은데
방법을 모르겠습니다.
방법을 모르겠습니다.
나름대로 최대한 풀어서 적긴했는데... -_- ;;
질문을 이해한 고수분들중에 도움글을 좀 요청드립니다.
질문을 이해한 고수분들중에 도움글을 좀 요청드립니다.
P.S;
1번 질문의 경우는 그냥 동일한 테이블내에서
특정필드값 전체를 특정필드값으로 복사OR이동하면 되는거고
특정필드값 전체를 특정필드값으로 복사OR이동하면 되는거고
2번 질문의 경우는 좀 복잡하게도
'|' 구분자로 표시하여 들어있는 특정필드의 값을
3개의 필드값에 분리해서 넣는 방법에 대한 문의 입니다.
'|' 구분자로 표시하여 들어있는 특정필드의 값을
3개의 필드값에 분리해서 넣는 방법에 대한 문의 입니다.
스킨변경시, 수정을 가해야 할경우 꼭 필요한 팁이라서 꼭 좀 도와주시길 요청합니다.
댓글 전체

일단 백업부터 하세요. 테스트는 안 해보았으나 만일에 사태를 위해서.

질문1
<?
// 하나의 테이블을 전체 뽑고...
$sql = " select * from g4_write_board01 order by wr_id asc ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
// wr_5에 값이 없을 때 출력
if ($row[wr_id] && !$row[wr_5]) {
// 업데이트
$sql2 = " update g4_write_board01 set wr_5 = '$row[$wr_2]' where wr_id = '$row[wr_id]' ";
sql_query($sql2);
} // wr_5 값 없을 때 닫고
} // 전체 for 닫고
?>
<?
// 하나의 테이블을 전체 뽑고...
$sql = " select * from g4_write_board01 order by wr_id asc ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
// wr_5에 값이 없을 때 출력
if ($row[wr_id] && !$row[wr_5]) {
// 업데이트
$sql2 = " update g4_write_board01 set wr_5 = '$row[$wr_2]' where wr_id = '$row[wr_id]' ";
sql_query($sql2);
} // wr_5 값 없을 때 닫고
} // 전체 for 닫고
?>

질문2
<?
// 하나의 테이블을 전체 뽑고...
$sql = " select * from g4_write_board02 order by wr_id asc ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
// wr_6에 값이 없을 때 출력
if ($row[wr_id] && !$row[wr_6]) {
// 분류를 구분
$arr = explode(",", $row[wr_9]); // 구분자가 , 로 되어 있음
//for ($j=0; $j<count($arr); $j++) {
for ($j=0; $j<3; $j++) {
// 첫번째
if ($j == '0') {
$wr_6 = $arr[0];
echo $wr_6." |";
// 쪼갠거 첫번째 wr_6에 업데이트
$sql2 = " update g4_write_board02 set wr_6 = '$wr_6' where wr_id = '$row[wr_id]' ";
sql_query($sql2);
}
// 두번째
if ($j == '1') {
$wr_7 = $arr[1];
echo $wr_7." |";
// 쪼갠거 두번째 wr_7에 업데이트
$sql3 = " update g4_write_board02 set wr_7 = '$wr_7' where wr_id = '$row[wr_id]' ";
sql_query($sql3);
}
// 세번째
if ($j == '2') {
$wr_8 = $arr[2];
echo $wr_8." | ";
echo $row[wr_id]."<p>";
// 쪼갠거 세번째 wr_8에 업데이트
$sql4 = " update g4_write_board02 set wr_8 = '$wr_8' where wr_id = '$row[wr_id]' ";
sql_query($sql4);
}
} // 쪼갠거 닫고
} // wr_6 값 없을 때 닫고
} // 전체 for 닫고
?>
<?
// 하나의 테이블을 전체 뽑고...
$sql = " select * from g4_write_board02 order by wr_id asc ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
// wr_6에 값이 없을 때 출력
if ($row[wr_id] && !$row[wr_6]) {
// 분류를 구분
$arr = explode(",", $row[wr_9]); // 구분자가 , 로 되어 있음
//for ($j=0; $j<count($arr); $j++) {
for ($j=0; $j<3; $j++) {
// 첫번째
if ($j == '0') {
$wr_6 = $arr[0];
echo $wr_6." |";
// 쪼갠거 첫번째 wr_6에 업데이트
$sql2 = " update g4_write_board02 set wr_6 = '$wr_6' where wr_id = '$row[wr_id]' ";
sql_query($sql2);
}
// 두번째
if ($j == '1') {
$wr_7 = $arr[1];
echo $wr_7." |";
// 쪼갠거 두번째 wr_7에 업데이트
$sql3 = " update g4_write_board02 set wr_7 = '$wr_7' where wr_id = '$row[wr_id]' ";
sql_query($sql3);
}
// 세번째
if ($j == '2') {
$wr_8 = $arr[2];
echo $wr_8." | ";
echo $row[wr_id]."<p>";
// 쪼갠거 세번째 wr_8에 업데이트
$sql4 = " update g4_write_board02 set wr_8 = '$wr_8' where wr_id = '$row[wr_id]' ";
sql_query($sql4);
}
} // 쪼갠거 닫고
} // wr_6 값 없을 때 닫고
} // 전체 for 닫고
?>
리플감사합니다. 근데..둘다 안되는군요... -_- ;;
그리고...
sql_query, sql_fetch_array 같은건 '그누보드'내에서 정의되어 사용되는것으로 알고있습니다.
일반 파일에서 쿼리문을 만들어 실행시키려면 ...
<?
$host = 'localhost'; //호스트
$user = 'db명';
$password = '패스워드';
$db = '계정명';
$con = mysql_connect($host, $user ,$password);
mysql_select_db($db,$con);
?>
위와 함께....
sql_query -> mysql_query
sql_fetch_array -> mysql_fetch_row .... 이런식으로 바꿔줘야 하는거 같군요.
어쨋던 안되는군요~
그리고...
sql_query, sql_fetch_array 같은건 '그누보드'내에서 정의되어 사용되는것으로 알고있습니다.
일반 파일에서 쿼리문을 만들어 실행시키려면 ...
<?
$host = 'localhost'; //호스트
$user = 'db명';
$password = '패스워드';
$db = '계정명';
$con = mysql_connect($host, $user ,$password);
mysql_select_db($db,$con);
?>
위와 함께....
sql_query -> mysql_query
sql_fetch_array -> mysql_fetch_row .... 이런식으로 바꿔줘야 하는거 같군요.
어쨋던 안되는군요~

그누보드가 연결된 곳에 삽입하세요
1번
<?
$host = 'localhost'; //호스트
$user = 'db명';
$password = '패스워드';
$db = '계정명';
$con = mysql_connect($host, $user ,$password);
mysql_select_db($db,$con);
$sql = " update gr_write_board01 set wr_2 = wr_5 ";
mysql_query($sql);
?>
2번
<?
mysql 접속부분 위와 동일하니 생략
$sql = " select wr_id,wr_9 from g4_write_board02 order by wr_id asc ";
$result = mysql_query($sql);
for($i=0;$i<$row=mysql_fetch_array($result);$i++) {
$temp = explode("|",$row[wr_9]);
$sql = " update g4_write_board2 set wr_6 = '$temp[0]', wr_7 = '$temp[1]', wr_8 = '$temp[2]' where wr_id = '$row[wr_id]' ";
mysql_query($sql);
}
?>
이런식으로 하시면 됩니다. 골격은 위에꺼처럼 하시고 필요하신 내용은 더 추가하세요.
그럼...
<?
$host = 'localhost'; //호스트
$user = 'db명';
$password = '패스워드';
$db = '계정명';
$con = mysql_connect($host, $user ,$password);
mysql_select_db($db,$con);
$sql = " update gr_write_board01 set wr_2 = wr_5 ";
mysql_query($sql);
?>
2번
<?
mysql 접속부분 위와 동일하니 생략
$sql = " select wr_id,wr_9 from g4_write_board02 order by wr_id asc ";
$result = mysql_query($sql);
for($i=0;$i<$row=mysql_fetch_array($result);$i++) {
$temp = explode("|",$row[wr_9]);
$sql = " update g4_write_board2 set wr_6 = '$temp[0]', wr_7 = '$temp[1]', wr_8 = '$temp[2]' where wr_id = '$row[wr_id]' ";
mysql_query($sql);
}
?>
이런식으로 하시면 됩니다. 골격은 위에꺼처럼 하시고 필요하신 내용은 더 추가하세요.
그럼...
오~~ 잘됩니다.
원하는대로 깔끔하게 됐습니다. 감사합니다. '꿈꾸는 비행기'님~ ^^ ;;
하다보니 궁금한게 하나 더 생겼는데 혹~ 보시게 되면
추가 리플 한번만 더 부탁드리겠습니다.. 아래것도 해결되면 팁란에 올려둘 생각입니다.
스킨작업시 크게 도움이 될수 있는 팁이라서...꼭 좀 부탁드리겠습니다.
추가 궁금사항은...
위처럼, wr_9갑을 쪼개서 wr_6, wr_7, wr_8 로 나누어 저장한 뒤에
이걸 다시 합쳐서 한군데의 필드속(wr_9) 으로 넣으려면 구문이 어떻게 되는지요?
위를 예로 들었지만, 스킨을 확장하면서 ...
특정게시판에 wr_1, wr_2, wr_3, wr_4 이런식으로 여러군데 나누어져 들어있는 필드값을
하나의 필드값(예: wr_9) 안에 '|' 구분자를 이용해서 집어넣고
재작업을 해야할 경우가 생길때가 있습니다.
다른것도 그렇지만 db부분은 맹탕이라서... 이글 보시게 되면 한번더 부탁드립니다..꾸벅~
[질문] 여러군데 나눠진 여유필드값을 한개의 여유필드값속으로 '|' 구분자를 이용해 넣는방법
원하는대로 깔끔하게 됐습니다. 감사합니다. '꿈꾸는 비행기'님~ ^^ ;;
하다보니 궁금한게 하나 더 생겼는데 혹~ 보시게 되면
추가 리플 한번만 더 부탁드리겠습니다.. 아래것도 해결되면 팁란에 올려둘 생각입니다.
스킨작업시 크게 도움이 될수 있는 팁이라서...꼭 좀 부탁드리겠습니다.
추가 궁금사항은...
위처럼, wr_9갑을 쪼개서 wr_6, wr_7, wr_8 로 나누어 저장한 뒤에
이걸 다시 합쳐서 한군데의 필드속(wr_9) 으로 넣으려면 구문이 어떻게 되는지요?
위를 예로 들었지만, 스킨을 확장하면서 ...
특정게시판에 wr_1, wr_2, wr_3, wr_4 이런식으로 여러군데 나누어져 들어있는 필드값을
하나의 필드값(예: wr_9) 안에 '|' 구분자를 이용해서 집어넣고
재작업을 해야할 경우가 생길때가 있습니다.
다른것도 그렇지만 db부분은 맹탕이라서... 이글 보시게 되면 한번더 부탁드립니다..꾸벅~
[질문] 여러군데 나눠진 여유필드값을 한개의 여유필드값속으로 '|' 구분자를 이용해 넣는방법
도움이 되셨다니 다행이네요.
나눠진 필드 합치는 것도 방법은 거의 동일합니다.
<?
mysql 접속부분 위와 동일하니 생략
$sql = " select wr_id,wr_6,wr_7,wr_8 from g4_write_board02 order by wr_id asc ";
$result = mysql_query($sql);
for($i=0;$i<$row=mysql_fetch_array($result);$i++) {
$temp = $row[wr_6]."|".$row[wr_7]."|".$row[wr_8];
$sql = " update g4_write_board2 set wr_9 = '$temp' where wr_id = '$row[wr_id]' ";
mysql_query($sql);
}
?>
나눠진 필드 합치는 것도 방법은 거의 동일합니다.
<?
mysql 접속부분 위와 동일하니 생략
$sql = " select wr_id,wr_6,wr_7,wr_8 from g4_write_board02 order by wr_id asc ";
$result = mysql_query($sql);
for($i=0;$i<$row=mysql_fetch_array($result);$i++) {
$temp = $row[wr_6]."|".$row[wr_7]."|".$row[wr_8];
$sql = " update g4_write_board2 set wr_9 = '$temp' where wr_id = '$row[wr_id]' ";
mysql_query($sql);
}
?>
포인트가 정말~~ 아깝지 않은 팁입니다. ^^
많은 도움이 됐습니다. 감사합니다.
많은 도움이 됐습니다. 감사합니다.
만세!!
감사합니다.
상단링크는 여유필드에 입력된 데이터를 세분하게 옮기기 또는 합쳐서 복사하기...등등
차후 프로그램업데이트 또는 변경시에 기존게시판 필드 손안대고..
처리를 위한.. 필드 쪼개기
write.skin.php
.......................................................
최상단에 분활필드 지정
view sourceprint?01 <?
02 if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
03
04 // 제품명(건명)과 페이지수
05 $ex1_filed = explode("|",$write[wr_1]);
06 $ext1_00 = $ex1_filed[0];
07 $ext1_01 = $ex1_filed[1];
08 $ext1_02 = $ex1_filed[2];
09
10 ?>
내용입력부분에
view sourceprint?1 <input name='ext1_00' class=ed value='<?=$ext1_00?>' style="width:100%;">
2 <input name='ext1_01' class=ed value='<?=$ext1_01?>' style="width:100%;">
3 <input name='ext1_02' class=ed value='<?=$ext1_02?>' style="width:100%;">
view.skin.php
.......................................................
최상단에 불러올 분활필드 지정
view sourceprint?01 <?
02 if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
03
04 $ex1_filed = explode("|",$view[wr_1]);
05 $ext1_00 = $ex1_filed[0];
06 $ext1_01 = $ex1_filed[1];
07 $ext1_02 = $ex1_filed[2];
08
09 .......
10 $ex3_filed = explode("|",$view[wr_3]); //주소부분
11 $add_no = $ex3_filed[0] ."-". $ex3_filed[1];
12 $add = $ex3_filed[2] ." ". $ex3_filed[3];
13 ...........
불러올때는
view sourceprint?1 <?=$ext1_00?>
이런식으로 불러오면 된다
또는
조건을 달아줘서
view sourceprint?1 <?
2 if($ex3_filed[0]) echo "<span style=font-family:tahoma;font-size:8pt;>(".$add_no.")</span>";
3 if($ex3_filed[2]) echo " ".$add." ";
4 ?>
write_update.skin.php
.......................................................
에는
view sourceprint?01 <?
02 if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
03
04 // 담당자명 건명 페이지
05 $wr_1 = "$ext1_00|$ext1_01|$ext1_02|$ext1_03";
06 $sql1 = " update $write_table set wr_1 = '$wr_1' where wr_id = '$wr_id' ";
07 sql_query($sql1);
08
09 //주소2
10 $wr_3 = "$ext3_00|$ext3_01|$ext3_02|$ext3_03";
11 $sql3 = " update $write_table set wr_3 = '$wr_3' where wr_id = '$wr_id' ";
12 sql_query($sql3);
list.skin.php
.......................................................
주위 : 중간에 목록부분에 사용할 분활필드를 불러온다
view sourceprint?1 <!-- 목록 -->
2 <? for ($i=0; $i<count($list); $i++) {
3
4 $ex1_filed = explode("|",$list[$i][wr_1]);
5 $ext1_00 = $ex1_filed[0];
6 $ext1_01 = $ex1_filed[1];
7 $ext1_02 = $ex1_filed[2];
8
9 ?>
출력하고자 하는부분에 넣을것
view sourceprint?1 <?=$ext1_01?>
Tweet
차후 프로그램업데이트 또는 변경시에 기존게시판 필드 손안대고..
처리를 위한.. 필드 쪼개기
write.skin.php
.......................................................
최상단에 분활필드 지정
view sourceprint?01 <?
02 if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
03
04 // 제품명(건명)과 페이지수
05 $ex1_filed = explode("|",$write[wr_1]);
06 $ext1_00 = $ex1_filed[0];
07 $ext1_01 = $ex1_filed[1];
08 $ext1_02 = $ex1_filed[2];
09
10 ?>
내용입력부분에
view sourceprint?1 <input name='ext1_00' class=ed value='<?=$ext1_00?>' style="width:100%;">
2 <input name='ext1_01' class=ed value='<?=$ext1_01?>' style="width:100%;">
3 <input name='ext1_02' class=ed value='<?=$ext1_02?>' style="width:100%;">
view.skin.php
.......................................................
최상단에 불러올 분활필드 지정
view sourceprint?01 <?
02 if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
03
04 $ex1_filed = explode("|",$view[wr_1]);
05 $ext1_00 = $ex1_filed[0];
06 $ext1_01 = $ex1_filed[1];
07 $ext1_02 = $ex1_filed[2];
08
09 .......
10 $ex3_filed = explode("|",$view[wr_3]); //주소부분
11 $add_no = $ex3_filed[0] ."-". $ex3_filed[1];
12 $add = $ex3_filed[2] ." ". $ex3_filed[3];
13 ...........
불러올때는
view sourceprint?1 <?=$ext1_00?>
이런식으로 불러오면 된다
또는
조건을 달아줘서
view sourceprint?1 <?
2 if($ex3_filed[0]) echo "<span style=font-family:tahoma;font-size:8pt;>(".$add_no.")</span>";
3 if($ex3_filed[2]) echo " ".$add." ";
4 ?>
write_update.skin.php
.......................................................
에는
view sourceprint?01 <?
02 if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
03
04 // 담당자명 건명 페이지
05 $wr_1 = "$ext1_00|$ext1_01|$ext1_02|$ext1_03";
06 $sql1 = " update $write_table set wr_1 = '$wr_1' where wr_id = '$wr_id' ";
07 sql_query($sql1);
08
09 //주소2
10 $wr_3 = "$ext3_00|$ext3_01|$ext3_02|$ext3_03";
11 $sql3 = " update $write_table set wr_3 = '$wr_3' where wr_id = '$wr_id' ";
12 sql_query($sql3);
list.skin.php
.......................................................
주위 : 중간에 목록부분에 사용할 분활필드를 불러온다
view sourceprint?1 <!-- 목록 -->
2 <? for ($i=0; $i<count($list); $i++) {
3
4 $ex1_filed = explode("|",$list[$i][wr_1]);
5 $ext1_00 = $ex1_filed[0];
6 $ext1_01 = $ex1_filed[1];
7 $ext1_02 = $ex1_filed[2];
8
9 ?>
출력하고자 하는부분에 넣을것
view sourceprint?1 <?=$ext1_01?>
Tweet