프로그램 개발서

[영카트] 상품 추가옵션을 표로 보여주기 본문

Web

[영카트] 상품 추가옵션을 표로 보여주기

rairen 2019. 5. 13. 17:26

가끔 쇼핑몰 중에서 보면 옵션들이 표처럼 나열되어있고 해당 해당 옵션들을 장바구니에 담는식으로 되어있는 곳이 있는데, 표처럼 표시하기 위해서 영카트는 어떤부분을 수정하면 될까 하여 작업해보았습니다.

우선 첫번째로 해당 상품의 옵션목록을 가져옵시다

$item_subject_query = "SELECT `it_option_subject`,`it_supply_subject` FROM `{$g5['g5_shop_item_table']}` WHERE `it_id` = '{$it_id}'";

가져올 컬럼은 it_option_subject, it_supply_subject 이렇게 2개입니다.

it_option_subject은 기본 옵션 정보고, it_supply_subject는 추가옵션 정보입니다.

옵션 이용방식에 따라서 기본옵션, 추가옵션에서 골라 쓰면됩니다.

지금 쓰는 게시글에서는 추가옵션정보를 사용할 겁니다.

 

이제 반복하기 좋게 배열로 만들어봅시다

$supply_subject = explode(",", $item_subject_data['it_supply_subject']);

표는 테이블이 만들기 좋겠죠?

테이블에서 thead태그 안에 제목에 목록을 넣어주어봅시다

<tr>

                <?php

                for ($i=0;$i < count($supply_subject); $i++){

                    echo '<th>'.$supply_subject[$i].'</th>';

                }

                ?>

<th>판매가</th>

<th>포장단위</th>

<th>수량</th>

<th>장바구니</th>

</tr>

이렇면 추가옵션에 재질, 질량, 등급명 이렇게 추가를 했을 경우

재질 질량 등급명 판매가 포장단위 수량

장바구니

이렇게 표가 만들어집니다.

내용의 경우 추가옵션 값의 길이를 우선 구해야 그만큼 행을 만들수 있습니다.

thead 태그 안에서 for문안에 추가적으로 $max값을 구하는 코드르 추가합니다.

$count_query = "SELECT COUNT(*) AS cnt FROM `{$g5['g5_shop_item_option_table']}` WHERE io_type='1' AND it_id = '{$it_id}' AND io_use = '1' AND io_id LIKE '{$supply_subject[$i]}%' order by io_no asc; ";

                    $count_fetch = sql_fetch($count_query);

                    if($max < $count_fetch['cnt']){

                        $max = $count_fetch['cnt'];

                    }

 

그러면 tbody에서 $max값만큼 for문을 돌려주고 그 안에 내용들을 채우는 코드를 넣으면 표가 완성됩니다.

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

echo '<tr>';

for ($j=0;$j < count($supply_subject); $j++){

                    $option_value_query = "SELECT * FROM `{$g5['g5_shop_item_option_table']}` WHERE io_type='1' AND it_id = '{$it_id}' AND io_use = '1' AND io_id LIKE '{$supply_subject[$j]}%' order by io_no asc limit {$i}, 1; ";

                    $option_value = sql_fetch($option_value_query);

                    $opt_id = explode(chr(30), $option_value['io_id']);

                    echo '<td>'.$opt_id[1].'</td>';

                }

                echo '<td>'.display_price(get_price($it)).'</td>';

                echo '<td>1EA</td>

<td>

<div class="input-group ct_opt_grp">

<label for="opt_'.$i.'_qty" class="sr-only">수량</label>

<input type="text" name="opt['.$i.'][qty]" id="opt_'.$i.'_qty" class="form-control input-sm num_val" value="0" size="3" min="0">

<div class="input-group-btn">

<button type="button" class="it_qty_plus btn btn-lightgray btn-sm" data-index="'.$i.'"><i class="fa fa-plus-circle fa-lg"></i><span class="sound_only">증가</span></button>

<button type="button" class="it_qty_minus btn btn-lightgray btn-sm" data-index="'.$i.'"><i class="fa fa-minus-circle fa-lg"></i><span class="sound_only">감소</span></button>

</div>

</div>

</td>

<td>

<button type="button" class="btn btn-xs btn-black">담기</button>

</td>';

echo '</tr>';

}

그 뒤에는 script로 처리를 해주면 끝!

 

반응형