CI 묻고 답하기

제목 form validation이 적용이 안되네요;;
글쓴이 정수리 작성시각 2016/06/09 15:02:47
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 19953   RSS

1%라도 해본 질문 vs. 1%도 안해본 질문, 여러분은 어떤 질문에 손이 가십니까?

 

어제 질문을 올려도 답변이 하나도 없어서 ㅜ.ㅜ 지우고 새로운 질문을 올리게 되었습니다...

마이페이지를 클릭 하면 자신의 프로필이 출력이 되며 각항목에 기존의 프로필 정보를 지우고

새로 데이터를 입력한 후 수정을 버튼을 누르면 다시 마이페이지가 뜨면서 새로 수정된 데이터가 보이게 할려고 합니다.

modify()에서 form_validation을 사용하여 폼검증을 한 후 model을 통해 DB에 저장하는 방식인데

폼검증에서 규칙이 맞지않을 경우 마이페이지에서 오류를 출력해주어야 하는데  vaildation_erros()를 호출할 수 없다는에러가 뜨더라구요

오류를 살펴보니 mypage()-프로필확인 부분에서 form_validation을 사용하는 부분이 없어서 vaildation_errors()부분에 오류가 발생하는

것같아 mypage() 에서 $this->load->library('form_validation');을 적어주었더니 마이페이지에서 에러가 뜨지는 않지만 

입력창에 규칙에 어긋나게 입력을 하였을때 validaion_errors의 출력메세지가 나타나지 않네요;;

또 다른 문제는 여러항목중 하나만 고쳐도 수정이 되어야 하는데;;  이메일부분만 고쳤을때는 수정이 되는데

다른각항목만 고쳤을때는 수정이 되지않네요;;  

무엇이 문제일까요 ㅜ.ㅜ 

제가 사용방법을 잘모르는것일까요...ㅜ.ㅜ

밑에는 제가 일단 작성한  프로필수정 관련 컨트롤러 입니다 ㅜ.ㅜ

질문자체가 이상하다면 이상하다고 댓글이라도 달아주세요 ㅜㅜ.


function mypage()//프로필 확인
	{
		$this->load->library('form_validation');
		$this->load->model('Member');
		$result=$this->Member->Select(array('id'=>$this->session->userdata('id')));
		$this->load->view('mypage', array('profile'=>$result));
	}

	function modify()//프로필 수정
	{
		$this->load->library('form_validation');
		$this->form_validation->set_rules('email', '이메일', 'trim|valid_email|is_unique[user.ur_em]');
		$this->form_validation->set_rules('phone', '연락처', 'trim');
		$this->form_validation->set_rules('zipcode', '우편번호');
		$this->form_validation->set_rules('add1', '주소');
		$this->form_validation->set_rules('add2', '상세주소');
		
		if($this->form_validation->run()==FALSE){
			$this->load->helper('url');
			redirect('/auth/mypage');
		}else{
			$id=$this->session->userdata('id');
			$this->load->model('Member');
			$result=$this->Member->Modify(array(
				'ur_em'=> $this->input->post('email'),
				'ur_zip'=> $this->input->post('zipcode'),
				'ur_ad1'=>$this->input->post('add1'),
				'ur_ad2'=>$this->input->post('add2'),
				'ur_ph'=>$this->input->post('phone')
				),$id);
				if($result){
					$this->session->set_flashdata('message', '수정되었습니다');
					$this->load->helper('url');
					redirect('/auth/mypage');
				}
		}

 

 다음글 어제 form_validation에 대해 질문을 올렸는... (6)
 이전글 PHP Fatal error: Class CI_Ses... (7)

댓글

뫄뫄잉뿌 / 2016/06/09 16:09:08 / 추천 0
mypage()에서 폼검증 할 value들을 세팅해주시고, 검증할 값을 view에서 받아와 modify()부분과 마찬가지로 룰을 세팅해주셔야 합니다.
뫄뫄잉뿌 / 2016/06/09 16:12:04 / 추천 0
제가보기엔 두번째 문제는 controller단에서 문제는 없는거같은데... model쪽 봐야할 것 같네요
정수리 / 2016/06/09 16:17:15 / 추천 0

@뫄뫄잉뿌

정말정말 감사합니다 ㅜ.ㅜ 어제부터 답변에 목말라있어서;;

제가 메뉴얼을 봐도 이해가 되지않아서 ;;

폼검증할 value들을 세팅해줘야 한다는 부분이 이해가 안되는게 value들을 설정한다는게 

$this->form_validation->set_rules(필드이름, 에러출력, 규칙) 

이게 폼검증할때 설정하는거 아닌가요?

따로 value를 설정하는게 있나요?

한대승(불의회상) / 2016/06/09 16:21:02 / 추천 0

프로파일러를 켜고 데이터에 문제가 없는지도 확인해 보세요.

$this->output->enable_profiler()

 

뫄뫄잉뿌 / 2016/06/09 16:25:10 / 추천 0

현재 modify()에서는 폼검증할 value이 set_rules로 세팅되어있습니다.  필드이름은 view단의 form에서 name값에 맞춰주셔야 합니다. mypage()는 라이브러리호출을 되어있지만 폼검증 룰들이 세팅되어있지 않기때문에 폼검증이 안되는거같아요~

 

http://www.ciboard.co.kr/user_guide/kr/libraries/form_validation.html

한번 정독해보는것도 좋아요~

정수리 / 2016/06/09 16:54:32 / 추천 0

@한대승

조언해주신대로 프로파일러를 키고 하였지만;; 원하는 쿼리 부분인 출력이 되지않네요;;

email의 set_rules 부분에서 is_unique[user.ur_em]이부분을 지우니 하나씩 DB에 저장이 되더라구요 

하지만 저규칙이 있어야 사용자가 입력한 이메일이 DB에 있는지 없는지를 체크 하는 부분이라ㅜ.ㅜ

저규칙이 안되면 form_validation을 지우고 그냥 모델을 통해 중복인지 아닌지 검사를 하는 방법밖에 없을까요?

 

정수리 / 2016/06/09 16:55:27 / 추천 0

@뫄뫄잉뿌

말씀하신대로 mypage()부분에도 

function mypage()//프로필 확인
    {
        $this->load->library('form_validation');
        $this->form_validation->set_rules('email', '이메일', 'trim|valid_email|is_unique[user.ur_em]');
        $this->form_validation->set_rules('phone', '연락처', 'trim');
        $this->form_validation->set_rules('zipcode', '우편번호');
        $this->form_validation->set_rules('add1', '주소');
        $this->form_validation->set_rules('add2', '상세주소');
        if($this->form_validation->run()==FALSE){
        $this->load->model('Member');
        $result=$this->Member->Select(array('id'=>$this->session->userdata('id')));
        $this->load->view('mypage', array('profile'=>$result));
        }
    }

이렇게 설정을 하였습니다.

그래도 출력이 되지 않네요 ㅜ.ㅜ

한대승(불의회상) / 2016/06/09 17:19:26 / 추천 0

음.. 기우라고 생각하긴 하는데....

is_unique[user.ur_em]

이건 user 테이블에 ur_em 컬럼 이란 뜻이니 DB에 user 테이블을 사용중인지 확인해 보세요.

정수리 / 2016/06/09 17:23:55 / 추천 0

@한대승

넵 DB에서 user테이블을 사용하고 있습니다.

user테이블이 회원정보 테이블이기에 정보수정 또는 중복가입등을 확인하기위해 사용하고 있습니다