I am new to the CodeIgniter programming.I want to store and retrieve image from the folder.But when i run the code i found the error like:
First Error:
Upload failed!
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: in
Filename: controllers/main.php
Line Number: 104
Second Error:
A Database Error Occurred
You must use the "set" method to update an entry.
Filename: application/models/main_model.php
Line Number: 80
I am using this code:
In Control:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Main extends CI_Controller{
public function __construct()
{
parent::__construct();
$this->load->model('main_model');
$this->load->helper(array('form', 'url'));
}
public function product()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('productname','Product Code','trim|required');
$this->form_validation->set_rules('productcode','Product Code','trim|required');
$this->form_validation->set_rules('productprice','Product Price','trim|required');
$this->form_validation->set_rules('quantity','Quantity','trim|required');
$this->form_validation->set_rules('uploadimage','Upload Image','trim|required');
if($this->form_validation->run()==FALSE)
{
$this->index();
}else
{
if ($this->input->post('upload'))
{
$in=array();
$in['productname'] = $this->input->post('productnamename');
$in['productcode'] = $this->input->post('productcode');
$in['productprice']=$this->input->post('productprice');
$in['quantity']=$this->input->post('quantity');
$in['uploadimage']=$_FILES['image']['name'];
}
if($this->main_model->do_upload()) {
echo $this->upload->display_errors();
}else
{
$this->main_model->save_gallery($in);
header('location:product');
}
$data['images']=$this->main_model->get_images();
$this->load->view('query_view',$data);
}
}
In Model:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Main_model extends CI_Model {
public function __construct()
{
parent::__construct();
}
public function do_upload()
{
$config = array(
'allowed_types' => 'jpg|png|bmp',
'upload_path'=>'./uploads/', //make sure you have this folder
'max_size'=>2000);
$this->load->library('upload',$config);
if ($this->upload->do_upload()) {
echo "Upload success!";
} else {
echo "Upload failed!";
}
$image_data = $this->upload->data();
}
function get_images()
{
$query = $this->db->get('product');
return $query;
}
function save_gallery($in)
{
$save=$this->db->get("product");
if($save->num_rows())
{
$save=$this->db->insert('product',$in);
return $save;
}
}
In View:
<?php foreach ($images as $image):?>
<h1><?php echo $image['a_name'];?></h1>
<h1><?php echo $image['a_details'];?></h1>
<?php echo '<img src ="'. base_url().'images1/'.$image['a_photo'].'" >";
endforeach; ?>
FronPage View:
<?php echo form_open("main/product"); ?>
<p>
<label for="product_name">Product Name:</label>
<input type="text" id="productname" name="productname" value="<?php echo set_value('product_name'); ?>" />
</p>
<p>
<label for="ProductCode">Product Code</label>
<input type="text" id="productcode" name="productcode" value="<?php echo set_value('productcode'); ?>" />
</p>
<p>
<label for="productprice">Product Price:</label>
<input type="text" id="productprice" name="productprice" value="<?php echo set_value('productprice'); ?>" />
</p>
<p>
<label for="Quantity">Quantity:</label>
<select name="quantity" id="quantity" value="<?php echo set_value('quantity'); ?>" /><option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</p>
<p>
<label for="Uploadimage">Upload Image:</label>
<input type="file" name="uploadimage" id="uploadimage" value="<?php echo set_value('uploadimage'); ?>" />
</p>
<p>
<input type="submit" class="greenButton" value="submit" />
</p>
<?php echo form_close(); ?>
First and foremost, read the documentation at http://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html . Follow it verbatim, nothing fancy, no database, no extra conditionals. Get that working and add new functionality incrementally in very small portions. As you encounter problems look around for the answer.
Now for the problem..
You are not getting a value for $this->input->post('upload')
which is only one of many issues.
Your form open should be
<?php echo form_open_multipart("main/product"); ?>
The error below generally indicates that you are passing an empty variable to the insert
function
A Database Error Occurred
You must use the "set" method to update an entry.
Filename: application/models/main_model.php
Line Number: 80
Why are you passing an empty variable? You are calling the do_upload
method which always returns void, so, the TRUE
condition is never met in the code below.
if($this->main_model->do_upload()) {
echo $this->upload->display_errors();
}
else
{
$this->main_model->save_gallery($in);
header('location:product');
}
Verify you are passing the input named upload
in the form, and the condition for upload should be more like this
if(isset($_FILES['upload']['name']))
{
$in=array();
$in['productname'] = $this->input->post('productnamename');
$in['productcode'] = $this->input->post('productcode');
$in['productprice']=$this->input->post('productprice');
$in['quantity']=$this->input->post('quantity');
$in['uploadimage']=$_FILES['image']['name'];
// moved to inside the post('upload') conditional
if($this->main_model->do_upload()) {
echo $this->upload->display_errors();
}
else
{
$this->main_model->save_gallery($in);
header('location:product');
}
}
1) Your form enctype
must be multipart
2) your are checking post
instead of $_FILES
it should be if ($this->input->post('upload'))
to if ($_FILES['upload']['name'])
for this reason it is not coming in your if block therefore $in
is undefined when you call
$this->main_model->save_gallery($in);
when $in
is undefined therefore you see erro You must use the "set" method to update an entry.
in the model
Hope it makes sense
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.