| 제목 | 회원가입폼에서 아이디 중복검사를 하려는데, 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보다 크면 중복된 사용자가 있는 겁니다.