2010-04-28 2 views
0

데이터베이스에서 동적으로 생성되는 약 8 개의 확인란이 있습니다. CodeIgniter + MySQL을 사용하여 체크 된 체크 박스 업데이트하기

이 내 시야에서 코드 내 컨트롤러

//Start Get Processes Query 
    $this->db->select('*'); 
    $this->db->from('projects_processes'); 
    $this->db->where('process_enabled', '1'); 
    $data['getprocesses'] = $this->db->get(); 
    //End Get Processes Query 

    //Start Get Checked Processes Query 
    $this->db->select('*'); 
    $this->db->from('projects_processes_reg'); 
    $this->db->where('project_id', $project_id); 
    $data['getchecked'] = $this->db->get(); 
    //End Get Processes Query 

의 코드입니다.

<?php if($getprocesses->result_array()) { ?> 
<?php foreach($getprocesses->result_array() as $getprocessrow): ?> 
<tr> 
    <td><input <?php if($getchecked->result_array()) { foreach($getchecked->result_array() as $getcheckedrow): if($getprocessrow['process_id'] == $getcheckedrow['process_id']) { echo 'checked'; } endforeach; }?> type="checkbox" name="progresscheck[]" value="<?php echo $getprocessrow['process_id']; ?>"><?php echo $getprocessrow['process_name']; ?><br> 
    </td> 
</tr> 
<?php endforeach; ?> 

이렇게하면 확인란에 양식이 생성되고 데이터베이스에서 지정한대로 확인란이 선택됩니다.

문제는 업데이트하는 것이 문제입니다.

지금까지 내가 수행 한 작업은 프로젝트의 모든 확인란 항목을 삭제 한 다음 모든 값을 데이터베이스에 다시 삽입하는 것입니다. 왜냐하면 천천히 그리고 끔찍한 일입니다. 2. 확인란을 선택했을 때의 모든 메타 데이터가 손실됩니다.

그래서 내 질문에, 내가 어떻게 변경된 확인란을 업데이 트합니까?

감사합니다, 팀

답변

1

첫째, 당신은 두 개의 데이터베이스 쿼리 및 뷰 내부의 중첩 루프를 가지고있다. JOIN ON JOIN ON projects_processes.process_id = projects_processes_reg.process_id WHERE process_enabled = 1 AND project_id = $ project_id와 같은 하나의 쿼리를 조인 문의와 함께 사용하는 것이 훨씬 더 좋습니다.

두 번째로 양식 요소의 이름은 progresscheck []입니다. DB로 상호 참조 할 수 있도록 process_id에 배열 번호를 명시해야합니다.

그런 다음, 폼이 게시 된 경우, 변경 한 경우에만 체크 박스를 업데이트 :
를 - $ _POST을 확인, 그 결과를 통해 반복 - 당신이
이 체크 박스를 생성하는 데 사용할 다시 실행 새로운 단일 쿼리를 변경된 값에 대한 배열 (또는 CI의 set_value() 함수) - 변경된 값을 찾으면 update 문을 실행합니다.

행운을 빌어 요 !!

~