엑셀 업로드시 db에 입력이 안됩니다.

엑셀 업로드시 db에 입력이 안됩니다.

QA

엑셀 업로드시 db에 입력이 안됩니다.

본문

안녕하세요, 문의 드립니다.

제가 아래의 링크에서 스킨을 받아서 잘 사용해 왔는데 금일 데이터를 엑셀로 업로드 시키는데

몇개의 데이타를 추가하였습니다. 까지는 출력이 되는데 웹상에서는 변화가 없어 db table을

확인해보니 데이터가 입력이 아예 되어 있질 않습니다.

혹시 무슨 이유가 있을까요? db의 권한이라든지 ~~~

http://sir.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=30646&page=2

원본 소스 입니다. 

이 질문에 댓글 쓰기 :

답변 5

테이블과 디비사아의 값 체크 다시 하시는게 좋을듯 하옵니다.

비슷한 경험을 했는데

저는 하나씩 늘려가면서 체크 했습니다.

무식한게 제일 좋은 방법인듯 ㅎㅎㅎ 

죄송하지만, 다른 테이블을 생성하고 테스트를 해봐도 동일한 증상이 발생을 합니다.
웹에서는 정상적으로 데이타가 올라갔다고 메시지는 출력이 되는데 실제 테이블에는 데이타가
입력이 안되네요..~~

g4 입니다.

지금까지 잘 사용해 오고 있었습니다. 

입력시 한번 DB쿼리를 찍어봐서 들어가지 않는 원인을 찾아보셔야 할듯 합니다.

 

혹시 '표시나 쿼리 등록시 타입에 따른 문제가 있을수도 있습니다.

마지막까지는 정상적으로 실행이 되고 테이블에 입력이 안되는데 도무지 원인을 모르겠습니다.

 

<?php
ini_set('memory_limit', -1);
include_once '_common.php';
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('euc-kr'); // 엑셀 파일의 인코딩 설정.

// 읽어올 엑셀 파일
$data->read('test.xls');
error_reporting(E_ALL ^ E_NOTICE);
$bo_name="result";
$tablename = "g4_write_$bo_name"; // 테이블 명

?>
<html>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<head>
</head>

<body>
<?php
function change_date($arr_date){
  $tmp_arr=explode('/', $arr_date);
  $arr_date = $tmp_y."-".$tmp_arr[0]."-".$tmp_arr[1].$tmp_s;
  $tmp_yns = explode(' ', $tmp_arr[2]);
  $arr_date=$tmp_yns[0].$arr_date." ".$tmp_yns[1];
  return $arr_date;
}

$arr = array();
$sqls = array();
$numRows= $data->sheets[0]['numRows'];
$numCols= $data->sheets[0]['numCols'];

//먼저 엑셀에 있는 데이터를 배열에 저장합니다.
for ($i = 1; $i <= $numRows; $i++) {
 for ($j = 1; $j <= $numCols; $j++) {
  $arr[$i][$j] = $data->sheets[0]['cells'][$i][$j];
 }
}

//저장된 배열로 sql문을 만듭니다.
for ($j = 1; $j <= $numCols; $j++) {
 $sqls1 .= "{$arr[1][$j]}, ";
}
$sqls1 = substr($sqls1, 0, -2);

for ($i = 1; $i <= $numRows; $i++) {
 for ($j = 1; $j <= $numCols; $j++) {
  $sqls[$i] .= "'{$arr[$i][$j]}', ";
 }
 $sqls[$i] = substr($sqls[$i], 0, -2);
 $sqls[$i] = "INSERT INTO $tablename (".$sqls1.") VALUES (".$sqls[$i].")";
}
// print_r2($sqls1); //sql문이 잘 완성 됐나 확인 차, 출력.

$cnt = count($sqls);

for ($i=2; $i <= $cnt ; $i++) {
// print_r2($sqls[$i]); //sql문이 잘 완성 됐나 확인 차, 출력.
 echo "<br>";
 mysql_query($sqls[$i]);
}

// bo_count_write를 현재 위치를 저장 wr_num에 실제로는 마이너스 넘버가 저장되어 있음.
$cnt1=$cnt-1;
$sql="UPDATE g4_board SET bo_count_write='$cnt1' WHERE bo_table='$bo_name'";
// print_r2($sql); //sql문이 잘 완성 됐나 확인 차, 출력.
// echo "<br>";

mysql_query($sql);

echo "<br> $cnt 의 데이터를 추가하였습니다."
?>
</body>
</html>

마지막까지는 정상적으로 실행이 되고 테이블에 입력이 안되는데 도무지 원인을 모르겠습니다.

 

<?php
ini_set('memory_limit', -1);
include_once '_common.php';
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('euc-kr'); // 엑셀 파일의 인코딩 설정.

// 읽어올 엑셀 파일
$data->read('test.xls');
error_reporting(E_ALL ^ E_NOTICE);
$bo_name="result";
$tablename = "g4_write_$bo_name"; // 테이블 명

?>
<html>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<head>
</head>

<body>
<?php
function change_date($arr_date){
  $tmp_arr=explode('/', $arr_date);
  $arr_date = $tmp_y."-".$tmp_arr[0]."-".$tmp_arr[1].$tmp_s;
  $tmp_yns = explode(' ', $tmp_arr[2]);
  $arr_date=$tmp_yns[0].$arr_date." ".$tmp_yns[1];
  return $arr_date;
}

$arr = array();
$sqls = array();
$numRows= $data->sheets[0]['numRows'];
$numCols= $data->sheets[0]['numCols'];

//먼저 엑셀에 있는 데이터를 배열에 저장합니다.
for ($i = 1; $i <= $numRows; $i++) {
 for ($j = 1; $j <= $numCols; $j++) {
  $arr[$i][$j] = $data->sheets[0]['cells'][$i][$j];
 }
}

//저장된 배열로 sql문을 만듭니다.
for ($j = 1; $j <= $numCols; $j++) {
 $sqls1 .= "{$arr[1][$j]}, ";
}
$sqls1 = substr($sqls1, 0, -2);

for ($i = 1; $i <= $numRows; $i++) {
 for ($j = 1; $j <= $numCols; $j++) {
  $sqls[$i] .= "'{$arr[$i][$j]}', ";
 }
 $sqls[$i] = substr($sqls[$i], 0, -2);
 $sqls[$i] = "INSERT INTO $tablename (".$sqls1.") VALUES (".$sqls[$i].")";
}
// print_r2($sqls1); //sql문이 잘 완성 됐나 확인 차, 출력.

$cnt = count($sqls);

for ($i=2; $i <= $cnt ; $i++) {
// print_r2($sqls[$i]); //sql문이 잘 완성 됐나 확인 차, 출력.
 echo "<br>";
 mysql_query($sqls[$i]);
}

// bo_count_write를 현재 위치를 저장 wr_num에 실제로는 마이너스 넘버가 저장되어 있음.
$cnt1=$cnt-1;
$sql="UPDATE g4_board SET bo_count_write='$cnt1' WHERE bo_table='$bo_name'";
// print_r2($sql); //sql문이 잘 완성 됐나 확인 차, 출력.
// echo "<br>";

mysql_query($sql);

echo "<br> $cnt 의 데이터를 추가하였습니다."
?>
</body>
</html> 

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

회원로그인

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