답변 2개
채택된 답변
+20 포인트
1년 전
※ 여러 게시판의 게시글 수를 일괄적으로 한꺼번에 조회하고,
각 게시판별로 갱신하려 하시는 것인가요.
> 각 게시판ID에 대해 개별적으로 카운트를 계산하여
g5_board 테이블의 bo_count_write 필드를 일괄 업데이트할 수 있지 않을까요?
- 새로운 PHP 파일을 만들어 관리자가 접근하여 실행.
1. 모든 게시판에 대해 개별적으로 카운트를 조회하고 필드를 업데이트하는 쿼리
Copy
UPDATE g5_board b
JOIN (
SELECT '게시판ID1' AS bo_table, COUNT(*) AS count_write FROM g5_write_게시판ID1 WHERE wr_is_comment = 0
UNION ALL
SELECT '게시판ID2', COUNT(*) FROM g5_write_게시판ID2 WHERE wr_is_comment = 0
UNION ALL
SELECT '게시판ID3', COUNT(*) FROM g5_write_게시판ID3 WHERE wr_is_comment = 0
-- 추가적인 게시판들도 여기에 UNION ALL로 계속 추가
) AS subquery ON b.bo_table = subquery.bo_table
SET b.bo_count_write = subquery.count_write;
2. SQL 쿼리를 실행할 PHP 파일
Copy
<?php
include_once('./common.php');
if ($is_admin != 'super') {
die('관리자 권한이 필요합니다.');
}
$sql = "
UPDATE g5_board b
JOIN (
SELECT '게시판ID1' AS bo_table, COUNT(*) AS count_write FROM g5_write_게시판ID1 WHERE wr_is_comment = 0
UNION ALL
SELECT '게시판ID2', COUNT(*) FROM g5_write_게시판ID2 WHERE wr_is_comment = 0
UNION ALL
SELECT '게시판ID3', COUNT(*) FROM g5_write_게시판ID3 WHERE wr_is_comment = 0
-- 추가적인 게시판들도 여기에 UNION ALL로 계속 추가
) AS subquery ON b.bo_table = subquery.bo_table
SET b.bo_count_write = subquery.count_write;
";
$result = sql_query($sql);
if ($result) {
echo "모든 게시판의 글 수가 성공적으로 업데이트되었습니다.";
} else {
echo "업데이트에 실패했습니다. SQL 오류를 확인하세요.";
}
3. CRON 작업을 추가하실 수도 ~
Copy
0 * * * * php /path/to/gnuboard5/update_board_count.php
로그인 후 평가할 수 있습니다
답변에 대한 댓글 2개
1년 전
~/_
-
- """SQL 쿼리를 실행할 PHP 파일"""은 '미니님a'의 소스가 더 간결하고 좋습니다.
> 처리 결과는 같습니다.
-
- """SQL 쿼리를 실행할 PHP 파일"""은 '미니님a'의 소스가 더 간결하고 좋습니다.
> 처리 결과는 같습니다.
댓글을 작성하려면 로그인이 필요합니다.
1년 전
Copy
<?php
include_once('./_common.php');
// 업데이트할 게시판 ID 배열
$bo_tables = array(
'free', // 자유게시판
'gallery', // 갤러리
);
// 각 게시판별로 반복
foreach ($bo_tables as $bo_table) {
// 게시물 수 업데이트 쿼리
$sql = " update {$g5['board_table']}
set bo_count_write = (
select count(*)
from {$g5['write_prefix']}{$bo_table}
where wr_is_comment = 0
)
where bo_table = '{$bo_table}' ";
// 쿼리 실행
sql_query($sql);
}
?>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인