Leheküljed Codeigniteris samm-sammult näitega

Andmebaasid on elusolendid. Nad kasvavad aja möödudes. Rakenduste kavandamisel peame arvestama paljude kirjetega, mida kasutajad peavad sirvima. Leheküljed võimaldavad meil jagada tulemused väikesteks hallatavateks osadeks. Järgmisel pildil on näide Google'i otsingu lehekülgedest.

Leheküljed Codeigniteris

Sellest õpetusest saate teada, kuidas lehekülgede jagamise teeki kasutades CodeIgniteris andmebaasi tulemusi lehitseda. See õpetus eeldab, et olete CodeIgniter Active Record põhitõdedega kursis. Kui te seda ei tee, võite lugeda eelmisi õpetusi. Teine oletus on see, et olete CodeIgniteri juba alla laadinud.

Andmebaasi seadistamine

Alustame andmebaasi loomisest ja sellesse mõne näivkirje sisestamisest. See on ühe tabeli andmebaas, milles on 50 kirjet.

Käivitage vastu järgmine skript MySQL andmebaasi autorite tabeli loomiseks. Sisestage 50 näivat kirjet.

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

Nüüd, kui oleme oma andmebaasi edukalt loonud ja sisestanud sellesse näidiskirjed, konfigureerime oma CodeIgniteri rakenduse andmebaasiga suhtlema.

Avage application/config/database.php

Määrake andmebaasi ühenduse parameetrid sarnaselt järgmisele

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

SIIN,

  • 'hostname' => 'localhost', määrab andmebaasi hostinime
  • 'username' => 'root', määrab andmebaasi nime
  • 'password' => 'openseseme', määrab andmebaasi parooli
  • 'database' => 'ci_pagination', määrab andmebaasi nime.

Samuti laadime automaatselt andmebaasi teegi, kui meie rakendus käivitub. Teeme seda. Avage application/config/autoload.php

Laadige andmebaasi teek, nagu on näidatud alloleva koodiga

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

See on andmebaasi konfiguratsiooni jaoks.

Töötame nüüd lehekülgede jaoks mõeldud andmebaasi mudeli kallal

CodeIgniteri lehekülgede andmebaasi mudel

Looge rakenduses/mudelites uus mudel Autorite_mudel

Lisage järgmine kood

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

SIIN,

  • kaitstud $table = 'autorid'; defineerida kaitstud muutuja, mis määrab mudeli andmebaasitabeli nime
  • avalik funktsioon __construct() {…} kutsub vanemkonstruktori meetodi
  • avalik funktsioon get_count() {…} tagastab andmebaasi tabelis olevate kirjete koguarvu. See on vajadus lehekülgede jaoks
  • avalik funktsioon get_authors($limit, $start) {…} defineerib meetodi, mida kasutatakse lehekülgede otsimiseks andmebaasist. Läbime limiidi ja stardipunkti. Limiit määrab tagastatavate kirjete koguarvu samas kui algus määrab kirjete arvu, mis tuleks vahele jätta

see on meie andmebaasimudeli jaoks. Loome nüüd marsruudid, mis vastavad meie lehekülgedel esitatud tulemustele.

CodeIgniteri lehekülgede muutmise marsruudid

Avage marsruutide fail rakenduses/config/routes.php

Lisage järgmine marsruut

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

SIIN,

  • Määratleme marsruudi autori, mis aktsepteerib numbri valikulist parameetrit. Valikuline parameeter määratakse avamis- ja sulgemissulgude abil. Määratletud marsruut kutsub autorite kontrolleris indeksi meetodi.

Liigume nüüd oma lehekülgede lehtedega tulemuste vaatamiseks kontrolleri juurde

CodeIgniteri lehekülgede kontroller

Looge rakenduste/kontrollerite kataloogis uus fail Authors.php

Lisage järgmine kood

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

SIIN,

  • klass Authors laiendab CI_Controller {…} määratleme klassi Autorid, mis laiendab CI_Controller klassi
  • avalik funktsioon __construct() {…} see meetod initsialiseerib emakonstruktori ja laadib URL-i abimehe, autorite mudeli ja lehekülgede teegi.
  • public function index() {…} määrab meetodi, mis vastab meie marsruudi autoritele
    • $config["base_url"] = base_url() . "autorid"; määrab lehekülgede URL-i, mida kasutatakse lehekülgede linkide loomiseks
    • $config["rida kokku"] = $see->autorite_mudel->hanki_loendus(); määrab kogu rea, mida tuleb lehekülgedel vahetada. Väärtus hangitakse autorimudelist, kutsudes välja meetodi get_count.
    • $config["lehe kohta"] = 10; määratleb read, mida tuleb ühel lehel kuvada
    • $config["uri_segment"] = 2; määrab URL-i segmendi, mis sisaldab kirjete vahelejätmiseks kasutatavat väärtust
    • $this->pagening->initsialize($config); lähtestab lehekülgede jagamise teegi, kasutades konfiguratsioonimassiivi väärtust, mille me määratlesime ja millele ülaltoodud väärtused määrasime.
    • $leht = ($see->uri->segment(2)) ? $see->uri->segment(2) : 0; kontrollib, kas URI teises segmendis on vahelejätmise number määratud ja kui seda pole määratud, siis omistatakse muutujale $page väärtus 0
    • $andmed["lingid"] = $see->lehekülgede loomine->loo_linke(); loob lehekülgede lingid ja määrab need massiivi $data muutuja lingivõtmele.
    • data['autorid'] = $see->autorite_mudel->hangi_autorid($config["lehe kohta"], $leht); otsis lehekülgede kaupa autorikirjed ja määrab need massiivi $data muutuja autorivõtmele
    • $this->load->view('autorid/indeks', $andmed); laadib indeksivaate autorite kataloogi ja edastab massiivi muutuja $data.

See on meie mudeli jaoks kõik. Loome nüüd vaate, mis kuvab meie andmebaasi tulemused.

Looge rakenduses/vaadetes uus kataloog autorid

Looge failis application/views/authors/index.php uus fail index.php

Lisage järgmine kood

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

SIIN,

  • vaatab läbi muutuja $authors tulemused ja prindib tulemused tabelisse
  • prindib meie tabeli allservas olevad lehekülgede jagamise lingid.

Alustame nüüd oma rakendust ja vaatame tulemusi

Selles õpetuses kasutame sisseehitatud PHP veebiserverit, kuid võite kasutada mis tahes veebiserverit, mis seda toetab PHP.

Avage terminal

Käivitage järgmine käsk

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

SIIN,

  • Ülaltoodud käsk sirvib rakenduse koodikataloogi ja käivitab sisseehitatud serveri pordis 3000.

Märkus. Rakenduse tee peab ühtima teega, kust CodeIgniteri alla laadisite. Selleks saate kasutada mis tahes pordi numbrit, mis on teie arvutis tasuta. Porti 3000 pole vaja kasutada.

Avage veebibrauser ja laadige järgmine URL

http://localhost:3000/authors

Peaksite saama järgmisega sarnaseid tulemusi

CodeIgniteri lehekülgede kontroller

kokkuvõte

Selles õpetuses oleme käsitlenud lehekülgede jagamise põhitõdesid ja kasutanud ära lehekülgede kogu CodeIgniter ja kasutas seda rakenduse loomiseks, mis lehitseb andmebaasi tulemusi.