2017-12-04 5 views
-2

누구나 컨트롤러, 모델 및 숨겨진 ID 및 컨트롤러를 사용하는 단일 양식 (보기)이 될 수있는보기를 작성할 수 있습니까? id 또는 not와 같은 것을 삽입하고 업데이트 할 것인가에 달려있다.Codeigniter를 사용하여 동일한 양식에서 데이터를 삽입하고 업데이트하는 방법

+0

https://www.codeigniter.com/userguide3/tutorial/index.html 자습서를 살펴보고 그 프로세스가 어떻게 작동하는지 이해할 수 있어야합니다 ... – sintakonte

+0

사실 많은 수정 사항을 사용하고 추가했지만 사용하지는 않았습니다. 같은 양식 때문에 나는 가이드를 사용했지만 @sintakonte를 얻지 못했습니다. –

+0

지금까지 무엇을 작성 했습니까? – TimBrownlaw

답변

0

기본적으로 숨겨진 ID가 데이터베이스에 있는지 여부 만 확인하면됩니다. 만약 당신이하지 않으면 insert, 만약 당신이 update. 일반적으로 이것은 당신이 그것을하는 방법이다 :

<?php 

class some_controller extends CI_Controller { 

    /** 
    * Submits the form 
    * 
    * @return boolean 
    */ 
    public function submit_form() { 
     $id = $this->input->post('id'); 
     $data = array(
      'somedata' => $this->input->post('somedata'), 
      'someotherdata' => $this->input->post('someotherdata') 
     ); 
     $this->load->model('some_model'); 
     if (!is_null($id) && $this->some_model->id_exists($id)) { 
      return $this->db->update('sometable', array('id' => $id), $data); 
     } else { 
      // assumes sometable autoincrements id 
      // otherwise $data = array_merge(array('id' => $id), $data); 
      return $this->db->insert('sometable', $data); 
     } 
    } 

} 

class some_model extends CI_Model { 

    /** 
    * Checks if id exists in sometable 
    * 
    * @return boolean TRUE if item with $id exists in sometable 
    */ 
    public function id_exists($id) { 
     $this->db->where('id', $id); 
     return $this->db->count_all_results('sometable') > 0; 
    } 

} 

참고 : 좋은 연습이 모델에 (사실 모든 쿼리) 삽입 및 업데이트 을 이동 부를 것이다. 이것은 단지 예일뿐입니다.

+0

입력 된 이름이 이미 해당 ID와 관련된 세부 정보가있는 경우 표시하는 방법. @Alex를 편집 할 때 –

+0

안녕하세요. 이미 세부 정보가있는 경우 입력 필드를 어떻게 채우시겠습니까? 모든 필드'isset ($ _ POST [ 'field_name'])에 대해 할 수 있을까요? $ _POST [ 'field_name'] : $ row-> field_name' 그래서 필드 이름이'$ _POST' 데이터에서 나온 것이라면 데이터베이스의'$ field_name'을 보여줍니다. 이렇게하려면 페이지를로드하기 전에 데이터베이스에서 필드를 가져와야합니다. 그러나 그것은 그것이 업데이트라고 확신한다면 당신이하고 싶은 것일뿐입니다! – Alex

+0

고맙습니다. 삼원 연산 @Alex을 잊었습니다. –