| 제목 | 제이슨 형식으로 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 해서 저장하셔야 합니다.