2017-03-29 55 views
0

我是codeigniter的新手。刪除我的表記錄後,我想重定向到相同的控制器索引method.Record成功刪除,但警報消息反覆顯示。相反,重定向()方法我使用javascript確認方法刪除它將一次又一次地顯示警報框。如果我嘗試重定向()方法它不顯示確認警告框。如果我嘗試確切的base_url()方法重定向它將移動到URL:http://localhost/codeigniter/category/remove_category/25和頁面是空的。我嘗試了很多方法。我不知道爲什麼確認警告框反覆顯示。請建議我。提前致謝。使用codeigniter確認並刪除記錄。在JavaScript中有問題確認刪除記錄並重定向到相同的控制器/索引方法

查看代碼

<table border="1"> 
<tbody> 
    <tr> 
     <td>Category Id</td> 
     <td>Category Name</td> 
     <td>Click Edit Link</td> 
     <td>Click Delete Link</td> 
    </tr> 
    <?php 

    foreach ($category->result() as $row) 
    { 
     ?><tr> 
      <td><?php echo $row->category_id;?></td> 
      <td><?php echo $row->category_name;?></td> 
      <td><a href="<?=base_url()?>category/edit_category/<?=$row->category_id?>">Edit</a></td> 
      <td><a href="<?=base_url()?>category/remove_category/<?=$row->category_id?>">Delete</a></td> 
     </tr> 
     <?php 
    } 
    ?> 
</tbody> 
</table> 

控制器代碼

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Category extends CI_Controller { 

function __construct() { 
    parent::__construct(); 
    $this->load->model('category_model'); 

} 

function index(){ 

    $data['category']=$this->category_model->show_category(); 
    //return the data in view 
    $this->load->view('categories_view', $data); 

} 

function remove_category($category_id){ 

    if($this->category_model->delete_category($category_id)) 
    { 
    /*echo "<script type='text/javascript'> confirm('Are you sure to delete permanently?'); 
    window.location.href='index'";*/ 
    //redirect(base_url().'category'); 

    echo "<script> 
        confirm('Are you sure to delete permanently?!'); 
        window.location.href = '" . base_url() . "category'; 
       </script>"; 
    }  
} 

} 

型號代碼

class Category_model extends CI_Model { 

function show_category(){ 

    $query = $this->db->get('tbl_category'); 
    return $query; 

} 

function insert_category($data){ 

    $this->db->insert('tbl_category', $data); 
    return $this->db->insert_id(); 
} 

function delete_category($category_id){ 
    $this->db->where('category_id', $category_id); 
    $this->db->delete('tbl_category'); 
} 

}

回答

1

正確的做法是重定向();事情是這樣的:

$this->session->set_flashdata('message', 'Category was deleted'); 
    redirect('category', 'refresh'); 

然後在類別控制器:

if ($this->session->flashdata('message')) { 
     //show the message to confirm 
    } 

最後,如果你想JavaScript的confirm:所以當用戶點擊,它要求確認後再去刪除,如果用戶點擊好的。當行已被刪除時,您要求確認。

<td><a onclick="return confirm('are you sure?')" href="<?=base_url()?>category/remove_category/<?=$row->category_id?>">Delete</a></td> 
+0

非常感謝我的親愛的朋友Callombert。我按你所說的完成了。它的工作現在很好。刪除記錄後,我設置flashdata並重定向到類別控制器。我將消息存儲到數據數組中,並將其加載到類似的視圖中,如$ data ['message'] = $ this-> session-> flashdata('message');'這是一種合適的方式嗎?我是否知道爲什麼在我以前的代碼中反覆顯示警告框? – Hariharan

+0

@Hariharan是的,這是正確的方法。不知道爲什麼你的警報箱不斷彈出。 如果問題得到解決,請不要忘記接受答案;) – Callombert