Save image name and send data to database

I am working on a project in which volunteers have to fill out a registration form.

I want volunteers to be able to upload a profile picture and save the name of the picture to the database as well as the post data in the same form.

How can I achieve this?

+3


source to share


2 answers


your question is not clear,

provide, view, controller. anyway see this post, it will help you.

Press here

or



use <?php echo form_open_multipart('yourcontroler/add');?>

in your view file when working with images and text data.

in the controller, the best practice is to define two functions to load the image with the other to validate and filter the data. how

             public function do_upload() {
                $path = '_assets/images/';
                $fileName = 'userpic.png';
                $config = array(
                    'allowed_types' => 'jpg|png|gif',
                    'upload_path' => $path,
                    'max_size' => '200',
                    'overwrite' => true,
                    'file_name' => $fileName,
                    'max_height' => "300",
                    'max_width' => "300",

                );

                $this->load->library('upload', $config);
                if (!$this->upload->do_upload('logo')) {
                    echo "error ";
                    die;
                } else {
                    $imageData = $this->upload->data();
                }

            }

      

and for storing data use a simple function that you usually do with form input.

+2


source


On the successful part of the upload form, an if statement can be executed as shown below to update

Update

$user_info = $this->get_user();

if ($user_info) {

$image_info = $this->upload_data();

$data = array(
'username' => $user_info['username'],
'image' => $image_info['file_name']
);

// Only updates password if post value true
if(isset($_POST['password'])) {
   $data = array(
      'password' => $this->input->post('password');
   );
}


$this->db->where('id', $user_info['id']);
$this->db->update('tablename', $data);

}

      

Else In the successful part of the upload form can be inserted as shown below

Paste

$image_info = $this->upload_data();

$data = array(
   'username' => $this->input->post('username'),
   'password' => $this->input->post('password')
   'image' => $image_info['file_name']
);


$this->db->insert('tablename', $data);

      

Boot controller



<?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'] = '0'; // Unlimited
        $config['max_width']  = '0'; // Unlimited
        $config['max_height']  = '0'; // Unlimited

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

        // Alternately you can set preferences by calling the initialize function. Useful if you auto-load the class:
        $this->upload->initialize($config);

        $input_name = "userfile";

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

            $this->load->view('upload_form', $error);
        }
        else
        {


            $user_info = $this->get_user();

            if ($user_info) {

                $image_info = $this->upload_data();

                $data = array(
                    'username' => $user_info['username'],
                    'image' => $image_info['file_name']
                );

                $this->db->where('id', $user_info['id']);
                $this->db->update('tablename', $data);

            }

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

    public function get_user() {

        // your user model data

    }
}
?>

      

View

<html>
<head>
<title>Upload Form</title>
</head>
<body>

<?php echo $error;?>

<?php echo form_open_multipart('upload/do_upload');?>
<input type="text" name="name"/>
<input type="password" name="password"/>
<input type="file" name="userfile" size="20" />

<br /><br />

<input type="submit" value="upload" />

</form>

</body>
</html>

      

Download library

Codeigniter 2 http://www.codeigniter.com/userguide2/libraries/file_uploading.html

Codeigniter 3 http://www.codeigniter.com/user_guide/libraries/file_uploading.html

+3


source







All Articles