user13831148
user13831148

Reputation:

unable to delete data from database in codeigniter

I have a project on codeigniter. I want to delete the data from database. if user clicks a delete button it should be deleted.

my problem I think all code is working ..but I think id is not getting in my controller there is no error, but data is also not deleting from database

offerfetch.php(view)

<td><a type="button" class="btn btn-danger" href="<?= base_url('admin/delarticles'); ?>/<?php echo $emp->offer_id; ?>">Delete</a></td>

<td><a type="button"  class="btn btn-info" href="<?= base_url('admin/editoffer'); ?>/<?php echo $emp->offer_id; ?>">update</a></td>

admin.php(controller)


  public function delarticles()
  {
    $id=$this->input->get('offer_id');
     $this->load->model('adminloginmodel');
       if($this->adminloginmodel->del($id))
       {
           $this->session->set_flashdata('insertsuccess','Delete Successfully');
           $this->session->set_flashdata('msg_class','alert-success');
       }
       else
       {
          $this->session->set_flashdata('insertsuccess','Please try again..not delete');
          $this->session->set_flashdata('msg_class','alert-danger');
       }
       return redirect('admin/viewoffers');
 
  }

in order to debug I have used

print_r($id);
exit();

after the line $id=$this->input->get('offer_id'); in a controller but I'm not getting any id, blank page is coming up.

adminloginmodel.php(model)


    public function del($id)
  {
      
    return $this->db->delete('offers',['offer_id'=>$id]);

  }

Upvotes: 1

Views: 239

Answers (2)

Vickel
Vickel

Reputation: 7997

You are sending the id through the url of your anchor element:

<a type="button" class="btn btn-danger" href="<?= base_url('admin/delarticles'); ?>/<?php echo $emp->offer_id; ?>">Delete</a>

which should generate something like:

href="your_app/admin/delarticles/1"

you are trying to read the id as it was coming from an input field from a form, that's not the case here, you can access it directly in your function from url like

public function delarticles($id=0){
    if ($id){
        $this->load->model('adminloginmodel');
        if($this->adminloginmodel->del($id))
        {
           $this->session->set_flashdata('insertsuccess','Delete Successfully');
           $this->session->set_flashdata('msg_class','alert-success');
        }
        else
        {
          $this->session->set_flashdata('insertsuccess','Please try again..not delete');
          $this->session->set_flashdata('msg_class','alert-danger');
        }
        return redirect('admin/viewoffers');
    }else{
       // your code in case there is no value for $id, aka $id=0
    }
}

Resuming:

  1. if you use a form and a submit button within this form, you create a $_POST array from your form's input fields (e.g. <input type="text" name="offer_id"> , which you can read in the controller with $id=$this->input->get('offer_id');

  2. use an anchor element and send the parameter in the Url

Upvotes: 1

Pablo Hildo
Pablo Hildo

Reputation: 143

You're thinking about two different ways of passing data do controllers. If you want to pass the ID as part of the URL, you should do it like in the docs. In this case, you'd solve it adding an argument to the controller method.

As seen:

admin.php

  public function delarticles($id)
  {
     $this->load->model('adminloginmodel');
       if($this->adminloginmodel->del($id))
   ...

Upvotes: 0

Related Questions