여분필드 확장 후 write_update.skin.php > 그누보드5 팁자료실

그누보드5 팁자료실

여분필드 확장 후 write_update.skin.php 정보

여분필드 확장 후 write_update.skin.php

첨부파일

write_update.skin.zip (650byte) 18회 다운로드 2023-04-05 17:10:24
write_update.skin2.zip (797byte) 5회 다운로드 2023-04-06 17:02:35
wr-add.zip (6.1K) 3회 다운로드 2023-09-18 17:26:32

본문


<?php
if (!defined("_GNUBOARD_")) exit;
 
$sql = "SELECT bo_table, bo_subject FROM {$g5['board_table']} ORDER BY gr_id, bo_table";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
    $rr = 0;
    for ($k = 1; ; $k++) {
        $qq = sql_fetch("SHOW COLUMNS FROM " . G5_TABLE_PREFIX . "write_{$bo_table} LIKE 'wr_{$k}'");
        if (!$qq) break;
        if ($qq['Type']) {
            $rr = explode("wr_", "wr_{$k}")[1];
        }
    }
    if ($rr > 10) {
        $columns = "";
        for ($i = 11; $i < $rr; $i++) {
            $columns .= "wr_$i = '${'wr_'.$i}', ";
        }
        $columns .= "wr_$rr = '${'wr_'.$rr}' ";
        $sql = "UPDATE $write_table SET $columns WHERE wr_id = '$wr_id'";
        sql_query($sql);
    }
}

사용하는 게시판에 write_update.skin.php를 위 내용으로 넣으세요.

여분필드 숫자와 크게 관계가 없을 것으로 기대하며 . . .

추)아직 테스트를 완벽히 하지는 못하였습니다.

 

추가 : 만약 여분필드가 띄어띄엄 있다면 (예 : wr_1~10,wr_13,wr_20 d이렇게 있다면)


<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
$sql = "SELECT bo_table, bo_subject FROM {$g5['board_table']} ORDER BY gr_id, bo_table";
$result = sql_query($sql);
$query = "SHOW COLUMNS FROM " . G5_TABLE_PREFIX . "write_{$bo_table} LIKE 'wr_%'";
$result2 = sql_query($query);
$max_column_num = 0;
$max_column_name = '';
while ($column = sql_fetch_array($result2)) {
    $column_name = $column['Field'];
    $column_num = preg_replace('/[^0-9]/', '', $column_name);
    if ($column_num > $max_column_num) {
        $max_column_num = $column_num;
        $max_column_name = $column_name;
    }
}
$wr_last_num = explode("wr_", $max_column_name)[1];
while ($row = sql_fetch_array($result)) {
    $rr = 0;
    for ($k = 1; $k <= $wr_last_num; $k++) {
        $qq = sql_fetch("SHOW COLUMNS FROM " . G5_TABLE_PREFIX . "write_{$row['bo_table']} LIKE 'wr_{$k}'");
        if (!$qq) continue;
        if ($qq['Type']) $rr = explode("wr_", "wr_{$k}")[1];
    }
}
    if ($rr > 10) {
        $columns = "";
        for ($i = 11; $i < $rr; $i++) {
            if(${'wr_'.$i})$columns .= "wr_$i = '${'wr_'.$i}', ";
        }
        $columns .= "wr_$rr = '${'wr_'.$rr}' ";
        $sql = "UPDATE $write_table SET $columns WHERE wr_id = '$wr_id'";
        sql_query($sql);
    }

 

* 첨부파일3은 여분필드 추가/삭제 파일입니다. 아무곳에나 넣고 불러오면 됩니다.(_common.php필요)

추천
13

댓글 36개

네, 게시판 여분필드 확장(추가) 후 bbs 파일은 수정하지 않은 상태에서 게시판의 폴더에 위 내용을 적용하면 여분필드 수와 관계없이 업데이트 저장이 알아서 된다는 내용 입니다.
$sql = " update $write_table
set wr_11 = '$wr_11',
wr_12 = '$wr_12',
wr_13 = '$wr_13',
wr_14 = '$wr_14',
wr_15 = '$wr_15',
wr_16 = '$wr_16',
~
~
  where wr_id = '$wr_id' ";
sql_query($sql);
이 코드를 대체 합니다.
어떤 로직인지 한눈에 들어오네요.
가령 15 다음에 16이 없고 17로 건너뛰면 15까지만 저장이 되겠네요.
수고하셨어요.
고수님이 여기까지 오시니 영광입니다.
여분필드가 건너뛰어 있는 것은 생각하지 못하였습니다.
@비타주리님께서 코드를 보완하여 주시면 감사 하겠습니다.
여분필드를 일부러 띄엄 띄엄 만드는 것은 아닌데 추후에 추가나 수정시에 까먹고 건너 뛰는 경우가 있습니다. 두번째 코드로 변경하면 연속해서 있거나 띄엄띄엄 있거나 모두 사용이 가능 한자요?  감사합니다
전체 2,412 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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