이벤트에서 관련상품에서 array로 저장이 되어요.

이벤트에서 관련상품에서 array로 저장이 되어요.

QA

이벤트에서 관련상품에서 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]}' ";

균이님 질문 하나 더 드려도 될까요?
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;
}

if ($row2['cnt'])
            continue; <===이미 등록 되어있으면 <추가> 부분이 나오지 않게하라는  것이니 나올 수가 없을뿐 아니라

$row['qty'] <=== $row는 item_table애서 추출하여 온 것을 출력하는 것이니 이벤트 테이블 값이 나올 수가 없습니다

안녕하세요

<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);
        }
    }
답변을 작성하시기 전에 로그인 해주세요.
전체 2,698
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT