11

im trying to write a code where i can submit a form enter the contents in a database, at the same time perform a file upload and have it stored in a folder inside my server

the folder location is called uploads which is located at the root of my site

here is my code

controller (site.php)

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

 class Site extends CI_controller {

public function __construct()
{
    parent::__construct();
    // Your own constructor code
    $this->load->model("site_model");
    $this->load->helper(array('form', 'url'));
} 

public function cmain($type,$page)
{
    $data = $this->_initialize_data(); //this is just a bunch of variables that im calling in another function
    $data['type'] = $type;
    $data['page'] = $page;
    $this->load->vars($data);
    $this->load->view('site/cmain');
}


public function m1()
        {               

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

            if(isset($_POST['m1']))
            {
                $suffix = $this->input->post("suffix");
                $fn = $this->input->post("fn");
                $mn = $this->input->post("mn");
                $ln = $this->input->post("ln");


                $newdata = array('suffix'=>$suffix,
                                'fn'=>$fn,
                                'mn'=>$mn,
                                'ln'=>$ln,

                                 );
                //this code is for the file upload
                           $config['upload_path'] = 'uploads';
                           $config['allowed_types'] = '*';

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

                           $data = array('upload_data' => $this->upload->data());
                 //end of file upload codes                 

                $this->db->insert('myself', $newdata); 

                redirect(base_url() . "site/complaint");    

            }

        }

view (cmain.php)

<form action="<?php echo base_url();?>site/m1" name="details" id="details" method="post" enctype="multipart/form-data">
        <table class='table' width="100%">
            <tr>
            <td colspan='2'>
                <b><font color="#3B608C">Personal Information</font></b>
            </td>
        </tr>
        <tr>
            <td>
                Suffix  (e.g. Jr., III)
            </td>
            <td>
                <input type="text" name="suffix" id="suffix" value="">
            </td>
        </tr>
        <tr>
            <td>
                First Name*
            </td>
            <td>
                <input type="text" name="fn" id="fn" value="">
            </td>
        </tr>
        <tr>
            <td>
                Middle Name*
            </td>
            <td>
                <input type="text" name="mn" id="mn" value="">
            </td>
        </tr>
        <tr>
            <td>
                Last Name*
            </td>
            <td>
                <input type="text" name="ln" id="ln" value="">
            </td>
        </tr>
</table>

            <table>
        <tr>
        <td width="50%">
        Please attach documents pertinent to these complaints. <br>
        (Attach a zip file if more than one document)<br>
        </td>
        <td align="center">
        <input name = "userfile" type="file" class="input-xlarge" id = "userfile" />
        </td></tr>
        </table>
        <input type="submit" value="Submit Form" class="pull-right" id="submit" name="m1"/>
</form>

the form posts properly in the database like the suffix,fn,ln and mn however the file upload isnt working

i tried my best to follow what the codeigniter docs samples and only got the lines i think i needed

am i doing something wrong?

thanks

1
  • 1
    try using the validation class. and then set the image upload as a custom callback. Commented Jan 24, 2013 at 10:48

4 Answers 4

6

finally got it working

i used this for the file upload part

                //start of file upload code
                $config['upload_path'] = './uploads/';
                $config['allowed_types'] = '*';
                $this->load->library('upload', $config);
                $this->upload->do_upload();
                $data = $this->upload->data();
                //end of file upload code

and changed the

<form action="<?php echo base_url();?>site/m1" name="details" id="details" method="post" enctype="multipart/form-data">

into

<?php echo form_open_multipart('site/c_upload');?>
Sign up to request clarification or add additional context in comments.

1 Comment

what is c_upload? i don't see a function named c_upload in the controller
1

I think you must have to set file upload preference

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';

Form Helper

$this->load->helper(array('form', 'url'));

For further detail have a look at my blog post

Comments

0
  • Did you set writing permissions for 'uploads' folder? (example: php.net/manual/en/function.chmod.php)

  • Always do test driven development. I got below code block from this url

    if ( ! $this->upload->do_upload())
    {
        $error = array('error' => $this->upload->display_errors());
    
        $this->load->view('upload_form', $error);
    }
    

Comments

0

In your Codeigniter -> Config -> AutoLoad.php; add the following:

  public $helpers = ['form', 'url'];

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.