게시판 글 엑셀로 업로드
본문
영카트 상품일괄등록 파일을 수정해서 게시판에 업로드 할려고 하는데 올라가질 않네요..
음... 아래 구문에서 머가 잘못된게 있는지 봐주세요..
상품테이블에 등록되는걸 방식그대로... 게시판 필드로 수정을 한건데 되야 되는거 아닌가...
테이블은 test 로 준겁니다. 생성도 되어 있구요.
엑셀 파일로 필드 그대로 지정을 해서 만들어놨습니다..
<?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>
<?php
include_once(G5_PATH.'/tail.sub.php');
?>
!-->
답변 2
$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 로 넘어가기 때문에
아래까지 내려갈 일은 없을것 같습니다.
어느부분까지는 정상이고 어느부분에서 꼬여있는지를 확인하기 위해서 echo가 최고지요
이런 경우 중간 중간에 echo를 통해서 확인하는 방법이 좋습니다
답변을 작성하시기 전에 로그인 해주세요.