장바구니를 이용한 견적서 출력기능 만들기 > 영카트5 팁자료실

영카트5 팁자료실

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

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

첨부파일

cartprint.php (7.0K) 309회 다운로드 2017-05-11 15:50:36

본문

목차
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() 함수를 선언합니다.


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


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


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


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


<?php
include_once('./_common.php');

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

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

die('');
?>


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


<?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']);
// 이하 생략 : 첨부파일 참조
?>
추천
3

댓글 12개

혹시 에러중에

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

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

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

전체 392
영카트5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT