여분필드 고민해결 정보
여분필드 고민해결첨부파일
본문
2024-02-25 아래 write_update.php 파일 내용 수정
그누보드는 기본 10개의 여분필드만 처리하도록 되어있습니다.
여분필드(wr_1~ wr_끝숫자) 갯수에 관계없이 자동으로 저장, 수정할 수 있는 팁입니다.
여분필드 추가후 추가된 필드 저장, 수정을 위한 별도 작업을 안하셔도 됩니다.
기본 10개 대신에 실제 여분필드 갯수를 구해서 작업하도룩 수정하는 것입니다.
common.lib.php, write.php, write_update.php 파일을 업그레이드 하시면 아래 작업을 다시 해 주셔야 됩니다.
bbs > write.php, write_update.php 파일 수정이 필요하니 필요하시면 사용하세요.
1. lib > common.lib.php 파일 마지막에 아래 함수 추가
//테이블 여분필드수 체크(sql_field_names($bo_table) 함수가 있어 사용함)
function extra_column_num($bo_table) {
$cnt = 0;
$bo_table = G5_TABLE_PREFIX."write_".$bo_table;
$colunms = sql_field_names($bo_table);
foreach($colunms as $colunm) {
if (preg_match('/(wr_[0-9])/', $colunm)) $cnt++;
}
return $cnt;
}
2. bbs > write.php 파일 수정내용
check_device($board['bo_device']);
//여분필드수 검색
$field_num = extra_column_num($bo_table);
if ($w == 'u' || $w == 'r') {
if ($write['wr_id']) {
// 가변 변수로 $wr_1 .. $wr_여분필드수 까지 만든다.
for ($i=1; $i<=$field_num; $i++) {
$vvar = "wr_".$i;
$$vvar = $write['wr_'.$i];
}
} else {
alert("글이 존재하지 않습니다.\\n삭제되었거나 이동된 경우입니다.", G5_URL);
}
} else if ($w == '') { // 게시글 입력시에도 $wr_1 ~ $wr_여분필드수 변수 사용시 오류 나오지 않도록 가변변수 생성 (다온테마님,210806)
for ($i=1; $i<=$field_num; $i++) {
$vvar = "wr_".$i;
$$vvar = '';
}
}
3. bbs > write_update.php 파일 수정내용
// 토큰체크
check_write_token($bo_table);
//여분필드수 추가
$field_num = extra_column_num($bo_table);
//아래 for문 부분을
for ($i=1; $i<=10; $i++) {
$var = "wr_$i";
$$var = "";
if (isset($_POST['wr_'.$i]) && settype($_POST['wr_'.$i], 'string')) {
$$var = trim($_POST['wr_'.$i]);
}
}
//
//// 아래처럼 수정
//여분필드명 및 값 생성
// clean_xss_tags 함수 미사용시 스크립트가 저장되므로 보기화면에서는 get_text($wr_1) 식으로 사용해야됨
$fd_name = "";
for ($i=1; $i<=$field_num; $i++) {
if (isset($_POST['wr_'.$i]) && settype($_POST['wr_'.$i], 'string')) {
$fd_name = $fd_name.", wr_".$i." = '". clean_xss_tags(trim($_POST['wr_'.$i])) ."'";
}
}
/////////// 아래 두부분 수정
$sql = " insert into $write_table
set wr_num = " . ($w == 'r' ? "'$wr_num'" : "(SELECT IFNULL(MIN(wr_num) - 1, -1) FROM $write_table sq) ") . ",
wr_reply = '$wr_reply',
wr_comment = 0,
ca_name = '$ca_name',
wr_option = '$wr_option',
wr_subject = '$wr_subject',
wr_content = '$wr_content',
wr_seo_title = '$wr_seo_title',
wr_link1 = '$wr_link1',
wr_link2 = '$wr_link2',
wr_link1_hit = 0,
wr_link2_hit = 0,
wr_hit = 0,
wr_good = 0,
wr_nogood = 0,
mb_id = '{$member['mb_id']}',
wr_password = '$wr_password',
wr_name = '$wr_name',
wr_email = '$wr_email',
wr_homepage = '$wr_homepage',
wr_datetime = '".G5_TIME_YMDHIS."',
wr_last = '".G5_TIME_YMDHIS."',
wr_ip = '{$_SERVER['REMOTE_ADDR']}' <--콤마제거
{$fd_name} ";
sql_query($sql);
$sql = " update {$write_table}
set ca_name = '{$ca_name}',
wr_option = '{$wr_option}',
wr_subject = '{$wr_subject}',
wr_content = '{$wr_content}',
wr_seo_title = '$wr_seo_title',
wr_link1 = '{$wr_link1}',
wr_link2 = '{$wr_link2}',
mb_id = '{$mb_id}',
wr_name = '{$wr_name}',
wr_email = '{$wr_email}',
wr_homepage = '{$wr_homepage}' <--콤마제거
{$fd_name}
{$sql_ip}
{$sql_password}
where wr_id = '{$wr['wr_id']}' ";
sql_query($sql);
// 첨부파일에는 여분필드 관리파일이 들어있습니다.
14
댓글 12개
좋아요 추천합니다.
@푸른산타님 감사합니다.
wr_20도 되나요? 수정 없이 추가가 되는건가요?
@꽁치입니다님
예, 가능합니다. 기본은 10개만 저장하도록 되어있습니다.
10개 대신에 테이블에 있는 여분필드 갯수를 구해서 작업하게 되어 있어 갯수와는 상관없습니다. 물론 테이블에 wr_20까지 여분필드가 있어야 됩니다.
잘사용하겠습니다
@미키손 님 도움이 되신다니 기쁩니다.
좋은 팁 감사합니다!
여분필드 증가 감소가 되네요.
좋은 팁 감사 합니다.
@들레아빠님
예, 기능을 추가해 봤습니다. 칭찬 감사합니다.
감사합니다.
감사합니다.
좋은 팁 공유 감사드립니다. 추천꾹!