테스트 사이트 - 개발 중인 베타 버전입니다

찾아도 없길레...^^; 구매수량 단위 지정?

· 15년 전 · 544 · 4
1개 단위 구매를 원칙으로 영카트가 제작되어져 있습니다.
10개단위 구매가 필요하여 연구를 좀 해본 결과 좀 지저분? 하지만... 성공했네요 ^^;
좀 복잡합니다. 잘 따라해주세요~

1개의 가격이 3500원입니다.
10개 단위라고 하면, 35000원이고 수량을 변경시 20개, 30개
이렇게 올라가게 됩니다.
물론 손수 33개라고 입력하시는 분도 계시겠지요~

일단 아이템의 디비를 늘려야 합니다.

yc4_item테이블에 PackNum 이란 필드를 만들어줍니다.
int로 5자리 정도면 충분하겠지요. 기본값을 1로 만들어줍니다.
(데이터베이스 추가법은 검색을이용...^^;;; 제가 말주변이 없습니다)


두번째로, 관리자 페이지의 adm/shop_admin/itemform.php
파일의 224번째줄쯔음(수정이 가해져서 정확하지 않습니다.)
구매단위를 입력하는 부분을 만듭니다.

    <td>구매단위</td>
    <td>
        <input type=text name=PackNum value='<?=$it['PackNum']?>' size=10 class=ed maxlength=5>
        <?=help("기본 한개 단위로 수량이 입력됩니다.\n'10' 입력시 마우스로 구매수량을 변경하면 10장단위로 올라갑니다.");?>
    </td>

스크립트 검사시 1이상을 입력해야 한다고 해주면 좋겠지만, 관리는 제가 하니까요~ ㅎ
뭐 이런식으로 넣어주신뒤, adm/shop_admin/itemformupdate.php
파일의 203번째줄을 보면

$sql_common = " ca_id            = '$ca_id',

로 시작하는 부분이 있습니다. 여기에 

PackNum    = '$PackNum',

와 같은 항목을 추가해줍니다.

여기까지 하면 데이터 입력과 출력이 잘 되겠지요~



이제 쇼핑몰 외부에 적용할 차례입니다.
shop/item.php
파일의 약 292번째줄의 "수 량" 부분을 보시면,
<area shape="rect" coords="0, 0, 10, 9" href="javascript:qty_add(+1);">
<area shape="rect" coords="0, 10, 10, 19" href="javascript:qty_add(-1);">

이런부분이 나오는데 이걸
<area shape="rect" coords="0, 0, 10, 9" href="javascript:qty_add(+<?=$it[PackNum]?>);">
<area shape="rect" coords="0, 10, 10, 19" href="javascript:qty_add(-<?=$it[PackNum]?>);">

이렇게 바꾸어줍니다.
그뒤 아래로 쪼옥~ 내려오시면 488번째줄에
function qty_add(num)
{
    var f = document.fitem;
    var qty = parseInt(f.ct_qty.value);
    if (num < 0 && qty <= 1)
    {
        alert("수량은 1 이상만 가능합니다.");
        qty = 1;
    }
    else if (num > 0 && qty >= 9999)
    {
        alert("수량은 9999 이하만 가능합니다.");
        qty = 9999;
    }
    else
    {
        qty = qty + num;
    }
   
    f.ct_qty.value = qty;
   
    amount_change();
}


이 부분이 나오는데 이걸


function qty_add(num)
{
    var f = document.fitem;
    var qty = parseInt(f.ct_qty.value);
    if (num < 0 && qty <= <?=$it[PackNum]?>)
    {
        alert("수량은 <?=$it[PackNum]?> 이상만 가능합니다.");
        qty = <?=$it[PackNum]?>;
    }
    else if (num > 0 && qty >= 9999)
    {
        alert("수량은 9999 이하만 가능합니다.");
        qty = 9999;
    }
    else
    {
        qty = qty + num;
    }
   
    f.ct_qty.value = qty;
   
    amount_change();
}

이렇게 바꾸어줍니다.

그리고 599번째줄 쯔음에

    } else if (parseInt(f.ct_qty.value) < 1) {
        alert("수량은 1 이상 입력해 주십시오.");

이 부분은

    } else if (parseInt(f.ct_qty.value) < <?=$it[PackNum]?>) {
        alert("수량은 <?=$it[PackNum]?> 이상 입력해 주십시오.");

이렇게 바꾸어주시면 됩니다.
자 이제, 거의다 끝이 났습니다.
상품입력시, 금액은 1개의 금액을 입력하시고 테스트를 해보시면 모두 작동을 합니다만,
리스트에서는 여전히 한개의 금액만을 표시하고 있습니다.

개당가격이므로 그냥 놔두셔도 좋습니다만,
10개단위이기 때문에, 최소수량이 10개이겠지요~
그래서 리스트에서도 10개의 금액이 나와야 하는게 맞습니다.

전 list.skin.10.php 파일을 사용중입니다.
(shop/list.php 은 수정하시면 안됩니다.)
이 안에 보시면,

display_amount(get_amount($row), $row[it_tel_inq])

위와같은 구문으로 금액이 추출되어져 옵니다.
여기부분에서 단위수량만큼 곱해준다면

display_amount(get_amount($row)  * $row['PackNum'], $row[it_tel_inq])

이렇게 되겠지요. 기본수량이 1이기 때문에,
여느 다른상품들도 영향이 없습니다. ^^

여기까지 하면 모두 수정이 완료되었습니다.

나머지는 계산값을 그대로 받아쓰기때문에
아무지장없이 패스~~

list.skin.10.php 이 파일외에 리스트가 나타나는 모든 파일에
곱하기를 해주어야지요~~ 꼼꼼하게 점검해보시고,
솔직히 딱히 쓸데없을것같지만, 만들어놓으니 맘이 한결 편하네요 ^^;

댓글 작성

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

로그인하기

댓글 4개

15년 전
좋은팁 감사해요
좋은팁 감사합니다.~~


item.php 파일에서

<input type=text name=ct_qty value='1' size=4 maxlength=4 class=ed autocomplete='off' style='text-align:right;' onkeyup='amount_change()'>

이부분을

<input type=text name=ct_qty value='<?=$it[PackNum]?>' size=4 maxlength=4 class=ed autocomplete='off' style='text-align:right;' onkeyup='amount_change()'>

이렇게 고치니, 처음나오는 수량에서도, 관리자에서 입력한 값이 나오네요~. ^^
아침안개// 허접한 팁인데...감사합니다. ㅠㅠ
wanee// 아 감사합니다. ^^ 오래전에 등록하고선 업을 떠났다가 이제봤네요.
이 팁은 사용을 중지해주시기 바랍니다.
사용할 일이 별로 없어 신경쓰지 않고 있다가, 영카트가 많이 업데이트되면서 장바구니라던가, 관리자페이지등에서
원하지않는 금액을 노출시킵니다.

수량별 금액조정은 손대야 할곳이 엄청나게 많아져서 포스팅하기가 좀 곤란하네요... 시간나면 해봐야겠습니다. ㅋ

게시글 목록

번호 제목
1053
1044
1041
1022
978
975
974
967
964
963
962
958
957
952
934
929
923
921
905
903