od_time 역순 나오게 하기

od_time 역순 나오게 하기

QA

od_time 역순 나오게 하기

본문

<?php
include_once('./_common.php');
include_once(G5_THEME_PATH.'/head.php');
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>
<?php
$sql = "select a.od_time, sum(a.od_cart_price) od_cart_price, od_time from {$g5['g5_shop_order_table']} a inner join {$g5['member_table']} b on a.mb_id = b.mb_id where a.od_status != '취소' and a.mb_id = '{$member['mb_id']}' order by a.od_time desc limit 1";
$row = sql_fetch($sql);
$atoday = time();
$btoday = strtotime($row['od_time']);
$ctoday = round(($atoday - $btoday) / (60 * 60 * 24));
if($member['mb_level'] < 10) {
    if($ctoday < 365) {
        if($row['od_cart_price'] <= 50000){
            $level_up = 2;
        }elseif($row['od_cart_price'] <= 100000){
            $level_up = 3;
        }elseif($row['od_cart_price'] <= 150000){
            $level_up = 4;
        }elseif($row['od_cart_price'] <= 200000){
            $level_up = 5;
        }elseif($row['od_cart_price'] <= 250000){
            $level_up = 6;
        }elseif($row['od_cart_price'] <= 300000){
            $level_up = 7;
        }elseif($row['od_cart_price'] <= 500000){
            $level_up = 8;
        }elseif($row['od_cart_price'] <= 1000000){
            $level_up = 9;
        }
    } else {
            $level_up = 2;
    }

    sql_query(" update {$g5['member_table']} set mb_level = '$level_up' where mb_id = '$member[mb_id]' ");
}
?>
<?php echo $ctoday; ?><br>
<?php echo substr($row['od_time'],2,8); ?><br>
<?php echo $row['od_cart_price']; ?>

<?php
include_once(G5_THEME_PATH.'/tail.php');
?>

 

이게 전문이거든요?

 

취지가 뭐냐면 회원 로그인시 누적 금액에 따라 회원 등급을 올리고 최근 구매일로부터 1년 이상 경과한 고객은 레벨 2로 낮춰버리는 그런 프로그램이에요.

 

밑에 echo 는 그냥 테스트로 출력하는거구요

 

근데 <?php echo substr($row['od_time'],2,8); ?>

 

이 부분이 최신것이 아니라 제일 옛날게 나오네요 ㅜㅜ

 

order by a.od_time desc limit 1";

 

이거를 od_time이나 asc로 바꾸어도 동일하네요

 

도저히 바뀌질 않네요 ㅎㅎ... 우울하네요 ㅠㅠ

이 질문에 댓글 쓰기 :

답변 2

당연합니다

 sum(a.od_cart_price) <--- sum은 하나의 행만 출력합니다(limit 1, order by는 아무 의미가 없다는 말씀)

sum을 삭제 해보세요. 당연히 최신것이 나옵니다

서브쿼리를 사용하든지

 if($ctoday < 365) { <--- 다음에 sum 쿼리를 넣든지 하세요

 

그리고 위 소스에서는 쿼리에서 member_table을 join할 이유가 없습니다(속도만 느리게 만들 뿐)

 

 

 

<?php
$sql = "select sum(od_cart_price) od_cart_price from {$g5['g5_shop_order_table']} where od_status != '취소' and mb_id = '{$member['mb_id']}'";
$row = sql_fetch($sql);
if($member['mb_level'] < 10) {
if($row['od_cart_price'] <= 50000){
$level_up = 2;
}elseif($row['od_cart_price'] <= 100000){
$level_up = 3;
}elseif($row['od_cart_price'] <= 150000){
$level_up = 4;
}elseif($row['od_cart_price'] <= 200000){
$level_up = 5;
}elseif($row['od_cart_price'] <= 250000){
$level_up = 6;
}elseif($row['od_cart_price'] <= 300000){
$level_up = 7;
}elseif($row['od_cart_price'] <= 500000){
$level_up = 8;
}elseif($row['od_cart_price'] <= 1000000){
$level_up = 9;
}

sql_query(" update {$g5['member_table']} set mb_level = '$level_up' where mb_id = '$member[mb_id]' ");
}
?>
<?php echo $row['od_cart_price']; ?><br>

<?php
$sql = "select od_time from {$g5['g5_shop_order_table']} order by od_time desc limit 1";
$row = sql_fetch($sql);
$atoday = time();
$btoday = strtotime($row['od_time']);
$ctoday = round(($atoday - $btoday) / (60 * 60 * 24));
if($member['mb_level'] < 10) {
if($ctoday > 365) {

$level_up = 2;
}

sql_query(" update {$g5['member_table']} set mb_level = '$level_up' where mb_id = '$member[mb_id]' ");
}
?>
<?php echo $ctoday; ?><br>
<?php echo substr($row['od_time'],2,8); ?><br>

답변을 작성하시기 전에 로그인 해주세요.
전체 123,529 | RSS
QA 내용 검색

회원로그인

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