CI 묻고 답하기

제목 회원가입 만들때 배열값
글쓴이 GunENE 작성시각 2011/02/10 13:35:55
댓글 : 11 추천 : 0 스크랩 : 0 조회수 : 23424   RSS

회원가입 양식을 만드는데
view에서

<form name='form' method='post' action='memRegedit_s'>
<table cellpadding='0' cellspacing='0' border='0' width='100%'>
 <tr>
  <td>아이디</td>
  <td><input type='text' name='mem_id'></td>
 </tr>
 <tr>
  <td>이름</td>
  <td><input type='text' name='mem_nm'></td>
 </tr>
 <tr>
  <td>이메일</td>
  <td><input type='text' name='mem_email'></td>
 </tr>
 <tr>
  <td>비밀번호</td>
  <td><input type='password' name='mem_passwd'></td>
 </tr>
 <tr>
  <td>테그</td>
  <td><input type='text' name='mem_tag'></td>
 </tr>
 <tr>
  <td>상세내용</td>
  <td><input type='text' name='mem_info'></td>
 </tr>
 <tr>
  <td>첨부파일</td>
  <td></td>
 </tr>
</table>
<input type='submit' value='submit' name='formbutton1' onClick='check_confirm();'>
</form>
이렇게 post로 보내고

컨트롤에서
 class MemRegedit_s extends CI_Controller{
  
  function MemRegedit_s()
  {
   parent::__construct();
  }
  
  function index()
  {
   $data = array();
   $data['mem_id'] = $this->input->post('mem_id');
   $data['mem_nm'] = $this->input->post('mem_nm');
   $data['mem_email'] = $this->input->post('mem_email');
   $data['mem_passwd'] = $this->input->post('mem_passwd');
   $data['mem_tag'] = $this->input->post('mem_tag');
   $data['mem_info'] = $this->input->post('mem_info');
   $data['mem_img'] = $this->input->post('mem_info');
   $data['mem_join_datetime'] = date("Ymd");
   $data['mem_login_datetime'] = date("Ymd");
   
//   $this->mem_id = $_POST['mem_id'];
//   $this->mem_nm = $_POST['mem_nm'];
//   $this->mem_email = $_POST['mem_email'];
//   $this->mem_passwd = $_POST['mem_passwd'];
//   $this->mem_tag = $_POST['mem_tag'];
//   $this->mem_info = $_POST['mem_info'];
//   $this->mem_img = $_POST['mem_info'];
//   $this->mem_join_datetime = date("Ymd");
//   $this->mem_login_datetime = date("Ymd");
//   $cont = json_encode($data);
//   $cont = json_decode($cont,true);

   print_r($data);
   
   $this->load->model('memRegedit_model',$data);
//   $data['result'] = $this->memRegedit_model->index();
   $this->load->view('memRegedit_s',$data);
  }
 }
이렇게 하면
컨트롤에서 로드한 모델에서

 class MemRegedit_model extends CI_Model
 {
  
//  function __MemRegedit_model()
//  {
//   parent::CI_model();
//  }
  
  function index()
  {
   $this->db->insert('mem_info',$data);
  }
 }
테이블에 값을 넣고

컨트롤에서 다시 뷰를 불러들이는건데
그냥 돌리면
 

A PHP Error was encountered

Severity: Notice

Message: Array to string conversion

Filename: core/Loader.php

Line Number: 165

이렇게 에러가 나오는데요
이거 어떻게 해야 받아서 모델돌려서 db에 저장하고 다시 뷰로 넘어 갈가요??
 다음글 css나 js링크시 더블 슬래쉬 문제 (4)
 이전글 메일 클래스 제목 길이 제한. (1)

댓글

GunENE / 2011/02/10 13:42:14 / 추천 0

컨트롤에서 $data = json_encode($data); 를 하면 저 에러 메세지는 나오지 않지만
그래도 db에 들어가지는 않네요..ㅠㅠ

milosz / 2011/02/10 13:43:43 / 추천 0
$data['result'] = $this->memRegedit_model->index($data);
하시고

모델에서는
  function index($data)
  {
   $this->db->insert('mem_info',$data);
  }

해주셔야 할듯 하네요.
GunENE / 2011/02/10 13:46:45 / 추천 0
말씀하신데로 했는데
$data['result'] = $this->memRegedit_model->index($data);
에러가 나오네요..

A PHP Error was encountered

Severity: Notice

Message: Undefined property: MemRegedit_s::$memRegedit_model

Filename: controllers/memRegedit_s.php

Line Number: 37


Fatal error: Call to a member function index() on a non-object in C:\APM_Setup\htdocs\projectF\ci\application\controllers\memRegedit_s.php on line 37
milosz / 2011/02/10 13:59:33 / 추천 0
 //  function __MemRegedit_model()
//  {
//   parent::CI_model();
//  }

주석부 지워보시구... model index에 파라미터도 추가해주셨나요?


GunENE / 2011/02/10 14:08:38 / 추천 0

컨트롤러 index에 파라미터를 추가하라는 말씀은
$data['result'] = $this->memRegedit_model->index($data);
이렇게 하라는 말씀이신가여?
혹시 맞다면 그래도 오류가..ㅠㅠ
 

A PHP Error was encountered

Severity: Notice

Message: Undefined property: MemRegedit_s::$memRegedit_model

Filename: controllers/memRegedit_s.php

Line Number: 37


Fatal error: Call to a member function index() on a non-object in C:\APM_Setup\htdocs\projectF\ci\application\controllers\memRegedit_s.php on line 37
 

milosz / 2011/02/10 14:18:11 / 추천 0
  class MemRegedit_model extends CI_Model
 {
  
  function __MemRegedit_model()
  {
   parent::CI_model();
  }
  
  function index($data)
  {
   $this->db->insert('mem_info',$data);
  }
 }

GunENE / 2011/02/10 14:21:07 / 추천 0
아..ㅠㅠ
그렇게 해도...오류가..ㅎㄷㄷ
GunENE / 2011/02/10 14:39:27 / 추천 0

model에서는

 class MemRegedit_model extends CI_Model
 {
  
  function __MemRegedit_model()
  {
   parent::CI_Model();
  }
  
  function index()
  {
   $this->mem_id = $this->input->post('mem_id');
   $this->mem_nm = $this->input->post('mem_nm');
   $this->mem_email = $this->input->post('mem_email');
   $this->mem_passwd = $this->input->post('mem_passwd');
   $this->mem_tag = $this->input->post('mem_tag');
   $this->mem_info = $this->input->post('mem_info');
   $this->mem_img = $this->input->post('mem_info');
   $this->mem_join_datetime = date("YmdHis");
   $this->mem_login_datetime = date("YmdHis");
   
   $this->db->insert('mem_info',$this);
  }
 }

이렇게 하고
컨트롤에서

 class MemRegedit_s extends CI_Controller{
  
  function __MemRegedit_s()
  {
   parent::CI_Controller();
  }
  
  function index()
  {
   $this->load->model('memRegedit_model');
   $data['result'] = $this->memRegedit_model->index();
   $this->load->view('memRegedit_s',$data);
  }
 }

이렇게 해서 해결봤습니다..ㅠㅠ

milosz / 2011/02/10 14:51:20 / 추천 0
 수..수고하셨습니다;;
GunENE / 2011/02/10 15:07:15 / 추천 0
도와주셔서 감사합니다..^^ milosz님^^
덕북에 많이 배웠습니다^^
변종원(웅파) / 2011/02/10 17:38:40 / 추천 0
기본을 안지키셔서 생긴 문제였네요.

컨트롤러에서 모델을 로딩하는 방법, 로딩후 사용하는 방법을 잘못 구현하셔서
그런겁니다.

시행착오 끝에 해결이 되는 것도 좋지만 미리 매뉴얼 숙지하시면 시행착오를 줄일 수 있습니다.