[모든게시판에 필드 자동생성]3.07버전으로 업데이트-수정 정보
그누호환 [모든게시판에 필드 자동생성]3.07버전으로 업데이트-수정
본문
위의 제목이 꼭 약장사 같다는 생각이 드는군요.
아래의 소스를 복사해서 아무이름이나 저장을 하시고[ex) gnuboard_in.php]
업로드하셔서 아래와 같이 호출하세요.....
http://www.yourdomain.com/?doc=gnuboard_id.php
하시면 쥘쥘쥘 필드가 자동 삽입 생성이 됩니다....
그리고 해야 할일 잘 아실 텐데 .....
3.07버전의 변형된 파일들만 업하시면 님의 gnuboard는 3.07버전으로 새롭게 됩니다.
저는 성공을 했는데 잘 안되시는 분 게시면 코멘트 남기세요...그럼 같이 고민해보게요.....*^^*
root//님께 감사드립니다...*^^*
<?
//필드를 추가해야 할 때
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
define("_DOCTYPE_", "STYLE");
// 접근 권한 검사
if (!$member[mb_id]) {
alert("로그인 하십시오.", "./?doc=$cfg[bbs_dir]/mblogin.php&url=" . urlencode("./?doc=$doc"));
} else if (_GNUADMIN_ == "DEFAULT" && $is_admin != 'default') {
alert('최고관리자만 접근 가능합니다.', './');
} else {
if (!($is_admin == 'default' || $is_admin == 'group')) {
alert('그룹관리자 이상 접근 가능합니다.', './');
}
}
/*
# 다양한 기능의 스킨 제작을 위하여 필드 추가
$sql = " ALTER TABLE $cfg[table_board] ADD bo_1 VARCHAR( 255 ) NOT NULL ,
ADD bo_2 VARCHAR( 255 ) NOT NULL ,
ADD bo_3 VARCHAR( 255 ) NOT NULL ,
ADD bo_4 VARCHAR( 255 ) NOT NULL ,
ADD bo_5 VARCHAR( 255 ) NOT NULL ";
@mysql_query($sql);
$sql = " ALTER TABLE $cfg[table_member] ADD mb_1 VARCHAR( 255 ) NOT NULL ,
ADD mb_2 VARCHAR( 255 ) NOT NULL ,
ADD mb_3 VARCHAR( 255 ) NOT NULL ,
ADD mb_4 VARCHAR( 255 ) NOT NULL ,
ADD mb_5 VARCHAR( 255 ) NOT NULL ";
@mysql_query($sql);
*/
//gb_write_로 생성된 모든 필드를 자동 생성합니다.
$sql = " select bo_table from $cfg[table_board] ";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
$sql_1 = "
ALTER TABLE {$cfg[write_table_prefix]}{$row[bo_table]} ADD (wr_1 varchar(255) NOT NULL default '', wr_2 varchar(255) NOT NULL default '', wr_3 varchar(255) NOT NULL default '', wr_4 varchar(255) NOT NULL default '', wr_5 varchar(255) NOT NULL default '')
";
$result1 = mysql_query($sql_1);
if($result1) echo "TABLE : $cfg[write_table_prefix]$row[bo_table]에 필드를 추가하였습니다.<br>"; //root님이 추가^^
}
mysql_free_result($result);
for ($i=0; $i<count($sql_1); $i++) {
$result1 = @mysql_query($sql_1) or mysql_error();
}
echo "테이블에 필드을 추가 하였습니다..^^"
?>
아래의 소스를 복사해서 아무이름이나 저장을 하시고[ex) gnuboard_in.php]
업로드하셔서 아래와 같이 호출하세요.....
http://www.yourdomain.com/?doc=gnuboard_id.php
하시면 쥘쥘쥘 필드가 자동 삽입 생성이 됩니다....
그리고 해야 할일 잘 아실 텐데 .....
3.07버전의 변형된 파일들만 업하시면 님의 gnuboard는 3.07버전으로 새롭게 됩니다.
저는 성공을 했는데 잘 안되시는 분 게시면 코멘트 남기세요...그럼 같이 고민해보게요.....*^^*
root//님께 감사드립니다...*^^*
<?
//필드를 추가해야 할 때
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
define("_DOCTYPE_", "STYLE");
// 접근 권한 검사
if (!$member[mb_id]) {
alert("로그인 하십시오.", "./?doc=$cfg[bbs_dir]/mblogin.php&url=" . urlencode("./?doc=$doc"));
} else if (_GNUADMIN_ == "DEFAULT" && $is_admin != 'default') {
alert('최고관리자만 접근 가능합니다.', './');
} else {
if (!($is_admin == 'default' || $is_admin == 'group')) {
alert('그룹관리자 이상 접근 가능합니다.', './');
}
}
/*
# 다양한 기능의 스킨 제작을 위하여 필드 추가
$sql = " ALTER TABLE $cfg[table_board] ADD bo_1 VARCHAR( 255 ) NOT NULL ,
ADD bo_2 VARCHAR( 255 ) NOT NULL ,
ADD bo_3 VARCHAR( 255 ) NOT NULL ,
ADD bo_4 VARCHAR( 255 ) NOT NULL ,
ADD bo_5 VARCHAR( 255 ) NOT NULL ";
@mysql_query($sql);
$sql = " ALTER TABLE $cfg[table_member] ADD mb_1 VARCHAR( 255 ) NOT NULL ,
ADD mb_2 VARCHAR( 255 ) NOT NULL ,
ADD mb_3 VARCHAR( 255 ) NOT NULL ,
ADD mb_4 VARCHAR( 255 ) NOT NULL ,
ADD mb_5 VARCHAR( 255 ) NOT NULL ";
@mysql_query($sql);
*/
//gb_write_로 생성된 모든 필드를 자동 생성합니다.
$sql = " select bo_table from $cfg[table_board] ";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
$sql_1 = "
ALTER TABLE {$cfg[write_table_prefix]}{$row[bo_table]} ADD (wr_1 varchar(255) NOT NULL default '', wr_2 varchar(255) NOT NULL default '', wr_3 varchar(255) NOT NULL default '', wr_4 varchar(255) NOT NULL default '', wr_5 varchar(255) NOT NULL default '')
";
$result1 = mysql_query($sql_1);
if($result1) echo "TABLE : $cfg[write_table_prefix]$row[bo_table]에 필드를 추가하였습니다.<br>"; //root님이 추가^^
}
mysql_free_result($result);
for ($i=0; $i<count($sql_1); $i++) {
$result1 = @mysql_query($sql_1) or mysql_error();
}
echo "테이블에 필드을 추가 하였습니다..^^"
?>
추천
5
5
댓글 전체
-_-a 이거 프로그램 따운 받아야 하는 건가요?
감사합니다.^^ 한방에 해결 봤습니다. 좋은 하루 보내세요!!!
제가 지금 게시판을 가지고 필드를 하나씩 추가할때 마다 ....
일일이 필드를 각 게시판 마다 추가해 주어야 하는데 ....
위에것을 바탕으로 임의로 만들어 보려고 했는데 잘 안되네요.
조언 좀 부탁 드립니다.
일일이 필드를 각 게시판 마다 추가해 주어야 하는데 ....
위에것을 바탕으로 임의로 만들어 보려고 했는데 잘 안되네요.
조언 좀 부탁 드립니다.
슬기넷님// 위소스 중에서 다음부분만 수정하시면 됩니다.
수정전 :
// 현재 이것은 wr_1 varchar(255) NOT NULL default '' 라는 형식으로 5개의 필드를 추가하도록 되어있습니다.
$sql_1 = "
ALTER TABLE {$cfg[write_table_prefix]}{$row[bo_table]} ADD (wr_1 varchar(255) NOT NULL default '', wr_2 varchar(255) NOT NULL default '', wr_3 varchar(255) NOT NULL default '', wr_4 varchar(255) NOT NULL default '', wr_5 varchar(255) NOT NULL default '')
";
수정후 :
// 위의 내용중 wr_1 varchar(255) NOT NULL default '' 내용만 원하시는 것으로 수정하시면 됩니다.
// 예제 : my_field 로 사이즈 20 자리 추가할경우
$sql_1 = "ALTER TABLE {$cfg[write_table_prefix]}{$row[bo_table]} ADD (my_field varchar(20) NOT NULL default '')";
수정전 :
// 현재 이것은 wr_1 varchar(255) NOT NULL default '' 라는 형식으로 5개의 필드를 추가하도록 되어있습니다.
$sql_1 = "
ALTER TABLE {$cfg[write_table_prefix]}{$row[bo_table]} ADD (wr_1 varchar(255) NOT NULL default '', wr_2 varchar(255) NOT NULL default '', wr_3 varchar(255) NOT NULL default '', wr_4 varchar(255) NOT NULL default '', wr_5 varchar(255) NOT NULL default '')
";
수정후 :
// 위의 내용중 wr_1 varchar(255) NOT NULL default '' 내용만 원하시는 것으로 수정하시면 됩니다.
// 예제 : my_field 로 사이즈 20 자리 추가할경우
$sql_1 = "ALTER TABLE {$cfg[write_table_prefix]}{$row[bo_table]} ADD (my_field varchar(20) NOT NULL default '')";
이미 처리했기 때문에 안나타나는것 아닌가요.
mysql 웹어더민에서 테이블 구조보기를 선택하신후 wr_1 ~ wr_5까지의 필드를 삭제하신후 프로그램 돌려보세요
그럼 필드 추가된 테이블만 필드 추가하였습니다가 나올겁니다.
mysql 웹어더민에서 테이블 구조보기를 선택하신후 wr_1 ~ wr_5까지의 필드를 삭제하신후 프로그램 돌려보세요
그럼 필드 추가된 테이블만 필드 추가하였습니다가 나올겁니다.
아무 에러가 없군요... 그런데 위의 결과화면이 나타나질 않아요...
이렇게 해서 실행한 결과 저는 이상이 없는데.. 어떤에러인지..
$result1 = mysql_query($sql_1);
if($result1) echo "TABLE : $cfg[write_table_prefix]$row[bo_table]에 필드를 추가하였습니다.<br>";
결과화면
TABLE : gb_write_L04R01에 필드를 추가하였습니다.
TABLE : gb_write_test에 필드를 추가하였습니다.
테이블에 필드을 추가 하였습니다..^^
$result1 = mysql_query($sql_1);
if($result1) echo "TABLE : $cfg[write_table_prefix]$row[bo_table]에 필드를 추가하였습니다.<br>";
결과화면
TABLE : gb_write_L04R01에 필드를 추가하였습니다.
TABLE : gb_write_test에 필드를 추가하였습니다.
테이블에 필드을 추가 하였습니다..^^
44번째 라인 $result1 = sql_query($sql_1); 에있는 sql_query를 mysql_query로 변경해서
다음과 같이 하면 $result1 = mysql_query($sql_1); 위와 같은 에러메세지는 안나오는군요.
그리고 하나더 추가 하자면 위의 $result1 = mysql_query($sql_1); 다음라인에
if($result1) echo "TABLE : $cfg[write_table_prefix]$row[bo_table]에 필드를 추가하였습니다.<br>";를 하나 넣어서 어떤것이 변경되었는지도 보면 좋겠군요.
ps. 수작업으로 wr_? 필드중 일부만 만들어 사용하시던 분들이 위의 프로그램 돌리면 나머지 필드가 생성되지 않습니다.
일부만 만들어서 사용하신 분들은 나머지 필드도 무도 수작업으로 만드셔야 합니다.
다음과 같이 하면 $result1 = mysql_query($sql_1); 위와 같은 에러메세지는 안나오는군요.
그리고 하나더 추가 하자면 위의 $result1 = mysql_query($sql_1); 다음라인에
if($result1) echo "TABLE : $cfg[write_table_prefix]$row[bo_table]에 필드를 추가하였습니다.<br>";를 하나 넣어서 어떤것이 변경되었는지도 보면 좋겠군요.
ps. 수작업으로 wr_? 필드중 일부만 만들어 사용하시던 분들이 위의 프로그램 돌리면 나머지 필드가 생성되지 않습니다.
일부만 만들어서 사용하신 분들은 나머지 필드도 무도 수작업으로 만드셔야 합니다.
저의 팁을 사용해 주셔서 감사합니다....*^^*
그리고 root//님 제가 그 방법을 잘 모르는데 아시면 소스 수정해주세요..
====> 리턴값을 받아서 에러일시에는 그냥 건너뛰도록 처리가 추가 되어야 할듯 합니다.
음.... 위의 내용은 for문을 돌리면서 생기는 것 같은데
그러나 필드는 정확히 생기는 것이 확실합니다...
그리고 root//님 제가 그 방법을 잘 모르는데 아시면 소스 수정해주세요..
====> 리턴값을 받아서 에러일시에는 그냥 건너뛰도록 처리가 추가 되어야 할듯 합니다.
음.... 위의 내용은 for문을 돌리면서 생기는 것 같은데
그러나 필드는 정확히 생기는 것이 확실합니다...
박갑성님 미워할꼬야~~~!
진작 올려주시지..........
벌써 게시판 전부 다 지우고 새로 게시판 만들었는데..... ㅠ.ㅠ
무식한자의 어쩔 수 없는 방법이었습니다.
저 같은 사람들을 위해서 꼭 필요한 정보인것 같습니다.
좋은팁 올려주셨군요.
진작 올려주시지..........
벌써 게시판 전부 다 지우고 새로 게시판 만들었는데..... ㅠ.ㅠ
무식한자의 어쩔 수 없는 방법이었습니다.
저 같은 사람들을 위해서 꼭 필요한 정보인것 같습니다.
좋은팁 올려주셨군요.
wr_1~wr_5까지의 필드가 없는 테이블과 있는 테이블이 같이 있을경우 wr_1~wr_5까지의 필드가 있는 테이블에서 다음과 같은 에러가 납니다.
리턴값을 받아서 에러일시에는 그냥 건너뛰도록 처리가 추가 되어야 할듯 합니다.
ALTER TABLE gb_write_test ADD (wr_1 varchar(255) NOT NULL default '', wr_2 varchar(255) NOT NULL default '', wr_3 varchar(255) NOT NULL default '', wr_4 varchar(255) NOT NULL default '', wr_5 varchar(255) NOT NULL default '')
1060 : Duplicate column name 'wr_1'
리턴값을 받아서 에러일시에는 그냥 건너뛰도록 처리가 추가 되어야 할듯 합니다.
ALTER TABLE gb_write_test ADD (wr_1 varchar(255) NOT NULL default '', wr_2 varchar(255) NOT NULL default '', wr_3 varchar(255) NOT NULL default '', wr_4 varchar(255) NOT NULL default '', wr_5 varchar(255) NOT NULL default '')
1060 : Duplicate column name 'wr_1'
빠르십니다.
기다리는 사람이 많은것 같던데..
수고하셨습니다.
기다리는 사람이 많은것 같던데..
수고하셨습니다.
그런데 이부분은 작동이 안되어서 첨가하지 않았습니다.
if($result1) echo "TABLE : $cfg[write_table_prefix]$row[bo_table]에 필드를 추가하였습니다.<br>";
******************************************************************
$sql = " select bo_table from $cfg[table_board] ";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
$sql_1 = "
ALTER TABLE {$cfg[write_table_prefix]}{$row[bo_table]} ADD (wr_1 varchar(255) NOT NULL default '', wr_2 varchar(255) NOT NULL default '', wr_3 varchar(255) NOT NULL default '', wr_4 varchar(255) NOT NULL default '', wr_5 varchar(255) NOT NULL default '')
";
$result1 = mysql_query($sql_1);
if($result1) echo "TABLE : $cfg[write_table_prefix]$row[bo_table]에 필드를 추가하였습니다.<br>";
}
mysql_free_result($result);
for ($i=0; $i<count($sql_1); $i++) {
$result1 = @mysql_query($sql_1) or mysql_error();
}
?>
이렇게 했는데 안되는군요....ㅡ,ㅡ
if($result1) echo "TABLE : $cfg[write_table_prefix]$row[bo_table]에 필드를 추가하였습니다.<br>";
******************************************************************
$sql = " select bo_table from $cfg[table_board] ";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result); $i++) {
$sql_1 = "
ALTER TABLE {$cfg[write_table_prefix]}{$row[bo_table]} ADD (wr_1 varchar(255) NOT NULL default '', wr_2 varchar(255) NOT NULL default '', wr_3 varchar(255) NOT NULL default '', wr_4 varchar(255) NOT NULL default '', wr_5 varchar(255) NOT NULL default '')
";
$result1 = mysql_query($sql_1);
if($result1) echo "TABLE : $cfg[write_table_prefix]$row[bo_table]에 필드를 추가하였습니다.<br>";
}
mysql_free_result($result);
for ($i=0; $i<count($sql_1); $i++) {
$result1 = @mysql_query($sql_1) or mysql_error();
}
?>
이렇게 했는데 안되는군요....ㅡ,ㅡ
위의 소스가 정상 작동이 되면 아래의 메세지가 출력됩니다...
echo "테이블에 필드을 추가 하였습니다..^^"
echo "테이블에 필드을 추가 하였습니다..^^"