영카트 상품일괄등록 파일을 수정해서 게시판에 업로드 할려고 하는데 올라가질 않네요..
음... 아래 구문에서 머가 잘못된게 있는지 봐주세요..
상품테이블에 등록되는걸 방식그대로... 게시판 필드로 수정을 한건데 되야 되는거 아닌가...
테이블은 test 로 준겁니다. 생성도 되어 있구요.
엑셀 파일로 필드 그대로 지정을 해서 만들어놨습니다..
Copy
<?php$sub_menu = '400300';include_once('./_common.php'); // 상품이 많을 경우 대비 설정변경set_time_limit ( 0 );ini_set('memory_limit', '50M'); auth_check($auth[$sub_menu], "w"); function only_number($n){ return preg_replace('/[^0-9]/', '', $n);} if($_FILES['excelfile']['tmp_name']) { $file = $_FILES['excelfile']['tmp_name']; include_once(G5_LIB_PATH.'/Excel/reader.php'); $data = new Spreadsheet_Excel_Reader(); // Set output Encoding. $data->setOutputEncoding('UTF-8'); /*** * if you want you can change 'iconv' to mb_convert_encoding: * $data->setUTFEncoder('mb'); * **/ /*** * By default rows & cols indeces start with 1 * For change initial index use: * $data->setRowColOffset(0); * **/ /*** * Some function for formatting output. * $data->setDefaultFormat('%.2f'); * setDefaultFormat - set format for columns with unknown formatting * * $data->setColumnFormat(4, '%.3f'); * setColumnFormat - set format for column (apply only to number fields) * **/ $data->read($file); /* $data->sheets[0]['numRows'] - count rows $data->sheets[0]['numCols'] - count columns $data->sheets[0]['cells'][$i][$j] - data from $i-row $j-column $data->sheets[0]['cellsInfo'][$i][$j] - extended info about cell $data->sheets[0]['cellsInfo'][$i][$j]['type'] = "date" | "number" | "unknown" if 'type' == "unknown" - use 'raw' value, because cell contain value with format '0.00'; $data->sheets[0]['cellsInfo'][$i][$j]['raw'] = value if cell without format $data->sheets[0]['cellsInfo'][$i][$j]['colspan'] $data->sheets[0]['cellsInfo'][$i][$j]['rowspan'] */ error_reporting(E_ALL ^ E_NOTICE); $dup_wr_id = array(); $fail_wr_id = array(); $dup_count = 0; $total_count = 0; $fail_count = 0; $succ_count = 0; for ($i = 3; $i <= $data->sheets[0]['numRows']; $i++) { $total_count++; $j = 1; $wr_num = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_reply = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_commen = addslashes($data->sheets[0]['cells'][$i][$j++]); $ca_name = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_option = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_subject = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_content = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_link1 = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_link2 = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_link1_hit = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_link2_hit = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_hit = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_good = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_nogood = addslashes($data->sheets[0]['cells'][$i][$j++]); $mb_id = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_password = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_name = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_emai = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_homepage = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_datetime = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_last = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_ip = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_1 = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_2 = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_3 = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_4 = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_5 = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_6 = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_7 = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_8 = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_9 = addslashes($data->sheets[0]['cells'][$i][$j++]); $wr_10 = addslashes($data->sheets[0]['cells'][$i][$j++]); if(!$wr_id) { $fail_count++; continue; } // it_id 중복체크 $sql2 = " select count(*) as cnt from g5_write_test where wr_id = '$wr_id' "; $row2 = sql_fetch($sql2); if($row2['cnt']) { $fail_wr_id[] = $wr_id; $dup_wr_id[] = $wr_id; $dup_count++; $fail_count++; continue; } // 기본분류체크 $sql2 = " select count(*) as cnt from g5_write_test where wr_id = '$wr_id' "; $row2 = sql_fetch($sql2); if(!$row2['cnt']) { $fail_wr_id[] = $wr_id; $fail_count++; continue; } $sql = " insert into g5_write_test 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_content', 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 = '{$member['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> <div class="btn_win01 btn_win"> <button type="button" onclick="window.close();">창닫기</button> </div> </div> <?phpinclude_once(G5_PATH.'/tail.sub.php');?>
답변 2개 / 댓글 2개
채택된 답변
+20 포인트
$j = 1;
이 부분이 좀 이상한것 같습니다.
addslashes($data->sheets[0]['cells'][$i][$j++]);
이런식으로 사용하니까
데이타를 0번째거 부터 읽을려면 -1,
데이타를 1번째거 부터 읽을려면 0,
이어야 할것 같습니다.
if(!$wr_id) {
$fail_count++;
continue;
}
이부분도 이상합니다.
상위에서 $wr_id 가 정의 된게 없으니 당연히 전부 fail 로 빠져 버릴것 같습니다.
sql_query($sql);
이부분도
sql_query($sql) or die(mysql_error());
이런식으로 찍어보는게 좋을거 같습니다.
근데. 원천적으로 위에서 이미 다 실패로 continue 로 넘어가기 때문에
아래까지 내려갈 일은 없을것 같습니다.
답변을 작성하려면 로그인이 필요합니다.
말씀하신것 불필요한것들은 삭제를 했고
문제는 insert into g5_write_test 구문에서 바보같이 g5_2_ 이렇게 세팅된걸 깜빡하고...
당연히 안됐던 거네요 ㅎㅎ;;; g5_2_write_test 이렇게 하는걸로 업로드 해결되었습니다..
영카트 일괄등록파일을 해당 게시판 테이블로 올리게 수정하는건데 왜 안되나 했습니다..
결국엔 테이블 정의값 _2_ 를 빠뜨렸던게 원인이었네요..