합계금액 문의 드립니다. 채택완료
영카트 /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가 존재하는지 공백은 아닌지, 문자이면 숫자로변환 시켜 체크해야
오류가 없습니다.
</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개
주문부분에 <?php echo number_format($item[$i]['it_options']);?>
이렇게만 수정했는데 또 어딜 수정해야할까요
주문결제내역 주문총액을
pt_msg로 가져오고 싶은데
<?php echo number_format($opt['pt_msg1']); ?> 이렇게 하면 안나타나더라구요..
추가하는방법이있을까요
주문내역의 총합을 구하시려는거 같은데
화면별로 구성이나 쿼리의 형태가 다 다르고
이걸 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를 추출하는 형태이고 뒷부분만 다른경우
문장을 축소시킬수있습니다.
</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개
ct_price + io_price - pt_msg1 이런식으로 하면 pt_msg1값을 빼기는 하는거 보니 숫자로 인식은 된는거 같은데...
if($row['ct_price'] > 0) { 로 하면 되는데...뭘까요
이것이 작동한다고 해서 숫자다(?) 라고 판단하지 않으시는게 좋습니다.
var_dump($row) ; 또는 print_r2($row);
를 통해서 해당 배열변수를 다 찍어보시거나
해당 필드가 존재한느것이면 개별로 찍어서 확인하시면서 체크하는게 좋습니다.
if ($row['ct_price'] 는 (영카트 기본이라면) 장바구니의 품목값이 될테니 무어라도 값이 있겠죠
보통 계산이 틀어지는경우는
숫자 + 문자 계산이 발생하는경우입니다.
문자를 강제로 자동형변환 시키다보면
내가 원하는 값이 아닌 다른값들이 나타납니다.
이럴때는 입력 / 중간(변환) / 결과(저장) / 조회(view) , 계산 처리할때 다 확인해보는게 좋습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
위에 방법으로는 안되서
아래처럼 했는데... 협의금액이 있을경우에 부분이 안되네요 ㅠㅠㅠㅠㅠ
아래에서 수정을 어케해야할까요..?
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);
}