로그인후 db변경질문입니다..

로그인후 db변경질문입니다..

QA

로그인후 db변경질문입니다..

본문


완료일이 오늘날짜보다 작다면 기간만료도 

자동으로 바뀌게하려고 합니다.

4b4d903efb7350c31c4433373be8ee5d_1504829399_1362.jpg
 

/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' ");

}

}

이런식으로 쿼리를 하나의 행 마다 반복문으로 실행해야

매번 업데이트합니다..

아니면 반복문을 실행하지않을꺼면

$sql = " update g5_write_note set wr_3 = '5' where wr_8 < '".G5_TIME_YMD."' and wr_3 != '5' ";
$result = sql_query($sql);

이런식으로 쿼리를 실행하셔야죠

테이블의 wr_8의 날짜는 지금보다 작고 wr_3의 상태값이 5가아닌(1,2,3,4를 포함함) 행을 찾아 wr_3의 상태가 5로 업데이트한다.

select 쿼리부터 잘못된거같습니다 where 절에서 wr_3 != 5 아닌것만 검색되어야하지않을까요?


아니면 로그인한 회원만 나오게학거나요


그게 아니라면 result 가 하나만 나오지도 않을거같습니다


$note[wr_8] 이 날짜형식인거같은데 어떤형식으로 나오는지도 확인이 필요할거같습니다


그리고 업데이트 쿼리에 where 절도 wr_3 != 5 이런식으로 해두는게 좋을거같네요

네!

echo 찍으니까 2017-09-21하고만 비교를하네요.. 완료일의 모든 숫자를 가져와 오늘 날짜와 비교하는거였는데..

어떻게 써야 할까요? ㅠ.ㅠ

문제점은 이제 이해를 했는데 .. 부탁드립니다..

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 파일에서 해당 쿼리문을 작성하시는것이 바람직해보입니다.

감사합니다. 그렇게 수정은했는데요.. 문법은 여전히 문제입니다..


echo 찍으니까 2017-09-21하고만 비교를하네요.. 완료일의 모든 숫자를 가져와 오늘 날짜와 비교하는거였는데..

어떻게 써야 할까요? ㅠ.ㅠ

답변을 작성하시기 전에 로그인 해주세요.
전체 840
QA 내용 검색
filter #DB ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT