'카누'님 팁중 전체게시판 랜덤 게시물 조회수 랜덤으로 조작 문의드려요
관련링크
https://sir.kr/g5_tip/6720
116회 연결
본문
카누님 2017년 올려주신 글에서 아래 내용을 발견했습니다.
$Search = " where (1) ";
$Search .= " and wr_is_comment = 0 and wr_datetime >= (NOW() - INTERVAL 7 DAY) ";
$SelectBoard = " select bo_table from ".$g5['board_table'];
$QueryBoard = sql_query($SelectBoard);
while($RowBoard = sql_fetch_array($QueryBoard)){ $ResultSelect[] = "( select *, '".$RowBoard['bo_table']."' as bo_table from ".$g5['write_prefix'].$RowBoard['bo_table'].$Search." )"; }
$ResultQuery = implode(" union all ", $ResultSelect);
$ResultQuery .= " order by rand() limit 10 ";
$Query = sql_query($ResultQuery);
while($Row = sql_fetch_array($Query)){
$Rand = rand(1, 50);
sql_query(" update ".$g5['write_prefix'].$Row['bo_table']." set wr_hit = wr_hit+".$Rand." where wr_id = ".$Row['wr_id']." ");
}
모든 게시판에 적용 됩니다.
$Rand = rand(1, 50); // 1부터 50까지 랜덤으로 올라갑니다.
위 내용에 보면 $Search .= " and wr_is_comment = 0 and wr_datetime >= (NOW() - INTERVAL 7 DAY) 에서
질문1 : 7일 내의 작성 글에만 저 코드가 적용되는 건가요?
질문2 : 0~3일 내의 작성 글에는
rand(1, 50)을 적용하고 4~7일 내의 작성 글에는 rand(1, 10)을 적용하고 싶다 면 어떻게 수정해야 할지 문의드려봅니다.
답변 2
게시물 건 바이 건 반복 처리라서 좋지 않습니다.
게시판별 일괄 갱신용 코드 남깁니다.
<?php
include_once('./common.php'); // 공통 호출
// Step 1. 게시판 테이블명 구하기
$board_list = []; // 배열 초기화
$sql = "SELECT bo_table FROM {$g5['board_table']}";
$result = sql_query($sql);
while ( $row=sql_fetch_array($result) ) {
$board_list[] = $row['bo_table'];
}
/*
// 또는 필요한 테이블명만 나열
$board_list = [
'free',
'gallery',
'notice',
];
*/
// Step 2. 게시판별 최근 1주일 내 게시물, 조회수 랜덤 갱신 (3일 내 1~50, 3일 초과 1~10)
foreach ( $board_list as $board ) {
$table = $g5['write_prefix'].$board; // 실제 테이블명. 예) g5_write_free
sql_query("UPDATE {$table}
SET wr_hit=IF(DATEDIFF(NOW(), wr_datetime)<=3, FLOOR(1+(RAND()*50)), FLOOR(1+(RAND()*10)))
WHERE wr_datetime > DATE_SUB(NOW(), INTERVAL 7 DAY)");
}
네 자연스럽게 증가하는걸 보여주는거 같아서 저 방법이 좋아보였습니다.
원글에 문의드린 코드는 일정 시간마다 랜덤하게 조회수를 추가해서 증가하는 기능이었는데
답변 주신 내용 적용해 보니 새로고침 할때마다 조회수가 정해진 랜덤값으로 증가해서 더해지는게 아니라, 범위 내에서 늘었다 줄었다 하면서 표시 되는것 같습니다.ㅜㅜ
답변을 작성하시기 전에 로그인 해주세요.