테스트 사이트 - 개발 중인 베타 버전입니다

여분필드 고민해결

· 1년 전 · 2481 · 12

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);

 

// 첨부파일에는  여분필드 관리파일이 들어있습니다.

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 12개

1년 전

감사합니다.

 좋은 팁 공유 감사드립니다. 추천꾹!

게시글 목록

번호 제목
21529
21526
21521
21516
21513
21502
21485
21471
21467
21457
21424
21421
21415
21410
21406
21405
21394
21378
21354
21349
21345
21316
21299
21297
21279
21276
21254
21242
21214
21206