채택완료

영카트 엑셀

엑셀로 상품업로드 하는거 잘되던데요

 

 g5_shop_item테이블에 필드를 추가하여 

업데이트 파일과 똑같이

 

        $seller_cids             = addslashes($data->sheets[0]['cells'][$i][$j++]);
        $stuff_status             = addslashes($data->sheets[0]['cells'][$i][$j++]);
        $location_state           = addslashes($data->sheets[0]['cells'][$i][$j++]);

 

                         seller_cids = '$seller_cids',
                         stuff_status = '$stuff_status',
                         location_state = '$location_state', 이런식으로 위치에 넣어주고

 

 

샘플엑셀 우측 끝 열에 테이터를 넣고 올리면 등록이 안되네요..

도데체 왜그럴까요? 3라인부터 인식하는거 같던데

 

상품코드 기본분류 분류2 분류3 상품명 제조사 원산지

 

2라인의 이 설명을 삭제하지 마라는데 그래서 삭제안하고 끝에 데이터만 넣어서 올려도 안되구요,,

2라인 제목을 바꿔도 안된느거 같구요

다른 파일하고 무슨 관계가 있나요?

왜 안되는지....이거 땜에 짜증나서 꼬박세웠네요,,,ㅠㅠ

 

 

|

답변 3개 / 댓글 5개

채택된 답변
+20 포인트

for ($i = 2 ; $i <= $maxRow ; $i++){ // 2열부터면 2부터 시작, 3열부터면 3

    $data = array();
    $data['변수1'] = $objWorksheet->getCell('A'.$i)->getValue();
    $data['변수2'] = $objWorksheet->getCell('B'.$i)->getValue();
    $data['변수3'] = $objWorksheet->getCell('C'.$i)->getValue();

 

    $list[] = $data;

}

for($i = 0; $i < count($list); $i++){

    sql_query("insert into ert into 테이블명 
              필드1 = '".$list[$i]['변수1']."', 

              필드2 = '".$list[$i]['변수2']."', 

              필드3 = '".$list[$i]['변수3']."', 

이런 방식으로 for 문 안에 이런식으로

답변에 대한 댓글 4개

원래 있는 for문안에 같은 형태로 넣어주었는데요,,,
for ($i = 3; $i <= $data->sheets[0]['numRows']; $i++) {
$total_count++;

$j = 1;

$it_id = addslashes($data->sheets[0]['cells'][$i][$j++]);
$ca_id = addslashes($data->sheets[0]['cells'][$i][$j++]);
$ca_id2 = addslashes($data->sheets[0]['cells'][$i][$j++]);
$ca_id3 = addslashes($data->sheets[0]['cells'][$i][$j++]);

$seller_cids = addslashes($data->sheets[0]['cells'][$i][$j++]);
$stuff_status = addslashes($data->sheets[0]['cells'][$i][$j++]);
$location_state = addslashes($data->sheets[0]['cells'][$i][$j++]);

새로 추가하는 필드는 알려주신대로 또 for문을 돌려야 한다는 말씀이신가요?
저는 포문을 2번 돌렸습니다.
엑셀의 내용을 정의하고 배열로 만든 후에 그걸 다시 포문으로 해서 DB insert 시킨거죠..
여기서 좀더 확장형(?) 이라 하면 저 배열을 만들때 값이 존재 할경우에만 해버리시면 엑셀 작업을 잘못했을경우 빈값으로 간주시킬수 있겠지요?
for ($i = 3; $i <= $data->sheets[0]['numRows']; $i++) {
$total_count++;
$data = array();

$j = 1;

$data['it_id'] = addslashes($data->sheets[0]['cells'][$i][$j++]);
$data['ca_id'] = addslashes($data->sheets[0]['cells'][$i][$j++]);
$data['ca_id2'] = addslashes($data->sheets[0]['cells'][$i][$j++]);
$data['ca_id3'] = addslashes($data->sheets[0]['cells'][$i][$j++]);

$data['seller_cids'] = addslashes($data->sheets[0]['cells'][$i][$j++]);
$data['stuff_status'] = addslashes($data->sheets[0]['cells'][$i][$j++]);
$data['location_state'] = addslashes($data->sheets[0]['cells'][$i][$j++]);

$list[] = $data;
}
이러게 할경우 $list 라는 배열에 저 $data라는 값들이 담깁니다.
그럼

for($i = 0; $i < count($list); $i++){

sql_query("insert into ert into 테이블명
it_id = '".$list[$i]['it_id]."',
ca_id= '".$list[$i]['ca_id']."',
ca_id2= '".$list[$i]['ca_id2']."',
ca_id3= '".$list[$i]['ca_id3']."',
seller_cids = '".$list[$i]['seller_cids']."',
}

이런식으로 하면 원하는 필드에 원하는 값을 넣으실수 있으실겁니다.
기존 방식을 추구하셔도 되지만 문제가 발생된다면 원본은 백업 해두고 새롭게만드시는것도 하나의방법입니다.
이걸 붙들고 있는다고 해결되는건 아닐지도 모르니깐요....
신경써주셔서 감사합니다, 성공해보겠씁니다~

저도 이거 작업했었는데 정상적으로 잘 됐었고

 

특별한 방법이 없었어요 이상하네요

엑셀파일의 확장자 형식이 어떻게 될까요? xlsx 형식이라면 이걸 다른이름으로 저장하셔서 2003~2007 형식변환 해서 xls로 올리면 되는지 테스트 해보셔야 할듯 합니다.

답변에 대한 댓글 1개

2003~2007 형식으로 했습니다..이거 이해가 안되네요...
2번 열의 제목도 무슨 관계가 있는건가요?

답변을 작성하려면 로그인이 필요합니다.