如何删除Mysql数据库中的记录而无需使用Codeigniter重新加载页面(3)

时间:2016-03-13 21:56:02

标签: javascript php jquery mysql codeigniter

我正在尝试使用Codeigniter(3)的jquery从Mysql DB中的表中删除记录。它应该是一个非常简单的操作,但我是关于Codeigniter和jquery的新手,所以对于这个问题,我遇到了一些问题。

这是视图的一部分,我必须删除记录,特别是这是书籍(libri)部分:

<?php
echo "<table>";
echo "<tbody>";
echo "</br>";
foreach ($libri as $row):
    ?>
    <tr>
        <td>
            <div>
                </br>
                <img src="<?php echo base_url('Immagini/book.png'); ?>" />
                <a class="pdf" data-fancybox-type="iframe" rel="group" href="<?php
                    echo base_url($row['Url_suffix']) ?>"><?php echo $row['nome']; ?>
                </a>
                <a class='deleteUser' href="<?php
                    echo site_url('libro/elimina/'.$row['ID']) ?>">
                    <img src="<?php echo base_url('Immagini/button_close.png'); ?>"/>
                </a>
       </div>
        </td>
    </tr>
    <?php
endforeach;
echo "</tbody>";
echo "</table>";
?>
</div>
</br>
</br>
<div>
    <h3><span class="label label-success">Guide</span> </h3>

这是控制器(libro):

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Libro extends CI_Controller {
    public function __construct(){
        parent::__construct();
    }

    public function elimina($libri_id) {
        $result=$this->libri->did_delete_row($libri_id);
        redirect(site_url('admin/dashboard'), 'refresh');
        //var_dump($result);
    }
}
?>

这是jquery脚本:

<script type='text/javascript'>
    $(document).ready(function(){
        $(".deleteUser").click(function(e){
            $this  = $(this);
            e.preventDefault();
            var url = $(this).attr("href");
            $.get(url, function(r){
                if(r.success){
                    $this.closest("tr").remove();
                }
            })
        });
    });
</script>

这是libri.php模型:

<?php
/* 
 * File Name: libri.php
 */
if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Libri extends CI_Model
{
    function __construct()
    {
        //Call the Model constructor
        parent::__construct();
    }

    function get_all() {
        $query = $this->db->query('SELECT nome, ID, Url_suffix FROM libri');
        return $query->result_array();
    }


    function get_all_api() {
        $query = $this->db->query('SELECT * FROM libri');
        return $query->result_array();
    }

    function get_one($libro_id) {

        $this->db->where('ID',$libro_id);
        $this->db->from('libri');
        $query = $this->db->get();
        if ($query->num_rows() > 0){
            return $query->row();
        } 
        else return false;
    }


    //fetch all employee records
      function did_delete_row($id){ 
                $this->db->where('ID',$id);
                return $this->db->delete('libri');
                }
 function inserimento($data_2){ 
                return  $this->db->insert('libri',$data_2);
                }


}
?>

在没有jquery脚本的情况下,一切都运行良好,我的意思是页面自己重新加载,然后行就消失了。虽然使用jquery脚本,页面不会自行重新加载,但“行”仍然存在。如果我自动加载页面,那么该记录肯定会被删除。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

因为param $ libri_id为null

site_url('libro/elimina/'.$row['ID'])

public function elimina($libri_id) {
     $result=$this->libri->did_delete_row($libri_id);
     redirect(site_url('admin/dashboard'), 'refresh');
}

试试这个(使用分段)

public function elimina() {
     $libri_id = $this->uri->segment(3);
     $result=$this->libri->did_delete_row($libri_id);
     redirect(site_url('admin/dashboard'), 'refresh');
}

参考:https://ellislab.com/codeigniter/user-guide/libraries/uri.html