Pagination এবং Search এর সাথে Complex Queries

Web Development - কোডইগনাইটার (Codeigniter) - CodeIgniter এর Pagination এবং Search Functionality |

CodeIgniter এ Pagination এবং Search ইমপ্লিমেন্ট করা সহজ। Pagination ব্যবহারকারীদের বড় ডেটাসেট থেকে নির্দিষ্ট সংখ্যক ডেটা দেখানোর সুযোগ দেয়। Pagination এবং Search এর সাথে Complex Queries যোগ করে উন্নত ডেটা ফিল্টারিং এবং প্রদর্শন করা যায়।


Pagination সেটআপ

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

Pagination এর ধাপসমূহ

১. Controller তৈরি

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

২. View ফাইলে Pagination লিঙ্ক দেখানো

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

Search এর সাথে Complex Queries

Pagination এর সাথে Search ফিচার যুক্ত করার জন্য Complex Query ব্যবহার করতে পারেন।

১. Controller এ Search যুক্ত করা

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

২. View ফাইলে Search ফর্ম যোগ করা

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

Complex Queries

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

View ফাইলে Complex Query এর ফর্ম

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

Pagination, Search এবং Complex Queries এর সুবিধা

  1. ডেটা ফিল্টারিং: সার্চ এবং ফিল্টারিংয়ের মাধ্যমে ব্যবহারকারীকে প্রাসঙ্গিক ডেটা প্রদর্শন।
  2. ডেটা পরিচালনা সহজ: বড় ডেটাসেট Pagination এর মাধ্যমে সহজেই পরিচালনা করা যায়।
  3. উন্নত ব্যবহারকারীর অভিজ্ঞতা: দ্রুত এবং নির্ভুল ডেটা রিট্রিভাল ব্যবহারকারীদের অভিজ্ঞতা উন্নত করে।

CodeIgniter এর Pagination এবং Search ফিচার Complex Queries এর সাথে ব্যবহার করে উন্নত ডেটা ম্যানেজমেন্ট সিস্টেম তৈরি করা যায়। উপরের উদাহরণ অনুসরণ করে সহজেই এই ফিচারগুলো আপনার অ্যাপ্লিকেশনে যুক্ত করতে পারবেন।

Content added By
Promotion