누구나 컨트롤러, 모델 및 숨겨진 ID 및 컨트롤러를 사용하는 단일 양식 (보기)이 될 수있는보기를 작성할 수 있습니까? id 또는 not와 같은 것을 삽입하고 업데이트 할 것인가에 달려있다.Codeigniter를 사용하여 동일한 양식에서 데이터를 삽입하고 업데이트하는 방법
답변
기본적으로 숨겨진 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;
}
}
참고 : 좋은 연습이 모델에 (사실 모든 쿼리) 삽입 및 업데이트 을 이동 부를 것이다. 이것은 단지 예일뿐입니다.
입력 된 이름이 이미 해당 ID와 관련된 세부 정보가있는 경우 표시하는 방법. @Alex를 편집 할 때 –
안녕하세요. 이미 세부 정보가있는 경우 입력 필드를 어떻게 채우시겠습니까? 모든 필드'isset ($ _ POST [ 'field_name'])에 대해 할 수 있을까요? $ _POST [ 'field_name'] : $ row-> field_name' 그래서 필드 이름이'$ _POST' 데이터에서 나온 것이라면 데이터베이스의'$ field_name'을 보여줍니다. 이렇게하려면 페이지를로드하기 전에 데이터베이스에서 필드를 가져와야합니다. 그러나 그것은 그것이 업데이트라고 확신한다면 당신이하고 싶은 것일뿐입니다! – Alex
고맙습니다. 삼원 연산 @Alex을 잊었습니다. –
https://www.codeigniter.com/userguide3/tutorial/index.html 자습서를 살펴보고 그 프로세스가 어떻게 작동하는지 이해할 수 있어야합니다 ... – sintakonte
사실 많은 수정 사항을 사용하고 추가했지만 사용하지는 않았습니다. 같은 양식 때문에 나는 가이드를 사용했지만 @sintakonte를 얻지 못했습니다. –
지금까지 무엇을 작성 했습니까? – TimBrownlaw