상품분류 카테고리별 분리하기 정보
상품분류 카테고리별 분리하기첨부파일
본문
영카드에서 1차 2차 3차 카테고리만 항목만 보여 줄 수 있게 한번 만들어 봤습니다.
수정한 페이지는 itemlist.php 와 itemform.php 페이지를 변경했습니다.
추가한 파일은 get_cate_opt.php 파일에서 해당 옵션을 생성하고 해당 분류값을 가져오기 오기위핸 category.lib.php을 호출하여 사용합니다.
/******* itemlist.php 페이지 *******/
include_once(G5_LIB_PATH.'/category.lib.php'); //카테고리라이브러 호출
<td colspan="5" class="td_sort">
<label for="ca_id_<?php echo $i; ?>" class="sound_only"><?php echo get_text($row['it_name']); ?> 기본분류</label>
<!-- 1차카테고리 가져오기 class를 cate1_cha로 설정 data-num은 해당 리스트 항목번호를 가져오기위해설정 data-dep는 현재 카테고리차수 -->
<select name="ca_id[<?php echo $i; ?>]" id="ca_id_<?php echo $i; ?>" class="cate1_cha" data-num="<?=$i?>" data-dep="1">
<?php //echo conv_selected_option($ca_list, $row['ca_id']); ?>
<!-- 1차옵션을 가져오는 함수호출 첫번째 매개변수는 설정된 ca_id값, 두번째 매개변수는 저장된 ca_id값 -->
<?=get_cate_opt($row['ca_id'],$row['ca_id'])?>
</select>
<label for="ca_id2_<?php echo $i; ?>" class="sound_only"><?php echo get_text($row['it_name']); ?> 2차분류</label>
<select name="ca_id2[<?php echo $i; ?>]" id="ca_id2_<?php echo $i; ?>" class="cate2_cha" data-num="<?=$i?>" data-dep="2">
<?
if($row['ca_id2']) {//저장된 2차카테고리가 있는경우
echo get_cate_opt($row['ca_id2'], $row['ca_id2']);
}else{//저장된 2차카테고리가 없는 경우 1차카테고리값을 가져와서 2차카테고리값을 만듬
echo get_cate_opt($row['ca_id'].'10','');
}
?>
</select>
<label for="ca_id3_<?php echo $i; ?>" class="sound_only"><?php echo get_text($row['it_name']); ?> 3차분류</label>
<select name="ca_id3[<?php echo $i; ?>]" id="ca_id3_<?php echo $i; ?>" class="cate3_cha" data-num="<?=$i?>" data-dep="3">
<?
if($row['ca_id3']) {//저장된 3차카테고리가 있는경우
echo get_cate_opt($row['ca_id3'], $row['ca_id3']);
}elseif($row['ca_id2']){//저장된 3차카테고리가 없는 경우 1차카테고리값을 가져와서 3차카테고리값을 만듬
echo get_cate_opt($row['ca_id'].'1010','');
}
?>
</select>
</td>
<script>
$(function() {
//2차분류 3차분류 가져오기
$(".cate1_cha,.cate2_cha,.cate3_cha").change(function(){
//변경한 객체 id
var obj_id =$(this).attr('id');
//변경한 객체 리스트 번호
var obj_num =$(this).data('num');
//변경한 객체 카테고리 차수
var obj_dep =$(this).data('dep');
//변경한 객체 카테고리값
var obj_sel =$(this).val();
get_cate_option(obj_sel,obj_dep,obj_id,obj_num);
});
$(".itemcopy").click(function() {
var href = $(this).attr("href");
window.open(href, "copywin", "left=100, top=100, width=300, height=200, scrollbars=0");
return false;
});
});
//분류값을 가져오기 위한 함수
function get_cate_option(ca_id,dep,id='',num=''){
$.ajax({
type:"POST",
url : "./get_cate_opt.php",
data : "ca_id="+ca_id+"&dep="+dep,
cache : false,
async: false,
success : function(data) {
add_id1 = dep+1;
add_id2 = dep+2;
$("#ca_id"+add_id1+"_"+num).empty();
$("#ca_id"+add_id2+"_"+num).empty();
data_array = JSON.parse(data);
$("#ca_id"+add_id1+"_"+num).html(data_array.opt1);
$("#ca_id"+add_id2+"_"+num).html(data_array.opt2);
},
error:function(request,status,error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
/****** itemform.php 페이지********/
include_once(G5_LIB_PATH.'/iteminfo.lib.php');//카테고리라이브러 호출
<tr>
<th scope="row"><label for="ca_id">기본분류</label></th>
<td>
<?
if($w==""){
//신규등록일때 1차 카테고리 가져오기
$ca =sql_fetch("select ca_name,ca_id from g5_shop_category where length(ca_id)=2 order by ca_order,ca_id limit 1");
$category1 = $ca['ca_id'];//1차카테고리
}else
$category1 = $it['ca_id']; //1차카테고리
?>
<?php if ($w == "") echo help("기본분류를 선택하면, 판매/재고/HTML사용/판매자 E-mail 등을, 선택한 분류의 기본값으로 설정합니다."); ?>
<select name="ca_id" id="ca_id" onchange="categorychange(this.form)" class="cate1_cha" data-num="<?=$i?>" data-dep="1">
<!--<option value="">선택하세요</option>
--><?php /*echo conv_selected_option($category_select, $it['ca_id']); */?>
<!-- 1차카테고리 분류 호출 -->
<?=get_cate_opt($category1,$it['ca_id'])?>
</select>
<script>
var ca_use = new Array();
var ca_stock_qty = new Array();
//var ca_explan_html = new Array();
var ca_sell_email = new Array();
var ca_opt1_subject = new Array();
var ca_opt2_subject = new Array();
var ca_opt3_subject = new Array();
var ca_opt4_subject = new Array();
var ca_opt5_subject = new Array();
var ca_opt6_subject = new Array();
<?php echo "\n$script"; ?>
</script>
</td>
</tr>
<?php for ($i=2; $i<=3; $i++) { //2차3차 카테고리 가져오기?>
<tr>
<th scope="row"><label for="ca_id<?php echo $i; ?>"><?php echo $i; ?>차 분류</label></th>
<td>
<?php echo help($i.'차 분류는 기본 분류의 하위 분류 개념이 아니므로 기본 분류 선택시 해당 상품이 포함될 최하위 분류만 선택하시면 됩니다.'); ?>
<select name="ca_id<?php echo $i; ?>" id="ca_id<?php echo $i; ?>" class="cate2_cha" data-num="<?=$i?>" data-dep="<?=$i?>">
<?
if($i =="2"){
if($it['ca_id2']) { //2차 카테고리가 있을경우
echo get_cate_opt($it['ca_id2'], $it['ca_id2']);
}else{//2차 카테고리가 없을경우
echo get_cate_opt($ca['ca_id'].'10','');
}
}else{
if($it['ca_id3']) {//3차 카테고리가 있을경우
echo get_cate_opt($it['ca_id3'], $it['ca_id3']);
}elseif($row['ca_id2']){ //3차카테고리가 없을경우
echo get_cate_opt($ca['ca_id'].'1010','');
}
}
?>
</select>
</td>
</tr>
<?php } ?>
<script>
$(function() {
//2차분류 3차분류 가져오기
$(".cate1_cha,.cate2_cha,.cate3_cha").change(function(){
//변경한 객체 id
var obj_id =$(this).attr('id');
//변경한 객체 리스트 번호
var obj_num =$(this).data('num');
//변경한 객체 카테고리 차수
var obj_dep =$(this).data('dep');
//변경한 객체 카테고리값
var obj_sel =$(this).val();
get_cate_option(obj_sel,obj_dep,obj_id,obj_num);
});
$(".itemcopy").click(function() {
var href = $(this).attr("href");
window.open(href, "copywin", "left=100, top=100, width=300, height=200, scrollbars=0");
return false;
});
});
function get_cate_option(ca_id,dep,id='',num=''){
$.ajax({
type:"POST",
url : "./get_cate_opt.php",
data : "ca_id="+ca_id+"&dep="+dep,
cache : false,
async: false,
success : function(data) {
add_id1 = dep+1;
add_id2 = dep+2;
$("#ca_id"+add_id1).empty();
$("#ca_id"+add_id2).empty();
data_array = JSON.parse(data);
$("#ca_id"+add_id1).html(data_array.opt1);
$("#ca_id"+add_id2).html(data_array.opt2);
},
error:function(request,status,error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
필요에 의해서 한번 만들어 봤습니다. 충분한 테스트가 이루어 지지 않아 버그가 있을 수 있습니다.
실력이 부족해서 깔끔하지 못한점 먼저 양해 부탁드립니다.
수정한 페이지는 itemlist.php 와 itemform.php 페이지를 변경했습니다.
추가한 파일은 get_cate_opt.php 파일에서 해당 옵션을 생성하고 해당 분류값을 가져오기 오기위핸 category.lib.php을 호출하여 사용합니다.
/******* itemlist.php 페이지 *******/
include_once(G5_LIB_PATH.'/category.lib.php'); //카테고리라이브러 호출
<td colspan="5" class="td_sort">
<label for="ca_id_<?php echo $i; ?>" class="sound_only"><?php echo get_text($row['it_name']); ?> 기본분류</label>
<!-- 1차카테고리 가져오기 class를 cate1_cha로 설정 data-num은 해당 리스트 항목번호를 가져오기위해설정 data-dep는 현재 카테고리차수 -->
<select name="ca_id[<?php echo $i; ?>]" id="ca_id_<?php echo $i; ?>" class="cate1_cha" data-num="<?=$i?>" data-dep="1">
<?php //echo conv_selected_option($ca_list, $row['ca_id']); ?>
<!-- 1차옵션을 가져오는 함수호출 첫번째 매개변수는 설정된 ca_id값, 두번째 매개변수는 저장된 ca_id값 -->
<?=get_cate_opt($row['ca_id'],$row['ca_id'])?>
</select>
<label for="ca_id2_<?php echo $i; ?>" class="sound_only"><?php echo get_text($row['it_name']); ?> 2차분류</label>
<select name="ca_id2[<?php echo $i; ?>]" id="ca_id2_<?php echo $i; ?>" class="cate2_cha" data-num="<?=$i?>" data-dep="2">
<?
if($row['ca_id2']) {//저장된 2차카테고리가 있는경우
echo get_cate_opt($row['ca_id2'], $row['ca_id2']);
}else{//저장된 2차카테고리가 없는 경우 1차카테고리값을 가져와서 2차카테고리값을 만듬
echo get_cate_opt($row['ca_id'].'10','');
}
?>
</select>
<label for="ca_id3_<?php echo $i; ?>" class="sound_only"><?php echo get_text($row['it_name']); ?> 3차분류</label>
<select name="ca_id3[<?php echo $i; ?>]" id="ca_id3_<?php echo $i; ?>" class="cate3_cha" data-num="<?=$i?>" data-dep="3">
<?
if($row['ca_id3']) {//저장된 3차카테고리가 있는경우
echo get_cate_opt($row['ca_id3'], $row['ca_id3']);
}elseif($row['ca_id2']){//저장된 3차카테고리가 없는 경우 1차카테고리값을 가져와서 3차카테고리값을 만듬
echo get_cate_opt($row['ca_id'].'1010','');
}
?>
</select>
</td>
<script>
$(function() {
//2차분류 3차분류 가져오기
$(".cate1_cha,.cate2_cha,.cate3_cha").change(function(){
//변경한 객체 id
var obj_id =$(this).attr('id');
//변경한 객체 리스트 번호
var obj_num =$(this).data('num');
//변경한 객체 카테고리 차수
var obj_dep =$(this).data('dep');
//변경한 객체 카테고리값
var obj_sel =$(this).val();
get_cate_option(obj_sel,obj_dep,obj_id,obj_num);
});
$(".itemcopy").click(function() {
var href = $(this).attr("href");
window.open(href, "copywin", "left=100, top=100, width=300, height=200, scrollbars=0");
return false;
});
});
//분류값을 가져오기 위한 함수
function get_cate_option(ca_id,dep,id='',num=''){
$.ajax({
type:"POST",
url : "./get_cate_opt.php",
data : "ca_id="+ca_id+"&dep="+dep,
cache : false,
async: false,
success : function(data) {
add_id1 = dep+1;
add_id2 = dep+2;
$("#ca_id"+add_id1+"_"+num).empty();
$("#ca_id"+add_id2+"_"+num).empty();
data_array = JSON.parse(data);
$("#ca_id"+add_id1+"_"+num).html(data_array.opt1);
$("#ca_id"+add_id2+"_"+num).html(data_array.opt2);
},
error:function(request,status,error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
/****** itemform.php 페이지********/
include_once(G5_LIB_PATH.'/iteminfo.lib.php');//카테고리라이브러 호출
<tr>
<th scope="row"><label for="ca_id">기본분류</label></th>
<td>
<?
if($w==""){
//신규등록일때 1차 카테고리 가져오기
$ca =sql_fetch("select ca_name,ca_id from g5_shop_category where length(ca_id)=2 order by ca_order,ca_id limit 1");
$category1 = $ca['ca_id'];//1차카테고리
}else
$category1 = $it['ca_id']; //1차카테고리
?>
<?php if ($w == "") echo help("기본분류를 선택하면, 판매/재고/HTML사용/판매자 E-mail 등을, 선택한 분류의 기본값으로 설정합니다."); ?>
<select name="ca_id" id="ca_id" onchange="categorychange(this.form)" class="cate1_cha" data-num="<?=$i?>" data-dep="1">
<!--<option value="">선택하세요</option>
--><?php /*echo conv_selected_option($category_select, $it['ca_id']); */?>
<!-- 1차카테고리 분류 호출 -->
<?=get_cate_opt($category1,$it['ca_id'])?>
</select>
<script>
var ca_use = new Array();
var ca_stock_qty = new Array();
//var ca_explan_html = new Array();
var ca_sell_email = new Array();
var ca_opt1_subject = new Array();
var ca_opt2_subject = new Array();
var ca_opt3_subject = new Array();
var ca_opt4_subject = new Array();
var ca_opt5_subject = new Array();
var ca_opt6_subject = new Array();
<?php echo "\n$script"; ?>
</script>
</td>
</tr>
<?php for ($i=2; $i<=3; $i++) { //2차3차 카테고리 가져오기?>
<tr>
<th scope="row"><label for="ca_id<?php echo $i; ?>"><?php echo $i; ?>차 분류</label></th>
<td>
<?php echo help($i.'차 분류는 기본 분류의 하위 분류 개념이 아니므로 기본 분류 선택시 해당 상품이 포함될 최하위 분류만 선택하시면 됩니다.'); ?>
<select name="ca_id<?php echo $i; ?>" id="ca_id<?php echo $i; ?>" class="cate2_cha" data-num="<?=$i?>" data-dep="<?=$i?>">
<?
if($i =="2"){
if($it['ca_id2']) { //2차 카테고리가 있을경우
echo get_cate_opt($it['ca_id2'], $it['ca_id2']);
}else{//2차 카테고리가 없을경우
echo get_cate_opt($ca['ca_id'].'10','');
}
}else{
if($it['ca_id3']) {//3차 카테고리가 있을경우
echo get_cate_opt($it['ca_id3'], $it['ca_id3']);
}elseif($row['ca_id2']){ //3차카테고리가 없을경우
echo get_cate_opt($ca['ca_id'].'1010','');
}
}
?>
</select>
</td>
</tr>
<?php } ?>
<script>
$(function() {
//2차분류 3차분류 가져오기
$(".cate1_cha,.cate2_cha,.cate3_cha").change(function(){
//변경한 객체 id
var obj_id =$(this).attr('id');
//변경한 객체 리스트 번호
var obj_num =$(this).data('num');
//변경한 객체 카테고리 차수
var obj_dep =$(this).data('dep');
//변경한 객체 카테고리값
var obj_sel =$(this).val();
get_cate_option(obj_sel,obj_dep,obj_id,obj_num);
});
$(".itemcopy").click(function() {
var href = $(this).attr("href");
window.open(href, "copywin", "left=100, top=100, width=300, height=200, scrollbars=0");
return false;
});
});
function get_cate_option(ca_id,dep,id='',num=''){
$.ajax({
type:"POST",
url : "./get_cate_opt.php",
data : "ca_id="+ca_id+"&dep="+dep,
cache : false,
async: false,
success : function(data) {
add_id1 = dep+1;
add_id2 = dep+2;
$("#ca_id"+add_id1).empty();
$("#ca_id"+add_id2).empty();
data_array = JSON.parse(data);
$("#ca_id"+add_id1).html(data_array.opt1);
$("#ca_id"+add_id2).html(data_array.opt2);
},
error:function(request,status,error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
필요에 의해서 한번 만들어 봤습니다. 충분한 테스트가 이루어 지지 않아 버그가 있을 수 있습니다.
실력이 부족해서 깔끔하지 못한점 먼저 양해 부탁드립니다.
추천
3
3
댓글 2개
공유 감사합니다. 많은 도움이 됩니다.
첨부한 파일에서 itemform.php 페이지
/분류순서 변경시 틀어짐 방지위해 추가
$sql = " select * from {$g5['g5_shop_category_table']} ";
if ($is_admin != 'super')
$sql .= " where ca_mb_id = '{$member['mb_id']}' ";
$sql .= " order by ca_order, ca_id "; ==> 이부분이 오탈자가 있어서 첨부파일을 수정해서 다시 올렸습니다.
/분류순서 변경시 틀어짐 방지위해 추가
$sql = " select * from {$g5['g5_shop_category_table']} ";
if ($is_admin != 'super')
$sql .= " where ca_mb_id = '{$member['mb_id']}' ";
$sql .= " order by ca_order, ca_id "; ==> 이부분이 오탈자가 있어서 첨부파일을 수정해서 다시 올렸습니다.