Data update is not working without profile picture - php

In php when I am updating user info into database with profile image then updation is working but when I'm not selecting image then the update is not working.
Here is my controller:
public function editvendor($id = '') {
$this->authAdLogin();
if ($id == '') {
redirect(admin_url() . 'vendorlisting');
} else if ($this->db->where('id', $id)->get('tbl_vendor')->num_rows() == 0) {
redirect(admin_url() . 'vendorlisting');
} else {
$data['vendor_data'] = $this->db->where('id', $id)->get('tbl_vendor')->result_array();
$vendor_data = $data['vendor_data'];
$this->form_validation->set_rules('contact_name', 'Name', 'trim|xss_clean|required');
$this->form_validation->set_rules('contact_mobile', 'Mobile Number', 'trim|xss_clean|required|numericmin_length[10]|max_length[10]');
$this->form_validation->set_rules('contact_land', 'Landline Number', 'trim|xss_clean|numeric');
$this->form_validation->set_rules('contact_email', 'Email', 'trim|xss_clean|required|valid_email');
$this->form_validation->set_rules('incorporation_date', 'Incorporation Date', 'trim|xss_clean|required');
$this->form_validation->set_rules('pancard_no', 'Pan Card', 'trim|xss_clean|required');
$this->form_validation->set_rules('tan_no', 'Tan Number', 'trim|xss_clean|required');
$this->form_validation->set_rules('tin_no', 'Tin Number', 'trim|xss_clean|required');
$this->form_validation->set_rules('service_no', 'Service Number', 'trim|xss_clean|required');
if ($this->form_validation->run() == false) {
$this->load->view('admin/header');
$this->load->view('admin/sidemenu');
$this->load->view('admin/editvendor', $data);
} else {
$id = $vendor_data[0]['id'];
$upload_dir = './uploads/' . $vendor_data[0]['vendor_id'];
if (!is_dir($upload_dir)) {
mkdir($upload_dir);
}
if (isset($_FILES['profile_pic']['name'])) {
$config['upload_path'] = './uploads/' . $vendor_data[0]['vendor_id'];
$config['allowed_types'] = 'gif|jpg|png';
/* $config['max_size'] = '1000000';
$config['max_width'] = '10240000';
$config['max_height'] = '7680000'; */
$config['file_name'] = "prof_" . rand(1, 5000);
$this->load->library('upload');
$this->upload->initialize($config);
if (!$this->upload->do_upload('profile_pic')) {
$error = $this->upload->display_errors();
$this->session->set_flashdata('ppic_error', $error);
redirect(admin_url() . 'editvendor');
} else {
$data = $this->upload->data();
$prof_pic = $data['file_name'];
}
} else {
$prof_pic = $vendor_data[0]['profile_pic'];
}
$update_data = array(
'contact_name' => $this->input->post('contact_name'),
'contact_mobile' => $this->input->post('contact_mobile'),
'contact_land' => $this->input->post('contact_land'),
'contact_email' => $this->input->post('contact_email'),
'mailing_address' => $this->input->post('mailing_address'),
'incorporation_date' => $this->input->post('incorporation_date'),
'pancard_no' => $this->input->post('pancard_no'),
'tan_no' => $this->input->post('mailing_address'),
'mailing_address' => $this->input->post('tan_no'),
'tin_no' => $this->input->post('tin_no'),
'service_no' => $this->input->post('service_no'),
'web_url' => $this->input->post('web_url'),
'business_address' => $this->input->post('business_address'),
'other_certificates' => $this->input->post('other_certificates'),
'facebook_link' => $this->input->post('facebook_link'),
'twitter_link' => $this->input->post('twitter_link'),
'linkedin_link' => $this->input->post('linkedin_link'),
'googleplus_link' => $this->input->post('googleplus_link'),
'about_company' => $this->input->post('about_company'),
'industry_segment' => $this->input->post('industry_segment'),
'ayurveda' => $this->input->post('ayurveda'),
'homeopathy' => $this->input->post('homeopathy'),
'unani' => $this->input->post('unani'),
'profile_pic' => $prof_pic,
);
$this->db->where('id', $id);
$this->db->update('tbl_vendor', $update_data);
$this->session->set_flashdata('vendor_edit', 'Successfully updated.');
redirect(admin_url() . 'editvendor/' . $id);
}
}
}
Please
provide any solution.

Related

how to insert the filename in database and file in folder using codeignator?

I am having a problem with inserting file_path to database and file upload in folder using Codeigniter, I have a form field where user can upload any jpg|png|gif file. But how will I get the file_path of that particular file uploaded and insert it into database and file are stored in floder.
my controller code
public function enqry(){
$data = array();
$postData = array();
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 10240;
$this->load->library('upload', $config);
//if add request is submitted
if ( ! $this->upload->do_upload('upload')) {
$error = array('error' => $this->upload->display_errors());
$this->load->view('imageUploadForm', $error);
}else {
print_r('Image Uploaded Successfully.');
}
if($this->input->post('postSubmit')){
//form field validation rules
$this->form_validation->set_rules('name', 'post name', 'required');
$this->form_validation->set_rules('email', 'post email', 'required');
$this->form_validation->set_rules('mobile', 'post number', 'required');
$this->form_validation->set_rules('nationality', 'post nationality', 'required');
$this->form_validation->set_rules('location','post location','required');
//prepare post data
$postData = array(
'name' => $this->input->post('name'),
'email' => $this->input->post('email'),
'mobile' => $this->input->post('mobile'),
'nationality' => $this->input->post('nationality'),
'location'=>$this->input->post('location'),
'statuse' => '0',
'created_at' => date("Y-m-d H:i:s")
/*'passport_details'=>$this->input->post('passport_details')*/
);
//validate submitted form data
if($this->form_validation->run() == true){
//insert post data
$insert2 = $this->user_mod->insert_enq($postData);
if($insert2){
$this->session->set_userdata('success_msg', 'Post has been added successfully.');
redirect('/User_con/log/');
}else{
$data['error_msg'] = 'Some problems occurred, please try again.';
}
}
}
$data['post'] = $postData;
$data['title'] = 'Create Post';
}
//load the add page view
public function log_enq(){
$this->load->view('templates/header');
$this->load->view('enquiry_reg');
$this->load->view('templates/footer');
}
My view code
<div class="form-group">
<label for="title">File Upload</label>
<input type="file" name="upload" placeholder="upload">
</div>
My model code
public function insert_enq($data = array()) {
$insert2 = $this->db->insert('tbl_enquiry', $data);
if($insert2){
return $this->db->insert_id();
}else{
return false;
}
}
if (!$this->upload->do_upload('upload')) {
$error = array('error' => $this->upload->display_errors());
$this->load->view('imageUploadForm', $error);
}
else {
$data = $this->upload->data('file_name');
$image = 'your_path'.$data;
}
and add $image variable to your your query like
$arrayName = array(
'imapge' => $image,
'more_column' => $more_column_values);
public function enqry(){
$data = array();
$postData = array();
$postData['upload_path'] = './uploads/';
$postData['allowed_types'] = 'gif|jpg|png';
$postData['max_size'] = 10240;
$this->load->library('upload', $postData);
if (!$this->upload->do_upload('upload')) {
$error = array('error' => $this->upload->display_errors());
$this->load->view('user_con/error', $error);
}
else {
$data = $this->upload->data('file_name');
$image = 'your_path'.$data;
}
if($this->input->post('postSubmit')){
$this->form_validation->set_rules('name', 'post name', 'required');
$this->form_validation->set_rules('email', 'post email', 'required');
$this->form_validation->set_rules('mobile', 'post number', 'required');
$this->form_validation->set_rules('nationality', 'post nationality', 'required');
$this->form_validation->set_rules('location','post location','required');
$postData = array(
'name' => $this->input->post('name'),
'email' => $this->input->post('email'),
'mobile' => $this->input->post('mobile'),
'nationality' => $this->input->post('nationality'),
'location'=>$this->input->post('location'),
'statuse' => '0',
'created_at' => date("Y-m-d H:i:s"),
'upload' => $image
);
if($this->form_validation->run() == true){
$insert2 = $this->user_mod->insert_enq($postData);
if($insert2){
$this->session->set_userdata('success_msg', 'Post has been added successfully.');
redirect('/User_con/log/');
}else{
$data['error_msg'] = 'Some problems occurred, please try again.';
}
}
}
$data['post'] = $postData;
$data['title'] = 'Create Post';
}
$config = array(
'upload_path' =>'./uploads/',
'allowed_types' =>'jpg|jpeg|png|gif',
'max_size' => '5000KB');
$this->load->library('upload',$config);
$this->upload->initialize($config);
Replace this code your code....and cheack......

How to set a default image in if user not defined in codeigniter

My controller is but how I insert a default image name in database if user not upload any image when he/she input his details in form.
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Student extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('student_model');
$this->load->model('hostelinfo_model');
$this->load->model('options_model');
$this->load->model('upload_model');
$this->load->library('form_validation');
$this->load->library('upload');
}
public function index() {
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
$this->form_validation->set_rules('student_id', 'Student ID', 'required|trim|xss_clean|callback_student_id_check');
$this->form_validation->set_rules('student_name', 'Student Name', 'required|trim|xss_clean');
$this->form_validation->set_rules('father_name', 'Father Name', 'required|trim|xss_clean');
$this->form_validation->set_rules('program_name', 'Progrem Name', 'required|trim|xss_clean');
$this->form_validation->set_rules('mobile', 'Mobile No', 'required|trim|xss_clean|is_unique[student.mobile]|max_length[11]|min_length[11]');
$this->form_validation->set_rules('email', 'Email ID', 'trim|xss_clean|is_unique[student.email]|valid_email');
$this->form_validation->set_rules('hostel_name', 'Hostel Name', 'required|trim|xss_clean');
if ($this->form_validation->run() == FALSE) {
$this->load->view('header1');
$this->load->view('book_hostel');
$this->load->view('footer');
} else {
$config['upload_path'] = 'uploads';
$config['allowed_types'] = 'jpeg|jpg|png';
$config['max_size'] = '2048';
$config['encrypt_name'] = true;
$this->upload->initialize($config);
if (!$this->upload->do_upload('image_name')) {
$image_data = "noimage.png";
$data['error'] = $this->upload->display_errors();
$this->load->view('header');
$this->load->view('book_hostel', $data);
$this->load->view('footer');
}else{
$this->form_validation->set_rules('image_name', 'Upload Image', 'trim|xss_clean');
if ($this->form_validation->run($this) == FALSE) {
$data['error'] = '';
$this->load->view('header1');
$this->load->view('book_hostel', $data);
$this->load->view('footer');
}
}
$image_data = $this->upload->data();
$data = array(
'image_name' => $image_data['file_name'],
'student_id' => $this->input->post('student_id'),
'student_name' => $this->input->post('student_name'),
'father_name' => $this->input->post('father_name'),
'program_name' => $this->input->post('program_name'),
'mobile' => $this->input->post('mobile'),
'email' => $this->input->post('email'),
'hostel_name' => $this->input->post('hostel_name')
);
$this->student_model->form_insert($data);
//$this->sendEmail();
$data['message'] = 'Data Inserted Successfully';
redirect('hostel');
}
}
}
first check if user not upload any image
$default_image=0;
if($_FILES['image_name']['tmp_name'] != '') {
if (!$this->upload->do_upload('image_name')) {
$default_image =1;
}else{
$this->form_validation->set_rules('image_name', 'Upload Image', 'trim|xss_clean');
if ($this->form_validation->run($this) == FALSE) {
$data['error'] = '';
$this->load->view('header1');
$this->load->view('book_hostel', $data);
$this->load->view('footer');
}
}
}else {
$default_image=1;
}
if($default_image) {
$image_data = "noimage.png";
$data['error'] = $this->upload->display_errors();
$this->load->view('header');
$this->load->view('book_hostel', $data);
$this->load->view('footer');
}
check to see if the file was uploaded.
if (!empty($_FILES['image']['name']))
{
if (!$this->upload->do_upload('image'))
{
// Name isn't empty so a file must have been selected
$data['error'] = $this->upload->display_errors();
$this->load->view('header');
$this->load->view('book_hostel', $data);
$this->load->view('footer');
}
else
{
$image_data = $this->upload->data();
}
}else
{
// No file selected - set default image
$image_data['file_name'] = "noimage.png"
}
$data = array(
'image_name' => $image_data['file_name'],
'student_id' => $this->input->post('student_id'),
'student_name' => $this->input->post('student_name'),
'father_name' => $this->input->post('father_name'),
'program_name' => $this->input->post('program_name'),
'mobile' => $this->input->post('mobile'),
'email' => $this->input->post('email'),
'hostel_name' => $this->input->post('hostel_name')
);
$this->student_model->form_insert($data);
//$this->sendEmail();
$data['message'] = 'Data Inserted Successfully';
redirect('hostel');
This could be refactored further but the point is that you can check $_FILES['field_name']['name'] to see if a file was selected.

uploading image in codeigniter controller

i'am not able to do upload image with lines of code in function add()
just provide me with some solution for uploading image
public function add()
{
if ($this->input->server('REQUEST_METHOD') === 'POST')
{
$this->form_validation->set_rules('image', 'image', 'required');
$this->form_validation->set_rules('text', 'text', 'required');
$this->form_validation->set_error_delimiters('<div class="alert alert-error"><a class="close" data-dismiss="alert">×</a><strong>', '</strong></div>');
if ($this->form_validation->run())
{
**$data_to_insert = array(
'image' => $this->input->post('image'),
'text' => $this->input->post('text'),**
);
if($this->home_banner_model->insert_home_banner($data_to_insert)){
$data['flash_message'] = TRUE;
}else{
$data['flash_message'] = FALSE;
}
}
}
$data['main_content'] = 'admin/home_banner/add';
$this->load->view('includes_admin/template', $data);
}
$config = array(
'upload_path' => 'uploadPath',
'allowed_types' => 'jpg,jpeg',
'max_size' => 1500
);
$this->load->library('upload', $config);
if(isset($_FILES['field_name']) && $_FILES[field_name]['name'] != NULL)
if($this->upload->do_upload('field_name'))
{
$upload_data = $this->upload->data();
$data_to_insert = array(
'attachment_link' => 'uploadPath/'.$upload_data['file_name'],
'attachment_size' => $upload_data['file_size']
// u can add parameters as for ur table to save
);
$this->home_banner_model->insert_home_banner($data);
}
else
{
echo $this->upload->display_errors();
}

validating the captcha codeigniter

hey guys im trying to validate a captcha code in codeigniter. is there an easy way to validate the captcha? here is my code and it is not working because everytime it loads the page it will call a new captcha which will replace the word in the session.
public function index() {
$originalString = array_merge(range(0,9), range('a','z'), range('A', 'Z'));
$originalString = implode("", $originalString);
$captcha = substr(str_shuffle($originalString), 0, 6);
$vals = array(
'word' => $captcha,
'img_path' => './captcha/',
'img_url' => base_url().'captcha/',
'font_path' => './system/fonts/texb.ttf',
'img_width' => 150,
'img_height' => 50,
'expiration' => 7200 );
$cap = create_captcha($vals);
$captchaImage = $cap['image'];
$this->session->set_userdata($cap);
if(isset($_POST['register'])) {
$this->form_validation->set_rules('firstName', 'First Name', 'required');
$this->form_validation->set_rules('lastName', 'Last Name', 'required');
$this->form_validation->set_rules('emailAddress', 'Email', 'required|valid_email');
$this->form_validation->set_rules('username', 'Username', 'required|min_length[6]');
$this->form_validation->set_rules('password', 'Password', 'required|matches[confirm-password]|min_length[6]');
$this->form_validation->set_rules('confirm-password', 'Password Confirm', 'required');
$this->form_validation->set_rules('secretquestion', 'Secret Question', 'required');
$this->form_validation->set_rules('answer', 'Answer', 'required');
$this->form_validation->set_rules('inputCode', 'Captcha', 'required|');
if ($this->form_validation->run() == TRUE) {
$user = $this->Account_Model->validation($_POST['username']);
if($_POST['inputCode'] != $this->session->userdata('word')){
echo $_POST['inputCode'] .' = ' .$this->session->userdata('word');
$this->_error = 'Code does not match the image';
} else {
if(empty($user)) {
$this->load->library('upload');
$accountId = $this->Account_Model->addUser($_POST);
$config['upload_path'] = './assets/uploads/avatars';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$config['file_name'] = $_POST['username'];
$this->upload->initialize($config);
$this->load->library('upload', $config);
if ( !$this->upload->do_upload('avatar'))
{
$error = array('error' => $this->upload->display_errors());
}
if($accountId){
$this->_body = array(
'username' => $_POST['username'],
'email' => $_POST['emailAddress'],
'secretQuestion' => $_POST['secretquestion'],
'answer' => $_POST['answer'],
'captchaImage' => $captchaImage
);
$this->_template = 'register_success';
return $this->_renderPage();
}
}
}
}
}
$this->_body = array(
'secretQuestions' => $this->questions,
'captchaImage' => $captchaImage,
'error' => $this->_error
);
return $this->_renderPage();
}
is there a better way to do this??.. please help.. tnx in advanced..
Maybe the easiest way would be to not create a new captcha once the user submits the form, or at least not update the session.
if(!$_POST){
$this->session->set_userdata($cap);
}

Codeigniter- form with optional file uploading field working unexpectedly

I have a form which asks for user's name and description and an optional field of image uploading. When the user uploads the image I want the name of the image to be changed and stored into the database and if no image is uploaded then a default name is stored in the database. It works fine if user uploads an image but if he does not then nothing is being uploaded into the database.
This is the controller function :
function store()
{
$this->load->model('campus_m');
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$config['file_name'] = preg_replace('/[^a-z0-9]+/i','-',iconv('UTF-8','ASCII//TRANSLIT',$this->input->post('name')));
$config['file_name'] = trim($config['file_name'],'-').now().'.jpg';
$this->load->library('upload', $config);
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('goods', 'Goods', 'required');
$this->form_validation->set_rules('name', 'Name', 'required|max_length[12]');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('campus_write_v');
}
else
{
print_r($_FILES['userfile']);
if (empty($_FILES['userfile'])) {
if(!$query = $this->campus_m->create_review("Marla-overdoses1360186300.jpg")){
$data['write_campus'] = 'The answer has not been stored.';
$this->load->view('campus_write_v', $data);
}
else {
$data['write_campus'] = 'The answer has been stored. ';
$this->load->view('campus_write_v', $data);
}
}
else
{
if($this->upload->do_upload()){
if(!$query = $this->campus_m->create_review($config['file_name'])){
$data['write_campus'] = 'The answer has not been stored.';
$this->load->view('campus_write_v', $data);
}
else {
$data['write_campus'] = 'The answer has been stored. ';
$this->load->view('campus_write_v', $data);
}
}
else
{
$error = array('error' => $this->upload->display_errors());
foreach ($error as $rows => $r)
{
echo $r ;
}
$this->load->view('campus_write_v');
}
}
}
}
And this is the view :
<?php
$attributes = array('id' => 'contactform');
echo form_open_multipart('campus/store', $attributes);
?>
<div>
<?php
echo form_label('Title of Area');
$data = array(
'name' => 'name',
'id' => 'name',
'placeholder' => 'Location and name of the place',
'required' => 'required',
'value' => set_value("name")
);
echo form_input($data);
?>
</div>
<div>
<?php
$data = array(
'name' => 'goods',
'id' => 'goods',
'placeholder' => 'Tell us about the place',
'required' => 'required',
'value' => set_value("goods"),
'rows' => '20',
'cols' => '50'
);
echo form_textarea($data);
?>
</div>
<div>
<input type="file" id="userfile" name="userfile" size="20" />
</div>
<div>
<?php
$data = array(
'class' => 'button',
'value' => 'Submit',
'id' =>"submit"
);
echo form_submit($data);
?>
</div>
<?php echo form_close();
?>
</div>
I will solve this in this way:
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$this->load->library('upload');
$this->upload->initialize($config);
if($this->upload->do_upload('userfile')){
$data = $this->upload->data();
$photo['image'] = $data['file_name']; // Name of image
} else {
$photo['image'] = "Name"; // Name that you want
}
This is the short code of uploads controller.

Categories