제목 | 회원가입폼에서 아이디 중복검사를 하려는데, SQL을 어떻게 써야하나요? | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | jcoop | 작성시각 | 2017/05/07 22:26:45 |
|
|||
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보다 크면 중복된 사용자가 있는 겁니다.