Saltar al contenido

Página en codificador con ejemplo paso a paso

Las bases de datos son entidades vivientes. Crecen a medida que pasa el tiempo. Al diseñar aplicaciones, debemos tener en cuenta la gran cantidad de registros que los usuarios necesitan para navegar. La página nos permite dividir nuestros resultados en pequeñas secciones manejables. La siguiente imagen muestra un ejemplo de una página de búsqueda de Google.

En este tutorial, aprenderá cómo replicar los resultados de la base de datos en CodeIgniter usando la biblioteca de páginas. Este tutorial asume que está familiarizado con los conceptos básicos de CodeIgniter Active Record. Si no es así, puede leer los tutoriales anteriores. La otra suposición que se hace es que ya ha descargado CodeIgniter.

En este tutorial, aprenderá:

Configuración de la base de datos

Comenzaremos creando la base de datos y agregando algunos registros ficticios. Será una base de datos de una sola tabla con 50 registros.

Ejecute el siguiente script en MySQL para crear la tabla de autor de la base de datos. Envíe 50 registros ficticios.


CREATE SCHEMA ci_pagination;

DROP TABLE IF EXISTS `authors`;

CREATE TABLE `authors` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `last_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `birthdate` date NOT NULL,
  `added` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (1, 'Brielle', 'O'Hara', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1974-05-21', '1999-09-17 19:17:28');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (2, 'Flavio', 'Lehner', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1971-10-14', '1998-09-09 00:25:06');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (3, 'Elmira', 'Johns', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1983-11-28', '2015-02-07 15:56:43');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (4, 'Elza', 'Mitchell', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1989-03-08', '1992-08-21 00:21:39');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (5, 'Viva', 'Greenfelder', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1995-04-17', '2017-04-30 05:55:39');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (6, 'Maxwell', 'VonRueden', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1994-07-01', '1996-05-08 23:30:14');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (7, 'Deontae', 'Becker', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1992-02-19', '2017-07-22 11:49:15');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (8, 'Sylvester', 'Christiansen', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1990-09-03', '2004-05-08 08:15:37');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (9, 'Torrey', 'Strosin', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1999-10-09', '2009-08-30 21:30:44');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (10, 'Kelli', 'Smitham', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2012-11-07', '1986-01-22 20:52:57');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (11, 'Abigale', 'Schuppe', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2018-02-18', '1994-05-07 06:26:36');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (12, 'Letha', 'Gleason', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2009-02-06', '1998-05-25 04:37:54');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (13, 'Sienna', 'Upton', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2017-08-17', '2009-08-08 19:08:10');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (14, 'Harley', 'Gutkowski', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1987-11-30', '1998-07-31 11:08:01');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (15, 'Lois', 'Bednar', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2002-02-11', '2001-07-26 15:04:16');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (16, 'Gail', 'McDermott', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1987-03-30', '2004-12-15 20:38:29');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (17, 'Sydney', 'Strosin', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1985-04-29', '2010-08-07 08:50:35');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (18, 'Anne', 'Cremin', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1976-02-15', '1980-03-25 05:29:41');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (19, 'Norberto', 'Bergnaum', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1971-03-11', '1993-03-20 23:36:25');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (20, 'Arvid', 'Johns', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2016-01-03', '1995-04-30 17:07:15');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (21, 'Bernita', 'Fay', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1983-12-26', '1987-02-23 16:55:28');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (22, 'Gonzalo', 'Gorczany', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1987-10-19', '2016-10-18 19:25:46');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (23, 'Jackie', 'Klein', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1971-01-20', '2010-11-16 02:58:05');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (24, 'Andrew', 'Kessler', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1984-08-07', '1971-12-15 08:46:42');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (25, 'Claire', 'Hudson', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1984-12-19', '1991-07-04 14:35:53');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (26, 'Prudence', 'Runte', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2008-12-27', '1985-09-30 04:57:55');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (27, 'Destinee', 'Romaguera', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1978-11-09', '1997-11-09 19:58:08');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (28, 'Marianna', 'Harvey', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2013-08-28', '1990-08-06 19:29:19');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (29, 'Eloy', 'Lakin', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1989-12-08', '1974-03-16 03:21:16');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (30, 'Rubie', 'McClure', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1987-09-12', '1998-07-02 10:45:36');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (31, 'Marisa', 'Stracke', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1975-05-28', '1975-03-19 00:57:35');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (32, 'Jacey', 'Beatty', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1979-12-17', '1971-01-21 16:50:58');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (33, 'Idella', 'Ruecker', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2009-09-15', '1996-04-19 22:27:31');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (34, 'Dimitri', 'Bednar', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1998-12-02', '2008-12-30 23:29:57');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (35, 'Elfrieda', 'Smitham', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2018-07-23', '1972-04-01 07:52:25');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (36, 'Dwight', 'Walter', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2016-08-15', '1994-07-02 11:06:55');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (37, 'Macie', 'Fay', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1976-01-29', '2005-12-13 18:44:46');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (38, 'Lori', 'Kshlerin', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1983-04-08', '1986-01-18 16:03:52');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (39, 'Jeffry', 'Paucek', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2002-10-02', '2004-03-29 07:06:03');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (40, 'Yvonne', 'Bernhard', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2017-11-04', '1986-12-15 23:55:23');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (41, 'Ludwig', 'Heathcote', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1981-02-09', '2000-08-02 20:45:48');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (42, 'Jadyn', 'Wiegand', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1982-06-16', '1980-12-05 13:09:37');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (43, 'Ferne', 'Smitham', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1996-12-17', '1984-11-18 19:26:27');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (44, 'Meta', 'Corkery', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1972-03-31', '2007-01-20 00:07:31');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (45, 'Toni', 'Wolf', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2012-04-15', '1973-06-22 12:14:37');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (46, 'Zack', 'Luettgen', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2003-05-29', '2018-11-19 05:03:21');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (47, 'Kameron', 'Dietrich', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1973-05-20', '1974-09-16 20:27:17');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (48, 'Zetta', 'Lebsack', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1996-11-04', '2001-03-06 01:33:01');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (49, 'Benny', 'Hane', This email address is being protected from spambots. You need JavaScript enabled to view it.', '2008-02-02', '2006-01-27 22:12:39');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (50, 'Evans', 'Gleason', This email address is being protected from spambots. You need JavaScript enabled to view it.', '1999-09-09', '1990-09-26 17:50:11');

Ahora que hemos creado con éxito nuestra base de datos e insertado registros ficticios, configuremos nuestra aplicación CodeIgniter para comunicarse con la base de datos.

Abra la aplicación / config / database.php

Establezca los parámetros de conexión de la base de datos similares a los siguientes


$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost',
	'username' => 'root',
	'password' => 'melody',
	'database' => 'ci_pagination',
	'dbdriver' => 'mysqli',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

AQUÍ,

Cargaremos automáticamente la biblioteca de la base de datos cuando se inicie nuestra aplicación. Vamos a hacer eso. Abra la aplicación / config / autoload.php

Cargue la biblioteca de la base de datos como se muestra en el siguiente código

$autoload['libraries'] = array('database');

Esa es la configuración de su base de datos.

Ahora trabajamos en el modelo de base de datos para una página.

Modelo de base de datos de páginas de CodeIgniter

Cree un nuevo modelo Authors_model en la aplicación / modelos

Agrega el siguiente código


<?php

class Authors_model extends CI_Model {

    protected $table="authors";

    public function __construct() {
        parent::__construct();
    }

    public function get_count() {
        return $this->db->count_all($this->table);
    }

    public function get_authors($limit, $start) {
        $this->db->limit($limit, $start);
        $query = $this->db->get($this->table);

        return $query->result();
    }
}

AQUÍ,

ese es nuestro modelo de base de datos. Ahora creamos los canales que responderán a los resultados de nuestra página.

Maneras extendidas de CodeIgniter

Abra el archivo de rutas en application / config / route.php

Agrega la siguiente ruta

$route['authors/(:num)'] = 'authors';

AQUÍ,

Pasemos ahora al controlador para nuestros resultados paginados

Controlador de paginación CodeIgniter

Cree un nuevo archivo Authors.php en el directorio application / controllers

Agrega el siguiente código


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

class Authors extends CI_Controller {

    public function __construct() {
        parent:: __construct();

        $this->load->helper('url');
        $this->load->model('authors_model');
        $this->load->library("pagination");
    }

    public function index() {
        $config = array();
        $config["base_url"] = base_url() . "authors";
        $config["total_rows"] = $this->authors_model->get_count();
        $config["per_page"] = 10;
        $config["uri_segment"] = 2;

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

        $page = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0;

        $data["links"] = $this->pagination->create_links();

        $data['authors'] = $this->authors_model->get_authors($config["per_page"], $page);

        $this->load->view('authors/index', $data);
    }
}

AQUÍ,

Eso es todo para nuestro modelo. Ahora creamos la vista que mostrará los resultados de nuestra base de datos.

Cree nuevos autores de directorio en la aplicación / comentarios

Cree un nuevo archivo index.php en la aplicación / comentarios / autores / index.php

Agrega el siguiente código


<!DOCTYPE html>
<html>
    <head>
        <title>CodeIgniter Pagination</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css">
    </head>
    <body>
        <div class="container">
            <h3 class="title is-3">CodeIgniter Database Pagination</h3>
            <div class="column">
                <table class="table is-bordered is-striped is-narrow is-hoverable is-fullwidth">
                    <thead>
                        <tr>
                            <th>ID</th>
                            <th>Contact Name</th>
                            <th>Contact Number</th>
                            <th>Email</th>
                            <th>City</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($authors as $author): ?>
                            <tr>
                                <td><?= $author->id ?></td>
                                <td><?= $author->first_name ?></td>
                                <td><?= $author->last_name ?></td>
                                <td><?= $author->email ?></td>
                                <td><?= $author->birthdate ?></td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
                <p><?php echo $links; ?></p>
            </div>
        </div>
    </body>
</html>

AQUÍ,

Comencemos con nuestra aplicación ahora y veamos los resultados.

En este tutorial, usamos el servidor web PHP incorporado, pero puede usar cualquier servidor web que admita PHP.

Abre la terminal

Ejecute el siguiente comando

cd C:Sitesci-app
php -S localhost:3000

AQUÍ,

Nota: la ruta de la aplicación debe descargar la ruta en la que descargó CodeIgniter. Para hacer esto, puede usar cualquier número de puerto libre en su computadora. No es necesario utilizar el puerto 3000.

Abra el navegador web y cargue la siguiente URL

http: // localhost: 3000 / autores

Debería poder obtener resultados como los siguientes

Resumen

En este tutorial, combinamos los elementos básicos de la página y usamos la biblioteca de páginas en CodeIgniter y la usamos para crear una aplicación que reúne los resultados de la base de datos.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *