게시판에 영카트 상품 등록하는 부분 문제 좀 봐주세요 ?
본문
영카트에 이벤트 관리에서 상품 검색해서 선택 등록하는 방식을 차용하였습니다.
위 그림처럼 선택하면 되는데요
상품을 아래 그림처럼 선택하면
오른쪽에 선택된 값 3개만 등록되어야 하는데 이상하게 왼쪽 카테고리 전부가 등록되어 집니다.
write_update.skin.php 파일내에 print_r 해서 보면
Array ( [uid] => 2014112714081649 [w] => [bo_table] => smovie [wr_id] => 0 [sca] => [sfl] => [stx] => [spt] => [sst] => [sod] => [page] => [html] => html1 [wr_subject] => 123 [wr_1] => 12312 [wr_2] => 123 [wr_10] => 123 [wr_content] => 123 [ca_id] => 10 [sch_name] => [it_id] => Array ( [0] => 1416408018 [1] => 1416202071 [2] => 1416408023 [3] => 1416408011 [4] => 1416408015 ) [wr_link1] => [wr_link2] => )
저렇게 모조리 나오는거죠... 해당 코드 내용이 길지만 부분만 올려 보겠습니다.
============================================= write.skin.php ==========================================
<tr>
</script>
<td class="compare_wrap srel">
<div class="help11 blue">해당 게시물에 나열할 상품을 선택하세요</div>
<?php
// 분류리스트
$category_select = '';
$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 ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$len = strlen($row['ca_id']) / 2 - 1;
$nbsp = "";
for ($i=0; $i<$len; $i++)
$nbsp .= " ";
$category_select .= "<option value=\"{$row['ca_id']}\">$nbsp{$row['ca_name']}</option>\n";
}
?>
<section class="compare_left">
<h3>상품검색</h3>
<span class="srel_pad">
<select name="ca_id" id="sch_ca_id">
<option value="">분류선택</option>
<?php echo $category_select; ?>
</select>
<label for="sch_name" class="sound_only">상품명</label>
<input type="text" name="sch_name" id="sch_name" class="frm_input" size="15">
<button type="button" id="btn_search_item" class="btn_frmline">검색</button>
</span>
<div id="sch_item_list" class="srel_list">
<p>상품의 분류를 선택하시거나 상품명을 입력하신 후 검색하여 주십시오.</p>
</div>
</section>
<section class="compare_right">
<h3>등록된 상품</h3>
<span class="srel_pad"></span>
<div id="reg_item_list" class="srel_sel">
<ul>
<?php
if($w=='u') {
$it_qty = '';
$it_item = explode("|", $write['wr_3']);
for($s=0; $s<count($it_item); $s++) {
$row = sql_fetch("select * from {$g5['g5_shop_item_table']} where it_id = '".$it_item[$s]."' order by it_id asc ");
if($row['it_id']) {
$it_name = get_it_image($row['it_id'], 50, 50).' '.$row['it_name'];
if(count($row['it_id'])==0) { echo '<ul>'; }
?>
<li>
<input type="text" name="it_id[]" value="<?php echo $row['it_id']; ?>">
<div class="list_item"><?php echo $it_name; ?></div>
<div class="list_item_btn"><button type="button" class="del_item btn_frmline">삭제</button></div>
</li>
<?php
}
}
// 글쓰기 신규 등록시
} else {
for($i=0; $row=sql_fetch_array($res_item); $i++) {
$it_name = get_it_image($row['it_id'], 50, 50).' '.$row['it_name'];
if($i==0) { echo '<ul>'; }
?>
<li>
<input type="text" name="it_id[]" value="<?php echo $row['it_id']; ?>">
<div class="list_item"><?php echo $it_name; ?></div>
<div class="list_item_btn"><button type="button" class="del_item btn_frmline">삭제</button></div>
</li>
<?php
}
if($i > 0) {
echo '</ul>';
} else {
echo '<p>등록된 상품이 없습니다.</p>';
}
}
?>
</div>
</section>
</td>
</tr>
<script>
$(function() {
$("#btn_search_item").click(function() {
var ca_id = $("#sch_ca_id").val();
var it_name = $.trim($("#sch_name").val());
var it_id = $.trim($("#sch_id").val());
if(ca_id == "" && it_name == "" && it_id == "") {
$("#sch_item_list").html("<p>상품의 분류를 선택하시거나 상품명, 상품번호를 입력하신 후 검색하여 주십시오.</p>");
return false;
}
$("#sch_item_list").load(
"/adm/shop_admin/itemeventsearch.php",
{ w: "<?php echo $w; ?>", ev_id: "<?php echo $ev_id; ?>", ca_id: ca_id, it_name: it_name, it_id: it_id }
);
});
$("#sch_item_list .add_item").live("click", function() {
// 이미 등록된 상품인지 체크
var $li = $(this).closest("li");
var it_id = $li.find("input:hidden").val();
var it_id2;
var dup = false;
$("#reg_item_list input[name='it_id[]']").each(function() {
it_id2 = $(this).val();
if(it_id == it_id2) {
dup = true;
return false;
}
});
if(dup) {
alert("이미 등록된 상품입니다.");
return false;
}
var cont = "<li>"+$li.html().replace("add_item", "del_item").replace("추가", "삭제")+"</li>";
var count = $("#reg_item_list li").size();
if(count > 0) {
$("#reg_item_list li:last").after(cont);
} else {
$("#reg_item_list").html("<ul>"+cont+"</ul>");
}
$li.remove();
});
$("#reg_item_list .del_item").live("click", function() {
if(!confirm("상품을 삭제하시겠습니까?"))
return false;
$(this).closest("li").remove();
var count = $("#reg_item_list li").size();
if(count < 1)
$("#reg_item_list").html("<p>등록된 상품이 없습니다.</p>");
});
});
function feventform_check(f)
{
var item = new Array();
var ev_item = it_id = "";
$("#reg_item_list input[name='it_id[]']").each(function() {
it_id = $(this).val();
if(it_id == "")
return true;
item.push(it_id);
});
if(item.length > 0)
ev_item = item.join();
$("input[name=ev_item]").val(ev_item);
<?php echo get_editor_js('ev_head_html'); ?>
<?php echo get_editor_js('ev_tail_html'); ?>
return true;
}
/* document.feventform.ev_subject.focus(); 포커스해제*/
</script>
======================================== write_update.skin.php ======================================
<?php
?>
print_r($_POST);
for($i=0;$i<count($_POST['it_id']);$i++) {
//$wr_3 .= $_POST['it_id'][$i]."|";
$wr_3 = implode('|', $_POST['it_id']);
}
exit;
sql_query("update $write_table set wr_3 = '$wr_3' where wr_id = '$wr_id'");
?>
혹시 원인이 뭔지 아시는 분은 답변해 주시면 감사하겠습니다. ^^
제가 현재 회사 쇼핑몰을 영카트 5로 작업 중인데 개발한 소스들을 공개하는 걸로 보답하겠습니다.