여분필드 확장시 board_form_update.php 수정 문제 정보
여분필드 확장시 board_form_update.php 수정 문제
관련링크
첨부파일
본문
먼저, 다음 조건을 살펴주십시오.
1. 관리자화면의 <게시판 수정>에서 여분필드 자리를 20개까지 확장했습니다.
→ adm/board_form.php
※ 테이블에서 필드 추가 없이 여분필드 자리만 확장한 것입니다.
2. 그리고, 여분필드 추가가 필요한 게시판만 테이블에서 필드를 추가하려고 합니다.
→ 예를 들어, 게시판 A 테이블에서는 기존처럼 여분필드를 10개 상태를 유지하고,
게시판 B 테이블에서는 필드를 10개 더 추가합니다.
3. 즉, phpmyadmin에서
모든 g4_write_{테이블명} 에 wr_ 필드가 20개로 확장된 것은 아닙니다.
테이블별로 여분필드 확장이 필요한 테이블에서는 20개로 확장하고,(wr_1 ~ wr_20)
필요하지 않은 테이블은 그누보드 기본 10개만 사용합니다.(wr_1 ~ wr_10)
4. 여분필드의 용도는 board skin이 아니라서,
write.skin, write_update.skin 등에서 수정할 사항은 아닙니다.
board_form(게시판 수정)에서 확장된 여분필드에 입력한 값이
board_form_update.php에 반영되어야 하는 것입니다.
-------------------------------------------------------------------------------------
위와 같은 상황을 전제로,
특정게시판 수정에서 추가된 여분필드에 넣은 입력값이 반영되게 하려면,
board_form_update.php를 어떻게 수정해야 할까요?
------------------------------------------------------------------------
(35라인 부근)
1) $sql_common 에서
bo_1_subj = '$_POST[bo_1_subj]',
bo_2_subj = '$_POST[bo_2_subj]',
bo_3_subj = '$_POST[bo_3_subj]',
bo_4_subj = '$_POST[bo_4_subj]',
bo_5_subj = '$_POST[bo_5_subj]',
bo_6_subj = '$_POST[bo_6_subj]',
bo_7_subj = '$_POST[bo_7_subj]',
bo_8_subj = '$_POST[bo_8_subj]',
bo_9_subj = '$_POST[bo_9_subj]',
bo_10_subj = '$_POST[bo_10_subj]',
bo_1 = '$_POST[bo_1]',
bo_2 = '$_POST[bo_2]',
bo_3 = '$_POST[bo_3]',
bo_4 = '$_POST[bo_4]',
bo_5 = '$_POST[bo_5]',
bo_6 = '$_POST[bo_6]',
bo_7 = '$_POST[bo_7]',
bo_8 = '$_POST[bo_8]',
bo_9 = '$_POST[bo_9]',
bo_10 = '$_POST[bo_10]' ";
자리에 bo_11_subj ~ bo_20_subj, bo_11 ~ bo_20 까지를 추가하려고 해도,
모든 게시판 테이블에 wr_ 필드를 20개까지 추가한 것이 아니기 때문에
오류가 발생하는 것 같습니다.
2) 한편, 여분필드 갯수 표시 자리에는
(274 라인 부근)
for ($i=1; $i<=20; $i++) {
if ($_POST["chk_{$i}"]) {
$s .= " , bo_{$i}_subj = '".$_POST["bo_{$i}_subj"]."' ";
$s .= " , bo_{$i} = '".$_POST["bo_{$i}"]."' ";
기존 10개를 위와 같이 20으로 수정해 주었습니다.
------------------------------------------------------------------------
여분필드를 20개로 확장한 게시판도 있고, 확장하지 않은 게시판도 있는 상황에서
특정게시판이 여분필드를 20개 모두 사용한다면,
<게시판수정> board_form.php가 업데이트되는
board_form_update.php를 어떻게 수정해야 할까요?
- 일단 모든 g4_wrte_{테이블} 의 필드를 20개로 확장해 놓아야 하는 것인지요?
- 만약 그렇다면 board_form_update.php를 어떻게 수정해 줘야 할까요?
- 혹은 모든 g4_wrte_{테이블} 의 필드를 20개로 확장하지 않고
필요한 테이블만 확장한 채, board_form_update.php를 수정하는 방법은 없을까요?
고수님들의 조언을 부탁드립니다.
새해 복 많이 받으시기 바랍니다. (__)
* 첨부한 파일은 그누보드 기본 _board_form_update.php_ 입니다.
* 구체적인 상황 이해를 위해 링크를 걸었습니다. 참고해 주십시오.
1. 관리자화면의 <게시판 수정>에서 여분필드 자리를 20개까지 확장했습니다.
→ adm/board_form.php
※ 테이블에서 필드 추가 없이 여분필드 자리만 확장한 것입니다.
2. 그리고, 여분필드 추가가 필요한 게시판만 테이블에서 필드를 추가하려고 합니다.
→ 예를 들어, 게시판 A 테이블에서는 기존처럼 여분필드를 10개 상태를 유지하고,
게시판 B 테이블에서는 필드를 10개 더 추가합니다.
3. 즉, phpmyadmin에서
모든 g4_write_{테이블명} 에 wr_ 필드가 20개로 확장된 것은 아닙니다.
테이블별로 여분필드 확장이 필요한 테이블에서는 20개로 확장하고,(wr_1 ~ wr_20)
필요하지 않은 테이블은 그누보드 기본 10개만 사용합니다.(wr_1 ~ wr_10)
4. 여분필드의 용도는 board skin이 아니라서,
write.skin, write_update.skin 등에서 수정할 사항은 아닙니다.
board_form(게시판 수정)에서 확장된 여분필드에 입력한 값이
board_form_update.php에 반영되어야 하는 것입니다.
-------------------------------------------------------------------------------------
위와 같은 상황을 전제로,
특정게시판 수정에서 추가된 여분필드에 넣은 입력값이 반영되게 하려면,
board_form_update.php를 어떻게 수정해야 할까요?
------------------------------------------------------------------------
(35라인 부근)
1) $sql_common 에서
bo_1_subj = '$_POST[bo_1_subj]',
bo_2_subj = '$_POST[bo_2_subj]',
bo_3_subj = '$_POST[bo_3_subj]',
bo_4_subj = '$_POST[bo_4_subj]',
bo_5_subj = '$_POST[bo_5_subj]',
bo_6_subj = '$_POST[bo_6_subj]',
bo_7_subj = '$_POST[bo_7_subj]',
bo_8_subj = '$_POST[bo_8_subj]',
bo_9_subj = '$_POST[bo_9_subj]',
bo_10_subj = '$_POST[bo_10_subj]',
bo_1 = '$_POST[bo_1]',
bo_2 = '$_POST[bo_2]',
bo_3 = '$_POST[bo_3]',
bo_4 = '$_POST[bo_4]',
bo_5 = '$_POST[bo_5]',
bo_6 = '$_POST[bo_6]',
bo_7 = '$_POST[bo_7]',
bo_8 = '$_POST[bo_8]',
bo_9 = '$_POST[bo_9]',
bo_10 = '$_POST[bo_10]' ";
자리에 bo_11_subj ~ bo_20_subj, bo_11 ~ bo_20 까지를 추가하려고 해도,
모든 게시판 테이블에 wr_ 필드를 20개까지 추가한 것이 아니기 때문에
오류가 발생하는 것 같습니다.
2) 한편, 여분필드 갯수 표시 자리에는
(274 라인 부근)
for ($i=1; $i<=20; $i++) {
if ($_POST["chk_{$i}"]) {
$s .= " , bo_{$i}_subj = '".$_POST["bo_{$i}_subj"]."' ";
$s .= " , bo_{$i} = '".$_POST["bo_{$i}"]."' ";
기존 10개를 위와 같이 20으로 수정해 주었습니다.
------------------------------------------------------------------------
여분필드를 20개로 확장한 게시판도 있고, 확장하지 않은 게시판도 있는 상황에서
특정게시판이 여분필드를 20개 모두 사용한다면,
<게시판수정> board_form.php가 업데이트되는
board_form_update.php를 어떻게 수정해야 할까요?
- 일단 모든 g4_wrte_{테이블} 의 필드를 20개로 확장해 놓아야 하는 것인지요?
- 만약 그렇다면 board_form_update.php를 어떻게 수정해 줘야 할까요?
- 혹은 모든 g4_wrte_{테이블} 의 필드를 20개로 확장하지 않고
필요한 테이블만 확장한 채, board_form_update.php를 수정하는 방법은 없을까요?
고수님들의 조언을 부탁드립니다.
새해 복 많이 받으시기 바랍니다. (__)
* 첨부한 파일은 그누보드 기본 _board_form_update.php_ 입니다.
* 구체적인 상황 이해를 위해 링크를 걸었습니다. 참고해 주십시오.
댓글 전체

$board 안에 bo_11~bo_20 이 있을때만 $sql_common 에 추가하심 될껍니다.^^
for ($i=11;$i<=20;$i++) {
if (array_key_exists("bo_$i",$board)) {
$sql_common.=",bo_$i= '".$_POST["bo_$i"]."',bo_$i"."_subj= '".$_POST["bo_$i"."_subj"]."' ";
}
}
그리고 하단의 이부분도 바뀌어야 겠습니다.^^
우선은 오류가 나도 무시하게 하구요..
실제로는 각 테이블의 설정별로 board 갯수를 확인한다음 업데이트 해야하는데..
다음분께 패스하겠습니다..
for ($i=1; $i<=20; $i++) {
if ($_POST["chk_{$i}"]) {
$sql = " update $g4[board_table]
set bo_table = bo_table
bo_{$i}_subj = '".$_POST["bo_{$i}_subj"]."',
bo_{$i} = '".$_POST["bo_{$i}"]."'
where gr_id = '$gr_id' ";
sql_query($sql,false); //오류가 있어도 무시하는거죠..
}
}
}
for ($i=11;$i<=20;$i++) {
if (array_key_exists("bo_$i",$board)) {
$sql_common.=",bo_$i= '".$_POST["bo_$i"]."',bo_$i"."_subj= '".$_POST["bo_$i"."_subj"]."' ";
}
}
그리고 하단의 이부분도 바뀌어야 겠습니다.^^
우선은 오류가 나도 무시하게 하구요..
실제로는 각 테이블의 설정별로 board 갯수를 확인한다음 업데이트 해야하는데..
다음분께 패스하겠습니다..
for ($i=1; $i<=20; $i++) {
if ($_POST["chk_{$i}"]) {
$sql = " update $g4[board_table]
set bo_table = bo_table
bo_{$i}_subj = '".$_POST["bo_{$i}_subj"]."',
bo_{$i} = '".$_POST["bo_{$i}"]."'
where gr_id = '$gr_id' ";
sql_query($sql,false); //오류가 있어도 무시하는거죠..
}
}
}

로빈아빠님 답변 감사합니다. ^^
그런데 잘 적용이 안되네요.
기존 여분필드에서만 업데이트가 되고 있습니다.
for ($i=11;$i<=20;$i++) {
if (array_key_exists("bo_$i",$board)) {
$sql_common.=",bo_$i= '".$_POST["bo_$i"]."',bo_$i"."_subj= '".$_POST["bo_$i"."_subj"]."' ";
}
}
부분을 $sql_common 에 추가하는 데서 제가 잘못한 것 같은데요.
$sql_common 구문(" ~ ";)이 끝나고 나서, 말씀하신 소스를 바로 밑에 붙여넣기했는데
제가 잘못한 것 같아요.
음, 좋은 답변 주셨는데 고민끙끙입니다.
이래서 초보는 기초부터 제대로 공부해야 하는가 봅니다.^^
그런데 잘 적용이 안되네요.
기존 여분필드에서만 업데이트가 되고 있습니다.
for ($i=11;$i<=20;$i++) {
if (array_key_exists("bo_$i",$board)) {
$sql_common.=",bo_$i= '".$_POST["bo_$i"]."',bo_$i"."_subj= '".$_POST["bo_$i"."_subj"]."' ";
}
}
부분을 $sql_common 에 추가하는 데서 제가 잘못한 것 같은데요.
$sql_common 구문(" ~ ";)이 끝나고 나서, 말씀하신 소스를 바로 밑에 붙여넣기했는데
제가 잘못한 것 같아요.
음, 좋은 답변 주셨는데 고민끙끙입니다.
이래서 초보는 기초부터 제대로 공부해야 하는가 봅니다.^^

그러고보니 좀 이상하긴하네요.
adm/board_update.php 에서 bo_11~bo_20 까지 추가했다면
한개테이블(g4_board) 에 필드를 추가한것이므로 모든 게시판에 다 적용될텐데요.
(즉 게시판에 관계없이 bo_20까지 다 update 된다는것이지요..)
뭔가 다른 문제같습니다. board_form.php도 같이 올려봐주세요.^^
adm/board_update.php 에서 bo_11~bo_20 까지 추가했다면
한개테이블(g4_board) 에 필드를 추가한것이므로 모든 게시판에 다 적용될텐데요.
(즉 게시판에 관계없이 bo_20까지 다 update 된다는것이지요..)
뭔가 다른 문제같습니다. board_form.php도 같이 올려봐주세요.^^

board_form.php에서는 여분필드 설정 부분,
<? for ($i=1; $i<=20; $i++) { ?>
에서, $i만 20으로 변경했습니다.
나머지 수정사항은 단순히 스킨 입힌 것이구요.
현재 로빈아빠님께서 알려주신 팁으로 수정한 board_form_update.php는,
$sql_common 부분을 다음과 같이 수정.
$sql_common = " gr_id = '$_POST[gr_id]',
<...너무 길어서 중간 부분 생략합니다.^^...>
bo_1_subj = '$_POST[bo_1_subj]',
bo_2_subj = '$_POST[bo_2_subj]',
bo_3_subj = '$_POST[bo_3_subj]',
bo_4_subj = '$_POST[bo_4_subj]',
bo_5_subj = '$_POST[bo_5_subj]',
bo_6_subj = '$_POST[bo_6_subj]',
bo_7_subj = '$_POST[bo_7_subj]',
bo_8_subj = '$_POST[bo_8_subj]',
bo_9_subj = '$_POST[bo_9_subj]',
bo_10_subj = '$_POST[bo_10_subj]',
bo_1 = '$_POST[bo_1]',
bo_2 = '$_POST[bo_2]',
bo_3 = '$_POST[bo_3]',
bo_4 = '$_POST[bo_4]',
bo_5 = '$_POST[bo_5]',
bo_6 = '$_POST[bo_6]',
bo_7 = '$_POST[bo_7]',
bo_8 = '$_POST[bo_8]',
bo_9 = '$_POST[bo_9]',
bo_10 = '$_POST[bo_10]' ";
for ($i=11;$i<=20;$i++) {
if (array_key_exists("bo_$i",$board)) {
$sql_common.=",bo_$i= '".$_POST["bo_$i"]."',bo_$i"."_subj= '".$_POST["bo_$i"."_subj"]."' ";
}
}
여분필드 설정 부분은 다음과 같이 수정.
for ($i=1; $i<=20; $i++) {
if ($_POST["chk_{$i}"]) {
$sql = " update $g4[board_table]
set bo_table = bo_table
bo_{$i}_subj = '".$_POST["bo_{$i}_subj"]."',
bo_{$i} = '".$_POST["bo_{$i}"]."'
where gr_id = '$gr_id' ";
sql_query($sql,false); //오류가 있어도 무시하는거죠..
//} <-- 해당 함수가 없어서 일단 제외했습니다.
}
}
위와 같이 수정해 넣었습니다.
-----------------------------------------------------------------------------
차라리, 모든 g4_write_ 테이블에 wr_ 필드를 20개까지 추가해 버릴까요?
사실 위 기능이 일부 테이블에서만 필요한 것이 아니기 때문에
모든 g4_write_ 테이블에서 필드를 추가하면,
board_form_update.php에서
$sql_common 자리에 bo_11_subj ~ bo_20_subj, bo_11 ~ bo_20 사항까지 추가하고
여분필드에서는 20으로 수치만 조정하면 될 것 같은데요.
(단순한 초보의 발상입니다.ㅠㅠ)
만약 모든 g4_write_ 테이블에서 wr_필드를 20개까지 추가한다면
일괄적으로 추가하는 것이 고민이군요.
아래와 같은 방법은 1개 테이블에서만 확장하는 것일텐데
모든 g4_write_테이블에 일괄적으로 추가할 때는 어떻게 해야할까요?
sql_fetch(" alter table g4_write_테이블명 add wr_11 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_12 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_13 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_14 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_15 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_16 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_17 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_18 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_19 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_20 VARCHAR(255) NOT NULL ");
<? for ($i=1; $i<=20; $i++) { ?>
에서, $i만 20으로 변경했습니다.
나머지 수정사항은 단순히 스킨 입힌 것이구요.
현재 로빈아빠님께서 알려주신 팁으로 수정한 board_form_update.php는,
$sql_common 부분을 다음과 같이 수정.
$sql_common = " gr_id = '$_POST[gr_id]',
<...너무 길어서 중간 부분 생략합니다.^^...>
bo_1_subj = '$_POST[bo_1_subj]',
bo_2_subj = '$_POST[bo_2_subj]',
bo_3_subj = '$_POST[bo_3_subj]',
bo_4_subj = '$_POST[bo_4_subj]',
bo_5_subj = '$_POST[bo_5_subj]',
bo_6_subj = '$_POST[bo_6_subj]',
bo_7_subj = '$_POST[bo_7_subj]',
bo_8_subj = '$_POST[bo_8_subj]',
bo_9_subj = '$_POST[bo_9_subj]',
bo_10_subj = '$_POST[bo_10_subj]',
bo_1 = '$_POST[bo_1]',
bo_2 = '$_POST[bo_2]',
bo_3 = '$_POST[bo_3]',
bo_4 = '$_POST[bo_4]',
bo_5 = '$_POST[bo_5]',
bo_6 = '$_POST[bo_6]',
bo_7 = '$_POST[bo_7]',
bo_8 = '$_POST[bo_8]',
bo_9 = '$_POST[bo_9]',
bo_10 = '$_POST[bo_10]' ";
for ($i=11;$i<=20;$i++) {
if (array_key_exists("bo_$i",$board)) {
$sql_common.=",bo_$i= '".$_POST["bo_$i"]."',bo_$i"."_subj= '".$_POST["bo_$i"."_subj"]."' ";
}
}
여분필드 설정 부분은 다음과 같이 수정.
for ($i=1; $i<=20; $i++) {
if ($_POST["chk_{$i}"]) {
$sql = " update $g4[board_table]
set bo_table = bo_table
bo_{$i}_subj = '".$_POST["bo_{$i}_subj"]."',
bo_{$i} = '".$_POST["bo_{$i}"]."'
where gr_id = '$gr_id' ";
sql_query($sql,false); //오류가 있어도 무시하는거죠..
//} <-- 해당 함수가 없어서 일단 제외했습니다.
}
}
위와 같이 수정해 넣었습니다.
-----------------------------------------------------------------------------
차라리, 모든 g4_write_ 테이블에 wr_ 필드를 20개까지 추가해 버릴까요?
사실 위 기능이 일부 테이블에서만 필요한 것이 아니기 때문에
모든 g4_write_ 테이블에서 필드를 추가하면,
board_form_update.php에서
$sql_common 자리에 bo_11_subj ~ bo_20_subj, bo_11 ~ bo_20 사항까지 추가하고
여분필드에서는 20으로 수치만 조정하면 될 것 같은데요.
(단순한 초보의 발상입니다.ㅠㅠ)
만약 모든 g4_write_ 테이블에서 wr_필드를 20개까지 추가한다면
일괄적으로 추가하는 것이 고민이군요.
아래와 같은 방법은 1개 테이블에서만 확장하는 것일텐데
모든 g4_write_테이블에 일괄적으로 추가할 때는 어떻게 해야할까요?
sql_fetch(" alter table g4_write_테이블명 add wr_11 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_12 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_13 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_14 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_15 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_16 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_17 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_18 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_19 VARCHAR(255) NOT NULL ");
sql_fetch(" alter table g4_write_테이블명 add wr_20 VARCHAR(255) NOT NULL ");

아! 로빈아빠님, 해결했습니다.
g4_board 테이블의 여분필드 자리를 20개까지 확장해야 해결되는 문제였습니다.
g4_board 테이블 여분필드를 확장해 놓고,
adm/board_form_update.php에서 여분필드 추가로 수정해 주니까 해결되네요.
지속적으로 살펴주셔서 감사드립니다.
로빈아빠님, 새해 복많이 받으십시오. (__)
g4_board 테이블의 여분필드 자리를 20개까지 확장해야 해결되는 문제였습니다.
g4_board 테이블 여분필드를 확장해 놓고,
adm/board_form_update.php에서 여분필드 추가로 수정해 주니까 해결되네요.
지속적으로 살펴주셔서 감사드립니다.
로빈아빠님, 새해 복많이 받으십시오. (__)

아 그렇군요.. 잘 해결되셨다니 다행입니다. 앞으로 해결이 잘안되시면 개인적으로 쪽지를 보내주시거나
제 사이트 QA에 질문해주시면 확인해 봐드리겠습니다. 감사합니다.^^
제 사이트 QA에 질문해주시면 확인해 봐드리겠습니다. 감사합니다.^^

^^ 많은 배려에 너무 감사드립니다.
앞으로 막히는 문제는 로빈아빠님의 홈페이지에서 직접 여쭤봐야겠습니다.^^
앞으로 막히는 문제는 로빈아빠님의 홈페이지에서 직접 여쭤봐야겠습니다.^^