게시판 엑셀 업로드 문제

게시판 엑셀 업로드 문제

QA

게시판 엑셀 업로드 문제

본문

안녕하세요

 

https://sir.kr/g5_skin/47731?sfl=wr_name%2C1&stx=%ED%8E%84%EC%8A%A4%EB%82%98%EC%9D%B8

 

이 스킨의 관리자 모드에서

엑셀로 게시물을 업로드 하려고

영카드의 상품엑셀파일등록 부분을 따와서 얼추 흉내를 내보고 있습니다.

 

아래의 소스로 업로드까지는 성공을 했는데

문제는 wr_num까지 넘어가지가 않는것 같습니다..

DB상에서 wr_num과 wr_parent 가 맞아야 정상적으로 넘버가 카운팅 하는거 같은데.. 안맞습니다.

게시판관리 카운트조정에서도 원글 수가 맞지가 않습니다. (조정체크 하면 또 맞습니다..)

 

업데이트 소스는 아래와 같습니다... wr_1이 중복되면 거르게 해놨습니다.

 


<?php
$sub_menu = '400300';
include_once('./_common.php');
// 상품이 많을 경우 대비 설정변경
set_time_limit ( 0 );
ini_set('memory_limit', '50M');
auth_check_menu($auth, $sub_menu, "w");
function only_number($n)
{
    return preg_replace('/[^0-9]/', '', (string)$n);
}
$is_upload_file = (isset($_FILES['excelfile']['tmp_name']) && $_FILES['excelfile']['tmp_name']) ? 1 : 0;
if( ! $is_upload_file){
    alert("엑셀 파일을 업로드해 주세요.");
}
if($is_upload_file) {
    $file = $_FILES['excelfile']['tmp_name'];
    include_once(G5_LIB_PATH.'/PHPExcel/IOFactory.php');
    $objPHPExcel = PHPExcel_IOFactory::load($file);
    $sheet = $objPHPExcel->getSheet(0);
    $num_rows = $sheet->getHighestRow();
    $highestColumn = $sheet->getHighestColumn();
    $dup_wr_id = array();
    $fail_wr_id = array();
    $dup_count = 0;
    $total_count = 0;
    $fail_count = 0;
    $succ_count = 0;

    for ($i = 3; $i <= $num_rows; $i++) {
        $total_count++;
        $j = 0;
        $rowData = $sheet->rangeToArray('A' . $i . ':' . $highestColumn . $i,
                                            NULL,
                                            TRUE,
                                            FALSE);
        $mb_id = $member['mb_id'];
        $wr_name = $member['mb_nick'];
        $wr_password = $member['mb_password'];
        $wr_email = $member['mb_email'];
        $wr_homepage = $member['mb_homepage'];
        $wr_reply = '';
        $wr_num = get_next_num($write_table);
        $wr_1             = addslashes((string)$rowData[0][$j++]);
        $wr_2             = addslashes((string)$rowData[0][$j++]);
        $wr_3            = addslashes($rowData[0][$j++]);
        $wr_4           = addslashes((string)$rowData[0][$j++]);
        $wr_5          = addslashes((string)$rowData[0][$j++]);
        $wr_6           = addslashes((string)$rowData[0][$j++]);
        $wr_7           = addslashes((string)$rowData[0][$j++]);
        $wr_8           = addslashes((string)$rowData[0][$j++]);
        $wr_9           = addslashes((string)$rowData[0][$j++]);
        $wr_10           = addslashes((string)$rowData[0][$j++]);
        if(!$wr_1) {
            $fail_count++;
            continue;
        }
        // wr_1 중복체크
        $sql2 = " select count(*) as cnt from $write_table where wr_1 = '$wr_1' ";
        $row2 = sql_fetch($sql2);
        if(isset($row2['cnt']) && $row2['cnt']) {
            $fail_wr_1[] = $wr_1;
            $dup_wr_1[] = $wr_1;
            $dup_count++;
            $fail_count++;
            continue;
        }
        $sql = " INSERT INTO  {$write_table}
                set wr_num = '$wr_num',
                     wr_reply = '$wr_reply',
                     wr_comment = 0,
                     ca_name = '$ca_name',
                     wr_option = '$html,$secret,$mail',
                     wr_subject = '$wr_subject',
                     wr_content = '$wr_subject',
                     wr_link1 = '$wr_link1',
                     wr_link2 = '$wr_link2',
                     wr_link1_hit = 0,
                     wr_link2_hit = 0,
                     wr_hit = 0,
                     wr_good = 0,
                     wr_nogood = 0,
                     mb_id = '$mb_id',
                     wr_password = '$wr_password',
                     wr_name = '$wr_name',
                     wr_email = '$wr_email',
                     wr_homepage = '$wr_homepage',
                     wr_datetime = '".G5_TIME_YMDHIS."',
                     wr_last = '".G5_TIME_YMDHIS."',
                     wr_ip = '{$_SERVER['REMOTE_ADDR']}',
                     wr_1 = '$wr_1',
                     wr_2 = '$wr_2',
                     wr_3 = '$wr_3',
                     wr_4 = '$wr_4',
                     wr_5 = '$wr_5',
                     wr_6 = '$wr_6',
                     wr_7 = '$wr_7',
                     wr_8 = '$wr_8',
                     wr_9 = '$wr_9',
                     wr_10 = '$wr_10'";
        sql_query($sql);
       
        $succ_count++;
    }
}
$g5['title'] = '상품 엑셀일괄등록 결과';
include_once(G5_PATH.'/head.sub.php');
?>
<div class="new_win">
    <h1><?php echo $g5['title']; ?></h1>
    <div class="local_desc01 local_desc">
        <p>상품등록을 완료했습니다.</p>
    </div>
    <dl id="excelfile_result">
        <dt>총상품수</dt>
        <dd><?php echo number_format($total_count); ?></dd>
        <dt>완료건수</dt>
        <dd><?php echo number_format($succ_count); ?></dd>
        <dt>실패건수</dt>
        <dd><?php echo number_format($fail_count); ?></dd>
        <?php if($fail_count > 0) { ?>
        <dt>실패상품코드</dt>
        <dd><?php echo implode(', ', $fail_wr_1); ?></dd>
        <?php } ?>
        <?php if($dup_count > 0) { ?>
        <dt>상품코드중복건수</dt>
        <dd><?php echo number_format($dup_count); ?></dd>
        <dt>중복상품코드</dt>
        <dd><?php echo implode(', ', $dup_wr_1); ?></dd>
        <?php } ?>
    </dl>
    <div class="btn_win01 btn_win">
        <button type="button" onclick="window.close();">창닫기</button>
    </div>
</div>
<?php
include_once(G5_PATH.'/tail.sub.php');

 

 

엑셀파일은 아래와같이 사용중입니다.

2038824707_1687458719.7095.png

 

 

 

 

고수님들의 가르침 부탁드립니다..ㅠㅠ

이 질문에 댓글 쓰기 :

답변 3

글쓰기 완료페이지에 보면 글 등록 후 새글 등록 등 추가 작업하는 소스가 있습니다. 참고 후 동일하게 넣어주시면 될거 같습니다.

답변감사합니다.

    $wr_id = sql_insert_id();

    // 부모 아이디에 UPDATE
    sql_query(" update $write_table set wr_parent = '$wr_id' where wr_id = '$wr_id' ");

    // 새글 INSERT
    sql_query(" insert into {$g5['board_new_table']} ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '{$bo_table}', '{$wr_id}', '{$wr_id}', '".G5_TIME_YMDHIS."', '{$member['mb_id']}' ) ");

    // 게시글 1 증가
    sql_query("update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '{$bo_table}'");



이 부분을 넣어봤는데
페이지 오류는 나는데 등록은 되고.. 넘버도 마찬가지로 들어가지가 않더라구요.
혹시 다른 부분을 또 넣어야 하는게 있을까요..

db table 할때 넘버같은경우 고유값 키값으로 설정후 자동증가를 사용하면 굳이 다음 숫자를 안정해도 올라갈텐데 굳이 숫자를 계산해서 넣어야 하는건지 잘모르겠네요

그래도 굳이 숫자 개념으로 넣고 싶다면 숫자들어가는 데이터 형태 (int(10)) 형태가 되어있는지 확인해보시고

$wr_num = get_next_num($write_table); 값이 문자로 떨어지지 않는지 

문자로 떨어진다면 형변환을 하시던지 아니면 db table 형태를 변경해서 입력해보세요

답변을 작성하시기 전에 로그인 해주세요.
전체 75
QA 내용 검색

회원로그인

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