이벤트에서 관련상품에서 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);
?>
등록된 상품이 없습니다.등록된 상품
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);
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개
답변에 대한 댓글 3개
qty 폼의 값이 저장은 되는데 처음 등록할때는 저장이 안되고 저장 후 한번 더 수정해야 나타나요.
그래서 itemeventsearch.php 파일에서
$list .= '<input type="text" name="qty[]" value="'.$row['qty'].'">';
이 부분을 추가하였는데요. 잘 안되네요.
qty 값이 등록할 때 폼이 보이고 바로 저장되게 하려면, 어디를 수정해야 될까요?
도움 부탁 드려요.ㅠ
for($i=0;$row=sql_fetch_array($result);$i++) {
if($w == 'u') {
$sql2 = " select count(*) as cnt from {$g5['g5_shop_event_item_table']} where ev_id = '$ev_id' and it_id = '{$row['it_id']}' ";
$row2 = sql_fetch($sql2);
if ($row2['cnt'])
continue;
}
$it_name = get_it_image($row['it_id'], 50, 50).' '.$row['it_name'];
$list .= '<li>';
$list .= '<input type="text" name="it_id[]" value="'.$row['it_id'].'">';
$list .= '<input type="text" name="qty[]" value="'.$row['qty'].'">';
$list .= '<div class="list_item">'.$it_name.'</div>';
$list .= '<div class="list_item_btn"><button type="button" class="add_item btn_frmline">추가</button></div>';
$list .= '</li>'.PHP_EOL;
}
continue; <===이미 등록 되어있으면 <추가> 부분이 나오지 않게하라는 것이니 나올 수가 없을뿐 아니라
$row['qty'] <=== $row는 item_table애서 추출하여 온 것을 출력하는 것이니 이벤트 테이블 값이 나올 수가 없습니다
댓글을 작성하려면 로그인이 필요합니다.
대략적인 코드로 테스트되지 않았습니다.
적당히 참조해보세요
itemeventform.php
</p>
<p><input type="hidden" name="ev_qtys" value=""></p>
<p>
</p>
<p>function feventform_check(f)
{
var item = new Array();</p>
<p> var qtys = new Array();</p>
<p> var qty_num = "";
var ev_item = it_id = "";</p>
<p> $("#reg_item_list input[name='it_id[]']").each(function() {
it_id = $(this).val();
if(it_id == "")
return true;</p>
<p> item.push(it_id);</p>
<p> </p>
<p> var qty = $(this).siblings('input[name="qty[]"]');</p>
<p> qtys.push(qty.val());
});
</p>
<p> if(item.length > 0) {
ev_item = item.join();</p>
<p> qty_num = qtys.join();</p>
<p> $("input[name=ev_item]").val(ev_item);</p>
<p> $("input[name=ev_qtys]").val(qty_num);</p>
<p> }</p>
<p> <?php echo get_editor_js('ev_head_html'); ?>
<?php echo get_editor_js('ev_tail_html'); ?></p>
<p> return true;
}</p>
<p>
itemeventformupdate.php
</p>
<p> // 이벤트 상품등록</p>
<p> $item = explode(',', $ev_item);</p>
<p> $qtys = explode(',', $ev_qtys);</p>
<p> $count = count($item);</p>
<p> </p>
<p> for($i=0; $i<$count; $i++) {</p>
<p> $it_id = isset($item[$i]) ? $item[$i] : '';</p>
<p> $qty = isset($qtys[$i]) ? $qtys[$i] : '';</p>
<p> if($it_id) {</p>
<p> $sql = " insert into {$g5['g5_shop_event_item_table']}</p>
<p> set ev_id = '$ev_id',</p>
<p> it_id = '$it_id',</p>
<p> qty = '$qty' ";</p>
<p> sql_query($sql);</p>
<p> }</p>
<p> }</p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
안녕하세요
<input type="text" name="qty" value="<?php echo $row['qty']; ?>"> //이부분을 추가 하였습니다.
로 해보세요
name안에 변수는 숫자형태로만 받게 하려면 일반 변수(배열형태아님)로 선언해서 받으셔야합니다.
저부분을 저렇게 쓰고 싶다면 받는 쪽에서 $qty[0] 으로 받아서 사용하시면 첫번째 배열항목으로 들어가 사용할수 있습니다. 사용하시기에 편한걸로 사용하시면될것 같네요
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인