이벤트에서 관련상품에서 array로 저장이 되어요.
본문
영카트 g5_shop_event_item 테이블에 qty 항목을 추가하여 숫자를 같이 저장하려고 합니다.
이벤트에서 관련상품을 불러오고 input 폼을 이용해서 숫자를 저장하려고 하는데
계속 array로 저장이 되어요.ㅜㅜ
하단의 feventform_check 스크립트와 관련이 있는 것 같은데, 고수님들 도움 부탁 드립니다.
빨간부분을 추가하였어요.
itemeventform.php 파일내 소스코드입니다.
<?
$sql = " select b.it_id, b.it_name, qty
from {$g5['g5_shop_event_item_table']} a left join {$g5['g5_shop_item_table']} b on ( a.it_id = b.it_id )
where a.ev_id = '$ev_id' ";
$res_item = sql_query($sql);
?>
<section class="compare_right">
<h3>등록된 상품</h3>
<span class="srel_pad"></span>
<div id="reg_item_list" class="srel_sel">
<?php
if( $res_item ) {
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>
<div class="list_item">
<?php echo $it_name; ?><br>
<input type="text" name="it_id[]" value="<?php echo $row['it_id']; ?>"><br>
<input type="text" name="qty[]" value="<?php echo $row['qty']; ?>"> //이부분을 추가 하였습니다.
</div>
<div class="list_item_btn"><button type="button" class="del_item btn_frmline">삭제</button></div>
</li>
<?php
} // end for
} // end if
if($i > 0)
echo '</ul>';
else
echo '<p>등록된 상품이 없습니다.</p>';
?>
</div>
</section>
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;
}
itemeventformupdate.php 부분
for($i=0; $i<$count; $i++) {
$it_id = isset($item[$i]) ? $item[$i] : '';
if($it_id) {
$sql = " insert into {$g5['g5_shop_event_item_table']}
set ev_id = '$ev_id',
it_id = '$it_id',
qty = '$qty' ";
sql_query($sql);
}
}
답변 3
qty = '$qty' "; ==> qty = '{$qty[$i]}' ";
안녕하세요
<input type="text" name="qty" value="<?php echo $row['qty']; ?>"> //이부분을 추가 하였습니다.
로 해보세요
name안에 변수는 숫자형태로만 받게 하려면 일반 변수(배열형태아님)로 선언해서 받으셔야합니다.
저부분을 저렇게 쓰고 싶다면 받는 쪽에서 $qty[0] 으로 받아서 사용하시면 첫번째 배열항목으로 들어가 사용할수 있습니다. 사용하시기에 편한걸로 사용하시면될것 같네요
!-->
대략적인 코드로 테스트되지 않았습니다.
적당히 참조해보세요
itemeventform.php
<input type="hidden" name="ev_qtys" value="">
function feventform_check(f)
{
var item = new Array();
var qtys = new Array();
var qty_num = "";
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);
var qty = $(this).siblings('input[name="qty[]"]');
qtys.push(qty.val());
});
if(item.length > 0) {
ev_item = item.join();
qty_num = qtys.join();
$("input[name=ev_item]").val(ev_item);
$("input[name=ev_qtys]").val(qty_num);
}
<?php echo get_editor_js('ev_head_html'); ?>
<?php echo get_editor_js('ev_tail_html'); ?>
return true;
}
itemeventformupdate.php
// 이벤트 상품등록
$item = explode(',', $ev_item);
$qtys = explode(',', $ev_qtys);
$count = count($item);
for($i=0; $i<$count; $i++) {
$it_id = isset($item[$i]) ? $item[$i] : '';
$qty = isset($qtys[$i]) ? $qtys[$i] : '';
if($it_id) {
$sql = " insert into {$g5['g5_shop_event_item_table']}
set ev_id = '$ev_id',
it_id = '$it_id',
qty = '$qty' ";
sql_query($sql);
}
}