Reputation: 81
Below i have code of my form data with image but it was not working. i tried to insert data without image the data inserted into db. but when i tried to insert with image the form error raised and redirecting to targeted page. Below i have mvc code please while giving edited answer also explain me why my code didn't worked and how your code worked instead of copy paste i want to learn concept behind it.please.
//my form view code
<?php echo form_open_multipart('admin/uauthor');?>
<h5><label>Username Here:</label></h5>
<?php echo form_input(['name'=>'aname','class'=>'form-control','placeholder'=>'Enter your name here']);?>
<h5><label>Mail Here:</label></h5>
<?php echo form_input(['name'=>'amail','class'=>'form-control','placeholder'=>'Enter your Mail here']);?>
<h5><label>Password Here:</label></h5>
<?php echo form_input(['name'=>'apwd','type'=>'password','class'=>'form_control','placeholder'=>'Enter your password here']);?>
<h5><label>Phone Here:</label></h5>
<?php echo form_input(['name'=>'aphone','class'=>'form-control','placeholder'=>'Enter your phone here']);?>
<h5><label>Profile Pic Here:</label></h5>
<?php echo form_upload(['name'=>'apic','class'=>'form-control']);?>
<select name="alevel" class="form-control">
<option value="admin">Admin</option>
<option value="author">Author</option>
</select><br>
<button type="submit" class="btn btn-success">Add Author</button>
<?php form_close();?>
----------
//my Controller code
public function uauthor()
{
$this->form_validation->set_rules('aname','Author Name','required');
$this->form_validation->set_rules('amail','Author Mail','required|is_unique[admin.amail]',array(
'required' => 'You have not provided %s.',
'is_unique' => 'This %s already exists.'
));
$this->form_validation->set_rules('aphone','Author Phone','required|is_unique[admin.aphone]',array(
'required' => 'You have not provided %s.',
'is_unique' => 'This %s already exists.'
));
$this->form_validation->set_rules('apwd','Author Password','required');
if ($this->form_validation->run()){
$config = [
'upload_path' => './uploads/authors',
'allowed_types' => 'jpg|gif|png|jpeg',
];
$this->load->library('upload', $config);
$data= $this->input->post();
if(! $this->upload->do_upload()){
$this->session->set_flashdata('pmsg',"Author Upload Failed Please Try Again");
return redirect('admin/aauthor');
}else{
$info = $this->upload->data();
$image_path = $info['raw_name'] . $info['file_ext'];
$data['apic'] = $image_path;
}
$this->adata->uauthorQ($data);
$this->session->set_flashdata('amsg', 'Author Added Successfully');
return redirect('admin/authors');
}else{
$this->session->set_flashdata('pmsg', validation_errors());
return redirect('admin/aauthor');
}
}
----------
//My Model code
public function uauthorQ($data)
{
return $this->db->insert('admin',$data);
}
Upvotes: 0
Views: 68
Reputation: 19
public function do_upload()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png|pdf';
$config['max_size'] = 100;
$config['max_width'] = 1024;
$config['max_height'] = 768;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload('userfile'))
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('welcome_message', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
html
<?php echo form_open_multipart('upload/do_upload');?>
<input type="file" name="userfile" size="20" />
<br /><br />
<input type="submit" value="upload" />
</form>
Upvotes: 1
Reputation: 1263
do some changes on your controller. inserting data must be as array of fields. so i have changed some $data as array.
$data['aname'] = $this->input->post('aname'); $data['amail'] = $this->input->post('amail'); $data['apwd'] = md5($this->input->post('apwd')); $data['aphone'] = $this->input->post('aphone');
//my Controller code
public function uauthor()
{
$this->form_validation->set_rules('aname','Author Name','required');
$this->form_validation->set_rules('amail','Author Mail','required|is_unique[admin.amail]',array(
'required' => 'You have not provided %s.',
'is_unique' => 'This %s already exists.'
));
$this->form_validation->set_rules('aphone','Author Phone','required|is_unique[admin.aphone]',array(
'required' => 'You have not provided %s.',
'is_unique' => 'This %s already exists.'
));
$this->form_validation->set_rules('apwd','Author Password','required');
if ($this->form_validation->run()){
$config = [
'upload_path' => './uploads/authors',
'allowed_types' => 'jpg|gif|png|jpeg',
];
$this->load->library('upload', $config);
if(! $this->upload->do_upload('apic')){
$this->session->set_flashdata('pmsg',"Author Upload Failed Please Try Again");
return redirect('admin/aauthor');
}else{
$info = $this->upload->data();
$image_path = $info['raw_name'] . $info['file_ext'];
$data['apic'] = $image_path;
$data['aname'] = $this->input->post('aname');
$data['amail'] = $this->input->post('amail');
$data['apwd'] = md5($this->input->post('apwd'));
$data['aphone'] = $this->input->post('aphone');
}
$this->adata->uauthorQ($data);
$this->session->set_flashdata('amsg', 'Author Added Successfully');
return redirect('admin/authors');
}else{
$this->session->set_flashdata('pmsg', validation_errors());
return redirect('admin/aauthor');
}
}
Upvotes: 0
Reputation: 4719
Change this :
$this->upload->do_upload()
to this :
$this->upload->do_upload('apic')
so it will using 'apic'
instead of the default 'userfile'
input field name
Upvotes: 1