1

I saw an example in native PHP which allows inline editing or records and also updates them. PHP Inline Editing Now as per this code i have a ajax function which calls the update file whenever the content is updated below is the script :

    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    <script>
    function showEdit(editableObj) {
        $(editableObj).css("background","#FFF");
    } 

    function saveToDatabase(editableObj,column,id) {
        $(editableObj).css("background","#FFF url(<?php echo site_url('img/loaderIcon.gif');?>loaderIcon.gif) no-repeat right");
        $.ajax({
            url: "<?php echo(site_url('Inlinedit/updateDb'));?>",
            type: "POST",
            data:'column='+column+'&editval='+editableObj.innerHTML+'&id='+id,
            success: function(data){
                $(editableObj).css("background","#FDFDFD");
            }        
       });
    }
    </script>

THe Model :

public function inline( $column, $editval, $id )
        {
            $result = mysql_query("UPDATE users set $column = $editval WHERE  id=$id");
        }

the Controller:

<?php

class Inlinedit extends Admin_Controller {

 public function __construct()
 {
    parent::__construct(); 
 }


      public function updateDb()
      {
             $column = $this->input->post('column');
             $editval = $this->input->post('editval');
             $id = $this->input->post('id');

             $this->load->model('user_m');                     
             $this->user_m->inline( $column, $editval, $id );

             return;
      }

}

2 Answers 2

2

First of all you should understand you cant call model function bypassing controller. for that what you have to do is

  1. Create a new method in controller.(One time use)
  2. Inside that method just use method calling your model.

ex
In controller

public function just_a_method()
{
    $this->Model_name->inline();/just call method
}

and in view

$.ajax({
    url: "<?php echo base_url()?>controller/just_a_method",
Sign up to request clarification or add additional context in comments.

8 Comments

So for ajax i must write <?php echo base_url('inlinedit/updateDb');?>
so your controller name is inlinedit and create new function for ajax call
new function for ajax call ? i have a function in my header file function saveToDatabase as shown in question code
if you have exist one you can use it.but follow my way
Thanks Man For Your Efforts and Time :)
|
1

You cannot update the models directly. Create a controller for updating code.

<?php
   class InlineEditController extends BaseController
   {
          public function updateDb()
          {
                 $column = $this->input->post('column');
                 $editval = $this->input->post('editval');
                 $id = $this->input->post('id');

                 $this->load->model('user_m');                     
                 $this->user_m->inline( $column, $editval, $id );

                 return;
          }
   }

and in the ajax use <?php echo(site_url('InlineEdit/updateDb'));?>

Model must be

public function inline( $column, $editval, $id )
{
    $result = mysql_query("UPDATE users set $column = $editval WHERE  id=$id");
}

6 Comments

Hey your code is logical but some how my ajax code is not working i mean the data is not getting updated i am updating the question code please check
did you checked if database is returning any error? I think there may not be an issue related to code now.
should i be placing the ajax function in header file? or maybe the ajax is not being loaded :(
better you should add to in $(document).ready(function(){ *your functions* });
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.