CodeIgniter Forums

Full Version: Image Uploader Modification
You're currently viewing a stripped down version of our content. View the full version with proper formatting.

El Forum

At this present point in time I have some code that does the following:

I can edit and I can add a house sale that uploads/edits one image for this particular house and then during the process a thumbnail is created and then the original file name and the thumbnail name is saved to database fields called **imagename** and **imagethumb**.

(*Note: Add and Edit a separate pages*)

What my idea is:

I will create another page that has the name of the houses fed into a dropdown menu so when one is selected and images are selected they will upload.

What my issue is:

1. I am getting myself confused as to what would be the best way to modify my database to enable this change.

2. How would I modify my php code to handle more then one file (How do I handle multiple images and then pass the image for uploading resizing etc ) What is the best option? - within my given idea?

3. Could I have an example of what I should do so I can work off this.

I have included the model and controller (As an **Example**) of my Add Sale but I will also need to edit a image for the respective sale.


    class Sales_model extends CI_Model
        function __construct() {
        function getSalesPage($id = NULL) {
            $query = $this->db->get_where('sales', array('id' => $id), 1);
            if($query->num_rows() == 1) return $query->row();
        } # End getSalesPage
        function getSalesPages($id = NULL) { // $id does nothing
            $query = $this->db->get('sales');
            if($query->num_rows() > 0) return $query->result();
        } # End getSalesPages
        function getSalesContent($id = NULL) {
            $this->db->where('id', $id);
            $query = $this->db->get('sales', 1);
            if($query->num_rows() > 0) {
                $row = $query->result_array();
                return $row;
                return FALSE;
            } # End IF
        } # End getSalesContent
        function addSale($data = NULL) {
            $this->db->insert('sales', $data);
            return TRUE;
        } # End Add Sale    
        function updateSale($id, $content) { //Content id from being passed
            $this->db->where('id', $id);  // selecting the $id to update
            $update = $this->db->get('sales'); // What does $update = well it = get the db sales
            $row = $update->row_array(); // what does $row mean = well it gets the row as an array
            if($update->num_rows() > 0) {
                if(isset($content['imagename']) && isset($content['thumbname'])) {
                #lets delete the image
                #lets delete the thumb.
                    $this->db->where('id', $id);
                    if($this->db->update('sales', $content))
                        return TRUE;
                        return FALSE;
                } # End IF
        } # End Update
        function deleteSale($id){
            $this->db->where('id', $id);
            $q = $this->db->get('sales');
            $row = $q->row_array();
            if ($q->num_rows() > 0){
                //delete from the database
                $this->db->where('id', $id);
                //lets delete the image
                //lets delete the thumb.
            }//END if num_rows
        }//END function deleteSale($id)
    } # End Model

El Forum

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

class Addsale extends CI_Controller
    function __construct()

    function index()

            # Main Data
            $data['title'] = 'Add Sale: ';
            //Set Validation
            $this->form_validation->set_rules('name', 'Name', 'trim|required|xss_clean');
            $this->form_validation->set_rules('location', 'Location', 'trim|required|xss_clean');
            $this->form_validation->set_rules('bedrooms', 'Bedrooms', 'trim|numeric|required|xss_clean');
            $this->form_validation->set_rules('bathrooms', 'Bathrooms', 'trim|numeric|required|xss_clean');
            $this->form_validation->set_rules('condition', 'Condition', 'trim|required|xss_clean');
            $this->form_validation->set_rules('description', 'Description', 'trim|required|xss_clean');
            $this->form_validation->set_rules('price', 'Price', 'trim|required|xss_clean');

            if($this->form_validation->run()) {
            //Set File Settings
            $config['upload_path'] = 'includes/uploads/sales/';
            $config['allowed_types'] = 'jpg|png';
            $config['remove_spaces'] = TRUE;
            $config['overwrite'] = TRUE;
            $config['max_size'] = '1024';
            $config['max_width'] = '1024';
            $config['max_height'] = '768';

            $this->load->library('upload', $config);
            if(!$this->upload->do_upload()) {
                $data['message'] = array('imageError' => $this->upload->display_errors());
            } // Upload error end
                    $data = array('upload_data' => $this->upload->data());
                    $data['success'] = TRUE;
                    $config['image_library'] = 'GD2';
                    $config['source_image'] = $this->upload->upload_path.$this->upload->file_name;
                    $config['new_image'] = 'includes/uploads/sales/thumbs/';
                    $config['create_thumb'] = 'TRUE';
                    $config['thumb_marker'] ='_thumb';
                    $config['maintain_ratio'] = 'FALSE';
                    $config['width'] = '150';
                    $config['height'] = '150';

                    $this->load->library('image_lib', $config);
                $file_info = $this->upload->data();    
                $content = array(  
                    'name' => $this->input->post('name', TRUE),
                    'location' => $this->input->post('location', TRUE),
                    'bedrooms' => $this->input->post('bedrooms', TRUE),
                    'bathrooms' => $this->input->post('bathrooms', TRUE),
                    'condition' => $this->input->post('condition', TRUE),
                    'description' => $this->input->post('description', TRUE),
                    'price' => $this->input->post('price', TRUE),
                    'imagename' =>$file_info['file_name'],
                     'thumbname' =>$file_info['raw_name'].'_thumb'.$file_info['file_ext']
                }#end else
                } # End Form Validation      
                $data['content'] = $this->load->view('admin/addsale', $data, TRUE);
                $data['sales_pages'] = $this->sales_model->getSalesPages();
                $data['cms_pages'] = $this->navigation_model->getCMSPages();
                $this->load->view('admintemplate', $data);
            } # End Index Function
        } # End Controller