【问题标题】:How to delete a record in a Mysql DB without reload page with Codeigniter(3)如何使用 Codeigniter(3) 在不重新加载页面的情况下删除 Mysql DB 中的记录
【发布时间】:2016-03-13 21:56:02
【问题描述】:

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

这是视图的一部分,我必须删除记录,特别是这是 books(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 脚本,页面不会自行重新加载,但“行”仍然存在。如果我重新加载页面,那么记录肯定会被删除。

我做错了什么?

【问题讨论】:

  • 在浏览器中打开您的 javascript 控制台并检查是否有任何错误。
  • @Matt 我没有错误。
  • 模型类在哪里?
  • @Borgboy 我用模型类 (libri) 编辑问题。
  • 谢谢,在你的构造函数中,一定要在调用 parent::__construct(); 之后加载数据库; $this->load->database();

标签: javascript php jquery mysql codeigniter


【解决方案1】:

因为参数 $libri_id 为空

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

【讨论】:

  • 不幸的是,我还是一样的情况,只有在你更新页面后才会删除该行
  • 如果在重新加载页面后记录消失了,$libri_id 怎么可能是 null?不代表参数对吗?
  • @WRDev ellislab 是旧的用户指南位置新旧文档的新位置现在在这里codeigniter.com/docs
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多