lablanco
lablanco

Reputation: 103

Picture to database uploading not working in Codeigniter

I'm making a website on the CodeIgniter framework so users can upload products on the website to the database. I'm trying to make a function so users can upload pictures to my database but its not really working.

Here some info: DB table name: products The DB table column name that I want the pictures to be stored in: product_foto picture folder: upload

My controller: 
    <?php
     defined('BASEPATH') OR exit('No direct script access allowed');
     class Product extends CI_Controller { 

     var $data = array();

     public function __construct()
     {
      parent::__construct();
      $this->load->model('product_model');
      $this->load->helper(array('form', 'url'));
     }

     public function product_form()
     {
      $save = array(
          'product_naam'          => $this->input->post('product_naam'),
          'product_beschrijving'          => $this->input->post('product_beschrijving'),
          'product_categorie'   => $this->input->post('product_categorie'),
          'ophaal_plaats'   => $this->input->post('ophaal_plaats'), 
          'product_foto'  => $this->input->post('product_foto'),
          'date_created' => date('Y-m-d'),
          'date_updated' => date('Y-m-d')
           );

      $this->product_model->saveProduct($save);
      redirect('https://kadokado-ferran10.c9users.io/AlleCadeausController');
     }


     public function upload(){
      $config['upload_path'] = './upload/';
      $config['allowed_types'] = 'jpg|jpeg|png';

      $this->load->library('upload', $config);
      if(!$this->upload->do_upload('file')){
        $this->db->insert('products', array(
           'product_foto' => $this->upload->file_name
           ));
       $error = array('error'=>$this->upload->display_errors());
       $this->load->view('product_form', $error);
      }else{
       $file_data = $this->upload->data();
       $data['img'] = base_url().'/upload/'.$file_data['file_name'];
       header('location:https://kadokado-ferran10.c9users.io/Product/');
       }
     }

    }

My model file:

<?php
 defined('BASEPATH') OR exit('No direct script access allowed');
 class Product extends CI_Controller { 

    var $data = array();

My view file:

<?php echo form_open_multipart('Product/upload'); ?>
    <input type="file" name="userfile" />

    <div class="form-group">
        <label for="name">Name</label>
        <input type="text" name="name">
    </div>

    <input type="submit" name="submit" value="test" />

</form>

When I submit the form the picture only gets added to the upload folder but it doesn't get added into the database column..

Upvotes: 0

Views: 498

Answers (1)

user5139148
user5139148

Reputation:

Change your upload() function as follow

public function upload(){
    $config['upload_path'] = './upload/';
    $config['allowed_types'] = 'jpg|jpeg|png';

    $this->load->library('upload', $config);

    if(!$this->upload->do_upload('userfile')){
        $error = array('error'=>$this->upload->display_errors());
        $this->load->view('product_form', $error);
    }else{
        $file_data = $this->upload->data();
        $this->db->insert('products', array(
            'product_foto' => $file_data['file_name']
            ));
        $data['img'] = base_url().'/upload/'.$file_data['file_name'];
        header('location:https://kadokado-ferran10.c9users.io/Product/');
    }
}

Upvotes: 1

Related Questions