CodeIgniter-এ Pagination এবং Search Functionality একত্রে ব্যবহার করা হয় যখন বড় ডেটা লিস্ট প্রদর্শন করতে হয়। Pagination ডেটাকে ছোট ছোট অংশে বিভক্ত করে দেখায়, আর Search Functionality ব্যবহারকারীদের নির্দিষ্ট ডেটা খুঁজে পেতে সাহায্য করে।
Pagination পরিচালনার জন্য CodeIgniter একটি বিল্ট-ইন লাইব্রেরি সরবরাহ করে। এটি ডেটাকে পৃষ্ঠা আকারে বিভক্ত করতে সাহায্য করে।
Controller-এ Pagination ক্লাস ব্যবহার করে Pagination সেটআপ করুন।
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\ProductModel;
class Products extends Controller {
public function index() {
$productModel = new ProductModel();
// Pagination কনফিগারেশন
$pager = \Config\Services::pager();
$perPage = 5;
$data = [
'products' => $productModel->paginate($perPage),
'pager' => $productModel->pager
];
return view('product_list', $data);
}
}
Model ফাইল তৈরি করুন এবং paginate()
Method ব্যবহার করুন।
<?php
namespace App\Models;
use CodeIgniter\Model;
class ProductModel extends Model {
protected $table = 'products'; // আপনার টেবিলের নাম
protected $primaryKey = 'id';
}
Pagination লিঙ্ক প্রদর্শন করতে নিচের কোড ব্যবহার করুন:
<?php foreach ($products as $product): ?>
<p><?= $product['name']; ?> - $<?= $product['price']; ?></p>
<?php endforeach; ?>
<?= $pager->links(); ?>
Pagination এবং Search Functionality একত্রিত করতে Query Filter যোগ করুন।
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\ProductModel;
class Products extends Controller {
public function index() {
$productModel = new ProductModel();
$search = $this->request->getGet('search');
$perPage = 5;
if ($search) {
$productModel->like('name', $search);
}
$data = [
'products' => $productModel->paginate($perPage),
'pager' => $productModel->pager,
'search' => $search
];
return view('product_list', $data);
}
}
<form action="<?= base_url('products'); ?>" method="get">
<input type="text" name="search" value="<?= isset($search) ? $search : '' ?>" placeholder="Search products">
<button type="submit">Search</button>
</form>
<?php if (!empty($products)): ?>
<?php foreach ($products as $product): ?>
<p><?= $product['name']; ?> - $<?= $product['price']; ?></p>
<?php endforeach; ?>
<?= $pager->links(); ?>
<?php else: ?>
<p>No products found.</p>
<?php endif; ?>
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\ProductModel;
class Products extends Controller {
public function index() {
$productModel = new ProductModel();
$search = $this->request->getGet('search');
$perPage = 5;
if ($search) {
$productModel->like('name', $search);
}
$data = [
'products' => $productModel->paginate($perPage),
'pager' => $productModel->pager,
'search' => $search
];
return view('product_list', $data);
}
}
<!DOCTYPE html>
<html>
<head>
<title>Product List</title>
</head>
<body>
<h1>Product List</h1>
<!-- Search Form -->
<form action="<?= base_url('products'); ?>" method="get">
<input type="text" name="search" value="<?= isset($search) ? $search : '' ?>" placeholder="Search products">
<button type="submit">Search</button>
</form>
<!-- Product List -->
<?php if (!empty($products)): ?>
<?php foreach ($products as $product): ?>
<p><?= $product['name']; ?> - $<?= $product['price']; ?></p>
<?php endforeach; ?>
<!-- Pagination Links -->
<?= $pager->links(); ?>
<?php else: ?>
<p>No products found.</p>
<?php endif; ?>
</body>
</html>
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(10,2) NOT NULL
);
Pagination লিঙ্ক কাস্টমাইজ করতে app/Config/Pager.php
ফাইল ব্যবহার করুন। উদাহরণ:
public $templates = [
'default_full' => 'CodeIgniter\Pager\Views\default_full',
'default_simple' => 'CodeIgniter\Pager\Views\default_simple',
'custom_pagination' => 'App\Views\custom_pagination'
];
CodeIgniter-এ Pagination এবং Search Functionality একত্রে ব্যবহার করা গেলে বড় ডেটাবেস পরিচালনা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করা যায়। Pagination ডেটাকে সংগঠিতভাবে দেখায়, আর Search ব্যবহারকারীকে প্রাসঙ্গিক ডেটা খুঁজে পেতে সাহায্য করে।
CodeIgniter-এর Pagination Class ব্যবহার করে বড় ডেটাসেটকে পৃষ্ঠাভিত্তিক বিভক্ত করে প্রদর্শন করা যায়। এটি ডেটাবেস থেকে রেকর্ড ফিল্টার এবং ডায়নামিক পেজ লিংক তৈরিতে সহায়ক।
Controller-এ Pagination সেটআপ এবং ডেটা লোড করার কোড লিখতে হবে।
<?php
namespace App\Controllers;
use App\Models\ProductModel;
class ProductController extends BaseController
{
public function index()
{
$productModel = new ProductModel();
// Pagination কনফিগারেশন
$data['products'] = $productModel->paginate(10); // প্রতি পৃষ্ঠায় ১০টি রেকর্ড
$data['pager'] = $productModel->pager; // Pagination লিংক তৈরির জন্য
return view('product_list', $data);
}
}
Pagination লিংক এবং ডেটা প্রদর্শনের জন্য View ফাইল তৈরি করতে হবে।
app/Views/product_list.php
ফাইল:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Product List</title>
</head>
<body>
<h1>Product List</h1>
<ul>
<?php if (!empty($products)): ?>
<?php foreach ($products as $product): ?>
<li><?= esc($product['name']); ?> - <?= esc($product['price']); ?></li>
<?php endforeach; ?>
<?php else: ?>
<li>No products found.</li>
<?php endif; ?>
</ul>
<!-- Pagination লিংক -->
<?= $pager->links(); ?>
</body>
</html>
Pagination পরিচালনার জন্য Model তৈরি করতে হবে।
app/Models/ProductModel.php
ফাইল:
<?php
namespace App\Models;
use CodeIgniter\Model;
class ProductModel extends Model
{
protected $table = 'products';
protected $primaryKey = 'id';
protected $allowedFields = ['name', 'price'];
}
Pagination-এর চেহারা এবং কার্যকারিতা কাস্টমাইজ করতে app/Config/Pager.php
ফাইলটি ব্যবহার করতে পারেন।
public $defaultFull = [
'full_tag_open' => '<nav><ul class="pagination">',
'full_tag_close' => '</ul></nav>',
'first_tag_open' => '<li>',
'first_tag_close'=> '</li>',
'last_tag_open' => '<li>',
'last_tag_close' => '</li>',
'next_tag_open' => '<li>',
'next_tag_close' => '</li>',
'prev_tag_open' => '<li>',
'prev_tag_close' => '</li>',
'cur_tag_open' => '<li class="active"><a href="#">',
'cur_tag_close' => '</a></li>',
'num_tag_open' => '<li>',
'num_tag_close' => '</li>',
];
Pagination লিংক কাস্টমাইজ করতে $pager->makeLinks()
ব্যবহার করতে পারেন।
<?= $pager->makeLinks($currentPage, $perPage, $total, 'bootstrap_full'); ?>
Bootstrap ক্লাস ব্যবহার করে Pagination লিংক স্টাইলিং করা যায়।
public $defaultFull = [
'full_tag_open' => '<ul class="pagination">',
'full_tag_close' => '</ul>',
'first_tag_open' => '<li class="page-item">',
'first_tag_close'=> '</li>',
'last_tag_open' => '<li class="page-item">',
'last_tag_close' => '</li>',
'next_tag_open' => '<li class="page-item">',
'next_tag_close' => '</li>',
'prev_tag_open' => '<li class="page-item">',
'prev_tag_close' => '</li>',
'cur_tag_open' => '<li class="page-item active"><a class="page-link" href="#">',
'cur_tag_close' => '</a></li>',
'num_tag_open' => '<li class="page-item">',
'num_tag_close' => '</li>',
'attributes' => ['class' => 'page-link'],
];
public function index()
{
$productModel = new ProductModel();
$data['products'] = $productModel->paginate(10);
$data['pager'] = $productModel->pager;
return view('product_list', $data);
}
<ul>
<?php foreach ($products as $product): ?>
<li><?= esc($product['name']); ?> - <?= esc($product['price']); ?></li>
<?php endforeach; ?>
</ul>
<?= $pager->links(); ?>
<?php
namespace App\Models;
use CodeIgniter\Model;
class ProductModel extends Model
{
protected $table = 'products';
protected $primaryKey = 'id';
protected $allowedFields = ['name', 'price'];
}
CodeIgniter-এ Pagination Class ব্যবহার করে বড় ডেটাসেটকে পৃষ্ঠাভিত্তিক বিভক্ত করা সহজ। Default Pagination, Custom Pagination, এবং Bootstrap Styling ব্যবহার করে এটি আরও কার্যকর ও আকর্ষণীয় করা যায়।
CodeIgniter-এ Search Functionality ব্যবহার করে ডেটা ফিল্টার করা খুবই সহজ। এটি সাধারণত ব্যবহারকারীদের নির্দিষ্ট ডেটা খুঁজে পেতে সাহায্য করে। উদাহরণস্বরূপ, একটি টেবিল বা তালিকা থেকে ডেটা ফিল্টার করা।
ডাটাবেসে একটি টেবিল তৈরি করুন। উদাহরণস্বরূপ, একটি products
টেবিল:
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
category VARCHAR(255),
price DECIMAL(10, 2)
);
ডাটাবেসে কিছু ডেটা যোগ করুন:
INSERT INTO products (name, category, price) VALUES
('Laptop', 'Electronics', 50000),
('Smartphone', 'Electronics', 20000),
('Table', 'Furniture', 1500),
('Chair', 'Furniture', 800);
app/Models/ProductModel.php
ফাইল তৈরি করুন:
<?php
namespace App\Models;
use CodeIgniter\Model;
class ProductModel extends Model
{
protected $table = 'products';
protected $allowedFields = ['name', 'category', 'price'];
// ডেটা সার্চ করার মেথড
public function searchProducts($keyword)
{
return $this->like('name', $keyword)
->orLike('category', $keyword)
->findAll();
}
}
app/Controllers/Product.php
ফাইল তৈরি করুন:
<?php
namespace App\Controllers;
use App\Models\ProductModel;
class Product extends BaseController
{
public function index()
{
$productModel = new ProductModel();
// সার্চ কিওয়ার্ড রিসিভ করা
$keyword = $this->request->getVar('q');
// সার্চ কন্ডিশন অনুযায়ী ডেটা ফিল্টার করা
if ($keyword) {
$products = $productModel->searchProducts($keyword);
} else {
$products = $productModel->findAll();
}
$data = [
'products' => $products,
'keyword' => $keyword
];
return view('product_list', $data);
}
}
app/Views/product_list.php
ফাইল তৈরি করুন:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Product List</title>
</head>
<body>
<h1>Product List</h1>
<!-- সার্চ ফর্ম -->
<form method="get" action="/product">
<input type="text" name="q" value="<?php echo $keyword; ?>" placeholder="Search...">
<button type="submit">Search</button>
</form>
<!-- প্রোডাক্ট তালিকা -->
<ul>
<?php if ($products): ?>
<?php foreach ($products as $product): ?>
<li>
<?php echo $product['name']; ?> - <?php echo $product['category']; ?> - <?php echo $product['price']; ?> BDT
</li>
<?php endforeach; ?>
<?php else: ?>
<li>No products found.</li>
<?php endif; ?>
</ul>
</body>
</html>
app/Config/Routes.php
ফাইলে Route যুক্ত করুন:
$routes->get('product', 'Product::index');
http://localhost/your_project_name/product
URL অ্যাক্সেস করুন।Electronics
বা Table
) এবং ফলাফল ফিল্টার হওয়া দেখুন।Model এর searchProducts
মেথডে like()
এবং orLike()
ব্যবহার করা হয়েছে:
like('field', 'value')
: একটি ফিল্ডের নির্দিষ্ট মান অনুসারে ডেটা ফিল্টার করে।orLike('field', 'value')
: OR কন্ডিশনের মাধ্যমে একাধিক ফিল্ড ফিল্টার করে।return $this->like('name', $keyword)
->orLike('category', $keyword)
->findAll();
CodeIgniter-এ Search Functionality ইমপ্লিমেন্ট করে আপনি ব্যবহারকারীদের জন্য একটি কার্যকর ডেটা ফিল্টারিং সিস্টেম তৈরি করতে পারবেন। এটি আপনার অ্যাপ্লিকেশনকে আরও ইন্টারঅ্যাকটিভ এবং ইউজার-ফ্রেন্ডলি করে তুলবে।
CodeIgniter এ Pagination এবং Search ইমপ্লিমেন্ট করা সহজ। Pagination ব্যবহারকারীদের বড় ডেটাসেট থেকে নির্দিষ্ট সংখ্যক ডেটা দেখানোর সুযোগ দেয়। Pagination এবং Search এর সাথে Complex Queries যোগ করে উন্নত ডেটা ফিল্টারিং এবং প্রদর্শন করা যায়।
CodeIgniter এর Pagination লাইব্রেরি ব্যবহার করে সহজেই Pagination ইমপ্লিমেন্ট করা যায়।
ধরুন, products
নামে একটি ডাটাবেস টেবিল রয়েছে:
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
description TEXT,
price DECIMAL(10, 2) NOT NULL
);
Controller ফাইলে Pagination সেটআপ করুন:
namespace App\Controllers;
use App\Models\ProductModel;
class ProductController extends BaseController
{
public function index()
{
$model = new ProductModel();
// পেজিনেশন সেটআপ
$perPage = 10; // প্রতি পৃষ্ঠায় ডেটা সংখ্যা
$page = $this->request->getVar('page') ?? 1; // বর্তমান পৃষ্ঠা
$data['products'] = $model
->paginate($perPage, 'group1', $page); // পেজিনেশন
$data['pager'] = $model->pager; // পেজার লোড
return view('product_list', $data);
}
}
Pagination লিঙ্ক দেখানোর জন্য View ফাইলে নিচের কোড যোগ করুন:
<h1>Product List</h1>
<ul>
<?php foreach ($products as $product): ?>
<li><?= $product['name']; ?> - $<?= $product['price']; ?></li>
<?php endforeach; ?>
</ul>
<!-- পেজিনেশন লিঙ্ক -->
<?= $pager->links('group1', 'default_full') ?>
Pagination এর সাথে Search ফিচার যুক্ত করার জন্য Complex Query ব্যবহার করতে পারেন।
Controller এ Search ফিল্টারিং যোগ করুন:
public function index()
{
$model = new ProductModel();
$search = $this->request->getVar('search'); // সার্চ কিওয়ার্ড
$perPage = 10;
$page = $this->request->getVar('page') ?? 1;
// সার্চ কন্ডিশন
$builder = $model->builder();
if ($search) {
$builder->like('name', $search);
$builder->orLike('description', $search);
}
// পেজিনেশন
$data['products'] = $builder->paginate($perPage, 'group1', $page);
$data['pager'] = $builder->pager;
$data['search'] = $search;
return view('product_list', $data);
}
Search ফর্ম এবং Pagination লিঙ্ক প্রদর্শনের জন্য View ফাইলে কোড যোগ করুন:
<h1>Product List</h1>
<!-- সার্চ ফর্ম -->
<form method="get" action="/products">
<input type="text" name="search" value="<?= $search ?? ''; ?>" placeholder="Search products">
<button type="submit">Search</button>
</form>
<ul>
<?php foreach ($products as $product): ?>
<li><?= $product['name']; ?> - $<?= $product['price']; ?></li>
<?php endforeach; ?>
</ul>
<!-- পেজিনেশন লিঙ্ক -->
<?= $pager->links('group1', 'default_full') ?>
Pagination এবং Search এর সাথে Complex Query যুক্ত করা:
public function index()
{
$model = new ProductModel();
$search = $this->request->getVar('search');
$priceMin = $this->request->getVar('price_min');
$priceMax = $this->request->getVar('price_max');
$perPage = 10;
$page = $this->request->getVar('page') ?? 1;
// Complex Query
$builder = $model->builder();
if ($search) {
$builder->like('name', $search);
$builder->orLike('description', $search);
}
if ($priceMin) {
$builder->where('price >=', $priceMin);
}
if ($priceMax) {
$builder->where('price <=', $priceMax);
}
$data['products'] = $builder->paginate($perPage, 'group1', $page);
$data['pager'] = $builder->pager;
$data['search'] = $search;
$data['price_min'] = $priceMin;
$data['price_max'] = $priceMax;
return view('product_list', $data);
}
<h1>Product List</h1>
<!-- Complex Search Form -->
<form method="get" action="/products">
<input type="text" name="search" value="<?= $search ?? ''; ?>" placeholder="Search products">
<input type="number" name="price_min" value="<?= $price_min ?? ''; ?>" placeholder="Min Price">
<input type="number" name="price_max" value="<?= $price_max ?? ''; ?>" placeholder="Max Price">
<button type="submit">Filter</button>
</form>
<ul>
<?php foreach ($products as $product): ?>
<li><?= $product['name']; ?> - $<?= $product['price']; ?></li>
<?php endforeach; ?>
</ul>
<!-- Pagination Links -->
<?= $pager->links('group1', 'default_full') ?>
CodeIgniter এর Pagination এবং Search ফিচার Complex Queries এর সাথে ব্যবহার করে উন্নত ডেটা ম্যানেজমেন্ট সিস্টেম তৈরি করা যায়। উপরের উদাহরণ অনুসরণ করে সহজেই এই ফিচারগুলো আপনার অ্যাপ্লিকেশনে যুক্ত করতে পারবেন।
Read more