ترقيم الصفحات في Codeبرنامج Igniter 4 مع مثال

⚡ ملخص ذكي

ترقيم الصفحات في Codeيقوم Igniter بتقسيم مجموعات نتائج قواعد البيانات الكبيرة إلى صفحات صغيرة يسهل تصفحها باستخدام مكتبة الترقيم المدمجة. يشرح هذا الدليل كيفية إنشاء مثال عملي يستعلم عن جدول المؤلفين، ويُحدد حدود كل صفحة، ويعرض روابط تنقل مرقمة.

  • 🗂️ الغرض الأساسي: تعمل خاصية ترقيم الصفحات على تقسيم نتائج الاستعلامات الكبيرة إلى صفحات يسهل التعامل معها، مما يحسن من سهولة القراءة ويقلل من وقت تحميل الصفحة.
  • ⚙️ إعداد المكتبة: قم بتحميل مكتبات الترقيم وقاعدة البيانات، ثم مرر مصفوفة $config التي تحدد base_url و total_rows و per_page.
  • 🔢 جزء من عنوان URI: تشير قيمة uri_segment إلى Codeجهاز الإشعال الذي URL يحمل المقطع الإزاحة المستخدمة لتخطي السجلات المعروضة بالفعل.
  • 🧱 طبقة النموذج: يُظهر النموذج get_count() و get_authors($limit, $start) بحيث يقوم المتحكم بجلب الصفوف التي تحتاجها صفحة واحدة فقط.
  • 🔗 روابط التنقل: تقوم طريقة create_links() بإنشاء روابط جاهزة للتنسيق، مثل الروابط السابقة والمرقمة واللاحقة، بشكل تلقائي.
  • 🎨 التصميم المخصص: تقوم مفاتيح التكوين مثل full_tag_open و cur_tag_open بتغليف الروابط في فئات CSS الخاصة بك أو علامات الإطار.
  • 🤖 مساعدة الذكاء الاصطناعي: يمكن لأدوات الذكاء الاصطناعي أن تقوم بإنشاء النموذج ووحدة التحكم ومصفوفة $config من تعريف الجدول، ثم شرح كل خيار.

ترقيم الصفحات في Codeأنبوب

قواعد البيانات كيانات حية، تتطور مع مرور الوقت. عند تصميم التطبيقات، يجب مراعاة كثرة السجلات التي سيتصفحها المستخدمون. تتيح لنا خاصية الترقيم تقسيم النتائج إلى أجزاء صغيرة يسهل التعامل معها. تُظهر الصورة التالية مثالًا على الترقيم في Google بحث.

ترقيم الصفحات في Codeأنبوب

في هذا الدرس التعليمي، ستتعلم كيفية تقسيم نتائج قاعدة البيانات إلى صفحات. Codeاستخدام مكتبة الترقيم في برنامج Igniter. يفترض هذا الشرح أنك على دراية بأساسيات... CodeIgniter Active Record. إذا لم تكن على دراية به بعد، فيمكنك قراءة الدروس السابقة. الافتراض الآخر هو أنك قمت بتنزيله بالفعل. Codeأنبوب.

تكوين قاعدة البيانات

سنبدأ بإنشاء قاعدة البيانات وإدراج بعض السجلات الوهمية فيها. وستكون عبارة عن قاعدة بيانات جدول واحد تحتوي على 50 سجلًا.

قم بتشغيل البرنامج النصي التالي ضد MySQL لإنشاء جدول مؤلفي قاعدة البيانات. أدخل 50 سجلاً وهمياً.

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, 'ميتا', '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');

الآن وقد أنشأنا قاعدة البيانات بنجاح وأدخلنا سجلات وهمية فيها، فلنقم بتكوينها Codeتطبيق Igniter للتواصل مع قاعدة البيانات.

افتح التطبيق/config/database.php

قم بتعيين معلمات اتصال قاعدة البيانات على النحو التالي

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

هنا،

  • 'اسم المضيف' => 'المضيف المحلي'، يعين اسم المضيف لقاعدة البيانات
  • 'username' => 'root'، يحدد اسم مستخدم قاعدة البيانات
  • 'password' => 'melody'، يحدد كلمة مرور قاعدة البيانات
  • 'database' => 'ci_pagination'، يحدد اسم قاعدة البيانات.

سنقوم أيضًا بتحميل مكتبة قاعدة البيانات تلقائيًا عند بدء تشغيل تطبيقنا. لنقم بذلك. افتح الملف application/config/autoload.php

قم بتحميل مكتبة قاعدة البيانات كما هو موضح بالكود أدناه

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

هذا كل شيء بالنسبة لتكوين قاعدة البيانات.

لنعمل الآن على نموذج قاعدة البيانات الخاص بالترقيم.

Codeنموذج قاعدة بيانات الترقيم في Igniter

قم بإنشاء نموذج جديد Authors_model في التطبيق/النماذج

أضف الكود التالي

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

هنا،

  • يُعرّف المتغير `$table = 'authors'` متغيرًا محميًا يحتوي على اسم جدول قاعدة البيانات الخاص بالنموذج.
  • تستدعي الوظيفة العامة __construct() {...} أسلوب المنشئ الأصلي
  • الدالة العامة get_count() {…} تُعيد إجمالي عدد السجلات في جدول قاعدة البيانات. هذا ضروري لأغراض الترقيم.
  • تُعرّف الدالة العامة `get_authors($limit, $start) {…}` طريقةً تُستخدم لاسترجاع نتائج مُقسّمة إلى صفحات من قاعدة البيانات. نمرّر إليها قيمة `limit` ونقطة البداية. تُحدّد `limit` العدد الإجمالي للسجلات المطلوب إرجاعها، بينما تُحدّد `start` عدد السجلات التي يجب تخطيها.

هذا كل ما يتعلق بنموذج قاعدة البيانات. لنقم الآن بإنشاء المسارات التي ستستجيب لنتائجنا المُقسّمة إلى صفحات.

Codeمسارات ترقيم الصفحات في Igniter

افتح ملف المسارات في application/config/routes.php

أضف المسار التالي

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

هنا،

  • نُعرّف مسارًا باسم "authors" يقبل مُعاملًا اختياريًا هو الرقم. يُحدد هذا المُعامل الاختياري باستخدام القوسين. يستدعي هذا المسار دالة "index" في وحدة تحكم "Authors".

لننتقل الآن إلى وحدة التحكم الخاصة بنتائجنا المُقسّمة إلى صفحات.

Codeوحدة تحكم ترقيم الصفحات

قم بإنشاء ملف Authors.php جديد في دليل التطبيق/وحدات التحكم

أضف الكود التالي

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

هنا،

  • فئة المؤلفين تمتد CI_Controller {...} نحدد فئة المؤلفين التي تمتد فئة CI_Controller
  • الوظيفة العامة __construct() {...} تقوم هذه الطريقة بتهيئة المُنشئ الأصلي وتحميل مساعد url ونموذج المؤلفين ومكتبة ترقيم الصفحات.
  • يحدد فهرس الوظيفة العامة () {...} الطريقة التي تستجيب لمؤلفي المسار لدينا
    • $config["base_url"] = base_url() . "authors"; يحدد ترقيم الصفحات URL سيتم استخدام ذلك لإنشاء روابط ترقيم الصفحات
    • يُحدد المتغير `$config["total_rows"] = $this->authors_model->get_count();` إجمالي عدد الصفوف التي يجب تقسيمها إلى صفحات. ويتم استرجاع هذه القيمة من نموذج المؤلفين باستدعاء الدالة `get_count`.
    • $config[“per_page”] = 10؛ يحدد الصفوف التي يجب عرضها لكل صفحة
    • يُحدد المتغير $config[“uri_segment”] = 2; URL الجزء الذي يحتوي على القيمة التي سيتم استخدامها لتجاوز السجلات
    • تقوم الدالة `$this->pagination->initialize($config)` بتهيئة مكتبة الترقيم باستخدام قيم مصفوفة الإعدادات التي حددناها.
    • $page = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0; يتحقق هذا المتغير مما إذا كان قد تم تحديد رقم التخطي في الجزء الثاني من عنوان URI، وإذا لم يتم تحديده، فسيتم تعيين القيمة 0 للمتغير $page.
    • $data["links"] = $this->pagination->create_links(); ينشئ روابط ترقيم الصفحات ويعينها لمفتاح الروابط لمتغير صفيف البيانات $.
    • $data['authors'] = $this->authors_model->get_authors($config[“per_page”], $page); يسترجع سجلات المؤلفين المُقسّمة إلى صفحات ويُسندها إلى مفتاح المؤلفين في متغير المصفوفة $data
    • $this->load->view('authors/index', $data); يقوم بتحميل عرض الفهرس في دليل المؤلفين ويمرر في متغير الصفيف $data.

هذا كل ما يتعلق بوحدة التحكم. لنقم الآن بإنشاء العرض الذي سيعرض نتائج قاعدة البيانات.

قم بإنشاء دليل جديد للمؤلفين في التطبيق/طرق العرض

قم بإنشاء ملف Index.php جديد في application/views/authors/index.php

أضف الكود التالي

<!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:0
</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>

هنا،

  • يقوم البرنامج بالمرور على نتائج المتغير $authors وطباعة النتائج في جدول.
  • يطبع روابط ترقيم الصفحات في أسفل جدولنا.

لنبدأ الآن بتقديم طلبنا ونرى النتائج.

في هذا البرنامج التعليمي، نستخدم خادم الويب PHP المدمج، ولكن يمكنك استخدام أي خادم ويب يدعمه PHP.

افتح المحطة

قم بتشغيل الأمر التالي

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

هنا،

  • يتصفح الأمر أعلاه دليل رمز التطبيق ويبدأ تشغيل الخادم المدمج على المنفذ 3000.

ملاحظة: يجب أن يتطابق مسار التطبيق مع المسار الذي قمت بتنزيله منه Codeبرنامج Igniter. يمكنك استخدام أي رقم منفذ متاح على جهاز الكمبيوتر الخاص بك. ليس من الضروري استخدام المنفذ 3000.

افتح متصفح الويب وقم بتحميل ما يلي URL

http://localhost:3000/authors

يجب أن تكون قادرًا على الحصول على نتائج مشابهة لما يلي

Codeوحدة تحكم ترقيم الصفحات

كيفية التخصيص Codeروابط ترقيم الصفحات في Igniter

بشكل افتراضي، تُخرج دالة create_links() روابط نصية عادية. يمكنك تغليف هذه الروابط بعلاماتك الخاصة لتتوافق مع إطار عمل CSS مثل Bootstrap أو بولما. أضف مفاتيح التنسيق إلى نفس مصفوفة $config قبل استدعاء الدالة initialize().

$config['full_tag_open'] = '<nav><ul class="pagination">';
$config['full_tag_close'] = '</ul></nav>';
$config['num_tag_open'] = '<li class="page-item">';
$config['num_tag_close'] = '</li>';
$config['cur_tag_open'] = '<li class="page-item active"><a class="page-link">';
$config['cur_tag_close'] = '</a></li>';
$config['next_link'] = 'Next &raquo;';
$config['prev_link'] = '&laquo; Previous';

تم وصف أهم مفاتيح التكوين أدناه.

  • full_tag_open / full_tag_close: ترميز يغلف مجموعة الروابط بأكملها، وهو مثالي لـ أو حاوية.
  • num_tag_open / num_tag_close: علامات التنسيق حول كل رابط صفحة مرقم.
  • cur_tag_open / cur_tag_close: علامات التنسيق حول رقم الصفحة النشطة الحالية.
  • الرابط التالي / الرابط السابق: النص أو الرموز المستخدمة لأزرار التالي والسابق.

لأن التنسيق موجود بالكامل في التكوين، يمكنك إعادة تصميم الترقيم في جميع أنحاء التطبيق عن طريق تعديل مصفوفة واحدة، دون المساس بمنطق وحدة التحكم الخاصة بك.

الأسئلة الشائعة

تحدد قيمة per_page عدد السجلات التي تظهر في صفحة واحدة، بينما تحدد قيمة uri_segment Codeجهاز الإشعال الذي URL يحتوي الجزء على رقم الإزاحة. ويتحكمان معًا في عدد الصفوف المعروضة والصفحات التي يتم تحميلها.

عادةً لا تتطابق قيمة uri_segment مع موضع الإزاحة في URL. احسب عدد الأجزاء بعد نطاقك وقم بتعيين uri_segment إلى هذا الرقم حتى تقرأ create_links() إزاحة الصفحة الصحيحة.

نعم. لا يتطلب ترقيم الصفحات سوى عدد الصفوف الإجمالي وقيمة لكل صفحة. يمكنك ترقيم المصفوفات أو نتائج واجهة برمجة التطبيقات أو الملفات عن طريق إدخال العدد الإجمالي يدويًا وتقسيم البيانات لكل صفحة بنفسك.

نعم. عند إعطاء اسم الجدول والأعمدة، يمكن للذكاء الاصطناعي إنتاج النموذج، ومصفوفة $config، وطريقة index() الخاصة بوحدة التحكم. Revقم بمراجعة قيم base_url و uri_segment، ثم اختبر الروابط التي تم إنشاؤها.

نعم. ألصق وحدة التحكم الخاصة بك و URL ويمكن للذكاء الاصطناعي اكتشاف قيم uri_segment غير المتطابقة، أو الشرطات المفقودة في base_url، أو مصدر total_rows غير الصحيح، ثم يقترح التكوين المصحح لتجربته.

تلخيص هذه التدوينة بـ: