CI 묻고 답하기

제목 아직 실행은 안해보고 코드만 짜보았는데 이렇게 했을 경우 데이터가 정상적으로 들어갈까요?
카테고리 CI 2, 3
글쓴이 정수리 작성시각 2016/09/26 10:32:30
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 17514   RSS

현재 혼자 회사프로젝트를 진행하고있습니다.

진행하던 중 어려움이 있어 올리게 되었습니다.

어려움이 있는 부분은 

기존인트라넷의 전화접수대장이라는 곳에서 데이터를 등록하였을 때 새로운 프로젝트에서 기존인트라넷에서 등록한 데이터가출력이

되어야 하며 수정 및 삭제도 가능해야 합니다.

기존인트라넷의 전화접수대장테이블의 경우 데이터를 등록하였을 때 문의기관 및 문의프로그램이라는 데이터를 문자열로 등록하지만

제가 만들고 있는 프로젝트의 테이블들의 경우 문의기관, 문의프로그램 데이터의 경우(문의기관테이블, 문의프로그램테이블이 있습니다)

문의기관pk값, 문의프로그램pk값으로 각각 데이터가 들어갑니다. 

결론적으로 기존인트라넷의전화접수대장 테이블과 새프로젝트 테이블의 형태가 다릅니다.

그래서 기존인트라넷의전화접수대장테이블과 비슷하게 필드를 만들고 거기에 문의기관과 문의프로그램을 pk로 받는 필드 2개를 추가하여

테이블을 만들었습니다.

기존인트라넷에서 데이터를 등록할 때 데이터를 배열에 넣어 등록하기에 그 배열을 file_get_contents함수를 사용하여 

새프로젝트의 controller의 함수로 보내 준후 cotroller의 함수에서 데이터를 받아 그 데이터를  새로만든 테이블에 저장하는 순서로 할려고 합니다

하지만 기존인트라넷의 경우 현재 회사에서 사용하고 있기에 막상 테스트에 어려움이 있습니다 ㅜㅜ 

테스트페이지가 따로 없기에 현재운영되고 있는 인트라넷에테스를 해봐야 하는데 잘못하다 오류가 나면 안되게요...

회사분들의 퇴근하신 후 테스트를 해보았는데 

기존인트라넷
foreach($this->param as $key => $val){
				switch($key){
					case "Tdate" : case "Tuser" : case "Tcom" : case "Tname" : case "Ttime" : case "Tphone" : case "Tmemo_a" : 
						if(isblank($val)){
							echo "<script>alert('등록 실패');history.back(-1);</script>";
							//movepage(getDomain()."TelmemoN/".$target.".html");
							exit;
						}
					case "Tdept" : case "Tdamdang" : case "TPG" : case "Ttype" : case "Tmemo_b" : case "TetcPG" : case "Twrite" : case "Tresult" : case "Treason" : case "Texcept" : case "Twrite_a" : 
						$insertItem[$key] = addslashes($val);
					break;
					case "mode" :
						switch($val){
							case "NY" :
								$target = "listNY";
							break;
							case "SC" :
								$target = "search";
							break;
							default :
								$target = "index";
						}
					break;
				}
			}
	$result = file_get_contents('http://172.19.93.9/jds/index.php/gigwan_c/test?data='.urlencode(json_encode($insertItem)));


새프로젝트 controller 

function test(){
			
		$insertitem =  json_decode(urldecode($_GET['data']));


		if(empty($insertitem)){

			echo "
					<meta http-equiv='Content-type' content='text/html; charset=utf-8'>
					<script>alert('성공');
					
					</script>";

		}else{

			echo "
					<meta http-equiv='Content-type' content='text/html; charset=utf-8'>
					<script>alert('실패');
					</script>";

		}

	}

이렇게 한후 테스트를 하였을 때 기존인트라넷의 테이블에 데이터는 정상적으로등록이 되지만 cotroller의 함수부분에서 아무 alert창이 뜨지 않더라구요 ㅜㅜ 그렇다보니 데이터가 넘어 왔는지 확인이 안됩니다 ㅜㅜ

그래서 일단 임의로 제가 위에서 말한 순서를 코드로 짜보았습니다.

기존인트라넷
foreach($this->param as $key => $val){
				switch($key){
					case "Tdate" : case "Tuser" : case "Tcom" : case "Tname" : case "Ttime" : case "Tphone" : case "Tmemo_a" : 
						if(isblank($val)){
							echo "<script>alert('등록 실패');history.back(-1);</script>";
							//movepage(getDomain()."TelmemoN/".$target.".html");
							exit;
						}
					case "Tdept" : case "Tdamdang" : case "TPG" : case "Ttype" : case "Tmemo_b" : case "TetcPG" : case "Twrite" : case "Tresult" : case "Treason" : case "Texcept" : case "Twrite_a" : 
						$insertItem[$key] = addslashes($val);
					break;
					case "mode" :
						switch($val){
							case "NY" :
								$target = "listNY";
							break;
							case "SC" :
								$target = "search";
							break;
							default :
								$target = "index";
						}
					break;
				}
			}
	$result = file_get_contents('http://xxx.xx.xx.x/jds/index.php/gigwan_c/test?data='.urlencode(json_encode($insertItem)));

새프로젝트 컨트롤러 

function test(){
			
		$insertitem =  json_decode(urldecode($_GET['data']));

		$result  =  $this->Gigwan_m->test($insertitem);

		if(empty($insertitem)){

			echo "
					<meta http-equiv='Content-type' content='text/html; charset=utf-8'>
					<script>alert('성공');
					
					</script>";

		}else{

			echo "
					<meta http-equiv='Content-type' content='text/html; charset=utf-8'>
					<script>alert('실패');
					</script>";

		}

	}

새프로젝트 모델
function test($data){
		
		$sql =  'select gg_pk from jds_gigwan where gg_na = ?';
		
		$query  =  $this->query($sql, $data['Tcom']);

		$gg_pk =  $query->row();

		$sql =  'select pg_pk from jds_program where pg_name = ?';

		$query =  $this->query($sql, $data['TPG']);

		$pg_pk = $query->row();

		$sql = 'insert into jds_telmemo(gg_pk, pg_pk, Tdate, Tuser, Tcom, Tname. Ttime, Tphone, Tmemo_a, Tdept, Tdamdang, TPG, Ttype, Tmemo_b, TetcPG, Twrite, Twrite_a, Tresult,  Treason, Texcept) value(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)';

		$result = $this->query($sql, array($gg_pk->gg_pk, $pg_pk->pg_pk, $data['Tdate'], $data['Tuser'], $data['Tcom'], $data['Tname'], $Tdata['Ttime'], $Tdata['Tphone'], $data['Tmemo_a'], $data['Tdept'], $data['Tdamdang'], $data['TPG'], $data['Ttype'], $data['Tmemo+b'], $data['TetcPG'], $data['Twrite'], $data['Twrite_a'], $data['Tresult'], $data['Treason'], $data['Texcept']));

	}

기존인트라넷에서 등록을하면 새프로젝트의 컨트롤러로 데이터가 넘어온 후 model로 보내 새로만든 테이블에 저장하면 끝납니다.

기존인트라넷의 전화접수대장에도 데이터가 저장이되구요

위의 코드로만 보았을 때 데이터만 넘어온다면 잘 저장이 될까요??

사수가 없이 저혼자 프로젝트 코딩을 해야되는데 너무 부담스럽고 어렵네요 ㅜㅜ

 다음글 페이징 에러 질문있습니다.. (2)
 이전글 Codeigniter에 트랜잭션 관련 질문입니다. (3)

댓글

한대승(불의회상) / 2016/09/26 11:04:55 / 추천 0
CI의 log_message() 함수를 사용하여 로그를 찍어 보세요.
변종원(웅파) / 2016/09/26 11:14:18 / 추천 0
실행해보시고 안되는 부분 도움을 요청하세요.
/ 2016/09/26 12:00:13 / 추천 0

@정수리 토닥토닥! 사수 없이 혼자 프로젝트 하는건 힘든일이죠. 그렇지만 그 사수, 사수의 사수 거슬러 올라가다보면 사수가 있었을까요? it산업 자체가 생긴지 비교적 얼마 안된 분야인데 말이죠. 자신이 개척한다 생각하시고, 자신있게 대처하세요. 자신을 믿으세요. 모자란건 책이든 커뮤니티던 채울 수 있어요. 프로젝트가 끝났을 때 자신이 얼마나 성장했을 지 상상해보세요.

전상민 / 2016/09/26 12:11:42 / 추천 0

@정수리

아래글 읽어 보시면 도움이 되지 않을까 싶습니다.

http://cikorea.net/bbs/view/etc_qna?idx=15339&page=1&view_category=&lists_style=

정수리 / 2016/09/26 12:34:00 / 추천 0

@변종원

답변감사합니다.

제가 너무 급하다 보니 너무 예의 없이 글을 올렸네요ㅜㅜ

정수리 / 2016/09/26 12:35:01 / 추천 0

@닉

답변감사합니다

좋은 말씀이네요!! 잘새겨듣겠습니다ㅎㅎ

정수리 / 2016/09/26 12:36:21 / 추천 0

@전상민

답변감사합니다,

포럼에 첨으로 방문을 했을 때 저글을 읽었었는데...

다시보니 많이 잘못되게 글을 작성했네요ㅜ.ㅜ

다음부터는 똑바로올리겠습니다.