Sivutus sisään Codesytytin askel askeleelta -esimerkillä

Tietokannat ovat eläviä kokonaisuuksia. Ne kasvavat ajan myötä. Sovelluksia suunniteltaessa meidän on otettava huomioon ne monet tietueet, joita käyttäjien on selattava. Sivutus antaa meille mahdollisuuden jakaa tulokset pieniin, hallittaviin osiin. Seuraava kuva näyttää esimerkin sivutuksesta Google etsiä.

Sivutus sisään Codesytytyksen

Tässä opetusohjelmassa opit sivuttamaan tietokannan tulokset CodeSytytin sivutuskirjaston avulla. Tämä tutoriaali olettaa, että tunnet perusteet CodeIgniter Active Record. Jos et, voit lukea aiemmat tutoriaalit. Toinen oletus on, että olet jo ladannut CodeSytytin.

Tietokannan kokoonpano

Aloitamme luomalla tietokannan ja lisäämällä siihen joitakin valetietueita. Se on yhden taulukon tietokanta, jossa on 50 tietuetta.

Suorita seuraava komentosarja vastaan MySQL luodaksesi tietokannan kirjoittajataulukon. Lisää 50 valetietuetta.

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', 'alexandre67@example.com', '1974-05-21', '1999-09-17 19:17:28');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (2, 'Flavio', 'Lehner', 'mafalda85@example.net', '1971-10-14', '1998-09-09 00:25:06');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (3, 'Elmira', 'Johns', 'wellington52@example.org', '1983-11-28', '2015-02-07 15:56:43');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (4, 'Elza', 'Mitchell', 'marisol46@example.org', '1989-03-08', '1992-08-21 00:21:39');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (5, 'Viva', 'Greenfelder', 'era94@example.com', '1995-04-17', '2017-04-30 05:55:39');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (6, 'Maxwell', 'VonRueden', 'mcassin@example.net', '1994-07-01', '1996-05-08 23:30:14');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (7, 'Deontae', 'Becker', 'rory.kub@example.org', '1992-02-19', '2017-07-22 11:49:15');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (8, 'Sylvester', 'Christiansen', 'erohan@example.org', '1990-09-03', '2004-05-08 08:15:37');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (9, 'Torrey', 'Strosin', 'adams.luciano@example.net', '1999-10-09', '2009-08-30 21:30:44');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (10, 'Kelli', 'Smitham', 'daniel.catalina@example.com', '2012-11-07', '1986-01-22 20:52:57');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (11, 'Abigale', 'Schuppe', 'andreanne.hayes@example.net', '2018-02-18', '1994-05-07 06:26:36');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (12, 'Letha', 'Gleason', 'eldridge.heaney@example.net', '2009-02-06', '1998-05-25 04:37:54');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (13, 'Sienna', 'Upton', 'monique57@example.org', '2017-08-17', '2009-08-08 19:08:10');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (14, 'Harley', 'Gutkowski', 'breilly@example.net', '1987-11-30', '1998-07-31 11:08:01');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (15, 'Lois', 'Bednar', 'hpouros@example.net', '2002-02-11', '2001-07-26 15:04:16');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (16, 'Gail', 'McDermott', 'reina.kerluke@example.com', '1987-03-30', '2004-12-15 20:38:29');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (17, 'Sydney', 'Strosin', 'dweber@example.net', '1985-04-29', '2010-08-07 08:50:35');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (18, 'Anne', 'Cremin', 'fritz.schmitt@example.com', '1976-02-15', '1980-03-25 05:29:41');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (19, 'Norberto', 'Bergnaum', 'franecki.javon@example.net', '1971-03-11', '1993-03-20 23:36:25');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (20, 'Arvid', 'Johns', 'pschultz@example.org', '2016-01-03', '1995-04-30 17:07:15');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (21, 'Bernita', 'Fay', 'arne96@example.org', '1983-12-26', '1987-02-23 16:55:28');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (22, 'Gonzalo', 'Gorczany', 'velma.huels@example.com', '1987-10-19', '2016-10-18 19:25:46');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (23, 'Jackie', 'Klein', 'gretchen.howe@example.com', '1971-01-20', '2010-11-16 02:58:05');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (24, 'Andrew', 'Kessler', 'collins.faye@example.org', '1984-08-07', '1971-12-15 08:46:42');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (25, 'Claire', 'Hudson', 'madalyn.wunsch@example.org', '1984-12-19', '1991-07-04 14:35:53');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (26, 'Prudence', 'Runte', 'koch.laurie@example.net', '2008-12-27', '1985-09-30 04:57:55');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (27, 'Destinee', 'Romaguera', 'tromp.tiffany@example.com', '1978-11-09', '1997-11-09 19:58:08');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (28, 'Marianna', 'Harvey', 'clovis.schuppe@example.com', '2013-08-28', '1990-08-06 19:29:19');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (29, 'Eloy', 'Lakin', 'wmorissette@example.net', '1989-12-08', '1974-03-16 03:21:16');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (30, 'Rubie', 'McClure', 'haley.louisa@example.net', '1987-09-12', '1998-07-02 10:45:36');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (31, 'Marisa', 'Stracke', 'zachary76@example.org', '1975-05-28', '1975-03-19 00:57:35');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (32, 'Jacey', 'Beatty', 'dahlia.hermann@example.org', '1979-12-17', '1971-01-21 16:50:58');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (33, 'Idella', 'Ruecker', 'elda.reichert@example.com', '2009-09-15', '1996-04-19 22:27:31');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (34, 'Dimitri', 'Bednar', 'freida.parker@example.org', '1998-12-02', '2008-12-30 23:29:57');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (35, 'Elfrieda', 'Smitham', 'padberg.rex@example.org', '2018-07-23', '1972-04-01 07:52:25');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (36, 'Dwight', 'Walter', 'gmosciski@example.org', '2016-08-15', '1994-07-02 11:06:55');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (37, 'Macie', 'Fay', 'uschuppe@example.net', '1976-01-29', '2005-12-13 18:44:46');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (38, 'Lori', 'Kshlerin', 'mhansen@example.net', '1983-04-08', '1986-01-18 16:03:52');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (39, 'Jeffry', 'Paucek', 'alisha35@example.net', '2002-10-02', '2004-03-29 07:06:03');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (40, 'Yvonne', 'Bernhard', 'jaqueline21@example.net', '2017-11-04', '1986-12-15 23:55:23');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (41, 'Ludwig', 'Heathcote', 'marcelino.kirlin@example.org', '1981-02-09', '2000-08-02 20:45:48');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (42, 'Jadyn', 'Wiegand', 'georgianna.swift@example.net', '1982-06-16', '1980-12-05 13:09:37');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (43, 'Ferne', 'Smitham', 'melany22@example.com', '1996-12-17', '1984-11-18 19:26:27');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (44, 'Meta', 'Corkery', 'xharber@example.com', '1972-03-31', '2007-01-20 00:07:31');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (45, 'Toni', 'Wolf', 'wyman.crystal@example.org', '2012-04-15', '1973-06-22 12:14:37');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (46, 'Zack', 'Luettgen', 'deion.konopelski@example.org', '2003-05-29', '2018-11-19 05:03:21');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (47, 'Kameron', 'Dietrich', 'ronaldo.torphy@example.com', '1973-05-20', '1974-09-16 20:27:17');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (48, 'Zetta', 'Lebsack', 'timmothy.vandervort@example.com', '1996-11-04', '2001-03-06 01:33:01');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (49, 'Benny', 'Hane', 'leone.lueilwitz@example.net', '2008-02-02', '2006-01-27 22:12:39');
INSERT INTO `authors` (`id`, `first_name`, `last_name`, `email`, `birthdate`, `added`) VALUES (50, 'Evans', 'Gleason', 'ccummerata@example.org', '1999-09-09', '1990-09-26 17:50:11');

Nyt kun olemme luoneet tietokannan onnistuneesti ja lisänneet siihen valetietueita, konfiguroidaan CodeIgniter-sovellus tietokannan kanssa kommunikointiin.

Avaa application/config/database.php

Aseta tietokantayhteysparametrit seuraavankaltaisesti

$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
);

TÄSSÄ,

  • 'hostname' => 'localhost', asettaa tietokannan isäntänimen
  • 'username' => 'root', määrittää tietokannan nimen
  • 'password' => 'openseseme', asettaa tietokannan salasanan
  • 'database' => 'ci_pagination', määrittää tietokannan nimen.

Lataamme myös tietokantakirjaston automaattisesti, kun sovelluksemme käynnistyy. Tehdään niin. Avaa application/config/autoload.php

Lataa tietokantakirjasto alla olevan koodin osoittamalla tavalla

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

Siinä se tietokannan kokoonpanolle.

Työstetään nyt sivutuksen tietokantamallia

CodeSytyttimen sivutustietokantamalli

Luo uusi malli Authors_model sovelluksessa/malleissa

Lisää seuraava koodi

<?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();
    }
}

TÄSSÄ,

  • suojattu $table = 'tekijät'; määritä suojattu muuttuja, joka määrittää mallin tietokantataulukon nimen
  • julkinen funktio __construct() {…} kutsuu ylätason konstruktorimetodia
  • julkinen funktio get_count() {…} palauttaa tietokantataulukon tietueiden kokonaismäärän. Tämä on tarpeen sivutustarkoituksiin
  • julkinen funktio get_authors($raja, $aloitus) {…} määrittää menetelmän, jota käytetään sivuttujen tulosten hakemiseen tietokannasta. Ylitämme rajan ja lähtöpisteen. Raja määrittää palautettavien tietueiden kokonaismäärän, kun taas aloitus määrittää tietueiden määrän, jotka tulee ohittaa

siinä se tietokantamallillemme. Luodaan nyt reitit, jotka vastaavat sivutettuihin tuloksiimme.

CodeSytyttimen sivutusreitit

Avaa reittitiedosto osoitteessa application/config/routes.php

Lisää seuraava reitti

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

TÄSSÄ,

  • Määrittelemme reitin tekijän, joka hyväksyy valinnaisen numeron parametrin. Valinnainen parametri määritellään käyttämällä avaus- ja sulkemissulkuja. Määritetty reitti kutsuu indeksimenetelmää Authors-ohjaimessa.

Siirrytään nyt ohjaimeen sivutetuille tuloksillemme

CodeSytyttimen sivutusohjain

Luo uusi tiedosto Authors.php Application/controllers-hakemistoon

Lisää seuraava koodi

<?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);
    }
}

TÄSSÄ,

  • luokka Authors laajentaa CI_Controller {…} määrittelemme luokan Authors, joka laajentaa CI_Controller-luokkaa
  • public function __construct() {…} tämä menetelmä alustaa pääkonstruktorin ja lataa url-apuohjelman, tekijämallin ja sivutuskirjaston.
  • public function index() {…} määrittää menetelmän, joka vastaa reitin tekijöillemme
    • $config[“base_url”] = base_url() . “authors”; asettaa sivutuksen URL jota käytetään sivutuslinkkien luomiseen
    • $config["total_rows"] = $this->authors_model->get_count(); asettaa sivutusta vaativan rivin kokonaismäärän. Arvo haetaan tekijöiden mallista kutsumalla get_count-menetelmää.
    • $config["sivua kohden"] = 10; määrittää rivit, jotka on näytettävä sivulla
    • $config[“uri_segment”] = 2; määrittää URL segmentti, joka sisältää tietueiden ohittamiseen käytettävän arvon
    • $this->sivutus->alustaa($config); alustaa sivutuskirjaston käyttämällä määrittämäämme määritystaulukkoarvoa ja määritämme yllä olevat arvot.
    • $sivu = ($this->uri->segment(2)) ? $this->uri->segment(2): 0; tarkistaa onko ohitusnumero asetettu URI:n toiseen segmenttiin ja jos sitä ei ole asetettu, muuttujalle $page annetaan arvo 0
    • $data["linkit"] = $tämä->sivutus->luo_linkit(); luo sivutuslinkit ja määrittää ne $data array -muuttujan linkkiavaimelle.
    • data['authors'] = $this->authors_model->get_authors($config["sivua kohden"], $sivu); haki sivutut authors tietueet ja kohdistaa ne $data array -muuttujan authors avaimeen
    • $this->load->view('authors/index', $data); lataa hakemistonäkymän Authors-hakemistoon ja välittää taulukkomuuttujan $data.

Siinä se meidän mallillemme. Luodaan nyt näkymä, joka näyttää tietokantatulokset.

Luo uusi hakemiston tekijät sovelluksessa/näkymissä

Luo uusi tiedosto index.php hakemistoon application/views/authors/index.php

Lisää seuraava koodi

<!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>

TÄSSÄ,

  • käy läpi $authors-muuttujan tulokset ja tulostaa tulokset taulukkoon
  • tulostaa sivutuslinkit taulukkomme alareunaan.

Aloitetaan nyt sovelluksemme ja katsotaan tuloksia

Tässä opetusohjelmassa käytämme sisäänrakennettua PHP-verkkopalvelinta, mutta voit käyttää mitä tahansa verkkopalvelinta, joka tukee PHP.

Avaa terminaali

Suorita seuraava komento

cd C:\Sites\ci-app
php -S localhost:3000

TÄSSÄ,

  • Yllä oleva komento selaa sovelluskoodihakemistoon ja käynnistää sisäänrakennetun palvelimen portissa 3000.

Huomautus: sovelluksen polun on vastattava polkua, josta latasit tiedoston. CodeIgniter. Voit käyttää sitä varten mitä tahansa tietokoneellasi vapaana olevaa porttinumeroa. Portin 3000 käyttö ei ole välttämätöntä.

Avaa verkkoselain ja lataa seuraavat tiedostot URL

http://localhost:3000/authors

Sinun pitäisi pystyä saamaan seuraavanlaisia ​​tuloksia

CodeSytyttimen sivutusohjain

Yhteenveto

Tässä opetusohjelmassa olemme käsitelleet sivutuksen perusteet ja hyödyntäneet sivutuskirjastoa Codesytytin ja käytti sitä sovelluksen luomiseen, joka sivuttaa tietokannan tulokset.

Tiivistä tämä viesti seuraavasti: