개발 Q&A

제목 delete 후 코드 실행
카테고리 PHP
글쓴이 bmalmj 작성시각 2022/10/27 15:44:32
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 5428   RSS

게시판에서 여러개 게시물 선택 후 선택한 게시물을 삭제하려고합니다

삭제 후 게시물에 첨부되어있던 파일(서버에 올라간 파일)도 같이 삭제하려고하는데

php도 코드이그나이터도 처음이라 뭐가 문제인지 잘모르겠어서 여쭤봅니다!

[뷰 소스]

//게시물 삭제

function deleteBoard() {

//deleteBoardList : 여러개

$.ajax({

        type : "POST",

        url : "/board/deleteBoard",

        data:{re_idx: deleteBoardList},

        dataType : 'json',

        success: function(data) {

        deleteBoardFile(deleteBoardList);

        },

        error: function(error) {

        console.log("error");

        }

    });

}

//게시물 파일 삭제

function deleteBoardFile(deleteBoardList) {

$.ajax({

        type : "POST",

        url : "/board/deleteBoardFile",

        data:{re_idx: deleteBoardList},

        dataType : 'json',

        success: function(data) {},

        error: function(error) {

        console.log("error");

        }

    });

}

[컨트롤러]

public function deleteBoard() {

        $re_idx = $this->input->post_get('re_idx');

        

        $this->RM->deleteBoard($re_idx); //모델에서 for문으로 삭제

        

        $view = array();

        $view['view'] = array();

        

        $view['view']['data'] = array(

            'result' => $error ? 'fail' : 'success'

        );

        

        echo json_encode($view);

    }

public function deleteBoardFile() {

        $upload_path = config_item('uploads_dir') . '/file/board';

        $re_idx = $this->input->post_get('re_idx');

        //저장된 파일 삭제

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

            $encFileNm = $this->RM->getReportEncFileNm($re_idx[$i]);

            

            if(!empty($encFileNm)) {

                unlink($upload_path.'/'.$encFileNm);

            }

        }

        

        $view = array();

        $view['view'] = array();

        

        $view['view']['data'] = array(

            'result' => $error ? 'fail' : 'success'

        );

        

        echo json_encode($view);

    }

=========================

한 곳에 같이 넣어서 실행해봤는데 deleteBoard만 실행되고 나머지는 실행이 안됐었습니다.

public function deleteBoard() {

        $upload_path = config_item('uploads_dir') . '/file/board';

        $re_idx = $this->input->post_get('re_idx');

        

        $this->RM->deleteBoard($re_idx);

        

        //저장된 파일 삭제

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

            $encFileNm = $this->RM->getReportEncFileNm($re_idx[$i]);

            

            if(!empty($encFileNm)) {

                unlink($upload_path.'/'.$encFileNm);

            }

        }

        

        $view = array();

        $view['view'] = array();

        

        $view['view']['data'] = array(

            'result' => $error ? 'fail' : 'success'

        );

        

        echo json_encode($view);

    }

또 따로따로 하나씩만 (게시물만 삭제, 게시물에첨부된 파일만 삭제) 실행해봤을때는 정상적으로 실행되는데 같이 쓰거나 처음 소스 처럼 한 프로세스 실행 후 실행하면 처음 프로세스만 실행되고 두번째 프로세스는 실행되지 않습니다.

왜그런걸까요....?

 다음글 figure 에 대한 질문 (3)
 이전글 한 div 의 image alpha값을 다른 엘리먼트에...

댓글

변종원(웅파) / 2022/10/27 18:28:31 / 추천 0

리턴된 내용 또는 로그메세지에 뭔가 답이 있을 겁니다.

 $this->RM->deleteBoard($re_idx); 이 함수에서 마지막에 어떻게 처리하는지 궁금하네요?

한대승(불의회상) / 2022/10/27 18:29:40 / 추천 0

올려주신 코드상으론 정상적으로 삭제될 것 같은데요.

log_message() 함수를 사용하여 for 루프 단계별 로그를 남기며 확인해 보셔야 할 것 같습니다.

코드이그나이터 버전을 알 수 없어 3.X 메뉴얼 링크 남깁니다.

http://www.ciboard.co.kr/user_guide/kr/general/errors.html#log_message

bmalmj / 2022/10/28 09:58:05 / 추천 0

@변종원(웅파)

답변 감사합니다.

마지막처리는 어떤걸 말씀하시는 걸까요?

model에서는

function deleteBoard($re_idx) {
        for($i=0; $i<count($re_idx); $i++) {
            $this->datadb->where('id', $re_idx[$i]);
            $query = $this->datadb->delete($this->board);
        }
    }

로 처리되고 화면에서는 success 일 때 location.href  = './board'; (테스트할때는 빼고 사용했습니다)로 처리 됩니다.

@한대승(불의회상)

답변 감사합니다.

3버전을 사용하고있어서 참고할 수 있을 것 같습니다.

for문에 log_message('error', 'Some variable did not contain a value.') 입력하고 실행했더니 로그파일이 무한루프로 에러메시지가 계속 뜨고 있습니다....검색해도 멈추는 방법이 안나오는데 어떻게 해야할까요...?

한대승(불의회상) / 2022/10/28 11:01:10 / 추천 0

무한루프가 왜 도는지(웹 브라우져에서 ajax 호출이 계속되는지... 루프 종료 조건이 이상한지... 등) 확인해야 겠죠.