합계금액 문의 드립니다.

합계금액 문의 드립니다.

QA

합계금액 문의 드립니다.

답변 2

본문

영카트 /shop/orderform.php부분에

합계금액 계산을 수정하고자 하는데요..

 

pt_msg1에 값이 있을경우엔, 총 합계금액이 pt_msg1로

pt_msg1에 값이 없을 경우엔 아래 기존 합계금액 계산식으로 나오고자 하는데

어케 추가수정을 해야할까요

 

// 합계금액 계산
    $sql = " select SUM(IF(io_type = 1, (io_price * ct_qty), ((ct_price + io_price) * ct_qty))) as price,
                    SUM(ct_point * ct_qty) as point,
                    SUM(ct_qty) as qty
                from {$g5['g5_shop_cart_table']}
                where it_id = '{$row['it_id']}'
                  and od_id = '$s_cart_id' ";
    $sum = sql_fetch($sql);

이 질문에 댓글 쓰기 :

답변 2

작성하신 코드 하단에

$pt_msg가 존재하는지 공백은 아닌지, 문자이면 숫자로변환 시켜 체크해야 

오류가 없습니다.


if (isset($pt_msg) && $pt_msg != "" && intval($pt_msg) > 0)
    echo number_format($pt_msg)."원";
else
    echo number_format($sum['price'])."원";

숫자로 변환한 상태입니다..~
위에 방법으로는 안되서
아래처럼 했는데... 협의금액이 있을경우에 부분이 안되네요 ㅠㅠㅠㅠㅠ
아래에서 수정을 어케해야할까요..?

if($row['pt_msg1']) {
// 합계금액 계산 (협의금액이 있을경우)

$sql = " select  SUM(pt_msg1 * 1) as price,
                                SUM(ct_point * ct_qty) as point,
        SUM(ct_qty) as qty
from {$g5['g5_shop_cart_table']}
where it_id = '{$row['it_id']}'
        and od_id = '$s_cart_id' ";
                  $sum = sql_fetch($sql);

} else {

// 합계금액 계산 (협의금액이 없을경우)
$sql = " select SUM(IF(io_type = 1, (io_price * ct_qty), ((ct_price + io_price) * ct_qty))) as price,
SUM(ct_point * ct_qty) as point,
SUM(ct_qty) as qty
from {$g5['g5_shop_cart_table']}
where it_id = '{$row['it_id']}'
  and od_id = '$s_cart_id' ";
$sum = sql_fetch($sql);


}

  원하시는 구조는
주문내역의 총합을 구하시려는거 같은데

화면별로 구성이나 쿼리의 형태가 다 다르고
이걸 Q&A에서 다루기엔 질문/답변의 범위를 많이 넘어서는것 같습니다.

원하시는 의도대로 쿼리를 구성하시시고
그 합산을 정확하게 도출해 내서 합치는게 관건입니다.

화면의 요소가 다르게 작동하면 다르게 추출하는 기능은 방법적으로 다양하기에
뭐라고 말씀드리기도 애매합니다.

초기 질문은
pt_msg1 값이 있을때는 pt_msg로
없을때의 올려준 쿼리 합산
이었습니다.


지금요구하시는건
관리모드의 주문내역 합산입니다. => 관리모드의 주문내역의 합을 구하는 것 자체는
요구사항에 따라 달라지므로 제작의뢰 가시는게 맞는것 같습니다.
(조건별 합등이 따라야 하므로 내용이 대폭 확장됩니다.)

숫자로 변환이 되고 안되고를 확인하시려면

 

중간에 해당 내용을 출력해보시는게 좋습니다.

 

위의 구문중 협의금액이 있는경우..

 


if($row['pt_msg1']) {  <-- 숫자로만 기록되나요?
    // 합계금액 계산 (협의금액이 있을경우) 

    $sql = " select  SUM(pt_msg1 * 1) as price, 
                         SUM(ct_point * ct_qty) as point, 
                         SUM(ct_qty) as qty 
               from {$g5['g5_shop_cart_table']} 
               where it_id = '{$row['it_id']}' 
               and od_id = '$s_cart_id' "; 
    $sum = sql_fetch($sql); 
} else { 
      // 합계금액 계산 (협의금액이 없을경우) 
    $sql = " select SUM(IF(io_type = 1, (io_price * ct_qty), ((ct_price + io_price) * ct_qty))) as price, 
                       SUM(ct_point * ct_qty) as point, 
                       SUM(ct_qty) as qty 
               from {$g5['g5_shop_cart_table']} 
               where it_id = '{$row['it_id']}' 
                   and od_id = '$s_cart_id' "; 
     $sum = sql_fetch($sql); 
}

 

두가지 경우다 쿼리상에서

price 와  point를 추출하는 형태이고 뒷부분만 다른경우

문장을 축소시킬수있습니다.


if($row['pt_msg1']) {  // 제가 모호하게 생각하는 부분은 이부분입니다
    // 합계금액 계산 (협의금액이 있을경우) 
    $sql = " select  SUM(pt_msg1 * 1) as price,  "
} else { 
      // 합계금액 계산 (협의금액이 없을경우) 
    $sql = " select SUM(IF(io_type = 1, (io_price * ct_qty), ((ct_price + io_price) * ct_qty))) as price,  "
}
    $sql .= "         SUM(ct_point * ct_qty) as point, 
                       SUM(ct_qty) as qty 
               from {$g5['g5_shop_cart_table']} 
               where it_id = '{$row['it_id']}' 
                   and od_id = '$s_cart_id' "; 
     $sum = sql_fetch($sql); 

 

 

'pt_msg1을 인식을 못하는거 같은데 왜그럴까요..
ct_price + io_price - pt_msg1 이런식으로 하면  pt_msg1값을 빼기는 하는거 보니 숫자로 인식은 된는거 같은데...

if($row['ct_price'] > 0) { 로 하면 되는데...뭘까요

ct_price + io_price - pt_msg1

이것이 작동한다고 해서 숫자다(?) 라고 판단하지 않으시는게 좋습니다.

var_dump($row) ; 또는 print_r2($row);
를 통해서 해당 배열변수를 다 찍어보시거나

해당 필드가 존재한느것이면 개별로 찍어서 확인하시면서 체크하는게 좋습니다.

if ($row['ct_price'] 는 (영카트 기본이라면) 장바구니의 품목값이 될테니 무어라도 값이 있겠죠

보통 계산이 틀어지는경우는
숫자 + 문자 계산이 발생하는경우입니다.
문자를 강제로 자동형변환 시키다보면
내가 원하는 값이 아닌 다른값들이 나타납니다.

이럴때는 입력 / 중간(변환) / 결과(저장) / 조회(view) , 계산 처리할때 다 확인해보는게 좋습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 2
© SIRSOFT
현재 페이지 제일 처음으로