채택완료

엑셀 업로드 관련 질문

엑셀로 업로드 하는데 원하는것은 서울 강남구|대전 동구|부산 강남구

이런 식으로 구분자로 해서 한 컬럼에 저장을 할려고 합니다.

현재는.. update 문 이라 당연히 맨 마지막만 저장되더라구요..

 

662111144_1612308308.4639.png

 

 

Copy
for ($i = 0; $i <= $data->sheets[0]['numRows']; $i++) {

        $cf_addr = addslashes($data->sheets[0]['cells'][$i][1]);


        $sql = " update {$g5['config_table']} set test = '{$cf_addr}' ";
        sql_query($sql);

}
|

답변 3개 / 댓글 1개

채택된 답변
+20 포인트

for문에서 addr 배열을 만들고

for문 밖에서 한번만 update 해야될 것 같습니다. 

그런데 몇 줄이든 상관이 없나요? 

 

Copy
$arr = array();
for ($i = 0; $i <= $data->sheets[0]['numRows']; $i++) {
    $cf_addr = addslashes($data->sheets[0]['cells'][$i][1]);
    if (!$cf_addr) continue;
    $arr[] = $cf_addr;
}
$sql = " update {$g5['config_table']} set test = '".implode("|", $arr)."' ";
sql_query($sql);

답변에 대한 댓글 1개

네 엑셀에서는 정해진 값은 없고 유동적으로 지금처럼 그대로 하면 되겠습니다.
와~!!! 감사합니다. 한번에 잘 됩니다.

네, 이렇게

 

Copy
$arr = array();
for ($i = 0; $i <= $data->sheets[0]['numRows']; $i++) {
    $cf_addr = addslashes($data->sheets[0]['cells'][$i][1]);
    $cf_addr = trim($cf_addr); // 중복제거를 위해 공백 지우기
    if (!$cf_addr) continue;
    $arr[] = $cf_addr;
}

 

// 중복 제거, 빈값 제거
$arr = array_values(array_filter(array_unique($arr)));

 

$sql = " update {$g5['config_table']} set test = '".implode("|", $arr)."' ";
sql_query($sql);

아 한가지만 더 질문 할께요~ 혹시 중복된 값이 있으면 하나만 업로드 처리 되게끔은 어떻게 하는건지요~?

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