테스트 사이트 - 개발 중인 베타 버전입니다

합계금액 문의 드립니다. 채택완료

어렵당당당 6년 전 조회 3,467

영카트 /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개

채택된 답변
+20 포인트
플래토
6년 전

작성하신 코드 하단에

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

오류가 없습니다.

</p>

<p>if (isset($pt_msg) && $pt_msg != "" && intval($pt_msg) > 0)</p>

<p>    echo number_format($pt_msg)."원";</p>

<p>else</p>

<p>    echo number_format($sum['price'])."원";</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

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

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);


}
어렵당당당
6년 전
숫자로 변환이 안된것같은데...
주문부분에 <?php echo number_format($item[$i]['it_options']);?>
이렇게만 수정했는데 또 어딜 수정해야할까요
어렵당당당
6년 전
관리자페이지 주문내역부분에
주문결제내역 주문총액을
pt_msg로 가져오고 싶은데
<?php echo number_format($opt['pt_msg1']); ?> 이렇게 하면 안나타나더라구요..
추가하는방법이있을까요
플래토
6년 전
@어렵당당당 원하시는 구조는
주문내역의 총합을 구하시려는거 같은데

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

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

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

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


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

댓글을 작성하려면 로그인이 필요합니다.

플래토
6년 전

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

 

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

 

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

 

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를 추출하는 형태이고 뒷부분만 다른경우

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

</p>

<p>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,  "

}</p>

<p>    $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); 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

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

if($row['ct_price'] > 0) { 로 하면 되는데...뭘까요
플래토
6년 전
ct_price + io_price - pt_msg1

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

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

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

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

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

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인