일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- config
- 그누보드
- mysql
- rairen
- CodeIgniter
- codeigniter3
- APK
- 코드이그나이터
- 설정
- php
- Database
- 영카트
- 헬퍼
- 웹 프로그래밍
- 후크
- FCM
- jquery
- CI3
- ajax
- MSsql
- function
- javascript
- API
- 안드로이드
- 옵션표
- jw player
- 라이렌
- 함수
- phpDocumentor
- html
- Today
- Total
프로그램 개발서
[영카트] 상품 옵션을 표 형태로 보여주기 본문
지난번에 작성한 추가옵션을 표로 보여주는 방법에 대한 글과 거의 동일하다.
다만 이 게시글의 코드는 조금 미완성이다.
이유는 내용을 설명하면서 작성하니 보면서 확인할면 되곘다.
// 기본 옵션 또는 추가옵션 목록명
$item_subject_query = "SELECT `it_option_subject`,`it_supply_subject` FROM `{$g5['g5_shop_item_table']}` WHERE `it_id` = '{$it_id}'";
$item_subject_data = sql_fetch($item_subject_query);// Array ( [it_option_subject] => 제품모델,재질,날경 [it_supply_subject] => )
$option_subject = explode(",", $item_subject_data['it_option_subject']);
$supply_subject = explode(",", $item_subject_data['it_supply_subject']);// Array ( [0] => 제품모델 [1] => 재질 [2] => 날경 )
우선 위의 코드부터 보자.
위의 코드는 디비에서 상품 테이블의 옵션 제목이 저장된 컬럼의 정보를 가져오고, 가져온 데이터를 배열 형태로 변환하는 코드이다.
it_option_subject가 기본 옵션이고, it_supply_subject가 추가 옵션이다.
<tr>
<?php
for ($i=0;$i < count($option_subject); $i++){
echo '<th>'.$option_subject[$i].'</th>';
}
?>
<th>판매가</th>
<th>포장단위</th>
<th>수량</th>
<th>장바구니</th>
</tr>
위의 코드로 표에 제목줄을 표시하였다.
그리고 그 다음 내용을 표에 그리려고 할 때 문제가 발생하는데.
추가옵션과 달리 기본 옵션의 경우 값이 중복되어 들어가지 않다보니 결과를 맞추려고할 때 개수가 맞지 않게 될 사항이 발생한다.
지금 작성할 콛의 경우 빈칸을 전칸의 내용으로 채우는 식으로 하였으나, 관리자에서 상품 옵션을 작성할 때의 내용으로 인해 문제가 될 소지가 있는 코드이므로 사용에 주의해야한다.
$option_query = "SELECT * FROM `{$g5['g5_shop_item_option_table']}` WHERE io_type = '0' AND it_id = '{$it_id}' AND io_use = '1' order by io_no asc ";
$option_result = sql_query($option_query);
우선 상품 옵션들을 가져온다.
for ($i=0;$row = sql_fetch_array($option_result); $i++){
$opt_id = explode(chr(30), $row['io_id']);
for($k=0; $k<count($option_subject); $k++) {
if(!is_array($option_list[$k]))
$option_list[$k] = array();
if($opt_id[$k] && !in_array($opt_id[$k], $option_list[$k]))
$option_list[$k][] = $opt_id[$k];
}
}
그리고 옵션들이 컬럼 한개에 합쳐져있기에 문리하여 배열형태로 구분한다.
배열의 개수로 최대길이를 구할 떄는 아래 코드를 이용한다.
$max = 0;
for ($j=0;$j < count($option_subject); $j++){
if($max < count($option_list[$j])){
$max = count($option_list[$j]);
}
}
이제 빈칸을 채워야한다.
채우지 않는다면 표에 빈칸에 마주갖ㅂ이로 생기게 된다.
// 빈칸 채우기
$option_fulling = array();
for ($i=0;$i<count($option_list);$i++){
for($j=0;$j<$max;$j++){
if(isset($option_list[$i][$j]) and !empty($option_list[$i][$j])) {
${"opt" . $i} = $option_list[$i][$j];
}
$option_fulling[$i][$j] = ${"opt" . $i};
}
}
반복 돌리면서 빈칸을 전 값으로 채우는 반복분이다.
반복문을 돌린 후
for ($i=0;$i<$max;$i++){
echo '<tr>';
$subject_value = "";
for ($j=0;$j < count($option_subject); $j++){
echo '<td>' . $option_fulling[ $j ][ $i ] . '<input type="hidden" name="option['.$i.'][]" id="option_'.$i.'_'.$j.'" value="'.$opt_id[1].'"/></td>';
}
echo '<td>'.display_price(get_price($it)).'<input type="hidden" name="option['.$i.'][]" id="option_'.$i.'_price" value="'.get_price($it).'"/></td>';
echo '<td>1EA</td>
<td>
<div class="input-group ct_opt_grp">
<label for="ct_opt_1" class="sr-only">수량</label>
<input type="text" name="option_qty['.$i.'>]" id="option_qty_'.$i.'" class="form-control input-sm num_val" value="0" size="3">
<div class="input-group-btn">
<button type="button" class="btn btn-lightgray btn-sm option_plus" data-index="'.$i.'"><i class="fa fa-plus-circle fa-lg"></i><span class="sound_only">증가</span></button>
<button type="button" class="btn btn-lightgray btn-sm option_minus" 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>';
}
위 의 소스코드를 작성하면 표가 완성된다.
나머지는 스스로 해보자.
'Web' 카테고리의 다른 글
[Javascript] 배열 여부 확인하기 (0) | 2019.06.05 |
---|---|
[CodeIgniter] 그누보드 스타일,스크립트 추가 함수 만들기 (0) | 2019.05.23 |
[영카트] 상품 추가옵션을 표로 보여주기 (0) | 2019.05.13 |
[MySql] REPLACE - 컬럼 내용을 바꾸는 쿼리 (0) | 2019.05.08 |
[PHP] 연락처 형식 함수 format_phone (0) | 2019.05.02 |