채택완료

영카트 선택옵션을 선택후 장바구니에 담아지지않습니다;;

선택옵션이 없는 상품은 장바구니로 잘가지는데 선택옵션을 생성하고 선택하면 장바구니에 담아지지 않습니다..

lib/shop.lib.php 부분을 수정하였습니다.

        // 옵션선택목록 만들기 

        for($i=0; $i<$subj_count; $i++) {

            $opt = $options[$i];

            $opt_count = count($opt);

            $disabled = '';

            if($opt_count) {

                $seq = $i + 1;

                if($i > 0)

                    $disabled = ' disabled="disabled"';

                $str .= '<div class="p_d_option2">'.PHP_EOL;

                $select = '<select id="it_option_'.$seq.'" class="market_select"'.$disabled.'>'.PHP_EOL;

                $select .= '<option value="">선택</option>'.PHP_EOL;

                for($k=0; $k<$opt_count; $k++) {

                    $opt_val = $opt[$k];

                    if(strlen($opt_val)) {

                        $select .= '<option value="'.$opt_val.'">'.$opt_val.'</option>'.PHP_EOL;

                    }

                }

                $select .= '</select>'.PHP_EOL;

                $select.PHP_EOL;

                $str .= '</div>'.PHP_EOL;

            }

        }

    } else {

$str .= '<div class="p_d_option2">'.PHP_EOL;

        $select = '<select id="it_option_1" class="market_select">'.PHP_EOL;

        $select .= '<option value="">선택</option>'.PHP_EOL;

        for($i=0; $row=sql_fetch_array($result); $i++) {

            if($row['io_price'] > 0)

 $price = '&nbsp;&nbsp;+ '.number_format($row['io_price']).'원';

else if ($row['io_price'] == 0)

$price = '';

else

 $price = '&nbsp;&nbsp; '.number_format($row['io_price']).'원';

            if($row['io_stock_qty'] < 1)

                $soldout = '&nbsp;&nbsp;[품절]';

            else

                $soldout = '';

            $select .= '<option value="'.$row['io_id'].','.$row['io_price'].','.$row['io_stock_qty'].'">'.$row['io_id'].$price.$soldout.'</option>'.PHP_EOL;

        }

        $select .= '</select>'.PHP_EOL;

        $str .= '<td>'.$select.'</td>'.PHP_EOL;

        $str .= '</div>'.PHP_EOL;

    }

 

- item.form.skin.php 코드 부분입니다.

<?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

//add_stylesheet('<link rel="stylesheet" href="'.G5_SHOP_CSS_URL.'/style.css">', 0);

?>

<form name="fitem" id="fitem" method="post" action="<?php echo $action_url; ?>" onsubmit="return fitem_submit(this);">

<input type="hidden" name="it_id[]" value="<?php echo $it_id; ?>">

<input type="hidden" name="sw_direct">

<input type="hidden" name="url">

<section class="detail">

<!-- 상품이미지 미리보기 시작 { -->    

<article class="pro_detail_img">

<?php

$big_img_count = 0;

$thumbnails = array();

$img = get_it_thumbnail_no($it['it_img3'], 571, 571);

if($img) {

// 썸네일

...

?>

</article>

<!-- } 상품이미지 미리보기 끝 -->

<article class="pro_detail_info">

<div class="p_d_h1"><?php echo stripslashes($it['it_name']); ?></div>

<div class="p_d_h2"><?php echo $it['it_basic']; ?></div>

<div class="p_d_price">

<span class="price_sale"><?php echo number_format($it['it_cust_price'],0); ?> won</span> 

<?php echo number_format(get_price($it),0); ?> won 

<input type="hidden" id="it_price" value="<?php echo get_price($it); ?>">

</div>

 

<?php if ($is_orderable) { ?>

 

<!-- 총 구매액 -->

<div id="sit_tot_price"></div>

<?php } ?>

 

<?php if($is_soldout) { ?>

<p id="sit_ov_soldout">상품의 재고가 부족하여 구매할 수 없습니다.</p>

<?php } ?>

      

<div class="p_d_option" id="item_info_area">

<?php

if(!$it['it_buy_min_qty'])

$it['it_buy_min_qty'] = 1;

?>

<input type="hidden" name="io_type[<?php echo $it_id; ?>][]" value="0">

<input type="hidden" name="io_id[<?php echo $it_id; ?>][]" value="">

<input type="hidden" name="io_value[<?php echo $it_id; ?>][]" value="<?php echo $it['it_name']; ?>">

<input type="hidden" class="io_price" value="0">

<input type="hidden" class="io_stock" value="<?php echo $it['it_stock_qty']; ?>">

<div class="count_btn_up"><a href="#" id="item_add_btn" ><img src="<?php echo G5_THEME_URL ?>/images/count_up.png" width="24px"></a></div>

<div class="count_btn_down"><a href="#" id="item_minus_btn"><img src="<?php echo G5_THEME_URL ?>/images/count_down.png" width="24px"></a></div>

<input type="text" class="frm_input count_input" name="ct_qty[<?php echo $it_id; ?>][]" value="<?php echo $it['it_buy_min_qty']; ?>" id="ct_qty_<?php echo $i; ?>" >

<?php

        if($option_item) {

        ?>

        <!-- 선택옵션 시작 { -->

            <?php // 선택옵션

            echo $option_item;

            ?>

        <!-- } 선택옵션 끝 -->

        <?php

        }

        ?>

</div>

<div class="p_d_btn white">

<a href="#" id="add_cart_btn" ><div class="btn_gold">add to cart</div></a>

</div>

 

<div class="p_d_comment aaa">대량 구매 문의 시 <a href="<?php echo G5_BBS_URL; ?>/qalist.php"><u>1:1 comment</u></a> 를 이용해주세요.<br>배송, 교환 환불 시 <a href="<?php echo G5_BBS_URL; ?>/board.php?bo_table=notice"><u>notice</u></a>을 확인해주세요.</div>

<div class="p_d_page aaa">

<span><a href="<?php echo G5_URL; ?>">list</a></span>

<!-- 다른 상품 보기 시작 { -->

<?php

if ($prev_href) {

echo '<span>'.$prev_href.'pre'.$prev_href2.'</span>';

}else{

echo '<span style="opacity:0.5">pre</span>';

}

?>

<?php

if ($next_href) {

echo '<span>'.$next_href.'next'.$next_href2.'</span>';

}else{

echo '<span style="opacity:0.5">next</span>';

}

?>  

<!-- } 다른 상품 보기 끝 -->

</div>

</article>

</section>

</form>

<script>

$(function(){

    // 상품이미지 첫번째 링크

    $("#sit_pvi_big a:first").addClass("visible");

 

    // 상품이미지 미리보기 (썸네일에 마우스 오버시)

    ...

    // 상품이미지 크게보기

    ...

// 장바구니 답기

    $("#add_cart_btn").bind("click", function(event){

event.preventDefault();

        var frm = document.getElementById("fitem");

document.pressed = "장바구니";

if(fitem_submit(frm)){

frm.submit();

}

 

    });

// 수량증가

$("#item_add_btn").bind("click", function(event){

event.preventDefault();

var this_qty, max_qty = 9999, min_qty = 1;

var $el_qty = $("#item_info_area").find("input[name^=ct_qty]");

        var stock = parseInt($("#item_info_area").find("input.io_stock").val());

this_qty = parseInt($el_qty.val().replace(/[^0-9]/, "")) + 1;

        if(this_qty > stock) {

alert("재고수량 보다 많은 수량을 구매할 수 없습니다.");

            this_qty = stock;

        }

 

        if(this_qty > max_qty) {

this_qty = max_qty;

            alert("최대 구매수량은 "+number_format(String(max_qty))+" 입니다.");

        }

        $el_qty.val(this_qty);

 

    });

// 수량감소

$("#item_minus_btn").bind("click", function(event){

event.preventDefault();

var this_qty, max_qty = 9999, min_qty = 1;

var $el_qty = $("#item_info_area").find("input[name^=ct_qty]");

        var stock = parseInt($("#item_info_area").find("input.io_stock").val());

this_qty = parseInt($el_qty.val().replace(/[^0-9]/, "")) - 1;

        if(this_qty < min_qty) {

this_qty = min_qty;

            alert("최소 구매수량은 "+number_format(String(min_qty))+" 입니다.");

        }

        $el_qty.val(this_qty);

 

    });

});

// 바로구매, 장바구니 폼 전송

function fitem_submit(f)

{

    if (document.pressed == "장바구니") {

        f.sw_direct.value = 0;

    } else { // 바로구매

        f.sw_direct.value = 1;

    }

 

    // 판매가격이 0 보다 작다면

    if (document.getElementById("it_price").value < 0) {

        alert("전화로 문의해 주시면 감사하겠습니다.");

        return false;

    }

 

    var val, io_type, result = true;

    var sum_qty = 0;

    var min_qty = parseInt(<?php echo $it['it_buy_min_qty']; ?>);

    var max_qty = parseInt(<?php echo $it['it_buy_max_qty']; ?>);

    var $el_type = $("input[name^=io_type]");

 

    $("input[name^=ct_qty]").each(function(index) {

        val = $(this).val();

 

        if(val.length < 1) {

            alert("수량을 입력해 주십시오.");

            result = false;

            return false;

        }

 

        if(val.replace(/[0-9]/g, "").length > 0) {

            alert("수량은 숫자로 입력해 주십시오.");

            result = false;

            return false;

        }

 

        if(parseInt(val.replace(/[^0-9]/g, "")) < 1) {

            alert("수량은 1이상 입력해 주십시오.");

            result = false;

            return false;

        }

 

        io_type = $el_type.eq(index).val();

        if(io_type == "0")

            sum_qty += parseInt(val);

    });

 

    if(!result) {

        return false;

    }

 

    if(min_qty > 0 && sum_qty < min_qty) {

        alert("선택옵션 개수 총합 "+number_format(String(min_qty))+"개 이상 주문해 주십시오.");

        return false;

    }

 

    if(max_qty > 0 && sum_qty > max_qty) {

        alert("선택옵션 개수 총합 "+number_format(String(max_qty))+"개 이하로 주문해 주십시오.");

        return false;

    }

    return true;

}

</script>

답변 1개 / 댓글 2개

채택된 답변
+20 포인트

재고가 부족하다라는 오류가 뜨지 않나요?

답변에 대한 댓글 2개

저소스로 하면 오류가 아에안뜨는데

영카트 기본 list 소스로 하면 "상품의 선택옵션을 선택해주십시오" 라는 alert창이 뜹니다..
오류가 아에 안뜨는데.. 어디가잘못됫을까요..ㅜㅜ

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