PHP Codeigniter 3 – Basic CRUD Operation with MySQL Database with example

Rate this post

PHP Codeigniter 3 – Basic CRUD Operation with MySQL Database with example

In this post we will give you information about PHP Codeigniter 3 – Basic CRUD Operation with MySQL Database with example. Hear we will give you detail about PHP Codeigniter 3 – Basic CRUD Operation with MySQL Database with exampleAnd how to use it also give you demo for it if it is necessary.

Codeigniter 3 – Basic CRUD Operation with MySQL Database with example

In this tutorial, I will tell you the basic CRUD operation with MySQL database with example in Codeigniter 3.

You will find the step by step process to build a simple application having crud functionality in Codeigniter 3 with MySQL Database.

CRUD operation is a common thing in the application of familiarity with basic create, read, update and delete functionality of the Database.

Step 1: Install Codeigniter 3

Codeigniter 3 is one of the most popular PHP Framework and you can easily install it in your system.

You can easily download it from here : Download Codeigniter 3

As we know, CodeIgniter is very lightweight framework so it will not take long time to download.

After download successfully, extract it in your working directory where you run your PHP script.

Step 2: Database Configuration

To perform crud operation, We will need to have a database with tables so first I will create a demo database and then create a products table within the database.

Run the following sql query to create a table :

CREATE TABLE 'products' (
 'id' int(11) NOT NULL AUTO_INCREMENT,
 'title' varchar(255) NOT NULL,
 'description' varchar(255) NOT NULL,
 'created_at' datetime NOT NULL,
 'updated_at' datetime NOT NULL,
 PRIMARY KEY ('id')
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

Now I have a products table on which i will perform the crud functionality.

Ok, let’s configure the database with codeigniter application so open the database.php file and put your database credentials (database name, username and password) there.

You will find the database.php file in following path application/config/database.php.

  1. $active_group='default';
  2. $query_builder= TRUE;
  3. $db['default']=array(
  4.     'dsn'    =>'',
  5.     'hostname'=>'localhost',
  6.     'username'=>'root',
  7.     'password'=>'xxxx',
  8.     'database'=>'demo',
  9.     'dbdriver'=>'mysqli',
  10.     'dbprefix'=>'',
  11.     'pconnect'=> FALSE,
  12.     'db_debug'=>(ENVIRONMENT !=='production'),
  13.     'cache_on'=> FALSE,
  14.     'cachedir'=>'',
  15.     'char_set'=>'utf8',
  16.     'dbcollat'=>'utf8_general_ci',
  17.     'swap_pre'=>'',
  18.     'encrypt'=> FALSE,
  19.     'compress'=> FALSE,
  20.     'stricton'=> FALSE,
  21.     'failover'=>array(),
  22.     'save_queries'=> TRUE
  23. );
$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost',
	'username' => 'root',
	'password' => 'xxxx',
	'database' => 'demo',
	'dbdriver' => 'mysqli',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

Step 3: Route

See also  Unlock the Power of WhatsApp Business API

In this step, I will add routes in application/congif/routes.php file to handle the request.

  1. $route['default_controller']='welcome';
  2. $route['404_override']='';
  3. $route['translate_uri_dashes']= FALSE;
  4. $route['products']="products/index";
  5. $route['productsCreate']['post']="products/store";
  6. $route['productsEdit/(:any)']="products/edit/$1";
  7. $route['productsUpdate/(:any)']['put']="products/update/$1";
  8. $route['productsDelete/(:any)']['delete']="products/delete/$1";
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;


$route['products'] = "products/index";
$route['productsCreate']['post'] = "products/store";
$route['productsEdit/(:any)'] = "products/edit/$1";
$route['productsUpdate/(:any)']['put'] = "products/update/$1";
$route['productsDelete/(:any)']['delete'] = "products/delete/$1";

In routes “products/index”, the first segment will be remapped to the controller class and second will be remapped with the method of that controller.

Step 4: Create Controller

In this step, I will create a controller to handle the method for product listing, create, edit, update and delete.

Now I will create a Products.php file in following path application/controllers/.

  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. class Products extends CI_Controller {
  4. /**
  5. * Get All Data from this method.
  6. *
  7. * @return Response
  8. */
  9. public function__construct(){
  10. //load database in autoload libraries
  11. parent::__construct();
  12. $this->load->model('ProductsModel');
  13. }
  14. public functionindex()
  15. {
  16. $products=new ProductsModel;
  17. $data['data']=$products->get_products();
  18. $this->load->view('includes/header');
  19. $this->load->view('products/list',$data);
  20. $this->load->view('includes/footer');
  21. }
  22. public functioncreate()
  23. {
  24. $this->load->view('includes/header');
  25. $this->load->view('products/create');
  26. $this->load->view('includes/footer');
  27. }
  28. /**
  29. * Store Data from this method.
  30. *
  31. * @return Response
  32. */
  33. public functionstore()
  34. {
  35. $products=new ProductsModel;
  36. $products->insert_product();
  37. redirect(base_url('products'));
  38. }
  39. /**
  40. * Edit Data from this method.
  41. *
  42. * @return Response
  43. */
  44. public functionedit($id)
  45. {
  46. $product=$this->db->get_where('products',array('id'=>$id))->row();
  47. $this->load->view('includes/header');
  48. $this->load->view('products/edit',array('product'=>$product));
  49. $this->load->view('includes/footer');
  50. }
  51. /**
  52. * Update Data from this method.
  53. *
  54. * @return Response
  55. */
  56. public functionupdate($id)
  57. {
  58. $products=new ProductsModel;
  59. $products->update_product($id);
  60. redirect(base_url('products'));
  61. }
  62. /**
  63. * Delete Data from this method.
  64. *
  65. * @return Response
  66. */
  67. public functiondelete($id)
  68. {
  69. $this->db->where('id',$id);
  70. $this->db->delete('products');
  71. redirect(base_url('products'));
  72. }
  73. }
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Products extends CI_Controller {

   /**
    * Get All Data from this method.
    *
    * @return Response
   */
   public function __construct() {
    //load database in autoload libraries 
      parent::__construct(); 
      $this->load->model('ProductsModel');         
   }
   public function index()
   {

       $products=new ProductsModel;
       $data['data']=$products->get_products();
       $this->load->view('includes/header');       
       $this->load->view('products/list',$data);
       $this->load->view('includes/footer');

   }

   public function create()
   {
      $this->load->view('includes/header');
      $this->load->view('products/create');
      $this->load->view('includes/footer');      
   }

   /**
    * Store Data from this method.
    *
    * @return Response
   */
   public function store()
   {
       $products=new ProductsModel;
       $products->insert_product();
       redirect(base_url('products'));
    }

   /**
    * Edit Data from this method.
    *
    * @return Response
   */
   public function edit($id)
   {
       $product = $this->db->get_where('products', array('id' => $id))->row();
       $this->load->view('includes/header');
       $this->load->view('products/edit',array('product'=>$product));
       $this->load->view('includes/footer');   
   }

   /**
    * Update Data from this method.
    *
    * @return Response
   */
   public function update($id)
   {
       $products=new ProductsModel;
       $products->update_product($id);
       redirect(base_url('products'));
   }

   /**
    * Delete Data from this method.
    *
    * @return Response
   */
   public function delete($id)
   {
       $this->db->where('id', $id);
       $this->db->delete('products');
       redirect(base_url('products'));
   }

}

Step 4: Create Model

See also  How to add a WhatsApp share button in a website using JavaScript?

In this step, I will create a model file to define some common functionality that will interact with the database table.

Create a ProductsModel.php file in following path application/models.

  1. <?php
  2. class ProductsModel extends CI_Model{
  3.     
  4. public functionget_products(){
  5. if(!empty($this->input->get("search"))){
  6. $this->db->like('title',$this->input->get("search"));
  7. $this->db->or_like('description',$this->input->get("search"));
  8. }
  9. $query=$this->db->get("products");
  10. return$query->result();
  11. }
  12. public functioninsert_product()
  13. {
  14. $data=array(
  15. 'title'=>$this->input->post('title'),
  16. 'description'=>$this->input->post('description')
  17. );
  18. return$this->db->insert('products',$data);
  19. }
  20. public functionupdate_product($id)
  21. {
  22.     $data=array(
  23.             'title'=>$this->input->post('title'),
  24.             'description'=>$this->input->post('description')
  25.     );
  26.     if($id==0){
  27.         return$this->db->insert('products',$data);
  28.     }else{
  29.         $this->db->where('id',$id);
  30.         return$this->db->update('products',$data);
  31.     }     
  32. }
  33. }
  34. ?>
<?php

class ProductsModel extends CI_Model{
	
    public function get_products(){

        if(!empty($this->input->get("search"))){
          $this->db->like('title', $this->input->get("search"));
          $this->db->or_like('description', $this->input->get("search")); 
        }
        $query = $this->db->get("products");
        return $query->result();
    }

    public function insert_product()
    {    
        $data = array(
            'title' => $this->input->post('title'),
            'description' => $this->input->post('description')
        );
        return $this->db->insert('products', $data);
    }

    public function update_product($id) 
    {
    	$data=array(
			'title' => $this->input->post('title'),
			'description'=> $this->input->post('description')
    	);
    	if($id==0){
    		return $this->db->insert('products',$data);
    	}else{
    		$this->db->where('id',$id);
    		return $this->db->update('products',$data);
    	}    	

    }
}

?>

Step 5: Create View File

In this step, I will create different view files that will be use in this crud application :

  • includes/header.php
  • includes/footer.php
  • products/list.php
  • products/create.php
  • products/edit.php

includes/header.php

  1. <!DOCTYPEhtml>
  2. <html>
  3. <head>
  4.     <title>Basic Crud operation in Codeigniter 3</title>
  5.     <linkrel="stylesheet"href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"/>
  6. </head>
  7. <body>
  8. <divclass="container">
<!DOCTYPE html>
<html>
<head>
	<title>Basic Crud operation in Codeigniter 3</title>
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
</head>
<body>
<div >

includes/footer.php

  1. </div>
  2. </body>
  3. </html>
</div>
</body>
</html>

products/list.php

  1. <divclass="row">
  2.     <divclass="col-lg-12">
  3. <h2>Products CRUD
  4. <divclass="pull-right">
  5. <aclass="btn btn-primary"href="<?php echo base_url('products/create') ?>"> Create New Product</a>
  6. </div>
  7. </h2>
  8. </div>
  9. </div>
  10. <divclass="table-responsive">
  11. <tableclass="table table-bordered">
  12. <thead>
  13.     <tr>
  14.         <th>Title</th>
  15.         <th>Description</th>
  16. <th>Action</th>
  17.     </tr>
  18. </thead>
  19. <tbody>
  20. <?php foreach ($data as $d) { ?>     
  21.     <tr>
  22.         <td><?php echo $d->title; ?></td>
  23.         <td><?php echo $d->description; ?></td>         
  24. <td>
  25. <formmethod="DELETE"action="<?php echo base_url('products/delete/'.$d->id);?>">
  26. <aclass="btn btn-info btn-xs"href="<?php echo base_url('products/edit/'.$d->id) ?>"><iclass="glyphicon glyphicon-pencil"></i></a>
  27. <buttontype="submit"class="btn btn-danger btn-xs"><iclass="glyphicon glyphicon-remove"></i></button>
  28. </form>
  29. </td>
  30.     </tr>
  31.     <?php } ?>
  32. </tbody>
  33. </table>
  34. </div>
<div >
	<div >           
        <h2>Products CRUD           
            <div >
               <a  href="<?php echo base_url('products/create') ?>"> Create New Product</a>
            </div>
        </h2>
     </div>
</div>
<div >
<table >
  <thead>
  	<tr>
  		<th>Title</th>
  		<th>Description</th>
      <th>Action</th>

  	</tr>
  </thead>
  <tbody>
   <?php foreach ($data as $d) { ?>  	
  	<tr>
  		<td><?php echo $d->title; ?></td>
  		<td><?php echo $d->description; ?></td>  		
      <td>
        <form method="DELETE" action="<?php echo base_url('products/delete/'.$d->id);?>">
         <a  href="<?php echo base_url('products/edit/'.$d->id) ?>"><i ></i></a>

          <button type="submit" ><i ></i></button>
        </form>


      </td>     

  	</tr>
  	<?php } ?>
  </tbody>
</table>
</div>

products/create.php

  1. <formmethod="post"action="<?php echo base_url('productsCreate');?>">
  2.     <divclass="row">
  3.         <divclass="col-md-8 col-md-offset-2">
  4.             <divclass="form-group">
  5.                 <labelclass="col-md-3">Title</label>
  6.                 <divclass="col-md-9">
  7.                     <inputtype="text"name="title"class="form-control">
  8.                 </div>
  9.             </div>
  10.         </div>
  11.         <divclass="col-md-8 col-md-offset-2">
  12.             <divclass="form-group">
  13.                 <labelclass="col-md-3">Description</label>
  14.                 <divclass="col-md-9">
  15.                     <textareaname="description"class="form-control"></textarea>
  16.                 </div>
  17.             </div>
  18.         </div>
  19.         <divclass="col-md-8 col-md-offset-2 pull-right">
  20.             <inputtype="submit"name="Save"class="btn">
  21.         </div>
  22.     </div>
  23.     
  24. </form>
<form method="post" action="<?php echo base_url('productsCreate');?>">
	<div >
		<div >
			<div >
				<label >Title</label>
				<div >
					<input type="text" name="title" >
				</div>
			</div>
		</div>
		<div >
			<div >
				<label >Description</label>
				<div >
					<textarea name="description" ></textarea>
				</div>
			</div>
		</div>
		<div >
			<input type="submit" name="Save" >
		</div>
	</div>
	
</form>

products/edit.php

  1. <formmethod="post"action="<?php echo base_url('products/update/'.$product->id);?>">
  2.     <divclass="row">
  3.         <divclass="col-md-8 col-md-offset-2">
  4.             <divclass="form-group">
  5.                 <labelclass="col-md-3">Title</label>
  6.                 <divclass="col-md-9">
  7.                     <inputtype="text"name="title"class="form-control"value="<?php echo $product->title; ?>">
  8.                 </div>
  9.             </div>
  10.         </div>
  11.         <divclass="col-md-8 col-md-offset-2">
  12.             <divclass="form-group">
  13.                 <labelclass="col-md-3">Description</label>
  14.                 <divclass="col-md-9">
  15.                     <textareaname="description"class="form-control"><?php echo $product->description; ?></textarea>
  16.                 </div>
  17.             </div>
  18.         </div>
  19.         <divclass="col-md-8 col-md-offset-2 pull-right">
  20.             <inputtype="submit"name="Save"class="btn">
  21.         </div>
  22.     </div>
  23.     
  24. </form>
<form method="post" action="<?php echo base_url('products/update/'.$product->id);?>">

	<div >
		<div >
			<div >
				<label >Title</label>
				<div >
					<input type="text" name="title"  value="<?php echo $product->title; ?>">
				</div>
			</div>
		</div>
		<div >
			<div >
				<label >Description</label>
				<div >
					<textarea name="description" ><?php echo $product->description; ?></textarea>
				</div>
			</div>
		</div>
		<div >
			<input type="submit" name="Save" >
		</div>
	</div>
	
</form>

If you will get the error of undefined function base_url() then follow the URL :
Call to undefined function base_url() in Codeigniter

See also  [Solved]Fatal error: Call to undefined function base_url() in Codeigniter

Click here to know how to implement CRUD Operation in Laravel PHP Framework :

Laravel CRUD Example

Try this code and feel free to give your suggestion.

Hope this code and post will helped you for implement PHP Codeigniter 3 – Basic CRUD Operation with MySQL Database with example. if you need any help or any feedback give it in comment section or you have good idea about this post you can give it comment section. Your comment will help us for help you more and improve us. we will give you this type of more interesting post in featured also so,

Hi, I’m Jaydip Gondaliya. I help build websites, grow businesses, big and small. If that is what you want, contact me. I’m currently available for freelance work. info@yttags.com

Leave a Comment