M5533
M5533

Reputation: 117

update status value in backend while click on button in codeigniter

In view_candidates form in my application, I have a button with text REQUEST CONTACT INFO. When I click on the button, the text will be changed automatically to FINISH.

Now what happens: When I refresh the page the button text automatically changes to REQUEST CONTACT INFO.

To overcome this, I gave a status column in my database.

What I want:

Once user click on the button, the status should change from 0 to 1.

With status, I want to display my button text like: if status=0 button should be REQUEST CONTACT INFO, else it should be FINISH.

Button code:

<td>
    <button type="button" id="button" class="btn btn-info" onclick="getConfirmation(id);">
        <b>REQUEST CONTACT INFO</b>
    </button>
</td>

SCRIPT:

<script>
     function  getConfirmation(id)
     {

        var retVal = confirm("your request is confiremed ?");
        if(retVal)
                        {

                          $('#button').text('Finish');

        $.ajax({
                url: "Candidate/user_view_candidates/change_status",
                type: "post",
                data: id,
                success: function (response) 
                {
                 //location.reload();              
                 alert('success');
                }

            });
        }
    }

    </script>

Controller code:

    public function  change_status()

 { 

     $id = $this->input->post('candidate_id');
     $status = $this->db->query("select status from candidates_details          where id = candidate_id")->row()->status;
    if($status==0)
    {
        $status = 1;
    } 
    else 
    {
        $status = 0;
    }

    $data=array('status'=>$status);
    $this->db->where('candidate_id',$id);
    $this->db->update('candidates_details',$data);
}

Can someone help me?
Thanks in advance.

Upvotes: 2

Views: 18017

Answers (3)

Thanaruby Nanthagopal
Thanaruby Nanthagopal

Reputation: 614

Check this:

View

<input type="hidden" name="candidate_id" value="<?php echo $candidate_id; ?>"/>//your candidate_id
<button type="button" id="button" class="btn btn-info" >
    <b><?php $status == 0? 'REQUEST CONTACT INFO':'FINISHED';?></b>//your status value
</button>

<script src="<?php echo base_url(); ?>assets/plugins/jquery.min.js"></script>

js

$('#button').click(function() {
    var candidate_id = $('input[name="candidate_id"]').val();
    var url = 'your_cntroller_name/change_status/';
    $.ajax({
        url: your_base_url + url,
        type: 'POST',
        data: {'$candidate_id': $candidate_id},
        dataType: 'JSON',
        success: function(data) {    
             $('#button').text('FINISHED');
        }
    });
});

Controller

public function change_status() {
    $candidate_id = $this->input->post('candidate_id');
    $this->your_model->update_status($candidate_id);

    echo true;
    exit;
}

Model

public function update_status($candidate_id) {

    //your query toupdate status

}

Upvotes: 1

Waqas Hafeez
Waqas Hafeez

Reputation: 160

complete step by step solution is step -1 in your view

<td><button type="button" id="button" class="btn btn-info" onclick="getConfirmation(row id);"><b>REQUEST CONTACT INFO</b></button></td>

getConfirmation(id){
$.ajax({
        url: "url_to_your_controller/change_status",
        type: "post",
        data: id,
        success: function (response) {
         location.reload();              

        }
    });
}

step -2 in your controller

change_status(){
$id = $this->input->post('id');
$status = $this->db->query("Your query")->row()->status;
if($status==1){
    $status = 0;
} else {
    $status = 1;
}
$data=array('status'=>$status);
$this->db->where('id','id');
$this->db->update('table_name',$data);
}

Upvotes: 1

Waqas Hafeez
Waqas Hafeez

Reputation: 160

from your question I understand that you are displaying your record in a grid/ table and for each record in a row you have a button when you click on button it change the status of the record.

so the solution is simple onclick change the status using ajax call and in DB add a field status against each record which will be 0 by default and after onclick it'll be updated to 1

on page load you've to implement in your view a check

e.g

 <?if(status==0){?>
<td><button type="button"><b>Working</b></button></td>
<? } else { ?>
<td><button type="button"><b>Finished</b></button></td>
<? } ?>

Upvotes: -1

Related Questions