로그인후 db변경질문입니다..
본문
완료일이 오늘날짜보다 작다면 기간만료도
자동으로 바뀌게하려고 합니다.
/bbs/db_table.optimize.php
이 파일은 로그인을 하게되면 거치는 파일이라고 알고 있습니다
해서 그 파일속에 다음 코드를 넣었습니다.
$query = "select * from g5_write_note";
$result = sql_query($query);
$note = sql_fetch_array($result);
if ($note['wr_8'] < G5_TIME_YMD) {
sql_query("update g5_write_note set wr_3 = '5' where wr_3 = '1'or'2'or'3'or'4' ");
}
제가 생각한 것은 로그인을 하게 되면
오늘날짜가 $note['wr_8'] 값보다 크면 wr_3 = '1'or'2'or'3'or'4' 인값이
wr_3 = '5' 이렇게 바뀌어라 였는데 ㅠㅠ 오늘 로그인 했더니 바뀌지가 않네요..
if ($note['wr_8'] < G5_TIME_YMD) { 이 조건문을
if ($note['wr_8'] > G5_TIME_YMD) { 이렇게 하면 바로 바뀌거든요
제가 뭐 빼먹은 부분이 있나요? ㅠ.ㅠ
제발 알려주세요
답변 4
당연히 쿼리를 조회했는데
지금 for문이나 while문 같은 반복문이 돌면서
하나의 행마다 검사를 해야하는데
지금 쿼리상에는 하나의 행만 가져오고있으니 그렇지요....
$query = "select * from g5_write_note";
$result = sql_query($query);
for ($i=0; $note=sql_fetch_array($result); $i++) {
if ($note['wr_8'] < G5_TIME_YMD) {
sql_query("update g5_write_note set wr_3 = '5' where wr_3 = '1'or'2'or'3'or'4' ");
}
}
이런식으로 쿼리를 하나의 행 마다 반복문으로 실행해야
매번 업데이트합니다..
select 쿼리부터 잘못된거같습니다 where 절에서 wr_3 != 5 아닌것만 검색되어야하지않을까요?
아니면 로그인한 회원만 나오게학거나요
그게 아니라면 result 가 하나만 나오지도 않을거같습니다
$note[wr_8] 이 날짜형식인거같은데 어떤형식으로 나오는지도 확인이 필요할거같습니다
그리고 업데이트 쿼리에 where 절도 wr_3 != 5 이런식으로 해두는게 좋을거같네요
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 최고관리자일 때만 실행
if($config['cf_admin'] != $member['mb_id'] || $is_admin != 'super')
return;
상단의 최고관리자만 이용이 가능하도록 되있습니다.
해당 부분에 조건을 추가하셔서 일반 회원도 사용이 가능하도록 해도되고
제일 좋은 방법은 해당 스킨의 list 페이지에 접속했을때에만 실행하면되기때문에
굳이 모든페이지에서 계속 실행할 필요는 없을듯합니다.
예를들어
bbs/list.php 파일의 상단 부분에
if($bo_table == '게시판명'){
include_once(G5_BBS_PATH.'/db_test.php');
}
이런식으로 해당 게시판의 list에서만 bbs/db_test.php 파일을 불러오도록하고
그 db_test.php 파일에서 해당 쿼리문을 작성하시는것이 바람직해보입니다.
지금 비교 문자를 시간까지 체크를 원하신다면 G5_TIME_YMDHIS 이걸로 체크하셔야 할듯 보여집니다.