여분필드 확장 후 write_update.skin.php 정보
여분필드 확장 후 write_update.skin.php첨부파일
본문
<?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
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);
이 코드를 대체 합니다.
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);
이 코드를 대체 합니다.
아고고..
무지 감사합니다.
꼭 필요했던 팁입니다.
무지 감사합니다.
꼭 필요했던 팁입니다.
@오빠야 댓글 감사 합니다.
여분필드의 갯수가 다양 할 때를 생각하고 만들었습니다.
여분필드의 갯수가 다양 할 때를 생각하고 만들었습니다.
오! 비슷한거 써먹어야되는데~ 잘됐네요
@리오닥터 if문 윗부분만 write.skin.php에 넣으면 $rr이 여분필드 수가 됩니다.
감사 합니다.
감사 합니다.
오~~대단하십니다.
감사합니다.
감사합니다.
@써맨 댓글 감사 합니다. 대단 할 것 까진 아닙니다.
감사합니다. ^^
@민트다이어리 댓글 감사 드립니다.
좋은 팁 감사합니다.
@푸른산타 추천 감사 합니다.
이런 신박한 방법을 알려주시니 감사합니다
@미키손 칭찬 감사 합니다.
오.. 감사합니다. 당장 적용해보겠습니다.
@바케스터 네, 감사 합니다.
감사합니다.
@풍운 감사 합니다.
좋은 팁 감사합니다.
@thedream 감사 합니다.
좋은 팁 감사합니다
@단동 네 제가 감사 합니다.
테스트해보니 여분필드에 데이터 잘 들어갑니다
감사합니다
감사합니다
@풍운 테스트까지 해 주세서 더욱 감사 합니다.
어떤 로직인지 한눈에 들어오네요.
가령 15 다음에 16이 없고 17로 건너뛰면 15까지만 저장이 되겠네요.
수고하셨어요.
가령 15 다음에 16이 없고 17로 건너뛰면 15까지만 저장이 되겠네요.
수고하셨어요.
여분필드를 일부러 띄엄 띄엄 만드는 것은 아닌데 추후에 추가나 수정시에 까먹고 건너 뛰는 경우가 있습니다. 두번째 코드로 변경하면 연속해서 있거나 띄엄띄엄 있거나 모두 사용이 가능 한자요? 감사합니다
@풍운 네, 추가로 올린 내용이 띄엄띄엄을 위해 만들었는데 테스트는 많이 못 하였습니다.
@들레아빠 네 저도 나중에 테스트해보겠습니다. 감사합니다
@풍운 네 감사 합니다.
멋진 팁 고맙습니다.
감사합니다
정말 감사합니다.
와미쳤다. ㅋㅋ 여분필드 추가안되어서 애먹고있었는데 답변달아주셔서 왔습니다. 잘쓰겠습니다~!! 채택했습니다~!!