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