Galería en Codeigniter

A continuacíon les traigo una galería realizada en codeigniter.

g1

Para el desarrollo utilizamos lo siguiente:

  • Codeigniter 3.0.6
  • Mysql
  • bootstrap
  • fancybox

Pasos para configurar

  • Configurar la ruta en config.php
  • Configurar la conexion la base de datos en el archivo database.php
  • Crear la base de datos que esta en el archivo .sql

$config['base_url'] = 'http://localhost/galeriaci/';

Para entrar al administrador agregas a tu ruta base el directorio admin/ y escribes usuario: administrador y clave: 123456 la clave esta encritada en sha1.

g3

Dentro de las funciones que encontramos esta crear categorias y subir las imagenes.

Como fue desarrollado, utilizaremos el ejemplo crear una imagen a la galería

Controlador


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

class Galerias extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('categorias_model');
        $this->load->model('galerias_model');
    }

    // INDEX 
    public function index($index = FALSE)
    {
        if( $this->session->logged_in === TRUE){
        $inicio = 0;
        $limite = 2; // Numero de registros por listado

        if($index){
            $inicio = ($index - 1) * $limite;
        }

        $this->load->library('pagination');

        // $route['pagina/(:num)'] = 'home/index/$1';
        // base_url().'pagina/';

        $data['galerias'] = $this->galerias_model->get_galerias($inicio, $limite);

        $config['base_url'] = base_url().'admin/galerias/index/';
        $config['total_rows'] = count($this->galerias_model->get_galerias());
        $config['per_page'] = $limite;
        $config['use_page_numbers'] = TRUE;

        $config['full_tag_open'] = '<ul class="pagination">';
        $config['full_tag_close'] = '</ul>';

        $config['first_link'] = 'Primero';

        $config['first_tag_open'] = '<li>';
        $config['first_tag_close'] = '</li>';

        $config['last_link'] = 'Ultimo';

        $config['last_tag_open'] = '<li>';
        $config['last_tag_close'] = '</li>';

        $config['next_link'] = '&gt;';
        $config['next_tag_open'] = '<li>';
        $config['next_tag_close'] = '</li>';

        $config['prev_link'] = '&lt;';
        $config['prev_tag_open'] = '<li>';
        $config['prev_tag_close'] = '</li>';

        $config['cur_tag_open'] = '<li class="active"><a><b>';
        $config['cur_tag_close'] = '</b></a></li>';

        $config['num_tag_open'] = '<li>';
        $config['num_tag_close'] = '</li>';

        $this->pagination->initialize($config);

        $this->load->view('admin/templates/header');
        $this->load->view('admin/galerias/index', $data);
        $this->load->view('admin/templates/footer');
        }else{
            redirect('admin/login');
        }
    }

    // FORMULARIO PARA CREAR
    public function create()
    {
        if( $this->session->logged_in === TRUE){
        $data['categorias'] = $this->categorias_model->get_categorias();

        $this->load->view('admin/templates/header');
        $this->load->view('admin/galerias/create', $data);
        $this->load->view('admin/templates/footer');
        }else{
            redirect('admin/login');
        }
    }

    // SUBIR IMAGEN
    public function do_upload()
    {
        $config['upload_path']          = './upload/';
        $config['allowed_types']        = 'gif|jpg|png';
        $config['max_size']             = 2000;
        $config['max_width']            = 5000;
        $config['max_height']           = 5000;

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

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

            $this->load->view('admin/templates/header');
            $this->load->view('admin/galerias/create', $error);
            $this->load->view('admin/templates/footer');
        }
        else
        {
            $file_info = $this->upload->data();
            $imagen = $file_info['file_name'];

            $this->galerias_model->save($imagen);

            $config['image_library'] = 'gd2';
            $config['source_image'] = './upload/'.$imagen;
            $config['create_thumb'] = TRUE;
            $config['maintain_ratio'] = TRUE;
            $config['thumb_marker'] = FALSE;
            $config['new_image'] = './upload/tumb_'.$imagen;
            $config['width']         = 300;
            $config['height']       = 300;

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

            $this->image_lib->resize();

            redirect('admin/galerias');
        }
    }

    // FORMULARIO PARA MODIFICAR
    public function edit($id){

        $data['categorias'] = $this->categorias_model->get_categorias();
        $data['galeria'] = $this->galerias_model->getGaleria($id);

        $this->load->view('admin/templates/header');
        $this->load->view('admin/galerias/edit', $data);
        $this->load->view('admin/templates/footer');

    }

    // CONTROLADOR QUE ACTUALIZA
    public function update(){
        $this->galerias_model->update();
        redirect('admin/galerias');
    }

    // ELIMINA IMAGEN
    public function delete($id)
    {
        $this->galerias_model->delete($id);
        redirect('admin/galerias');
    }

}

Nuestro modelo queda de la siguiente forma.

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

class Galerias_model extends CI_Model
{
    
    // LISTADO DE LAS IMAGENES
    public function get_galerias($inicio = FALSE, $limite = FALSE)
    {
        if($inicio !== FALSE && $limite !== FALSE){
            $this->db->limit($limite, $inicio);
        }

        $query = $this->db->get('imagenes');
        return $query->result();
    }

    // GUARDAR IMAGENES
    public function save($imagen)
    {
        $slug = url_title(convert_accented_characters($this->input->post('titulo')), 'dash', TRUE);

        $data = array(
            'titulo' => $this->input->post('titulo'),
            'slug' => $slug,
            'imagen' => $imagen,
            'idcategoria' => $this->input->post('categoria'),
            );

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

    // lISTAR IMAGENES POR ID
    public function getGaleria($id)
    {
        $this->db->where('id', $id);
        $query = $this->db->get('imagenes');
        return $query->row();
    }

    // lISTAR IMAGENES POR RUTA
    public function get_galeria($slug)
    {
        $this->db->where('slug', $slug);
        $query = $this->db->get('imagenes');
        return $query->row();
    }

    // lISTAR por categoria
    public function get_galerias_categoria($slug)
    {
        $this->db->select('imagenes.id, imagenes.titulo, imagenes.slug, imagenes.imagen');
        $this->db->from('imagenes');
        $this->db->join('categorias', 'imagenes.idcategoria = categorias.id');
        $this->db->where('categorias.slug', $slug);
        $query = $this->db->get();
        return $query->result();
    }


    // ACTUALIZAR IMAGENES
    public function update()
    {
        $slug = url_title(convert_accented_characters($this->input->post('titulo')), 'dash', TRUE);

        $data = array(
            'titulo' => $this->input->post('titulo'),
            'slug' => $slug,
            'idcategoria' => $this->input->post('categoria')
            );
        $this->db->where('id', $this->input->post('id'));

        $this->db->update('imagenes', $data);
    }

    // ELIMINA IMAGENES
    public function delete($id)
    {
        $this->db->where('id', $id);
        $this->db->delete('imagenes');
    }
}

g4

Nuestra vista de listado quedaria de la siguiente manera

<h1>Galerias</h1>

    <table class="table table-bordered table-hover">
      <thead>
        <tr>
          <th>Imagen</th>
          <th>Nombre</th>
          <th>Acciones</th>
        </tr>
      </thead>
      <?php foreach ($galerias as $galeria): ?>
      <tr>
        <td><img src="<?php echo site_url('upload/tumb_'.$galeria->imagen); ?>" /></td>
        <td>
          <?php echo $galeria->titulo; ?> <br/><br/>
          <a href="<?php echo base_url('imagen/'.$galeria->slug); ?>" target="_blank" class="btn btn-default">
            <i class="fa fa-link"></i> Ver Imagen
          </a>
        </td>
        <td>
          <a href="<?php echo site_url('admin/galerias/edit/' . $galeria->id); ?>" class="btn btn-xs btn-warning"><i class="glyphicon glyphicon-pencil"></i></a>
          <a href="<?php echo site_url('admin/galerias/delete/' . $galeria->id); ?>" class="btn btn-xs btn-danger"><i class="fa fa-trash"></i></a>
        </td>
      </tr>
    <?php endforeach; ?>
  </table>

  <?php echo $this->pagination->create_links(); ?></pre>
<pre>

 

 

Deja un comentario