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