ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 영카트 상품 텍스트 필드 파일 추가 하기
    그누보드 2020. 4. 22. 10:28

    https://sir.kr/yc5_tip/183

     

     

     

    /adm/config_form.php 

    파일에 넣었습니다만, 필드추가를 위한 부분이니 아무데나 넣고 웹에서 실행시켜줍니다. 

     

    // 주문시 추가내용/파일 입력위한 추가 

    sql_query(" ALTER TABLE `{$g5['g5_shop_cart_table']}` 

    ADD `ct_msg` varchar(255) NOT NULL DEFAULT '' AFTER `ct_select`, 

    ADD `ct_file` varchar(255) NOT NULL DEFAULT '' AFTER `ct_msg` ", true); 

     

     

     

    이제 mysql 은 준비되었으니, 

    주문하는 페이지부터 시작입니다. 

     

    /skin/shop/basic/item.form.skin.php 

     

    약 8번째줄 

    <form name="fitem" method="post" action="<?php echo $action_url; ?>" onsubmit="return fitem_submit(this);">

    이부분을 

    <form name="fitem" method="post" enctype="MULTIPART/FORM-DATA" action="<?php echo $action_url; ?>" onsubmit="return fitem_submit(this);"> 

     

    바꿔줍니다. 

     

    약 340번줄 즈음에 

    <!-- 다른 상품 보기 시작 { --> 

    ..... 

    <!-- } 다른 상품 보기 끝 --> 

     

    다음에 아래를 추가해줍니다. 

    <!-- 별도 작업 요청사항 시작 { --> 

    <div id="sit_spinput"> 

    <textarea name="work_msg"></textarea> 

    <input type="file" name="work_file"> 

    </div> 

    <!-- } 별도 작업 요청사항 끝 --> 

     

     

     

     

     

     

    눈에 보이는 부분이 끝났습니다. 

     

    /shop/cartupdate.php 

    에서 처리할 부분은 실제로 내용을 입력, 제거시 첨부파일을 삭제하는 내용입니다. 

     

     

    약 50번째줄 

    else if ($act == "alldelete") // 모두 삭제이면 

    이부분의 바로다음, 

    $sql = " delete from {$g5['g5_shop_cart_table']} 

    이부분의 바로 전에, 

     

    //첨부 파일 삭제 

    $sqld = " select ct_file from {$g5['g5_shop_cart_table']} where od_id = '$tmp_cart_id' "; 

    $dwresult = sql_query($sqld); 

    for ($i=0; $row=mysql_fetch_array($dwresult); $i++) 

    @unlink(G5_DATA_PATH."/odfile/".$row[ct_file]); 

     

    추가해줍니다. 

     

     

    약 60번째줄 

    else if ($act == "seldelete") // 선택삭제 

    이부분 다음에 

    $it_id = $_POST['it_id'][$i]; 

    의 바로 아래에 

     

    //첨부 파일 삭제 

    $sqld = " select ct_file from {$g5['g5_shop_cart_table']} where it_id = '$it_id' and od_id = '$tmp_cart_id' "; 

    $dw = sql_fetch($sqld); 

    @unlink(G5_DATA_PATH."/odfile/".$dw[ct_file]); 

     

    추가해줍니다. 

     

     

     

    내용을 db에 입력하고 파일을 업로드할차례입니다. 

    같은 파일에 

    약 206번째줄 

     

    $sql = " INSERT INTO {$g5['g5_shop_cart_table']} 

                            ( od_id, mb_id, it_id, it_name, it_sc_type, it_sc_method, it_sc_price, it_sc_minimum, it_sc_qty, ct_status, ct_price, ct_point, ct_point_use, ct_stock_use, ct_option, ct_qty, ct_notax, io_id, io_type, io_price, ct_time, ct_ip, ct_send_cost, ct_direct, ct_select ) 

                        VALUES "; 

     

    이부분을 

     

            $sql = " INSERT INTO {$g5['g5_shop_cart_table']} 

                            ( od_id, mb_id, it_id, it_name, it_sc_type, it_sc_method, it_sc_price, it_sc_minimum, it_sc_qty, ct_status, ct_price, ct_point, ct_point_use, ct_stock_use, ct_option, ct_qty, ct_notax, io_id, io_type, io_price, ct_time, ct_ip, ct_send_cost, ct_direct, ct_select, ct_msg, ct_file ) 

                        VALUES "; 

     

    보면 끝에 두 필드가 추가되있습니다. 

     

     

    268번째줄정도에 

     

        // 배송비결제 

        .... 

                else if($it['it_sc_type'] > 1 && $it['it_sc_method'] == 1) 

                    $ct_send_cost = 1; // 착불 

     

    이부분이 있습니다. 바로 다음에 추가해줍니다. 

     

    //작업용 파일 업로드 추가 

    if($_FILES['work_file']['name']){ 

    $ct_file_dir = G5_DATA_PATH.'/odfile'; 

    if(!is_dir($ct_file_dir)) { 

    @mkdir($ct_file_dir, G5_DIR_PERMISSION); 

    @chmod($ct_file_dir, G5_DIR_PERMISSION); 

    } 

     

    $f_pt = "/[#\&\+\-%@=\/\\:;,'\"\^`~\|\!\?\*\$#<>\(\)\[\]\{\}]/"; 

     

    $work_file = $_FILES['work_file']['name']; 

    $work_file = preg_replace("/\s+/", "", $work_file); 

    $work_file = preg_replace( $f_pt, "", $work_file); 

     

    $work_file = preg_replace_callback( 

      "/[가-힣]+/", 

      create_function('$matches', 'return base64_encode($matches[0]);'), 

      $work_file); 

     

    $work_file = preg_replace( $f_pt, "", $work_file ); 

     

    $work_file_check=strtolower(array_pop(explode('.',$work_file))); 

    $deny_file = array("php","php3","exe","cgi","phtml","html","htm","pl","asp","jsp","inc","dll"); 

     

    if(in_array($work_file_check,$deny_file)) 

    alert('$filename 파일은 업로드할수 없는 확장자의 파일입니다.'); 

     

    $work_file = $tmp_cart_id."_".$work_file; 

    upload_file($_FILES['work_file']['tmp_name'], $work_file, $ct_file_dir); 

    } 

     

    그 바로 아래에 

                $sql .= $comma."( '$tmp_cart_id', '{$member['mb_id']}', '{$it['it_id']}', '".addslashes($it['it_name'])."', '{$it['it_sc_type']}', '{$it['it_sc_method']}', '{$it['it_sc_price']}', '{$it['it_sc_minimum']}', '{$it['it_sc_qty']}', '쇼핑', '{$it['it_price']}', '$point', '0', '0', '$io_value', '$ct_qty', '{$it['it_notax']}', '$io_id', '$io_type', '$io_price', '".G5_TIME_YMDHIS."', '$REMOTE_ADDR', '$ct_send_cost', '$sw_direct', '$ct_select' )"; 

     

    이부부을 

                $sql .= $comma."( '$tmp_cart_id', '{$member['mb_id']}', '{$it['it_id']}', '".addslashes($it['it_name'])."', '{$it['it_sc_type']}', '{$it['it_sc_method']}', '{$it['it_sc_price']}', '{$it['it_sc_minimum']}', '{$it['it_sc_qty']}', '쇼핑', '{$it['it_price']}', '$point', '0', '0', '$io_value', '$ct_qty', '{$it['it_notax']}', '$io_id', '$io_type', '$io_price', '".G5_TIME_YMDHIS."', '$REMOTE_ADDR', '$ct_send_cost', '$sw_direct', '$ct_select', '".addslashes($work_msg)."', '$work_file' )"; 

     

    와 같이 변경해줍니다. 

     

     

    cartupdate.php 부분이 끝났습니다. 

     

     

     

    이제 입력된 내용을 관리자가 확인해야겠습니다. 

     

    저는 

    /adm/shop_admin/orderform.php 

    파일에서만 내용을 확인하면 되겠다고 판단했습니다. 

     

    약 164번째줄에 

                $sql = " select ct_id, it_id, ct_price, ct_point, ct_qty, ct_option, ct_status, cp_price, ct_stock_use, ct_point_use, ct_send_cost, io_type, io_price 

    이 쿼리문을 

                $sql = " select ct_id, it_id, ct_price, ct_point, ct_qty, ct_option, ct_status, cp_price, ct_stock_use, ct_point_use, ct_send_cost, io_type, io_price, ct_msg, ct_file 

    와 같이 바꿔줍니다. 

     

    약 241번째줄이 </tr>입니다. 한 주문상품의 for 문중 테이블 라인이 끝나는 부분이지요. 

    이 바로 다음에 추가해줍니다. 

     

    <?php 

    if($opt['ct_msg'] || $opt['ct_file']) { 

    ?> 

    <tr> 

    <th>추가작업내용</th> 

    <td colspan="8" class="td_mngsmall"><?php echo stripslashes($opt['ct_msg']); ?></td> 

    <th>첨부파일</th> 

    <td colspan="2" class="td_mngsmall"><a href="<?php echo G5_DATA_URL."/odfile/".$opt['ct_file']?>">다운받기</a></td> 

    </tr> 

    <?php 

    } 

    ?> 

     

    이 내용으로 인해 주문이 들어왔을때 메세지 혹은 파일이 있을경우 한줄이 추가되어 확인가능해집니다. 

     

     

    이제 주문서를 삭제했을때를 위해 수정합니다. 

    yc5는 리스트에서 "주문"으로 검색시 해당되는 부분만 삭제버튼이 나타나게 되어있습니다. 

     

    때문에 /adm/shop_admin/orderlistdelete.php 파일만 수정합니다. 

     

     

    약 14번째줄 if (!$od) continue; 다음에 

     

    //첨부 파일 삭제 

    $sqld = " select ct_file from {$g5['g5_shop_cart_table']} where od_id = '$od_id' "; 

    $dwresult = sql_query($sqld); 

    for ($i=0; $row=mysql_fetch_array($dwresult); $i++) 

    @unlink(G5_DATA_PATH."/odfile/".$row[ct_file]); 

     

    위 내용을 추가해줍니다. 

    '그누보드' 카테고리의 다른 글

    영카트 회원등급별 가격 변경  (0) 2020.04.22
    회원비번없이 로그인하기  (0) 2020.04.22
    탭메뉴 슬라이드 적용  (0) 2020.04.22
    회원가입 파일추가  (0) 2020.04.22
    리다이렉트 총 정리  (0) 2020.04.22

    댓글

Designed by Tistory.