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필요)