Create, Read, Update and Delete in Codeigniter

Views: 4004

Codeigniter follows MVC pattern

So, Here we will create separate pages for Model, View & Controller
for Model, the page name will be Model_modulename.php Ex: Model_banner.php

Respectively for Controller, page name will be Modulename.php Ex: Banner.php

For views we will create multiple pages separately for Add, Edit and View .
The names will be view_banner_add.php, view_banner_edit.php & view_banner_view.php

Autoload.php

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

/*
| -------------------------------------------------------------------
| AUTO-LOADER
| -------------------------------------------------------------------
| This file specifies which systems should be loaded by default.
|
| In order to keep the framework as light-weight as possible only the
| absolute minimal resources are loaded by default. For example,
| the database is not connected to automatically since no assumption
| is made regarding whether you intend to use it.  This file lets
| you globally define which systems you would like loaded with every
| request.
|
| -------------------------------------------------------------------
| Instructions
| -------------------------------------------------------------------
|
| These are the things you can load automatically:
|
| 1. Packages
| 2. Libraries
| 3. Drivers
| 4. Helper files
| 5. Custom config files
| 6. Language files
| 7. Models
|
*/

/*
| -------------------------------------------------------------------
|  Auto-load Packages
| -------------------------------------------------------------------
| Prototype:
|
|  $autoload['packages'] = array(APPPATH.'third_party', '/usr/local/shared');
|
*/
$autoload['packages'] = array();

/*
| -------------------------------------------------------------------
|  Auto-load Libraries
| -------------------------------------------------------------------
| These are the classes located in system/libraries/ or your
| application/libraries/ directory, with the addition of the
| 'database' library, which is somewhat of a special case.
|
| Prototype:
|
|	$autoload['libraries'] = array('database', 'email', 'session');
|
| You can also supply an alternative library name to be assigned
| in the controller:
|
|	$autoload['libraries'] = array('user_agent' => 'ua');
*/
//$autoload['libraries'] = array();
$autoload['libraries'] = array('database', 'session', 'form_validation', 'pagination', 'user_agent');

/*
| -------------------------------------------------------------------
|  Auto-load Drivers
| -------------------------------------------------------------------
| These classes are located in system/libraries/ or in your
| application/libraries/ directory, but are also placed inside their
| own subdirectory and they extend the CI_Driver_Library class. They
| offer multiple interchangeable driver options.
|
| Prototype:
|
|	$autoload['drivers'] = array('cache');
|
| You can also supply an alternative property name to be assigned in
| the controller:
|
|	$autoload['drivers'] = array('cache' => 'cch');
|
*/
$autoload['drivers'] = array();

/*
| -------------------------------------------------------------------
|  Auto-load Helper Files
| -------------------------------------------------------------------
| Prototype:
|
|	$autoload['helper'] = array('url', 'file');
*/
//$autoload['helper'] = array();


$autoload['helper'] = array('url','file','form','html','active_class');

/*
| -------------------------------------------------------------------
|  Auto-load Config files
| -------------------------------------------------------------------
| Prototype:
|
|	$autoload['config'] = array('config1', 'config2');
|
| NOTE: This item is intended for use ONLY if you have created custom
| config files.  Otherwise, leave it blank.
|
*/
$autoload['config'] = array();

/*
| -------------------------------------------------------------------
|  Auto-load Language files
| -------------------------------------------------------------------
| Prototype:
|
|	$autoload['language'] = array('lang1', 'lang2');
|
| NOTE: Do not include the "_lang" part of your file.  For example
| "codeigniter_lang.php" would be referenced as array('codeigniter');
|
*/
$autoload['language'] = array();

/*
| -------------------------------------------------------------------
|  Auto-load Models
| -------------------------------------------------------------------
| Prototype:
|
|	$autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|
|	$autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array();

Config.php

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

/*
|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
|	http://example.com/
|
| WARNING: You MUST set this value!
|
| If it is not set, then CodeIgniter will try guess the protocol and path
| your installation, but due to security concerns the hostname will be set
| to $_SERVER['SERVER_ADDR'] if available, or localhost otherwise.
| The auto-detection mechanism exists only for convenience during
| development and MUST NOT be used in production!
|
| If you need to allow multiple domains, remember that this file is still
| a PHP script and you can easily do that on your own.
|
*/

date_default_timezone_set('Asia/Kolkata');
$config['base_url'] = '';

/*
|--------------------------------------------------------------------------
| Index File
|--------------------------------------------------------------------------
|
| Typically this will be your index.php file, unless you've renamed it to
| something else. If you are using mod_rewrite to remove the page set this
| variable so that it is blank.
|
*/
$config['index_page'] = 'index.php';

/*
|--------------------------------------------------------------------------
| URI PROTOCOL
|--------------------------------------------------------------------------
|
| This item determines which server global should be used to retrieve the
| URI string.  The default setting of 'REQUEST_URI' works for most servers.
| If your links do not seem to work, try one of the other delicious flavors:
|
| 'REQUEST_URI'    Uses $_SERVER['REQUEST_URI']
| 'QUERY_STRING'   Uses $_SERVER['QUERY_STRING']
| 'PATH_INFO'      Uses $_SERVER['PATH_INFO']
|
| WARNING: If you set this to 'PATH_INFO', URIs will always be URL-decoded!
*/
$config['uri_protocol']	= 'REQUEST_URI';

/*
|--------------------------------------------------------------------------
| URL suffix
|--------------------------------------------------------------------------
|
| This option allows you to add a suffix to all URLs generated by CodeIgniter.
| For more information please see the user guide:
|
| https://codeigniter.com/user_guide/general/urls.html
*/
$config['url_suffix'] = '';

/*
|--------------------------------------------------------------------------
| Default Language
|--------------------------------------------------------------------------
|
| This determines which set of language files should be used. Make sure
| there is an available translation if you intend to use something other
| than english.
|
*/
$config['language']	= 'english';

/*
|--------------------------------------------------------------------------
| Default Character Set
|--------------------------------------------------------------------------
|
| This determines which character set is used by default in various methods
| that require a character set to be provided.
|
| See http://php.net/htmlspecialchars for a list of supported charsets.
|
*/
$config['charset'] = 'UTF-8';

/*
|--------------------------------------------------------------------------
| Enable/Disable System Hooks
|--------------------------------------------------------------------------
|
| If you would like to use the 'hooks' feature you must enable it by
| setting this variable to TRUE (boolean).  See the user guide for details.
|
*/
$config['enable_hooks'] = FALSE;

/*
|--------------------------------------------------------------------------
| Class Extension Prefix
|--------------------------------------------------------------------------
|
| This item allows you to set the filename/classname prefix when extending
| native libraries.  For more information please see the user guide:
|
| https://codeigniter.com/user_guide/general/core_classes.html
| https://codeigniter.com/user_guide/general/creating_libraries.html
|
*/
$config['subclass_prefix'] = 'MY_';

/*
|--------------------------------------------------------------------------
| Composer auto-loading
|--------------------------------------------------------------------------
|
| Enabling this setting will tell CodeIgniter to look for a Composer
| package auto-loader script in application/vendor/autoload.php.
|
|	$config['composer_autoload'] = TRUE;
|
| Or if you have your vendor/ directory located somewhere else, you
| can opt to set a specific path as well:
|
|	$config['composer_autoload'] = '/path/to/vendor/autoload.php';
|
| For more information about Composer, please visit http://getcomposer.org/
|
| Note: This will NOT disable or override the CodeIgniter-specific
|	autoloading (application/config/autoload.php)
*/
$config['composer_autoload'] = FALSE;

/*
|--------------------------------------------------------------------------
| Allowed URL Characters
|--------------------------------------------------------------------------
|
| This lets you specify which characters are permitted within your URLs.
| When someone tries to submit a URL with disallowed characters they will
| get a warning message.
|
| As a security measure you are STRONGLY encouraged to restrict URLs to
| as few characters as possible.  By default only these are allowed: a-z 0-9~%.:_-
|
| Leave blank to allow all characters -- but only if you are insane.
|
| The configured value is actually a regular expression character group
| and it will be executed as: ! preg_match('/^[<permitted_uri_chars>]+$/i
|
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
|
*/
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

/*
|--------------------------------------------------------------------------
| Enable Query Strings
|--------------------------------------------------------------------------
|
| By default CodeIgniter uses search-engine friendly segment based URLs:
| example.com/who/what/where/
|
| You can optionally enable standard query string based URLs:
| example.com?who=me&what=something&where=here
|
| Options are: TRUE or FALSE (boolean)
|
| The other items let you set the query string 'words' that will
| invoke your controllers and its functions:
| example.com/index.php?c=controller&m=function
|
| Please note that some of the helpers won't work as expected when
| this feature is enabled, since CodeIgniter is designed primarily to
| use segment based URLs.
|
*/
$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
$config['directory_trigger'] = 'd';

/*
|--------------------------------------------------------------------------
| Allow $_GET array
|--------------------------------------------------------------------------
|
| By default CodeIgniter enables access to the $_GET array.  If for some
| reason you would like to disable it, set 'allow_get_array' to FALSE.
|
| WARNING: This feature is DEPRECATED and currently available only
|          for backwards compatibility purposes!
|
*/
$config['allow_get_array'] = TRUE;

/*
|--------------------------------------------------------------------------
| Error Logging Threshold
|--------------------------------------------------------------------------
|
| You can enable error logging by setting a threshold over zero. The
| threshold determines what gets logged. Threshold options are:
|
|	0 = Disables logging, Error logging TURNED OFF
|	1 = Error Messages (including PHP errors)
|	2 = Debug Messages
|	3 = Informational Messages
|	4 = All Messages
|
| You can also pass an array with threshold levels to show individual error types
|
| 	array(2) = Debug Messages, without Error Messages
|
| For a live site you'll usually only enable Errors (1) to be logged otherwise
| your log files will fill up very fast.
|
*/
$config['log_threshold'] = 0;

/*
|--------------------------------------------------------------------------
| Error Logging Directory Path
|--------------------------------------------------------------------------
|
| Leave this BLANK unless you would like to set something other than the default
| application/logs/ directory. Use a full server path with trailing slash.
|
*/
$config['log_path'] = '';

/*
|--------------------------------------------------------------------------
| Log File Extension
|--------------------------------------------------------------------------
|
| The default filename extension for log files. The default 'php' allows for
| protecting the log files via basic scripting, when they are to be stored
| under a publicly accessible directory.
|
| Note: Leaving it blank will default to 'php'.
|
*/
$config['log_file_extension'] = '';

/*
|--------------------------------------------------------------------------
| Log File Permissions
|--------------------------------------------------------------------------
|
| The file system permissions to be applied on newly created log files.
|
| IMPORTANT: This MUST be an integer (no quotes) and you MUST use octal
|            integer notation (i.e. 0700, 0644, etc.)
*/
$config['log_file_permissions'] = 0644;

/*
|--------------------------------------------------------------------------
| Date Format for Logs
|--------------------------------------------------------------------------
|
| Each item that is logged has an associated date. You can use PHP date
| codes to set your own date formatting
|
*/
$config['log_date_format'] = 'Y-m-d H:i:s';

/*
|--------------------------------------------------------------------------
| Error Views Directory Path
|--------------------------------------------------------------------------
|
| Leave this BLANK unless you would like to set something other than the default
| application/views/errors/ directory.  Use a full server path with trailing slash.
|
*/
$config['error_views_path'] = '';

/*
|--------------------------------------------------------------------------
| Cache Directory Path
|--------------------------------------------------------------------------
|
| Leave this BLANK unless you would like to set something other than the default
| application/cache/ directory.  Use a full server path with trailing slash.
|
*/
$config['cache_path'] = '';

/*
|--------------------------------------------------------------------------
| Cache Include Query String
|--------------------------------------------------------------------------
|
| Whether to take the URL query string into consideration when generating
| output cache files. Valid options are:
|
|	FALSE      = Disabled
|	TRUE       = Enabled, take all query parameters into account.
|	             Please be aware that this may result in numerous cache
|	             files generated for the same page over and over again.
|	array('q') = Enabled, but only take into account the specified list
|	             of query parameters.
|
*/
$config['cache_query_string'] = FALSE;

/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| If you use the Encryption class, you must set an encryption key.
| See the user guide for more info.
|
| https://codeigniter.com/user_guide/libraries/encryption.html
|
*/
$config['encryption_key'] = 'aQH76B8hIMuUUVY7ggu1Eo3Rg2KCiqeb';

/*
|--------------------------------------------------------------------------
| Session Variables
|--------------------------------------------------------------------------
|
| 'sess_driver'
|
|	The storage driver to use: files, database, redis, memcached
|
| 'sess_cookie_name'
|
|	The session cookie name, must contain only [0-9a-z_-] characters
|
| 'sess_expiration'
|
|	The number of SECONDS you want the session to last.
|	Setting to 0 (zero) means expire when the browser is closed.
|
| 'sess_save_path'
|
|	The location to save sessions to, driver dependent.
|
|	For the 'files' driver, it's a path to a writable directory.
|	WARNING: Only absolute paths are supported!
|
|	For the 'database' driver, it's a table name.
|	Please read up the manual for the format with other session drivers.
|
|	IMPORTANT: You are REQUIRED to set a valid save path!
|
| 'sess_match_ip'
|
|	Whether to match the user's IP address when reading the session data.
|
|	WARNING: If you're using the database driver, don't forget to update
|	         your session table's PRIMARY KEY when changing this setting.
|
| 'sess_time_to_update'
|
|	How many seconds between CI regenerating the session ID.
|
| 'sess_regenerate_destroy'
|
|	Whether to destroy session data associated with the old session ID
|	when auto-regenerating the session ID. When set to FALSE, the data
|	will be later deleted by the garbage collector.
|
| Other session cookie settings are shared with the rest of the application,
| except for 'cookie_prefix' and 'cookie_httponly', which are ignored here.
|
*/
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

/*
|--------------------------------------------------------------------------
| Cookie Related Variables
|--------------------------------------------------------------------------
|
| 'cookie_prefix'   = Set a cookie name prefix if you need to avoid collisions
| 'cookie_domain'   = Set to .your-domain.com for site-wide cookies
| 'cookie_path'     = Typically will be a forward slash
| 'cookie_secure'   = Cookie will only be set if a secure HTTPS connection exists.
| 'cookie_httponly' = Cookie will only be accessible via HTTP(S) (no javascript)
|
| Note: These settings (with the exception of 'cookie_prefix' and
|       'cookie_httponly') will also affect sessions.
|
*/
$config['cookie_prefix']	= '';
$config['cookie_domain']	= '';
$config['cookie_path']		= '/';
$config['cookie_secure']	= FALSE;
$config['cookie_httponly'] 	= FALSE;

/*
|--------------------------------------------------------------------------
| Standardize newlines
|--------------------------------------------------------------------------
|
| Determines whether to standardize newline characters in input data,
| meaning to replace \r\n, \r, \n occurrences with the PHP_EOL value.
|
| WARNING: This feature is DEPRECATED and currently available only
|          for backwards compatibility purposes!
|
*/
$config['standardize_newlines'] = FALSE;

/*
|--------------------------------------------------------------------------
| Global XSS Filtering
|--------------------------------------------------------------------------
|
| Determines whether the XSS filter is always active when GET, POST or
| COOKIE data is encountered
|
| WARNING: This feature is DEPRECATED and currently available only
|          for backwards compatibility purposes!
|
*/
$config['global_xss_filtering'] = FALSE;

/*
|--------------------------------------------------------------------------
| Cross Site Request Forgery
|--------------------------------------------------------------------------
| Enables a CSRF cookie token to be set. When set to TRUE, token will be
| checked on a submitted form. If you are accepting user data, it is strongly
| recommended CSRF protection be enabled.
|
| 'csrf_token_name' = The token name
| 'csrf_cookie_name' = The cookie name
| 'csrf_expire' = The number in seconds the token should expire.
| 'csrf_regenerate' = Regenerate token on every submission
| 'csrf_exclude_uris' = Array of URIs which ignore CSRF checks
*/
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();

/*
|--------------------------------------------------------------------------
| Output Compression
|--------------------------------------------------------------------------
|
| Enables Gzip output compression for faster page loads.  When enabled,
| the output class will test whether your server supports Gzip.
| Even if it does, however, not all browsers support compression
| so enable only if you are reasonably sure your visitors can handle it.
|
| Only used if zlib.output_compression is turned off in your php.ini.
| Please do not use it together with httpd-level output compression.
|
| VERY IMPORTANT:  If you are getting a blank page when compression is enabled it
| means you are prematurely outputting something to your browser. It could
| even be a line of whitespace at the end of one of your scripts.  For
| compression to work, nothing can be sent before the output buffer is called
| by the output class.  Do not 'echo' any values with compression enabled.
|
*/
$config['compress_output'] = FALSE;

/*
|--------------------------------------------------------------------------
| Master Time Reference
|--------------------------------------------------------------------------
|
| Options are 'local' or any PHP supported timezone. This preference tells
| the system whether to use your server's local time as the master 'now'
| reference, or convert it to the configured one timezone. See the 'date
| helper' page of the user guide for information regarding date handling.
|
*/
$config['time_reference'] = 'local';

/*
|--------------------------------------------------------------------------
| Rewrite PHP Short Tags
|--------------------------------------------------------------------------
|
| If your PHP installation does not have short tag support enabled CI
| can rewrite the tags on-the-fly, enabling you to utilize that syntax
| in your view files.  Options are TRUE or FALSE (boolean)
|
| Note: You need to have eval() enabled for this to work.
|
*/
$config['rewrite_short_tags'] = FALSE;

/*
|--------------------------------------------------------------------------
| Reverse Proxy IPs
|--------------------------------------------------------------------------
|
| If your server is behind a reverse proxy, you must whitelist the proxy
| IP addresses from which CodeIgniter should trust headers such as
| HTTP_X_FORWARDED_FOR and HTTP_CLIENT_IP in order to properly identify
| the visitor's IP address.
|
| You can use both an array or a comma-separated list of proxy addresses,
| as well as specifying whole subnets. Here are a few examples:
|
| Comma-separated:	'10.0.1.200,192.168.5.0/24'
| Array:		array('10.0.1.200', '192.168.5.0/24')
*/
$config['proxy_ips'] = '';

Model Page (Model_banner.php)

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

class Model_banner extends CI_Model 
{

	function get_auto_increment_id()
    {
        $sql = "SHOW TABLE STATUS LIKE 'banners_info'";
        $query = $this->db->query($sql);
        return $query->result_array();
    }
	
    function show() {
        $sql = "SELECT * FROM banners_info ORDER BY banner_id ASC";
        $query = $this->db->query($sql);
        return $query->result_array();
    }

    function add($data) {
        $this->db->insert('banners_info',$data);
        return $this->db->insert_id();
    }

    function update($id,$data) {
        $this->db->where('banner_id',$id);
        $this->db->update('banners_info',$data);
        //$this->db->insert_batch('movies_info', $data);
    }

    function delete($id)
    {
        $this->db->where('banner_id',$id);
        $this->db->delete('banners_info');
    }

    function get_banner($id)
    {
        $sql = 'SELECT * FROM banners_info WHERE banner_id=?';
        $query = $this->db->query($sql,array($id));
        return $query->first_row('array');
    }

    function banner_check($id)
    {
        $sql = 'SELECT * FROM banners_info WHERE banner_id=?';
        $query = $this->db->query($sql,array($id));
        return $query->first_row('array');
    }

    /*function get_movie_casts($id)
    {
        $sql = 'SELECT * FROM movies_info WHERE movie_id=?';
        $query = $this->db->query($sql,array($id));
        return $query->first_row('array');
    }*/
    
}

View Pages (Creating Add, Edit & View pages)

view_banner_add.php

<?php
if(!$this->session->userdata('id')) {
    redirect(base_url().'admin');
}
?>

    <!-- Content Header (Page header) -->
    <section class="content-header">
      <div class="pull-left">
        <h1> <i class="fa fa-arrow-circle-o-right"></i> Add Banner</h1>
      </div>
      <div class="pull-right">
        <a href="<?php echo base_url(); ?>admin/banner/view" class="btn btn-primary btn-sm">View All</a>
      </div>
    </section>

    <!-- Main content -->
    <section class="content"> 

      <div class="row">
        <div class="col-md-12">

          <?php
              if($this->session->flashdata('error')) {
                ?>
                <div class="callout callout-danger">
                  <p><?php echo $this->session->flashdata('error'); ?></p>
                </div>
                <?php
              }
              if($this->session->flashdata('success')) {
                ?>
                <div class="callout callout-success">
                  <p><?php echo $this->session->flashdata('success'); ?></p>
                </div>
                <?php
              }
          ?>
          
                <!-- form start -->
            <!-- <form class="form-horizontal"> -->
              <?php echo form_open_multipart(base_url().'admin/banner/add',array('class' => 'form-horizontal')); ?>
              <div class="box box-info">
                <div class="box-body">
                  <div class="form-group">
                          <label for="" class="col-sm-2 control-label">Banner Title</label>
                          <div class="col-sm-6" style="padding-top:6px;">
                              <input type="text" autocomplete="off" class="form-control" name="banner_title">
                          </div>
                      </div>   
                  <div class="form-group">
                          <label for="" class="col-sm-2 control-label">Image</label>
                          <div class="col-sm-6" style="padding-top:6px;">
                              <input type="file" name="banner_image">(Only jpg, jpeg, gif and png are allowed)
                          </div>
                      </div>
                  <div class="form-group">
                          <label for="" class="col-sm-2 control-label">Description</label>
                          <div class="col-sm-6" style="padding-top:6px;">
                              <textarea class="form-control" name="banner_description" style="height:60px;"></textarea>
                          </div>
                      </div>
                  <div class="form-group">
                          <label for="" class="col-sm-2 control-label">Status</label>
                          <div class="col-sm-6" style="padding-top:6px;">
                              <select class="form-control select2" name="status" style="width: 100%;">
                                <option selected="selected">Enable</option>
                                <option>Disable</option>
                              </select>
                          </div>
                      </div>    
                      <div class="form-group">
                    <label for="" class="col-sm-2 control-label"></label>
                    <div class="col-sm-6">
                      <button type="submit" class="btn btn-success pull-left" name="banner_add">Submit</button>
                    </div>
                  </div>
                </div>
              </div>
              
            <?php echo form_close(); ?> 
            <!-- </form> -->
          <!-- /.box -->

        </div>
        <!-- /.col -->
      </div>
      <!-- /.row -->
      <!-- END CUSTOM TABS -->

    </section>
    <!-- /.content -->
  
    <!-- Added for Product & Customer Autofetch ALSO Menu AJAX Work-->
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

view_banner_edit.php

<?php
if(!$this->session->userdata('id')) {
    redirect(base_url().'admin');
}
?>

    <!-- Content Header (Page header) -->
    <section class="content-header">
      <div class="pull-left">
        <h1> <i class="fa fa-arrow-circle-o-right"></i> Edit Banner</h1>
      </div>
      <div class="pull-right">
        <a href="<?php echo base_url(); ?>admin/banner/view" class="btn btn-primary btn-sm">View All</a>
      </div>
    </section>

    <!-- Main content -->
    <section class="content"> 

      <div class="row">
        <div class="col-md-12">

          <?php
              if($this->session->flashdata('error')) {
                ?>
                <div class="callout callout-danger">
                  <p><?php echo $this->session->flashdata('error'); ?></p>
                </div>
                <?php
              }
              if($this->session->flashdata('success')) {
                ?>
                <div class="callout callout-success">
                  <p><?php echo $this->session->flashdata('success'); ?></p>
                </div>
                <?php
              }
          ?>
          
                <!-- form start -->
            <!-- <form class="form-horizontal"> -->
              <?php echo form_open_multipart(base_url().'admin/banner/edit/'.$banner['banner_id'],array('class' => 'form-horizontal')); ?>
              <div class="box box-info">
                <div class="box-body">
                  <div class="form-group">
                          <label for="" class="col-sm-2 control-label">Banner Title</label>
                          <div class="col-sm-6" style="padding-top:6px;">
                              <input type="text" autocomplete="off" class="form-control" name="banner_title" value="<?php echo $banner['banner_title']; ?>">
                          </div>
                      </div>
                  <div class="form-group">
                    <label for="" class="col-sm-2 control-label">Existing Image</label>
                    <div class="col-sm-9" style="padding-top:5px">
                      <img src="<?php echo base_url(); ?>public/images/banners/<?php echo $banner['banner_image']; ?>" alt="Existing Image" style="width:125px;">
                    </div>
                  </div>  
                  <div class="form-group">
                          <label for="" class="col-sm-2 control-label">Image</label>
                          <div class="col-sm-6" style="padding-top:6px;">
                              <input type="file" name="banner_image">(Only jpg, jpeg, gif and png are allowed)
                          </div>
                      </div>
                  <div class="form-group">
                          <label for="" class="col-sm-2 control-label">Description</label>
                          <div class="col-sm-6" style="padding-top:6px;"><textarea class="form-control" name="banner_description" style="height:120px;"><?php echo $banner['banner_description']; ?></textarea>
                          </div>
                      </div>
                  <div class="form-group">
                          <label for="" class="col-sm-2 control-label">Status</label>
                          <div class="col-sm-6" style="padding-top:6px;">
                              <select class="form-control select2" name="status" style="width: 100%;">
                                <option selected="selected">Enable</option>
                                <option>Disable</option>
                              </select>
                          </div>
                      </div>    
                      <div class="form-group">
                    <label for="" class="col-sm-2 control-label"></label>
                    <div class="col-sm-6">
                      <button type="submit" class="btn btn-success pull-left" name="banner_edit">Submit</button>
                    </div>
                  </div>
                </div>
              </div>
              
            <?php echo form_close(); ?> 
            <!-- </form> -->
          <!-- /.box -->

        </div>
        <!-- /.col -->
      </div>
      <!-- /.row -->
      <!-- END CUSTOM TABS -->

    </section>
    <!-- /.content -->
  
    <!-- Added for Product & Customer Autofetch ALSO Menu AJAX Work-->
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

view_banner_view.php

<?php
if(!$this->session->userdata('id')) {
    redirect(base_url().'admin');
}
?>
    <!-- Content Header (Page header) -->
    <section class="content-header">
      <span class="pull-left">
        <h1>
          <h1> <i class="fa fa-arrow-circle-o-right"></i> View Banners</h1>
          <!-- <small>advanced tables</small> -->
        </h1>
      </span>
      <div class="pull-right">
          <a href="<?php echo base_url(); ?>admin/banner/add" class="btn btn-primary btn-md">Add Banner</a>
      </div>
    </section>

    <!-- Main content -->
    <section class="content">
      <div class="row">
        <div class="col-xs-12">

          <?php
          if($this->session->flashdata('error')) {
              ?>
        <div class="callout callout-danger">
          <p><?php echo $this->session->flashdata('error'); ?></p>
        </div>
              <?php
          }
          if($this->session->flashdata('success')) {
              ?>
        <div class="callout callout-success">
          <p><?php echo $this->session->flashdata('success'); ?></p>
        </div>
              <?php
          }
          ?>
          
          <div class="box">
            <div class="box-body">
              <table id="example1" class="table table-bordered table-striped">
                <thead>
                <tr>
                  <th>#</th>
                  <th>Title</th>
                  <th>Image</th>
                  <th>Status</th>
                  <th>Options</th>
                </tr>
                </thead>
                <tbody>
                  <?php
                    $i=0;             
                    foreach ($banner as $row) {
                    $i++;
                  ?>
                <tr>
                  <td><?php echo $row['banner_id']; ?></td>
                  <td><?php echo $row['banner_title']; ?></td>
                  <td>
                    <img width="125px" src="<?php echo base_url(); ?>public/images/banners/<?php echo $row['banner_image']; ?>">
                  </td>
                  <td><?php echo $row['status']; ?></td>
                  <td>                    
                    <a href="<?php echo base_url(); ?>admin/banner/edit/<?php echo $row['banner_id']; ?>" class="btn btn-primary btn-xs"><i class="fa fa-pencil"></i></a>
                    <a href="<?php echo base_url(); ?>admin/banner/delete/<?php echo $row['banner_id']; ?>" class="btn btn-danger btn-xs" onClick="return confirm('Are you sure?');"><i class="fa fa-trash-o"></i></a>
                  </td>
                </tr>
                  <?php
                     }
                  ?>  
                </tbody>
              </table>
            </div>
            <!-- /.box-body -->
          </div>
          <!-- /.box -->
        </div>
        <!-- /.col -->
      </div>
      <!-- /.row -->
    </section>
    <!-- /.content -->
    

    <!-- Added for Product & Customer Autofetch ALSO Menu AJAX Work-->
   <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
    <!-- <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> -->
    <!-- <script src="https://code.jquery.com/jquery-1.12.4.js"></script> -->
    <!-- <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> -->

    <script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
     <script src="https://cdn.datatables.net/buttons/1.6.1/js/dataTables.buttons.min.js"></script>
     <script src="https://cdn.datatables.net/buttons/1.6.1/js/buttons.flash.min.js"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
     <script src="https://cdn.datatables.net/buttons/1.6.1/js/buttons.html5.min.js"></script>
     <script src="https://cdn.datatables.net/buttons/1.6.1/js/buttons.print.min.js"></script>

    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.20/css/jquery.dataTables.min.css">
    <link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.6.1/css/buttons.dataTables.min.css">

<script>
$(document).ready(function() {
    $('#example1').DataTable( {
        // Sets the row-num-selection "Show %n entries" for the user
        "lengthMenu": 
            [ 10, 50, 100, 250, 500, 1000, 2500, 5000 ],

        // Set the default no. of rows to display
        "pageLength": 25, 

        dom: 'Bfrtip',
        buttons: [
            'pageLength',
            {
                extend: 'excelHtml5',
                filename: 'Banners'
            },
            {
                extend: 'csvHtml5',
                filename: 'Banners'
            },
            {
                extend: 'pdfHtml5',
                filename: 'Banners'
            },
            {
                extend: 'copyHtml5',
                filename: 'Banners'
            }
        ]
        /*buttons: [
            'copy', 'csv', 'excel', 'pdf', 'print'
        ]*/
    } );
} );
</script>
    
    <!-- Movie View Page Script -->
<!-- page script -->
<script>
  $(function () {
    $('#example1').DataTable()
    $('#example2').DataTable({
      'paging'      : true,
      'lengthChange': false,
      'searching'   : false,
      'ordering'    : true,
      'info'        : true,
      'autoWidth'   : false
    })
  })
</script>

Controller Page (Banner.php)

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

class Banner extends CI_Controller 
{
	function __construct() 
	{
        parent::__construct();
        $this->load->model('admin/Model_common');
        $this->load->model('admin/Model_banner');
    }

	public function view()
	{
		$data['setting'] = $this->Model_common->get_setting_data();

		$data['banner'] = $this->Model_banner->show();

		$this->load->view('admin/view_header',$data);
		$this->load->view('admin/view_banner_view',$data);
		$this->load->view('admin/view_footer');
	}

	public function add()
	{	
		//$this->load->model('admin/Model_dropdownlist');
		//$getMovieGenres = $this->Model_dropdownlist->getMovieGenres();

		$data['setting'] = $this->Model_common->get_setting_data();

		$error = '';
		$success = '';

		if(isset($_POST['banner_add'])) {

			$valid = 1;

			$this->form_validation->set_rules('banner_title', 'Banner Title', 'trim|required');
			$this->form_validation->set_rules('banner_description', 'Description', 'trim|required');
			$this->form_validation->set_rules('status', 'Status', 'trim|required');

			if($this->form_validation->run() == FALSE) {
				$valid = 0;
                $error .= validation_errors();
            }

            $path = $_FILES['banner_image']['name'];
		    $path_tmp = $_FILES['banner_image']['tmp_name'];

		    if($path!='') {
		        $ext = pathinfo( $path, PATHINFO_EXTENSION );
		        $file_name = basename( $path, '.' . $ext );
		        $ext_check = $this->Model_common->extension_check_photo($ext);
		        if($ext_check == FALSE) {
		            $valid = 0;
		            $error .= 'You must have to upload jpg, jpeg, gif or png file for featured photo<br>';
		        }
		    } else {
		    	$valid = 0;
		        $error .= 'You must have to select a photo for featured photo<br>';
		    }

		    if($valid == 1) 
		    {
				$next_id = $this->Model_banner->get_auto_increment_id();
				foreach ($next_id as $row) {
		            $ai_id = $row['Auto_increment'];
		        }

		        //$final_name = 'testimonial-'.$ai_id.'.'.$ext;
		        //$final_name = $path.'.'.$ext;
		        $final_name = $path;
		        move_uploaded_file( $path_tmp, './public/images/banners/'.$final_name );


		        /*$val_movie_genre = $this->input->post('movie_genre');
		        foreach($val_movie_genre as $row)
				 {
				  //$movie_genre .= $row . ', ';
				 	$movie_genre = $movie_genre . $row. ",";
				 }
				 $movie_genre = substr($movie_genre, 0, -1);

				 $val_movie_country = $this->input->post('movie_country');
				 foreach($val_movie_country as $row1)
				 {
				  //$movie_country .= $row1 . ', ';
				 	$movie_country = $movie_country . $row1. ",";
				 }
				 $movie_country = substr($movie_country, 0, -1);*/


		        $form_data = array(
					'banner_title'        	=> $_POST['banner_title'],
					'banner_image'      	=> $final_name,
					'banner_description'    => $_POST['banner_description'],
					'status'     			=> $_POST['status']
	            );
	            $this->Model_banner->add($form_data);

		        $success = 'Banner is added successfully!';
		        $this->session->set_flashdata('success',$success);
				redirect(base_url().'admin/banner/view');
		    } 
		    else
		    {
		    	$this->session->set_flashdata('error',$error);
				redirect(base_url().'admin/banner/add');
		    }
            
        } else {
            
            $this->load->view('admin/view_header',$data);
			$this->load->view('admin/view_banner_add',$data);
			$this->load->view('admin/view_footer');
        }
		
	}


	public function edit($id)
	{
		
    	// If there is no testimonial in this id, then redirect
    	$tot = $this->Model_banner->banner_check($id);
    	if(!$tot) {
    		redirect(base_url().'admin/banner/view');
        	exit;
    	}
       	
       	$data['setting'] = $this->Model_common->get_setting_data();
		$error = '';
		$success = '';


		if(isset($_POST['banner_edit'])) 
		{

			$valid = 1;

			$this->form_validation->set_rules('banner_title', 'Banner Title', 'trim|required');
			$this->form_validation->set_rules('banner_description', 'Description', 'trim|required');
			$this->form_validation->set_rules('status', 'Status', 'trim|required');

			if($this->form_validation->run() == FALSE) {
				$valid = 0;
                $error .= validation_errors();
            }

            $path = $_FILES['banner_image']['name'];
		    $path_tmp = $_FILES['banner_image']['tmp_name'];

		    if($path!='') {
		        $ext = pathinfo( $path, PATHINFO_EXTENSION );
		        $file_name = basename( $path, '.' . $ext );
		        //$file_name = basename( $path );
		        $ext_check = $this->Model_common->extension_check_photo($ext);
		        if($ext_check == FALSE) {
		            $valid = 0;
		            $error .= 'You must have to upload jpg, jpeg, gif or png file for featured photo<br>';
		        }
		    }

		    if($valid == 1) 
		    {
		    	$data['banner'] = $this->Model_banner->get_banner($id);
		    	//$final_name = $path;

		    	if($path == '') {
		    		$form_data = array(
					'banner_title'        	=> $_POST['banner_title'],
					//'banner_image'      	=> $final_name,
					'banner_description'     => $_POST['banner_description'],
					'status'     			=> $_POST['status']
		            );
		            $this->Model_banner->update($id,$form_data);
				}
				if($path != '') {

					unlink('./public/images/banners/'.$data['banner']['banner_image']);
					//unlink('./public/uploads/'.$data['news']['banner']);

					//$final_name = 'news-'.$id.'.'.$ext;
					//$file_name = basename( $path );
					$final_name = $path.'.'.$ext;
		        	move_uploaded_file( $path_tmp, './public/images/banners/'.$final_name );

					/*$final_name1 = 'news-banner-'.$id.'.'.$ext1;
		        	move_uploaded_file( $path_tmp1, './public/uploads/'.$final_name1 );*/

		        	$form_data = array(
					'banner_title'        	=> $_POST['banner_title'],
					'banner_image'      	=> $final_name,
					'banner_description'     => $_POST['banner_description'],
					'status'     			=> $_POST['status']
		            );
		            $this->Model_banner->update($id,$form_data);
				}
				/*else {
					unlink('./public/images/banners/'.$data['banner']['banner_image']);

					//$final_name = 'testimonial-'.$id.'.'.$ext;
					//$final_name = $path.'.'.$ext;
					$final_name = $path;
		        	move_uploaded_file( $path_tmp, './public/images/banners/'.$final_name );


		        	$form_data = array(
					'banner_title'        	=> $_POST['banner_title'],
					'banner_image'      	=> $final_name,
					'banner_description'     => $_POST['banner_description'],
					'status'     			=> $_POST['status']
		            );
		            $this->Model_banner->update($id,$form_data);
				}*/
				
				$success = 'Banner is updated successfully';
				$this->session->set_flashdata('success',$success);
				redirect(base_url().'admin/banner/view');
		    }
		    else
		    {
		    	$this->session->set_flashdata('error',$error);
				redirect(base_url().'admin/banner/edit'.$id);
		    }
           
		} else {
			$data['banner'] = $this->Model_banner->get_banner($id);
	       	$this->load->view('admin/view_header',$data);
			$this->load->view('admin/view_banner_edit',$data);
			$this->load->view('admin/view_footer');
		}

	}


	public function delete($id) 
	{
		// If there is no testimonial in this id, then redirect
    	$tot = $this->Model_banner->banner_check($id);
    	if(!$tot) {
    		redirect(base_url().'admin/banner/view');
        	exit;
    	}

        $data['banner'] = $this->Model_banner->get_banner($id);
        if($data['banner']) {
            unlink('./public/images/'.$data['banner']['banner_image']);
        }

        $this->Model_banner->delete($id);
        $success = 'Banner is deleted successfully';
		$this->session->set_flashdata('success',$success);
        redirect(base_url().'admin/banner/view');
    }

}

Author:

Leave a Reply