CodeIgniter Forums
Inserting image - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Archived Discussions (https://forum.codeigniter.com/forum-20.html)
+--- Forum: Archived Development & Programming (https://forum.codeigniter.com/forum-23.html)
+--- Thread: Inserting image (/thread-53598.html)



Inserting image - El Forum - 07-31-2012

[eluser]cerberus478[/eluser]
Hi

I would like to insert the image path into my database and then view it, but I get an error saying

A PHP Error was encountered

Severity: Notice

Message: Undefined property: Upload::$upload

Filename: controllers/upload.php

Line Number: 22

and I can't see where the error would be.

This is my controller
Code:
<?php

class Upload extends CI_Controller {

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


}

function index()
{
  $this->load->view('upload_form', array('error' => ' ' ));
  
}

function do_upload()
{
  
  $image_data = $this->upload->data();
   $insert_data = array(
                    'name' => $image_data['name'],
                    'path'=> $image_data['path'] . 'uploads/'. $image_data['name'],
                  
                     );

          $this->db->insert('upload2', $insert_data);//load array to database
        
        
  $config['upload_path'] = './uploads/';
  $config['allowed_types'] = 'gif|jpg|png';
  $config['max_size'] = '1000';
  $config['max_width']  = '1024';
  $config['max_height']  = '768';

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

  if ( ! $this->upload->do_upload())
  {
   $error = array('error' => $this->upload->display_errors());

   $this->load->view('upload_form', $error);
  }
  else
  {
   $data = array('upload_data' => $this->upload->data());

   $this->load->view('upload_success', $data);
  }
}
}
?>

and this is my view
Code:
<html>
<head>
<title>Upload Form</title>
</head>
<body>

<?php echo $error;?>

<?php echo form_open_multipart('upload/do_upload');?>

<input type="file" name="userfile" size="20" />

<br /><br />

&lt;input type="submit" value="upload" /&gt;

&lt;/form&gt;

&lt;/body&gt;
&lt;/html&gt;



Inserting image - El Forum - 07-31-2012

[eluser]johnpeace[/eluser]
Try loading the file upload class BEFORE you call it's methods.


Inserting image - El Forum - 07-31-2012

[eluser]cerberus478[/eluser]
Hi

I think I did what you said and now I get an error saying that name and path is undefined and that Message: Undefined property: Upload::$db

This is the controller that I edited
Code:
&lt;?php

class Upload extends CI_Controller {

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


}

function index()
{
  $this->load->view('upload_form', array('error' => ' ' ));
  
}

function do_upload()
{
   $config['upload_path'] = './uploads/';
  $config['allowed_types'] = 'gif|jpg|png';
  $config['max_size'] = '1000';
  $config['max_width']  = '1024';
  $config['max_height']  = '768';
  
  $this->load->library('upload', $config);
  
  $image_data = $this->upload->data();
   $insert_data = array(
                    'name' => $image_data['name'],
                    'path'=> $image_data['path'] . 'uploads/'. $image_data['name'],
                  
                     );

          $this->db->insert('upload2', $insert_data);//load array to database
        
        


  

  if ( ! $this->upload->do_upload())
  {
   $error = array('error' => $this->upload->display_errors());

   $this->load->view('upload_form', $error);
  }
  else
  {
   $data = array('upload_data' => $this->upload->data());

   $this->load->view('upload_success', $data);
  }
}
}
?&gt;



Inserting image - El Forum - 07-31-2012

[eluser]CroNiX[/eluser]
Try inserting your data (which relies on data from the upload being processed) after you process the image, which gets triggered with $this->upload->do_upload()

-load image library/config
-if do_upload() succeeds, THEN save in db, display success view (might also want to test to see if the insert was successful first)
-if not, display upload error