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할 이유가 없습니다(속도만 느리게 만들 뿐)
이런 저런 방법이 잇지만
그냥 배열에 값을 넣어놓고 배열값에따른 정령을 하셔두됩니다