Как удалить строку из таблицы в CodeIgniter? - PullRequest
0 голосов
/ 29 июня 2018

Я новичок в CodeIgniter. Я использую CodeIgniter для своего проекта. Я закончил вставлять данные в базу данных и извлекать данные из базы данных, и теперь я пытаюсь удалить строку из таблицы в базе данных, но я не могу это сделать.

Я пробовал много других способов сделать это, но все еще не повезло. Мой код указан ниже.

Контроллер:

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

class School extends CI_Controller 
{
function __construct()
     {
      parent::__construct();
      $this->load->database();
      $this->load->helper(array('url','language'));
      $this->load->model('Main_model');
     }
     public function index()
        {
            if($this->input->post('submit'))
            {
                $data=array(
                'name'=> $this->input->post('name'),
                'email'=> $this->input->post('email'),
                'phone'=> $this->input->post('phone'));
                $insert=$this->Main_model->std($data);
            }
            $this->data["fetch_user"]=$this->Main_model->fetch_user();
            $this->load->view('form',$this->data);
        }
    public function delete_data()
    {
        $id=$this->uri->segment(3);
        $this->Main_model->delete_data($id);
        redirect(base_url()."deleted");
    }
    public function deleted()
    {
        $this->index();
    }
}
?>

Модель:

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

class Main_model extends CI_Model
{
public function std($data)
{
    $insert=$this->db->insert('user',$data);
    return $this->db->insert_id();
}
function fetch_user()
{
    $this->db->select('*');
    $this->db->from('user');
    $query=$this->db->get();
    return $query->result();
}
function delete_data($id)
{
    $this->db->where("id",$id);
    $this->db->delete("user");
}
}
?>

вид:

<!DOCTYPE html>
<html>
<head>
<title>Form</title>
<style>
    input[type=text],input[type=number],input[type=email]
    {

        height:30px;
        width:250px;
        outline:none;
    }
    input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button
    { 
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        margin: 0; 
    }
    td,th,h3
    {
            font-size:18px;
            font-family:arial;
    }
    input[type="submit"]
    {
        padding:10px 20px;
        border:none;
        border-top-left-radius: 25px;
        border-bottom-right-radius: 25px;
        background:#7e57c2;
        color:#ffffff;
        outline:none;
    }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
</head>
<body>
<h3>School Student data</h3>
<form method="post">
<table cellspacing="5" cellpadding="5">
    <tr>
        <td>Name</td>
        <td><input type="text" name="name" required></td>
    </tr>
    <tr>
        <td>Phone No.</td>
        <td><input type="number" name="phone" required></td>
    </tr>
    <tr>
        <td>E-Mail</td>
        <td><input type="email" name="email" required></td>
    </tr>
    <tr>
        <td><input type="submit" name="submit" value="Insert"></td>
    </tr>
</table>

</form>

<br><br>
<table border="1" cellspacing="5" cellpadding="5" >
<tr>
    <th style="padding:10px 20px;">ID</th>
    <th style="padding:10px 20px;">Name</th>
    <th style="padding:10px 20px;">Email</th>
    <th style="padding:10px 20px;">Phone No.</th>
    <th style="padding:10px 20px;">Action</th>
</tr>
<?php
    if($fetch_user !=null)
    {
        foreach($fetch_user as $row)
        {
?>
            <tr>
                <td><?php echo $row->id;?></td>
                <td><?php echo $row->name;?></td>
                <td><?php echo $row->email;?></td>
                <td><?php echo $row->phone;?></td>
                <td><a href="#" class="delete_data" id="<?php echo $row->id;?>">Delete</a></td>
            </tr>
<?php
        }
    }
    else
    {
?>
            <tr>
                <td colspan="4">sorry no data found</td>
            </tr>
<?php
    }
?>
</table>
<script>
$(document).ready(function(){
$('.delete_data').click(function(){
var id=$(this).attr("id");
if(confirm("are you sure you want to delete this?"))
{
    window.location="<?php echo base_url(); ?>delete_data/"+id;
}
else
{
    return false;
}
});
});

</script>


</body>
</html>

1 Ответ

0 голосов
/ 29 июня 2018

Вместо использования jQuery для этого вы могли бы напрямую установить ссылку на тег привязки:

<td><a href="<?php echo base_url('delete_data').'$row->id'; ?>"  id="<?php echo $row->id;?>">Delete</a></td>

Это напрямую отправит вас в функцию delete_data контроллера. (вместо использования классов и событий кликов в jquery)

Плюс верните себя от модели к контроллеру в случае успеха.

function delete_data($id)
{
    $this->db->where("id",$id);
    $this->db->delete("user");
    return;//onsuccess
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...