0

I have a core PHP script which allows me to upload text file and import its data into sql database.

I want to do the same thing using Codeigniter. I tried by the screen shows me blank white screen when i put the code in CI application.

Below Is My core PHP script for uploading a file and Importing It:

<?php
include_once 'dbconfig.php';
if(isset($_POST['btn-upload']))
{    

    $file = rand(1000,100000)."-".$_FILES['file']['name'];
    $file_loc = $_FILES['file']['tmp_name'];
    $file_size = $_FILES['file']['size'];
    $file_type = $_FILES['file']['type'];
    $folder="uploads/";
    $location =$_FILES['file'];

    // new file size in KB
    $new_size = $file_size/1024;  
    // new file size in KB

    // make file name in lower case
    $new_file_name = strtolower($file);
    // make file name in lower case

    $final_file=str_replace(' ','-',$new_file_name);

        if(move_uploaded_file($file_loc,$folder.$final_file))
    {
        $sql="INSERT INTO tbl_uploads(file,type,size) VALUES('$final_file','$file_type','$new_size')";
        mysqli_query($connection,$sql);


        $handle = fopen("c:/wamp/www/codeigniter/uploads/$file", "r");

         if ($handle) {
                while (($line = fgets($handle)) !== false) {

                     $lineArr = explode("\t", "$line");
                     //var_dump($lineArr); // to make sure array is ok

                     // instead assigning one by onb use php list -> http://php.net/manual/en/function.list.php            
                     list($emp_id, $date_data, $abc, $def, $entry, $ghi) = $lineArr;

                     // and then insert data
                     mysqli_query($connection,"INSERT INTO `daily_data2` (emp_id, date_data, abc, def, entry, ghi) 
            VALUES ('$emp_id', '$date_data', '$abc', '$def', '$entry', '$ghi')");
                }

                fclose($handle);
            }


        ?>
        <script>
        alert('successfully uploaded');
        window.location.href='index.php?success';
        </script>
        <?php


    }
    else
    {
        ?>
        <script>
        alert('error while uploading file');
        window.location.href='index.php?fail';
        </script>
        <?php
    }

}

?>

I dont know how to do this in Codeigniter. Please guide me here

the Ci Form:

     <h2>Upload CSV To Import Users</h2>
        <form method="post" action="<?php echo site_url('admin/attendance/upload');?>" enctype="multipart/form-data">
            <input type="file" name="userfile"  ><br><br>
            <input type="submit" name="submit" value="UPLOAD" class="btn btn-primary">
        </form>
7
  • why you not use Codeigniter Database methods to this?? Commented Dec 15, 2015 at 10:08
  • i want to use codeigniter method for this but i dont know how to do it @Abdulla Commented Dec 15, 2015 at 10:17
  • @Abdulla I tried to do the same in CI but failed Commented Dec 15, 2015 at 10:17
  • is uploded file CSV ?? Commented Dec 15, 2015 at 10:20
  • @Abdulla Not its a text file that is tab seprated Commented Dec 15, 2015 at 10:21

2 Answers 2

2

Seriously dudes, there is the File Uploading Class with CodeIgniter, it's free, powerfull, errors catching and soooo simply !!

Please, see :

https://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html

I sincerely hope you'll use it :)

Sign up to request clarification or add additional context in comments.

Comments

1

In Controller

## include_once 'dbconfig.php';
## Use defult Databse connection

if(isset($_POST['btn-upload']))
{    

    $file = rand(1000,100000)."-".$_FILES['file']['name'];
    $file_loc = $_FILES['file']['tmp_name'];
    $file_size = $_FILES['file']['size'];
    $file_type = $_FILES['file']['type'];
    $folder="uploads/";
    $location =$_FILES['file'];

    $new_size = $file_size/1024;  
    $new_file_name = strtolower($file);
    $final_file=str_replace(' ','-',$new_file_name);
    $new_name = $folder.$final_file;

    if(!move_uploaded_file($final_file,$new_name)) # Change This
            echo "Error in Upload";
        }
        else{

            $file_uploded = base_url().'uploads/'.$file;

            if (!file_exists($file_uploded)) {
                echo "File Not exist";
            }
            else
            {
                $handle = fopen($file_uplod_path, "r") or die("file cannot open");

                if ($handle) {
                    while (($line = fgets($handle)) !== false) 
                    {
                        $lineArr = explode("\t", "$line");    

                        $result = $this->model_name->insert_file_content($lineArr) ;    
                    }
                    if (fclose($handle)) {
                        redirect(base_url());
                    }

                } 
                else{
                    echo "file cannot open";
                } 
            }
        }      
    }
    else
    {
        echo "Moveing failed";

    }

}

In Model

public function insert_file_details($final_file,$file_type,$new_size)
{

    $data = array(
       'file' => $final_file,
       'type' => $file_type,
       'size' => $new_size,
    );

    if (!$this->db->insert('table_name', $data)) {
        return false;
    }
    else{
        return true;
    }

}

# inserting file in to DB
public function insert_file_content($lineArr)
{

    $data = array(
       'emp_id'     => $lineArr[0],
       'date_data'  => $lineArr[1],
       'abc'        => $lineArr[2],
       'def'        => $lineArr[3],
       'entry'      => $lineArr[4],
       'ghi'        => $lineArr[5],
    );

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

16 Comments

Not tested. So bugs may be there carefully handle those
Yes Okay. For Now it shows me a white screen when i upload any file
change this if(move_uploaded_file($final_file,$folder))
i think there is problem with my form as you see the form
in my controller i am checking if(isset($_POST['btn-upload'])) is this correct?
|

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.