CRUD With Server-Side Validation | Codeigniter

Crud.php     Controller 

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

class Crud extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model('crud_model');
    }

    public function index()
    {
        $data['formdatas'] = $this->crud_model->get_form_data();
        $this->load->view('include/header');
        $this->load->view('crud/crud',$data);
        $this->load->view('include/footer');
    }

    public function create()
    {
        $data=[];
        if(is_array($this->input->post()) && count($this->input->post())>0){

            if (isset($_FILES['singleFile']) && (!empty($_FILES['singleFile']['name']))) {
                $Filename = $_FILES['singleFile']['name'];
                $singleFile = $this->single_file_upload($Filename, 'assets/uploads/', 'singleFile');
            }else{
                $singleFile = "";
            }

            if (isset($_FILES['multiplefile']) && (!empty($_FILES['multiplefile']['name']))) {
                $multiplefile = $this->mumtiple_file_upload('multiplefile', 'assets/uploads/');
            }else{
                $multiplefile = "";
            }

            $config = array(
                array(
                    'field' => 'text',
                    'label' => 'Text',
                    'rules' => 'required|trim',
                ),
                array(
                    'field' => 'dropdown',
                    'label' => 'Dropdown',
                    'rules' => 'required|trim',
                ),
                array(
                    'field' => 'radio',
                    'label' => 'Gender',
                    'rules' => 'required|trim',
                ),
                array(
                    'field' => 'checkbox[]',
                    'label' => 'Hobby',
                    'rules' => 'required',
                ),
            );

            $this->form_validation->set_rules($config);
            if ($this->form_validation->run() == false) {
                $data['formdata'] = $this->input->post();
            } else {
                $inputData = array(
                    'text'          => $this->input->post('text'),
                    'dropdown'      => $this->input->post('dropdown'),
                    'radio'         => $this->input->post('radio'),
                    'checkbox'      => implode(',', $this->input->post('checkbox')),
                    'singleFile'    => $singleFile,
                    'multiplefile'  => $multiplefile,
                    'status'        => 1,
                    'cdate'         => date('Y-m-d H:i:s'),
                );

                $inserted = $this->crud_model->insert_data($inputData);
                if($inserted){
                    $this->session->set_flashdata('success_msg', 'Data Added Successfully');
                    redirect(base_url('crud'));
                }
            }
        }
        $this->load->view('include/header');
        $this->load->view('crud/create',$data);
        $this->load->view('include/footer');
    }

    public function edit($id)
    {
        if(is_array($this->input->post()) && count($this->input->post())>0){
           
            if (isset($_FILES['singleFile']) && (!empty($_FILES['singleFile']['name']))) {
                $Filename = $_FILES['singleFile']['name'];
                $singleFile = $this->single_file_upload($Filename, 'assets/uploads/', 'singleFile');
            }else{
                $singleFile = $this->crud_model->get_single_file($id);
            }

            if(count($_FILES['multiplefile']['name']) > 1){
                $multiplefile = $this->mumtiple_file_upload('multiplefile', 'assets/uploads/');
            }else{
                $multiplefile = $this->crud_model->get_multiple_file($id);
            }

            $config = array(
                array(
                    'field' => 'text',
                    'label' => 'Text',
                    'rules' => 'required|trim',
                ),
                array(
                    'field' => 'dropdown',
                    'label' => 'Dropdown',
                    'rules' => 'required|trim',
                ),
                array(
                    'field' => 'radio',
                    'label' => 'Gender',
                    'rules' => 'required|trim',
                ),
                array(
                    'field' => 'checkbox[]',
                    'label' => 'Hobby',
                    'rules' => 'required',
                ),
            );

            $this->form_validation->set_rules($config);
            if ($this->form_validation->run() == false) {
                $data['formdata'] = $this->input->post();
            } else {
                $inputData = array(
                    'text'          => $this->input->post('text'),
                    'dropdown'      => $this->input->post('dropdown'),
                    'radio'         => $this->input->post('radio'),
                    'checkbox'      => implode(',', $this->input->post('checkbox')),
                    'singleFile'    => $singleFile,
                    'multiplefile'  => $multiplefile,
                    'status'        => 1,
                    'udate'         => date('Y-m-d H:i:s'),
                );

                $updated = $this->crud_model->update_data($id,$inputData);
                if($updated){
                    $this->session->set_flashdata('success_msg', 'Data Updated Successfully');
                    redirect(base_url('crud'));
                }
            }
        }
        $data['formdata'] = $this->crud_model->get_edit_form_data($id);
        $this->load->view('include/header');
        $this->load->view('crud/edit',$data);
        $this->load->view('include/footer');
    }

    public function updateStatus()
    {
        $id = $this->input->post("id");
        $result = 0;
        $data = array(
            'status' => $this->input->post("status"),
            'udate' => date("Y-m-d H:i:s"),
        );
        $updateResult = $this->crud_model->updateStatus($id, $data);
        if ($updateResult === TRUE) {
            $result = 1;
        } else {
            $result = 0;
        }
        echo $result;
    }

    public function delete()
    {
        $id = $this->uri->segment(3);
        $this->crud_model->delete($id);
        redirect('features');
    }

    function single_file_upload($Filename, $path, $controlName)
    {
        $config['upload_path']   = $path;
        $config['file_name']     = $Filename;
        $config['allowed_types'] = '*';
        $config['max_size']      = '*';
        $config['max_width']     = '*';
        $config['max_height']    = '*';
        $config['encrypt_name']  = TRUE;
       
        $this->load->helper('file');
        $this->load->library('upload', $config);
        $this->upload->initialize($config);

        if ($this->upload->do_upload($controlName)) {

            $filedata = $this->upload->data();
            return $filedata['file_name'];

        }
    }

    public function mumtiple_file_upload($multiplefile, $path)
    {
        $mul_file_data = [];

        $count = count($_FILES[$multiplefile]['name']);
   
        for($i=0;$i<$count;$i++){
   
            if(!empty($_FILES[$multiplefile]['name'][$i])){
       
                $_FILES['file']['name']   = $_FILES[$multiplefile]['name'][$i];
                $_FILES['file']['type']   = $_FILES[$multiplefile]['type'][$i];
                $_FILES['file']['tmp_name'] = $_FILES[$multiplefile]['tmp_name'][$i];
                $_FILES['file']['error']  = $_FILES[$multiplefile]['error'][$i];
                $_FILES['file']['size']   = $_FILES[$multiplefile]['size'][$i];

                $config['upload_path']   = $path;
                $config['file_name']     = $_FILES[$multiplefile]['name'][$i];
                $config['allowed_types'] = '*';
                $config['max_size']      = '*';
                $config['max_width']     = '*';
                $config['max_height']    = '*';
                $config['encrypt_name']  = TRUE;
     
                $this->load->helper('file');
                $this->load->library('upload', $config);
                $this->upload->initialize($config);
       
                if($this->upload->do_upload('file')){
                    $uploadData = $this->upload->data();
                    $filename = $uploadData['file_name'];
                    $mul_file_data[] = $filename;
                } else {
                    //$error = array('error' => $this->upload->display_errors());
                }
            }
        }
 
      return implode(',', $mul_file_data);
    }

}

Crud_model.php      Model

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

class Crud_model extends CI_Model {

public function insert_data($formdata)
    {
        return $this->db->insert('tbl_form',$formdata);
    }

    public function get_form_data()
    {
        $this->db->select('*')
            ->from('tbl_form')
            ->order_by('id','DESC');
        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            return $query->result_array();
        } else {
            return false;
        } 
    }

    public function delete($id)
    {
        $this->db->where('id', $id)
                 ->delete('tbl_form');
        return true;
    }

    public function get_edit_form_data($id)
    {
        $this->db->select('*')
                 ->where('id', $id);
        $query = $this->db->get('tbl_form');
        if ($query->num_rows() > 0) {
            return $query->row_array();
        } else {
            return false;
        }
    }

    public function get_single_file($id)
    {
        $this->db->select('*')
                 ->where('id', $id);
        $query = $this->db->get('tbl_form');
        if ($query->num_rows() > 0) {
            $singlefile = $query->row_array();
            return $singlefile['singleFile'];
        } else {
            return false;
        }
    }

    public function get_multiple_file($id)
    {
        $this->db->select('*')
                 ->where('id', $id);
        $query = $this->db->get('tbl_form');
        if ($query->num_rows() > 0) {
            $multiplefile = $query->row_array();
            return $multiplefile['multiplefile'];
        } else {
            return false;
        }
    }

    public function update_data($id,$inputData)
    {
        $this->db->where('id', $id);
        $this->db->update('tbl_form', $inputData);
        return true;
    }

}

crud.php    view

<div class="container-fluid text-center"> 
<div class="row">
    <a href="<?php echo base_url('crud/create')?>" ><button class="btn btn-primary">Create</button></a>
</div> 
  <div class="row content">
    <div class="col-sm-12 text-left">
      <table class="table table-striped table-bordered nowrap dataTable dt-responsive" style="width:100%">
          <thead>
            <tr>
                <th>IT's No</th>
                <th>Name</th>
                <th>Education</th>
                <th>Gender</th>
                <th>Hobby</th>
                <th>File</th>
                <th>Photos</th>
                <th>Action</th>
            </tr>
          </thead>
          <tbody>
            <?php if($formdatas){?>
                <?php foreach($formdatas as $key => $formdata){?>
                <tr>
                    <td><?php echo $key+1;?></td>
                    <td><?php echo $formdata['text'];?></td>
                    <td><?php echo $formdata['dropdown'];?></td>
                    <td><?php echo $formdata['radio'];?></td>
                    <td><?php echo $formdata['checkbox'];?></td>
                    <td>
                        <img src="<?php echo base_url('assets/uploads/'.$formdata['singleFile']);?>" height="50px" width="50px">
                    </td>
                    <td>
                        <?php $gallerys = explode(',', $formdata['multiplefile']);?>
                        <?php foreach($gallerys as $gallery){?>
                        <img src="<?php echo base_url('assets/uploads/'.$gallery);?>" height="50px" width="50px">
                        <?php }?>
                    </td>
                    <td>
                        <a href="<?php echo base_url('crud/edit/'.$formdata['id']) ?>" >
                            <button class="btn btn-primary">Edit</button>
                        </a>
                        <button onclick="deletedata('<?php echo $formdata['id']?>')" class="btn btn-danger">Delete</button>
                    </td>
                </tr>
                <?php }?>
            <?php }?>
          </tbody>
        </table>
    </div>
  </div>
</div>


<script type="text/javascript">
    $(document).ready(function()
    {
        $('.table').DataTable({
        });
    })

    function deletedata(id){
        swal({
            title: "Are you sure?",
            text: "You will not be able to recover this Data.",
            type: "warning",
            showCancelButton: true,
            confirmButtonClass: "btn-danger",
            confirmButtonText: "Yes, delete!",
            cancelButtonText: "No",
            closeOnConfirm: false,
            closeOnCancel: false
        }, function (isConfirm) {
            if (isConfirm) {

                $.ajax({
                    url: "<?php echo base_url('form/delete/')?>" + id,
                    type: "POST",
                    success: function (data) {
                        swal({
                            title: 'Success!',
                            type: 'success',
                            focusConfirm: false,
                            timer: 2000,
                        });
                        window.setTimeout(function () {
                            location.reload();
                        }, 2000);
                    },
                    error: function () {
                        alert('Not Closed');
                    }
                });
            } else {
                swal("Cancelled", "Your Data is safe :)", "error");
            }
        });
    }

</script>

create.php      view


<div class="container-fluid text-center"> 
<div class="row">
<h2> Create Form</h2>
</div> 
<div class="row content">
<div class="col-sm-12 text-left">
<form method="POST" action="<?php echo base_url('crud/create')?>" enctype='multipart/form-data'>
<div class="row">
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="text" class="block">Category Name *</label>
</div>
<div class="col-sm-12">
<input type="text" autofocus="" name="text" id="text" class="form-control" value="<?php if(isset($formdata['text'])){ echo $formdata['text']; }?>">
</div>
</div>     
<?php echo form_error('text','<p class="text-danger error">','</p>'); ?>
</div>
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="dropdown" class="block">Education *</label>
</div>
<div class="col-sm-12">
<select id="dropdown" name="dropdown" class="form-control">
<option value="">Select Option</option>
<option value="BE" <?php if(isset($formdata['dropdown']) && $formdata['dropdown'] =='BE'){ echo "selected";} ?> >BE</option>
<option value="ME" <?php if(isset($formdata['dropdown']) && $formdata['dropdown'] =='ME'){ echo "selected";} ?> >ME</option>
<option value="Btech" <?php if(isset($formdata['dropdown']) && $formdata['dropdown'] =='Btech'){ echo "selected";} ?> >Btech</option>
<option value="Mtech" <?php if(isset($formdata['dropdown']) && $formdata['dropdown']=='Mtech'){ echo "selected";} ?> >Mtech</option>
</select>
</div>
</div>
<?php echo form_error('dropdown','<p class="text-danger error">','</p>'); ?>
</div>
</div>

<div class="row">
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="radio" class="block">Gender *</label>
</div>
<div class="col-sm-12">
<input type="radio" id="radio" name="radio" value="male" <?php if(isset($formdata['radio']) && $formdata['radio']== 'male') echo "checked='checked'"; ?>>Male
<input type="radio" id="radio" name="radio" value="female" <?php if(isset($formdata['radio']) && $formdata['radio']== 'female') echo "checked='checked'"; ?> >Female
</div>
</div>
<?php echo form_error('radio','<p class="text-danger error">','</p>'); ?>
</div>
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="hobby" class="block">Hobby *</label>
</div>
<div class="col-sm-12">
<?php
if(isset($formdata['checkbox'])){
$cricket='';
$wb='';
$fb='';

foreach ($formdata['checkbox'] as $key => $hobbyvalue) {
if($hobbyvalue == 'cricket'){
$cricket= 'checked';
}

if($hobbyvalue == 'wb'){
$wb= 'checked';
}

if($hobbyvalue == 'fb'){
$fb= 'checked';
}
}?>

<?php } ?>

<input type="checkbox" id="checkbox" name="checkbox[]" value="cricket" <?php if(isset($cricket)){ echo $cricket;} ?>>cricket
<input type="checkbox" id="checkbox" name="checkbox[]" value="wb" <?php if(isset($wb)){ echo $wb;} ?> >wb
<input type="checkbox" id="checkbox" name="checkbox[]" value="fb" <?php if(isset($fb)){ echo $fb;} ?>>fb
<!-- <span class="errorBlock" id="errorcheckbox"></span> -->
</div>
</div>
<?php echo form_error('checkbox[]','<p class="text-danger error">','</p>'); ?>
</div>
</div>

<div class="row">
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="file" class="block">File *</label>
</div>
<div class="col-sm-12">
<input type="file" id="singleFile" name="singleFile" class="form-control">
<!-- <span class="errorBlock" id="errorsingleFile"></span> -->
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="photos" class="block">Gallary *</label>
</div>
<div class="col-sm-12">
<input type="file" id="multiplefile" name="multiplefile[]" multiple="" class="form-control">
<!-- <span class="errorBlock" id="errormultiplefile"></span> -->
</div>
</div>
</div>
</div>

<input type="submit" name="submit" value="submit" id="submitform" class="btn btn-info">
</form>
</div>
</div>

</div>

edit.php        view 


<div class="container-fluid text-center">  
<div class="row">
<h2> Create Form</h2>
</div>   
<div class="row content">
<div class="col-sm-12 text-left"> 
<form method="POST" action="<?php echo base_url('crud/edit/'.$formdata['id'])?>" enctype='multipart/form-data'>
<div class="row">
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="text" class="block">Category Name *</label>
</div>
<div class="col-sm-12">
<input type="text" autofocus="" name="text" id="text" class="form-control" value="<?php if(isset($formdata['text'])){ echo $formdata['text']; }?>">
</div>
</div>      
<?php echo form_error('text','<p class="text-danger error">','</p>'); ?>
</div>
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="dropdown" class="block">Education *</label>
</div>
<div class="col-sm-12">
<select id="dropdown" name="dropdown" class="form-control">
<option value="">Select Option</option>
<option value="BE" <?php if(isset($formdata['dropdown']) && $formdata['dropdown'] =='BE'){ echo "selected";} ?> >BE</option>
<option value="ME" <?php if(isset($formdata['dropdown']) && $formdata['dropdown'] =='ME'){ echo "selected";} ?> >ME</option>
<option value="Btech" <?php if(isset($formdata['dropdown']) && $formdata['dropdown'] =='Btech'){ echo "selected";} ?> >Btech</option>
<option value="Mtech" <?php if(isset($formdata['dropdown']) && $formdata['dropdown']=='Mtech'){ echo "selected";} ?> >Mtech</option>
</select>
</div>
</div>
<?php echo form_error('dropdown','<p class="text-danger error">','</p>'); ?>
</div>
</div>

<div class="row">
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="radio" class="block">Gender *</label>
</div>
<div class="col-sm-12">
<input type="radio" id="radio" name="radio" value="male" <?php if($formdata['radio'] == 'male') echo "checked='checked'"; ?>>Male
<input type="radio" id="radio" name="radio" value="female" <?php if($formdata['radio'] == 'female') echo "checked='checked'"; ?> >Female
</div>
</div>
<?php echo form_error('radio','<p class="text-danger error">','</p>'); ?>
</div>
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="hobby" class="block">Hobby *</label>
</div>
<div class="col-sm-12">
<?php 
if(isset($formdata['checkbox'])){
$checkbox = explode(',', $formdata['checkbox']);
$cricket='';
$wb='';
$fb='';

foreach ($checkbox as $key => $hobbyvalue) {
if($hobbyvalue == 'cricket'){
$cricket= 'checked';
}

if($hobbyvalue == 'wb'){
$wb= 'checked';
}

if($hobbyvalue == 'fb'){
$fb= 'checked';
}
}?>

<?php } ?>

<input type="checkbox" id="checkbox" name="checkbox[]" value="cricket" <?php if(isset($cricket)){ echo $cricket;} ?>>cricket
<input type="checkbox" id="checkbox" name="checkbox[]" value="wb" <?php if(isset($wb)){ echo $wb;} ?> >wb
<input type="checkbox" id="checkbox" name="checkbox[]" value="fb" <?php if(isset($fb)){ echo $fb;} ?>>fb
<!-- <span class="errorBlock" id="errorcheckbox"></span> -->
</div>
</div>
<?php echo form_error('checkbox[]','<p class="text-danger error">','</p>'); ?>
</div>
</div>

<div class="row">
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="file" class="block">File *</label>
</div>
<div class="col-sm-12">
<input type="file" id="singleFile" name="singleFile" class="form-control">
<img src="<?php echo base_url('assets/uploads/'.$formdata['singleFile']);?>" height="50px" width="50px">
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="photos" class="block">Gallary *</label>
</div>
<div class="col-sm-12">
<input type="file" id="multiplefile" name="multiplefile[]" multiple="" class="form-control">
<?php if(isset($formdata['multiplefile'])){?>
<?php $multiplefile = explode(',', $formdata['multiplefile']);
foreach ($multiplefile as $key => $multiple) {
?>
<img src="<?php echo base_url('assets/uploads/'.$multiple);?>" height="50px" width="50px">
<?php }?>
<?php }?>
</div>
</div>
</div>
</div>

<input type="submit" name="submit" value="submit" id="submitform" class="btn btn-info">
</form>
</div>
</div>
</div>

SQL Script

CREATE TABLE IF NOT EXISTS `tbl_form` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `text` varchar(100) NOT NULL,

  `dropdown` varchar(10) NOT NULL,

  `radio` varchar(10) NOT NULL,

  `checkbox` varchar(100) NOT NULL,

  `singleFile` varchar(100) NOT NULL,

  `multiplefile` varchar(255) NOT NULL,

  `status` tinyint(1) NOT NULL,

  `cdate` datetime(6) NOT NULL,

  `udate` datetime(6) NOT NULL,

  PRIMARY KEY (`id`)

)

Comments

Popular posts from this blog

API

Encryption and Decryption By PHP

Seeder