제목 | php 수정시 기존 파일명 유지를 하기 위한 조언 부탁 드립니다. | ||
---|---|---|---|
글쓴이 | madman | 작성시각 | 2014/11/18 09:30:11 |
|
|||
안녕하세요. php 코드를 유지보수 하다가 궁금한 점이 있어 문의 드리고자 합니다. 게시판에서 파일을 등록-수정하는 폼이 있는데, 수정할 때 기존 파일명이 있어서 파일은 놔두고 다른 폼을 수정하면 파일이 null처리되는 오류가 있습니다. 파일을 변경하지도 않았는데 수정 버튼 클릭하면 파일이 사라진단 소리죠. 그래서 기존의 소스를 보니 아래와 같이 되어 있는데 <? //view ?> <form name="test"> <table> <tr> <td><input type="file" name="hint_sound" /></td> </tr> <tr> <td> <button>save</button> </td> </tr> </table> </form> <? //controller public function setData() { $no = $this->input->post('no'); // primary key $hint_sound = $this->file_upload('hint_sound'); // 위의 form에서 받은 파일명 불러오는 부분 if($hint_sound['success']) // 파일이 있으면 { $hint_sound = $hint_sound['msg']; } else { // 파일이 없으면 $hint_sound = null; } $data = array( 'HINT_SOUND' => ($hint_sound != null) ? $hint_sound['orig_name'] : null, 'HINT_SOUND_FILE' => ($hint_sound != null) ? $hint_sound['full_path'] : null ); $no = ($no == '' || $no == null) ? null : (int)$no; if($this->Problem_model->setProblem($this->utf8Toeuckr($data), $no)) { echo "success"; } else { echo "failed"; } } ?> <? //model public function setProblem($data, $no = null) { if($no == null) return $this->db->insert('PROBLEM_TABLE', $data); else { $this->db->where('NO', $no); return $this->db->update('PROBLEM_TABLE', $data); } } ?> 간단히 해당 부분만 추려서 올려본 것입니다. 위의 코드 중에서 if($hint_sound['success']) // 파일이 있으면 { $hint_sound = $hint_sound['msg']; } else { // 파일이 없으면 $hint_sound = null; } 이 부분이 문제인듯 한데요.. 제가 짠건 아니고 기존의 소스인데 폼에 등록된 파일이 없을 경우 input 폼에서 받아온 hint_sound 변수가 null 처리되도록 되어 있더군요. 그러니 파일은 수정 안 하고 다른거 수정할 때 파일은 기존 등록된 그대로 유지가 되어야 하는데 db에서 null처리되는 오류가 있더군요. 어쨌든 그래서 수정을 하려 하는데, 어떻게 바꿔주면 좋을지가 고민이네요. 참고로 보면 아시는 분들도 많겠지만 codeigniter 프레임워크로 되어 있고 제가 이 프레임워크는 익숙치가 않아서... 조언 좀 주셨으면 합니다. |
|||
다음글 | 로그인 할때 SSL 체크 질문 있습니다. (5) | ||
이전글 | 파일 업로드 할때 암호화와 복호화를 질문드립니다. (6) | ||
변종원(웅파)
/
2014/11/18 14:40:32 /
추천
0
|
수정일때는 no를 컨트롤러에서 가져와서 뷰로 전달하시면 됩니다.