쿼리 작동 질문드려요
본문
mb_6가 1인 것을 불러와서
포인트가 0보다 클 시에 mb_6를 비어있음으로 해주고 싶은데요
밑에 소스에서 주석처리 길게 한 부분 밑에가 제가 넣은 코드에요
function save_order_point($ct_status="완료")
{
global $g5, $default;
$beforedays = date("Y-m-d H:i:s", ( time() - (86400 * (int)$default['de_point_days']) ) ); // 86400초는 하루
$sql = " select * from {$g5['g5_shop_cart_table']} where ct_status = '$ct_status' and ct_point_use = '0' and ct_time <= '$beforedays' ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++) {
// 회원 ID 를 얻는다.
$od_row = sql_fetch("select od_id, mb_id from {$g5['g5_shop_order_table']} where od_id = '{$row['od_id']}' ");
if ($od_row['mb_id'] && $row['ct_point'] > 0) { // 회원이면서 포인트가 0보다 크다면
$po_point = $row['ct_point'] * $row['ct_qty'];
$po_content = "주문번호 {$od_row['od_id']} ({$row['ct_id']}) 배송완료";
insert_point($od_row['mb_id'], $po_point, $po_content, "@delivery", $od_row['mb_id'], "{$od_row['od_id']},{$row['ct_id']}");
}
sql_query("update {$g5['g5_shop_cart_table']} set ct_point_use = '1' where ct_id = '{$row['ct_id']}' ");
}
// 윗부분은 영카트 원본이고 적립하는 부분인데 전혀 문제가 없고 아랫부분이 제가 추가한 부분입니다.
$sql = "select mb_id, mb_point from {$g5['g5_member_table']} where mb_6 = '1' ";
while($rows = sql_fetch_array($sql)) {
if ($rows['mb_point'] > 0) {
sql_query("update {$g5['g5_member_table']} set mb_6 = '' where mb_id = '{$rows['mb_id']}' ");
}
}
}
이렇게 배송완료 했을 때 포인트 적립 부분에 추가를 했어요
그러면 위에 부분에서 일단 적립을 하고
아랫부분에서 적립한 결과를 가지고 처리를 하는건가요?
예를 들어 포인트가 -10인 사람이 20짜리 포인트 상품을 사서 배송완료하면
for 구문 쪽에서 포인트 적립이 되고 (현재 포인트 10)
while 구문 쪽에서 mb_6가 1이고 현재 포인트가 10이니까 mb_6를 비어있게 업데이트 해주나요?
배송완료 시 적립은 바로되게 변경해놨는데 실제로 mb_6가 바뀌지 않아서요
!-->답변 2
네 정상적으로 작동될거같네요
아 이거 해결했는데요 혹시 검색해서 보실 분들 위해서
{$g5['member_table']} 로 고치고 while 구문 끝나고 sql_query($sql); 넣으니 해결됐습니다
답변을 작성하시기 전에 로그인 해주세요.