여분필드 고민해결 > 그누보드5 팁자료실

그누보드5 팁자료실

여분필드 고민해결 정보

여분필드 고민해결

첨부파일

여분필드_5510.zip (2.7K) 22회 다운로드 2024-02-25 16:41:34

본문

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개

@꽁치입니다님

예, 가능합니다. 기본은 10개만 저장하도록  되어있습니다.

10개 대신에  테이블에 있는 여분필드 갯수를 구해서 작업하게  되어 있어 갯수와는 상관없습니다.  물론 테이블에 wr_20까지 여분필드가 있어야 됩니다.

전체 2,432 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT