테스트 사이트 - 개발 중인 베타 버전입니다

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

GNUAPP 2년 전 조회 1,925

영카트 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);

?>

 

               

등록된 상품

                               
                    ';                     ?>                        
  •                                                                                    
                                                                                        //이부분을 추가 하였습니다.                            
                               
                           
  •                     0)                         echo '';                     else                         echo '

    등록된 상품이 없습니다.

    ';                     ?>                
               

     

     

     

     

    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개

    채택된 답변
    +20 포인트
    2년 전

       qty = '$qty' "; ==>    qty = '{$qty[$i]}' ";

    로그인 후 평가할 수 있습니다

    답변에 대한 댓글 3개

    G
    GNUAPP
    2년 전
    와 너무 잘됩니다. 균이님 감사드려요~ㅜㅜ
    G
    GNUAPP
    2년 전
    균이님 질문 하나 더 드려도 될까요?
    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;
    }
    균이
    2년 전
    if ($row2['cnt'])
    continue; <===이미 등록 되어있으면 <추가> 부분이 나오지 않게하라는 것이니 나올 수가 없을뿐 아니라

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

    댓글을 작성하려면 로그인이 필요합니다.

    2년 전

    대략적인 코드로 테스트되지 않았습니다.

    적당히 참조해보세요

     

    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개

    G
    GNUAPP
    2년 전
    답변 감사합니다. 말씀하신대로 하면 array로 저장은 안되지만 한가지 값으로만 저장이 되어요. 각각 1,2,3 이렇게 넣으면 처음에 넣은 1로만 저장이 됩니다.

    댓글을 작성하려면 로그인이 필요합니다.

    답변을 작성하려면 로그인이 필요합니다.

    로그인