제목 | 제이슨 형식으로 db에 값 넣은 후 수정하기하면 값이 지워집니다.. | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 개멧 | 작성시각 | 2017/07/20 17:24:25 |
|
|||
제이슨 형식으로 db에 값 넣은 후 수정하기하면 값이 지워집니다.. 무슨 방법으로 해야 값 유지가될까여..
예를들면 이미지 4개가있는데 처음에 4개 등록은 잘됩니다 그 후에 3번쨰꺼만 수정하고 다시 저장하면 1,2,4 번은 날라가고 3번만 수정된걸로 db에 입력됩니다. 도움좀 주세요..! 컨트롤러 private function _addNews() { $this->load->helper(array('mobon_upload', 'security', 'replace_str_helper')); $arrPost = $this->input->post(NULL, TRUE); $oPost = (object) $arrPost; $arrRatingInfo[] = [ 'ctg' => $this->input->post('ctg', true), 'rating' => $this->input->post('rating', true), ]; $arrRatingInfo[] = [ 'ctg' => $this->input->post('ctg_two', true), 'rating' => $this->input->post('rating_two', true), ]; $arrRatingInfo[] = [ 'ctg' => $this->input->post('ctg_thr', true), 'rating' => $this->input->post('rating_thr', true), ]; $jsonRatingInfo = json_encode($arrRatingInfo); $card_img_info = []; if( ! empty($_FILES['cardImg_1'])) { $card_img_info[0] = saveCpiImage("cardImg_1", do_hash(microtime(), 'md5'), 'Fourcardnews', APPMOA_FOUR_CARDNEWS_IMAGE_URL); // 저장될 파일 경로 } if( ! empty($_FILES['cardImg_2'])) { $card_img_info[1] = saveCpiImage("cardImg_2", do_hash(microtime(), 'md5'), 'Fourcardnews', APPMOA_FOUR_CARDNEWS_IMAGE_URL); // 저장될 파일 경로 } if( ! empty($_FILES['cardImg_3'])) { $card_img_info[2] = saveCpiImage("cardImg_3", do_hash(microtime(), 'md5'), 'Fourcardnews', APPMOA_FOUR_CARDNEWS_IMAGE_URL); // 저장될 파일 경로 } if( ! empty($_FILES['cardImg_4'])) { $card_img_info[3] = saveCpiImage("cardImg_4", do_hash(microtime(), 'md5'), 'Fourcardnews', APPMOA_FOUR_CARDNEWS_IMAGE_URL); // 저장될 파일 경로 } $jsonCardNews = json_encode($card_img_info); $arrNews = array( 'no' => $oPost->no, 'title' => replace_special_charater($oPost->title), 'journal_list_no' => $oPost->journalist, 'card_img_info' => $jsonCardNews, 'rating_info' => $jsonRatingInfo, 'app_no' => $oPost->app_no, ); if(isset($_FILES['thumbnail_img']) === TRUE) { $thumbnail_img = saveCpiImage("thumbnail_img", do_hash(microtime(), 'md5'), 'thumbnail', APPMOA_FOUR_CARDNEWS_IMAGE_URL); // 저장될 파일 경로 if($thumbnail_img) { $arrNews['thumbnail_img'] = $thumbnail_img; } } $oNews = (object) $arrNews; echo $this->FourcardnewsService->addNews($oNews); } 서비스 public function addNews($oNews) { //$this->output->enable_profiler(TRUE); $this->load->model('Fourcardnews/Fourcardnews_service', 'FourcardnewsService'); if(isset($oNews->no) === TRUE && empty($oNews->no) === FALSE) { $arrCardImgList = json_decode($oNews->card_img_info); if(isset($oNews->card_img_info) === true OR empty($oNews->card_img_info) === false) { for ($i = 0; $i < 4; $i++) { if ( ! empty($arrCardImgList[$i])) { $arrCardImgList[$i] = $arrCardImgList[$i]; } } } $arrSet = array( 'title' => $oNews->title, 'rating_info' => $oNews->rating_info, 'journal_list_no' =>$oNews->journal_list_no, 'app_no' =>$oNews->app_no, 'card_img_info' => json_encode($arrCardImgList), ); $arrWhere = array( 'no' => $oNews->no, ); if(isset($oNews->app_no) === FALSE OR empty($oNews->app_no) === TRUE) { $arrSet['app_no'] = NULL; } if(isset($oNews->journal_list_no) === FALSE OR empty($oNews->journal_list_no) === TRUE) { $arrSet['journal_list_no'] = NULL; } /*처음에 썸메일 이미지 없이 등록 후 다시 수정하면..*/ if(isset($oNews->thumbnail_img) === TRUE OR empty($oNews->thumbnail_img) === FALSE) { $arrSet['thumbnail_img'] = $oNews->thumbnail_img; } $this->FourcardnewsModel->update($arrSet, $arrWhere); $msg = '수정'; } else { if(isset($oNews->app_no) === FALSE OR empty($oNews->app_no) === TRUE) { $oNews->app_no = NULL; } $new_news_no = $this->FourcardnewsModel->insert($oNews); $msg = '등록'; } $msg .= "에 성공 했습니다."; return jsonResult(TRUE, $msg, FALSE); }
db에 저장되는 값은 json 형식 입니다 |
|||
다음글 | $this->db->update($this-... (4) | ||
이전글 | 계층형 댓글 정렬 질문입니다. (4) | ||
유창화
/
2017/07/21 09:51:23 /
추천
0
|
이부분은 제가 보기에는
등록시와는 다르게 수정시에는 필용한것만 업데이트 하는데
그게 한 필드에 json_encode 한 상태로 들어가기 때문에
이번에 수정한 이미지만 저장되는 것입니다.
이런경우 수정시에는
기존 저장된 데이터를 json_decode 해 논 상태에서
업데이트 되는 이미지만 교체 해서 다시 json_encode 해서 저장하셔야 합니다.