CI 묻고 답하기

제목 회원가입폼에서 아이디 중복검사를 하려는데, SQL을 어떻게 써야하나요?
카테고리 CI 2, 3
글쓴이 jcoop 작성시각 2017/05/07 22:26:45
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 14131   RSS

php는 거의 처음이라, 너무 어렵네요. 

 

view form페이지. (/views/register/index.php)


<?php echo validation_errors(); ?>
<?php echo form_open('register/index','class="form-horizontal"') ?>

<p>email:</p>
<input type="email" name="email" class="form-control" id="inputEmail3" placeholder="Email">

<p>password</p> 
<input type="password" name="pw" class="form-control" id="inputPassword3" placeholder="Password">
 <input type="password" name="pw2" class="form-control" id="inputPassword4" placeholder="Rewrite, Password">

<p>name</p>
<input type="text" name="name" class="form-control" id="inputNmae" placeholder="Name">

 <button type="submit" disabled="disabled" class="btn btn-default">Registration</button> 

</form>

 

view페이지 설명: form 부분만 빼었습니다. 데이터 변수명으로 email, pw, pw2, name이렇게 넘어갑니다. 넘어가는 곳은 Controller, 

register/index, Register.php입니다.

 

controllers/Register.php (컨트롤러)

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Register extends CI_Controller {

	public function index()
	{
		$this->load->helper('form');
		$this->load->library('form_validation');
		   
		$this->form_validation->set_rules('email', 'email', 'required');
    	$this->form_validation->set_rules('pw', 'pw', 'required');
		$this->form_validation->set_rules('name', 'name', 'required');
		
		if ($this->form_validation->run() === FALSE)
		{
			$this->load->view('register/index');

		}
		else
		{
			$this->load->model('member_model');
			$this->member_model->set_member();
			 
			$this->load->helper('url');
			$this->load->view('register/registred.php');
		}
	}
	
	public function registred()
	{
		$this->load->library('session');
		$this->load->helper('url');
		
		$this->load->view('register/registred.php');
	}
	
}

 

위의 컨트롤러에서 보면, index()와 registred()이렇게 두개의 함수가 있습니다. 위의 form의 submit을 실행하면, 

<?php echo form_open('register/index')... form_open에서, register/index의 주소를 넘기고, 다시 index()로 들어가서, 
($this->form_validation->run() === TRUE)가 되어, model을 가져옵니다.

 

$this->load->model('member_model');
$this->member_model->set_member();
			 
$this->load->helper('url');
$this->load->view('register/registred.php');

 

위의 코드가 실행되는데요. set_member()로 데이터를 database에 저장시킵니다. 그 model부분은, Member_model인데요. 

<?php
class Member_model extends CI_Model {
	
	public function __construct()
	{
		$this->load->database();
		$this->load->library('session');
	}
	 
	 
	 
	public function set_member()
	{
		$this->load->helper('url');
	 	
		$data = array(
			'EMAIL' => $this->input->post('email'),
			'NAME' => $this->input->post('name'),
			'PW' => $this->input->post('pw')
		);
	 
		
		$newdata = array(
			'username' =>  $this->input->post('name'),
			'useremail'=> $this->input->post('email'),
			'logged_in'=> FALSE
		);
		
		$this->session->set_userdata($newdata);
		return $this->db->insert('MEMBER', $data);
	}
	
}

 

저 model에서, id중복검사를 하려면, 어떤 코드를 적어야하나요? php에 감이 없어서, sql문을 어떻게 적어야하는지 모르겠습니다. 그래서, 포럼에다가 질문해봅니다.

 

 

 

태그 중복검사,sql,id중복 검사
 다음글 여러 게시판들 어떻게 소스 상에서 구분지으시나요? (1)
 이전글 게시글 수정으로 스팸글이 가끔 등록됩니다 (1)

댓글

변종원(웅파) / 2017/05/07 23:05:35 / 추천 1

우선 $this->load->view('register/registred.php'); 이 부분도 잘못 되었습니다. 확장자는 빼셔야 합니다.

그리고 모델에서 post 변수를 직접 받지말고 컨크롤러에서 받아서 모델에 넘겨주도록 하세요.

$post = $this->input->post(null, true); 로 받으면 $post 변수에 배열로 들어갑니다.

아이디 중복검사는 sql 작성해서 하시면 됩니다. select count(*) from MEMBER where useranme = '넘어온아이디' 해서 

카운트가 0보다 크면 중복된 사용자가 있는 겁니다.