2013-10-31 7 views
11

나는 codeigniter.In 내보기 페이지에서 나는 데이터베이스에서 업데이트 및 삭제를위한 두 개의 앵커 태그가있는 테이블에 데이터를 표시하고 있습니다. ID를 통해 데이터베이스에서 특정 행을 삭제하고 싶습니다.codeigniter에서 특정 행을 삭제하는 방법은 무엇입니까?

내보기 페이지입니다

<?php foreach($query as $row){ ?> 
<tr> 
<td><?php echo $row->name ?></td> 
    <td><?php echo $row->testi ?></td> 
    <td><?php echo anchor('textarea/delete_row', 'DELETE', 'id="$row->id"'); ?></td> 
    <td><a href="#ajax-modal2" data-id="delete[]" role="button" class="Delete" data-toggle="modal" onClick="confirm_delete()"><i class="icon-trash"></i></a></td> 
    </tr> 

<?php } ?> 
</table> 

내 컨트롤러 페이지

function delete_row() 
{ 

    $this->load->model('mod1'); 
    $this->mod1->row_delete(); 
    redirect($_SERVER['HTTP_REFERER']); 
} 

하고 내 모델 페이지 내가 각각의 ID를 잡기하여 행을 삭제할

function row_delete() 
    { 

     $this->db->where('id', $id); 
     $this->db->delete('testimonials'); 
    } 

입니다. 가혹하지 마십시오. 고마워요

+1

당신이 모든 첫 번째는 U에게 선생님 감사합니다 – vijaykumar

답변

19

모델에 $id 변수가 사용되었지만 아무데도 튀어 나오지 않습니다. 컨트롤러에서 모델로 $id 변수를 전달해야합니다.

컨트롤러

row_delete() 방법의 파라미터를 통해 모델에 $ ID를 전달하자.

function delete_row() 
{ 
    $this->load->model('mod1'); 

    // Pass the $id to the row_delete() method 
    $this->mod1->row_delete($id); 


    redirect($_SERVER['HTTP_REFERER']); 
} 

모델은 모델 메소드 매개 변수에 $ ID를 추가합니다.

function row_delete($id) 
{ 
    $this->db->where('id', $id); 
    $this->db->delete('testimonials'); 
} 

문제는 지금이 컨트롤러에서 $id 변수를 전달하지만, 어디 컨트롤러에 선언되지 않은 점이다.

3

간단한 방법 : 뷰

은 (는 ID 값을 전달) 컨트롤러

<td><?php echo anchor('textarea/delete_row?id='.$row->id, 'DELETE', 'id="$row->id"'); ?></td> 

는 (ID를 수신) 모델

$id = $this->input->get('id'); 
$this->load->model('mod1'); 
$this->mod1->row_delete($id); 

(전달 인수를 얻을) :

function row_delete($id){} 

실제로, 컨트롤러에 ID 값을 POST하고 GET이 아닌 행을 삭제하려면 ajax를 사용해야합니다.

+0

모델에 delete_row하기 위해 $ id를 통과해야합니다. 한가지 더 모델 함수 row_delete 안에 nything을 추가해야합니까? 아니면 같은 코드를 안에 두어야합니까? – Abhijit

+0

고맙습니다. 그것의 매력처럼 작동 ... 매우 대단히 감사합니다 선생님 – Abhijit

+0

당신은 오신 것을 환영합니다, 그냥 내 코드를 넣어. 그것은 수요를 충족시키는 가장 빠른 방법이지만 최선의 방법은 아닙니다. GET은 멱등 원 (idempotent) 메소드이고 POST는 그렇지 않습니다. 그래서 우리는 GET 데이터를 가져오고 POST는 데이터를 수정합니다. – Levin

2
**multiple delete not working** 

function delete_selection() 
{ 
     $id_array = array(); 
     $selection = $this->input->post("selection", TRUE); 
     $id_array = explode("|", $selection); 

     foreach ($id_array as $item): 
      if ($item != ''): 
       //DELETE ROW 
       $this->db->where('entry_id', $item); 
       $this->db->delete('helpline_entry'); 
      endif; 
     endforeach; 
    } 
1

두 가지 방법으로 URL을 얻을 수 있습니다. 주먹 하나

<td><?php echo anchor('textarea/delete_row', 'DELETE', 'id="$row->id"'); ?></td> 
$id = $this->input->get('id'); 

2 일.

$id = $this->uri->segment(3); 

그러나 두 번째 방법에서는 번호를 계산해야합니다. 에있는 세그먼트의 세그먼트가 없습니다. 너의 이드가와. 2,3,4 등. 그러면 당신은 패스해야합니다.그 다음에();

0

내 컨트롤러

public function delete_category() //Created a controller class // 
    {  
     $this->load->model('Managecat'); //Load model Managecat here 
     $id=$this->input->get('id');  // get the requested in a variable 
     $sql_del=$this->Managecat->deleteRecord($id); //send the parameter $id in Managecat there I have created a function name deleteRecord 

     if($sql_del){ 

       $data['success'] = "Category Have been deleted Successfully!!"; //success message goes here 

     } 

    } 

내 모델

public function deleteRecord($id) { 

    $this->db->where('cat_id', $id); 
    $del=$this->db->delete('category'); 
    return $del; 

} 
관련 문제