From 05b9a02dfb84a6caa80d4bf047b4be54c497dc1f Mon Sep 17 00:00:00 2001 From: chicpro Date: Mon, 27 May 2013 18:18:47 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=A5=EB=B0=94=EA=B5=AC=EB=A6=AC=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=98=B5=EC=85=98=20=EC=88=98=EC=A0=95=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/shop.js | 13 ++-- lib/shop.lib.php | 2 +- shop/cartoption.php | 161 +++++++++++++++++++++++++++++++++++++++++++ shop/cartsub.inc.php | 20 ++++++ shop/cartupdate.php | 142 +++++++++++++++++++++++++++++++++++--- 5 files changed, 320 insertions(+), 18 deletions(-) create mode 100644 shop/cartoption.php diff --git a/js/shop.js b/js/shop.js index caae52746..b1846cb45 100644 --- a/js/shop.js +++ b/js/shop.js @@ -1,6 +1,6 @@ $(function() { // 선택옵션 - $("select[name='it_option[]']").change(function() { + $("select[name='it_option[]']").live("change", function() { var sel_count = $("select[name='it_option[]']").size(); var idx = $("select[name='it_option[]']").index($(this)); var val = $(this).val(); @@ -57,19 +57,19 @@ $(function() { }); // 추가옵션 - $("select[name='it_supply[]']").change(function() { + $("select[name='it_supply[]']").live("change", function() { var $el = $(this); // 선택옵션 자동추가 기능을 사용하려면 아래 false를 true로 설정 sel_supply_process($el, false); }); // 선택옵션 추가 - $("#sit_selopt_submit").click(function() { + $("#sit_selopt_submit").live("click", function() { sel_option_process(true); }); // 추가옵션 추가 - $("button.sit_sel_submit").click(function() { + $("button.sit_sel_submit").live("click", function() { var $el = $(this).closest("td").find("select[name='it_supply[]']"); sel_supply_process($el, true); }); @@ -118,14 +118,11 @@ $(function() { if($el.hasClass("sit_opt_list")) { if($(".sit_opt_list").size() <= 1) del_exec = false; - } else { - if($(".sit_opt_list").size() < 1) - del_exec = false; } } if(del_exec) { - $(this).closest("li").remove(); + $el.closest("li").remove(); price_calculate(); } else { alert("선택옵션은 하나이상이어야 합니다."); diff --git a/lib/shop.lib.php b/lib/shop.lib.php index f3e59be3c..009804a76 100644 --- a/lib/shop.lib.php +++ b/lib/shop.lib.php @@ -683,7 +683,7 @@ function print_item_options($it_id, $uq_id) { global $g4; - $sql = " select ct_option from {$g4['shop_cart_table']} where it_id = '$it_id' and uq_id = '$uq_id' order by ct_num asc "; + $sql = " select ct_option from {$g4['shop_cart_table']} where it_id = '$it_id' and uq_id = '$uq_id' order by io_type asc, ct_num asc, ct_id asc "; $result = sql_query($sql); $str = ''; diff --git a/shop/cartoption.php b/shop/cartoption.php new file mode 100644 index 000000000..d1fc9a836 --- /dev/null +++ b/shop/cartoption.php @@ -0,0 +1,161 @@ + + +
+ + + + + + + +
+

선택옵션

+ + + + + + + + +
+
+ +
+
+ + + +
+

추가옵션

+ + + + + + + + +
+
+ + +
+
    + +
  • + + + + + + + + +
    + + + + +
    +
  • + +
+
+ +
+
+ + +
+
+ + \ No newline at end of file diff --git a/shop/cartsub.inc.php b/shop/cartsub.inc.php index 77573d2e6..55dcdf30b 100644 --- a/shop/cartsub.inc.php +++ b/shop/cartsub.inc.php @@ -14,6 +14,8 @@ else $colspan = 6; ?> + +
@@ -236,6 +238,19 @@ if ($s_page == 'cart.php') { $(function() { // 선택사항수정 $(".mod_options").click(function() { + var it_id = $(this).closest("tr").find("input[name^=it_id]").val(); + var idx = $(".mod_options").index($(this)); + + $.post( + "./cartoption.php", + { it_id: it_id, idx: idx }, + function(data) { + $("#mod_option_frm").remove(); + $(".mod_options:eq("+idx+")").after("
"); + $("#mod_option_frm").html(data); + price_calculate(); + } + ); }); // 모두선택 @@ -245,6 +260,11 @@ $(function() { else $("input[name^=ct_chk]").attr("checked", false); }); + + // 옵션수정 닫기 + $("#mod_option_close").live("click", function() { + $("#mod_option_frm").remove(); + }); }); function form_check(act) { diff --git a/shop/cartupdate.php b/shop/cartupdate.php index 2fba3716d..207961a9b 100644 --- a/shop/cartupdate.php +++ b/shop/cartupdate.php @@ -124,7 +124,7 @@ else if ($act == "multi") // 온라인견적(등)에서 여러개의 상품이 sql_query($sql); } } -else // 장바구니에 담기 +else if ($act == "optionmod") // 장바구니에서 옵션변경 { if (!$_POST['it_id']) alert('장바구니에 담을 상품을 선택하여 주십시오.'); @@ -213,21 +213,145 @@ else // 장바구니에 담기 sql_query(" ALTER TABLE `{$g4['shop_cart_table']}` ADD `ct_direct` TINYINT NOT NULL "); } + // 기존 장바구니 자료를 먼저 삭제 + sql_query(" delete from {$g4['shop_cart_table']} where uq_id = '$tmp_uq_id' and it_id = '$it_id' "); + // 포인트 사용하지 않는다면 if (!$config['cf_use_point']) { $_POST['it_point'] = 0; } // 장바구니에 Insert - $comma = ''; - $sql = " INSERT INTO {$g4['shop_cart_table']} - ( uq_id, it_id, it_name, ct_status, ct_price, ct_point, ct_point_use, ct_stock_use, ct_option, ct_qty, ct_num, io_id, io_type, io_price, ct_time, ct_ip, ct_direct ) - VALUES "; + if(count($_POST['io_id'])) { + $comma = ''; + $sql = " INSERT INTO {$g4['shop_cart_table']} + ( uq_id, it_id, it_name, ct_status, ct_price, ct_point, ct_point_use, ct_stock_use, ct_option, ct_qty, ct_num, io_id, io_type, io_price, ct_time, ct_ip, ct_direct ) + VALUES "; - for($i=0; $i<$option_count; $i++) { - $sql .= $comma."( '$tmp_uq_id', '{$_POST['it_id']}', '{$_POST['it_name']}', '쇼핑', '{$_POST['it_price']}', '{$_POST['it_point']}', '0', '0', '{$_POST['io_value'][$i]}', '{$_POST['ct_qty'][$i]}', '$i', '{$_POST['io_id'][$i]}', '{$_POST['io_type'][$i]}', '{$_POST['io_price'][$i]}', '".G4_TIME_YMDHIS."', '$REMOTE_ADDR', '$sw_direct' )"; - $comma = ' , '; + for($i=0; $i<$option_count; $i++) { + $sql .= $comma."( '$tmp_uq_id', '{$_POST['it_id']}', '{$_POST['it_name']}', '쇼핑', '{$_POST['it_price']}', '{$_POST['it_point']}', '0', '0', '{$_POST['io_value'][$i]}', '{$_POST['ct_qty'][$i]}', '$i', '{$_POST['io_id'][$i]}', '{$_POST['io_type'][$i]}', '{$_POST['io_price'][$i]}', '".G4_TIME_YMDHIS."', '$REMOTE_ADDR', '$sw_direct' )"; + $comma = ' , '; + } + + sql_query($sql); } +} +else // 장바구니에 담기 +{ + if (!$_POST['it_id']) + alert('장바구니에 담을 상품을 선택하여 주십시오.'); - sql_query($sql); + $option_count = count($_POST['io_id']); + if($option_count) { + if($_POST['io_type'][0] != 0) + alert('상품의 선택옵션을 선택해 주십시오.'); + + for($i=0; $i $it_stock_qty) + { + alert($_POST['io_value'][$i]." 의 재고수량이 부족합니다.\\n\\n현재 재고수량 : " . number_format($it_stock_qty) . " 개"); + } + } + //-------------------------------------------------------- + + // 바로구매에 있던 장바구니 자료를 지운다. + $result = sql_query(" delete from {$g4['shop_cart_table']} where uq_id = '$tmp_uq_id' and ct_direct = 1 ", false); + if (!$result) { + // 삭제중 에러가 발생했다면 필드가 없다는 것이므로 바로구매 필드를 생성한다. + sql_query(" ALTER TABLE `{$g4['shop_cart_table']}` ADD `ct_direct` TINYINT NOT NULL "); + } + + // 포인트 사용하지 않는다면 + if (!$config['cf_use_point']) { $_POST['it_point'] = 0; } + + // 장바구니에 Insert + $sql = " select ct_num + from {$g4['shop_cart_table']} + where it_id = '{$_POST['it_id']}' + and uq_id = '$tmp_uq_id' + order by ct_num desc "; + $row = sql_fetch($sql); + if($row['ct_num'] != '') + $ct_num = (int)$row['ct_num'] + 1; + else + $ct_num = 0; + + $comma = ''; + $sql = " INSERT INTO {$g4['shop_cart_table']} + ( uq_id, it_id, it_name, ct_status, ct_price, ct_point, ct_point_use, ct_stock_use, ct_option, ct_qty, ct_num, io_id, io_type, io_price, ct_time, ct_ip, ct_direct ) + VALUES "; + + for($i=0; $i<$option_count; $i++) { + $sql .= $comma."( '$tmp_uq_id', '{$_POST['it_id']}', '{$_POST['it_name']}', '쇼핑', '{$_POST['it_price']}', '{$_POST['it_point']}', '0', '0', '{$_POST['io_value'][$i]}', '{$_POST['ct_qty'][$i]}', '$ct_num', '{$_POST['io_id'][$i]}', '{$_POST['io_type'][$i]}', '{$_POST['io_price'][$i]}', '".G4_TIME_YMDHIS."', '$REMOTE_ADDR', '$sw_direct' )"; + $comma = ' , '; + $ct_num++; + } + + sql_query($sql); + } } // 바로 구매일 경우