노지호박

장바구니를 이용한 견적서 출력기능 만들기

· 2017-05-11 (목) 15:50:36 · 9589 · 12
목차
1. 프로그램 구조 설명
2. 프로그램 세부내용


1. 프로그램 구조 설명
1) 견적상품은 장바구니에 담긴 상품을 사용합니다.
(1) 선택옵션을 1개(1단계)만 사용합니다. 선택옵션이 2단 이상일 경우 오작동 할 수 있음.
(2) 추가옵션은 사용하지 않습니다. 추가옵션이 있는 경우 오작동 할 수 있음.
2) 장바구니(cart.php)에 견적서출력 버튼을 생성(주문하기 버튼 옆)
3) 버튼 클릭으로 자바스크립트 함수를 실행
(1) ajax방식으로 상품정보를 세션에 저장
(2) 팝업으로 견적서인쇄 페이지를 띄움
4) 견적서인쇄 페이지에서 세션값을 검사하여 상품정보DB 조회후 화면에 표시함

*) 견적자료는 DB에 저장하거나 별도로 전송하지 않습니다. (필요하면 별도로 개발하세요.)



2. 프로그램 세부내용

1) cart.php : form_check() 함수 아래에 form_print() 함수를 선언합니다.

[code]
<script type="text/javascript">
// 장바구니 상품을 견적서로 출력한다. [라보텍, 2017-05-10]
function form_print() {
//console.log("print click");
var f = document.frmcartlist;
var objWin = null;
var cart_data = $(f).serialize();

if($("input[name^=ct_chk]:checked").size() < 1) {
alert("견적서를 출력하실 상품을 하나이상 선택해 주십시오.");
return false;
}

$.ajax({
type: "POST",
data: cart_data,
url: "ajax.cartprint.php",
cache: false,
async: false,
success: function(data) {
save_result = data; // ajax 결과처리는 대충넘어갑니다.
}
});

objWin = window.open("cartprint.php", "WinItemPrint", "width=640,height=750,scrollbars=yes");
if(objWin) {
return;
} else {
alert("견적서 페이지를 실행하지 못하였습니다.");
return;
}
}
</script>
[/code]

2) cart.php : 주문하기 버튼 옆에 견적서출력 버튼을 생성합니다.

[code]
<button type="button" onclick="return form_print();" class="btn_submit" style="background:#1596db;">견적서출력</button>
[/code]

3) ajax.cartprint.php 파일을 생성합니다.

[code]
<?php
include_once('./_common.php');

if(empty($_POST))
die('정보가 넘어오지 않았습니다.');

$dt_data = serialize($_POST);
set_session("cartprint", $dt_data);

die('');
?>
[/code]

4) cartprint.php 파일을 생성합니다.

[code]
<?php
include_once('./_common.php');
include_once(G5_PATH.'/head.sub.php');

# 세션데이터에서 장바구니 전송값을 가져온다. ---------------------------------------------------
# [cart.php -> ajax.cartprint.php 세션저장한 값]
$tmp_data = get_session("cartprint");
if($tmp_data) {
$array = unserialize($tmp_data);
}
//print_r($array);

# 장바구니 데이터 검사 --------------------------------------------------------------------------
if(is_array($array) && is_array($array['it_id']) && is_array($array['ct_chk'])) {
# 장바구니 전송됨
} else {
# 장바구니 전송안됨
echo "<h2>견적서를 출력할 제품이 없습니다.</h2>";
include_once(G5_PATH.'/tail.sub.php');
exit;
}

# 장바구니 no 가공 ---------------------------------------------------------------------------
/* 장바구니 상품번호와 체크여부(ct_chk)를 비교하여 견적할 제품번호만 남긴다. */
foreach($array['it_id'] as $key=>$val) {
if(isset($array['ct_chk'][$key]) && $array['ct_chk'][$key]=="1") {
$TMP['it'][] = $val;
} else {
continue;
}
}

//print_r($TMP['it']);
// 이하 생략 : 첨부파일 참조
?>
[/code]

첨부파일

cartprint.php (7 KB) 331회 2017-05-11 15:50
|

댓글 12개

오잉 이거 진짜 필요한거 같은데 결과물 예시를 못봐서 넘 아쉽네요 너무 감사합니다
좋은 자료 감사합니다. ^^
2017-10-01 (일) 23:49:10
한글이 깨져나오는데 어떻게 안될까요?
감사합니다
감사합니다. 잘되네요~^-^
추가옵션에도 제품이 있을경우 메인 견적금액이 계속 추가되네요.
php 버전문제인지 약간의 오류가 있었지만 해결되서
잘 쓰겠습니다 생큐~^.~
혹시 에러중에

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in /www_root/lib/common.lib.php on line 1692

이부분과

Warning: Invalid argument supplied for foreach() in /www_root/shop/cartprint.php on line 196

이부분 해결하신걸까요 ㅠㅠ?
@qoqofh cartprint.php 내용중에서
$qry = " SELECT * FROM `{$g5['g5_shop_cart_table']}` WHERE od_id = '{$s_cart_id}' AND it_id IN ( ". implode(",", $TMP['it']) ." ) ORDER BY it_id ";

를 아래와 같이 변경하세요

$qry = " SELECT * FROM `{$g5['g5_shop_cart_table']}` WHERE od_id = '{$s_cart_id}' AND it_id IN ( '". implode("','", $TMP['it']) ."' ) ORDER BY it_id ";
감사합니다.
foreach($DATA['cart'] as $key=>$val) {
$this_price = ($val['ct_price']+$val['io_price']) * $val['ct_qty'];
$total_price += $this_price;

이쪽 구문에서
Warning: Invalid argument supplied for foreach() in /www_root/shop/cartprint.php on line 196

이라는 에러가 나는데 뭐가 문제일까요 ㅠㅠ?

고수님들~ 상품추가옵션 있을 경우 해당 판매가 금액 추가 되어 오류가 발생됩니다. 상품추가옵션도 정상 작동할 수 있게 가능한 방법 없을까요? 도와주세요~

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

영카트5 팁자료실

455건
+
제목 글쓴이 날짜 조회
17-11-07 조회 3,534
17-10-25 조회 6,244
17-10-19 조회 4,619
17-10-18 조회 5,890
17-10-07 조회 5,122
17-09-21 조회 1.2만
17-09-13 조회 5,990
17-09-03 조회 4,660
17-08-10 조회 5,584
17-08-03 조회 5,490
17-08-01 조회 5,061
17-08-01 조회 4,179
17-07-27 조회 5,461
17-07-06 조회 5,798
17-06-24 조회 6,317
17-06-22 조회 5,934
17-06-17 조회 7,939
17-06-15 조회 5,036
17-06-13 조회 5,916
17-06-09 조회 5,723
17-06-08 조회 4,581
17-06-08 조회 6,472
17-06-04 조회 5,902
17-06-02 조회 8,545
17-05-31 조회 5,123
17-05-24 조회 5,717
17-05-22 조회 6,194
17-05-19 조회 4,539
17-05-11 조회 9,590
17-05-10 조회 9,975