PHP: Praktikum Searching and Ordering

Assalamu'alaikum warahmatullahi wabarakatuh.

Halo teman-teman semuanya! Bagaimana kabarnya? Semoga dalam kondisi dan keadaan yang prima dan baik-baik saja ya!

Perkenalkan kembali lagi bersama saya Ilham, saya dari kelas XI RPL 2 yang sekarang dalam artikel kali ini, kita akan membahas tentang Searching dan Ordering data CRUD pada PHP,   tanpa berlama-lama lagi mari langsung saja kita ke bahasan materinya!


Searching 

Merupakan fitur pencarian terhadap data siswa berdasarkan NIS dan Nama.

File views/index.php 
<!-- Tabel Siswa -->
<div class="card shadow mb-4">
    <div class="card-header py-3 d-flex justify-content-between align-items-center">
        <h6 class="m-0 font-weight-bold text-primary">Tabel Siswa</h6>
        <a href="insert.php" class="btn btn-primary">Tambah Data Siswa</a>
    </div>
    <div class="card-body">
        <div class="table-responsive">
            <form action="index.php" method="GET" class="row justify-content-between">
                <div class="col-md-6 col-lg-3">
                    <div class="input-group mb-3">
                        <input type="text" class="form-control" placeholder="Cari berdasarkan NIS dan nama.." name="search" value="<?= @$search ?>">
                        <div class="input-group-append">
                            <button class="btn btn-outline-primary" type="submit" id="button-addon2">Cari</button>
                        </div>
                    </div>
                </div>
                <div class="col-md-6 d-md-flex justify-content-end">
                    <a href="index.php" class="btn btn-primary mb-3">Clear</a>
                </div>
            </form>
            <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
                <thead>
                    <tr>
                        <th>#</th>
                        <th>NIS</th>
                        <th>Nama Lengkap</th>
                        <th>Jenis Kelamin</th>
                        <th>Alamat</th>
                        <th>No Telepon</th>
                        <th>Kelas</th>
                        <th>Action</th>
                    </tr>
                </thead>
                <tfoot>
                    <tr>
                        <th>#</th>
                        <th>NIS</th>
                        <th>Nama Lengkap</th>
                        <th>Jenis Kelamin</th>
                        <th>Alamat</th>
                        <th>No Telepon</th>
                        <th>Kelas</th>
                        <th>Action</th>
                    </tr>
                </tfoot>
                <tbody>
                    <?php if ($result->num_rows == 0) : ?>
                        <tr>
                            <td colspan="8" class="text-center">
                                <h5 class="font-weight-bold">Siswa Tidak Ditemukan!</h5>
                            </td>
                        </tr>
                    <?php else : ?>
                        <?php $i = 1; ?>
                        <?php while ($student = $result->fetch_assoc()) : ?>
                            <tr>
                                <td><?= $i++ ?></td>
                                <td><?= $student["nis"] ?></td>
                                <td><?= $student["name"] ?></td>
                                <td><?= ($student["gender"] == "P" ? "Perempuan" : "Laki-laki") ?></td>
                                <td><?= $student["address"] ?></td>
                                <td><?= $student["phone_number"] ?></td>
                                <td><?= $student["class"] ?></td>
                                <td>
                                    <a href="edit.php?nis=<?= $student['nis'] ?>">Edit</a> |
                                    <a href="delete.php?nis=<?= $student['nis'] ?>" onclick="return confirm('Yakin ingin menghapus siswa?')">Delete</a>
                                </td>
                            </tr>
                        <?php endwhile; ?>
                    <?php endif; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

File index.php 
<?php

include "lib/library.php";

// Check apakah sudah login atau belum, jika belum
// sistem akan me-redirect ke halaman login.php
if (checkLogin() == false) {
    header("Location: login.php");
}

// Membuat Query SQL mengambil data siswa
$query = "SELECT * FROM students";

// Searching
$search = @$_GET['search'];
if (!empty($search)) {
    $query .= " WHERE nis LIKE '%$search%' 
            OR name LIKE '%$search%'";
}

$result = $mysqli->query($query);

include "views/index.php";

Pada bagian search terjadi pengecekan jika variabel $search tidak kosong, maka akan ditambahkan penggunaan where untuk field nis dan name pada variabel $query

ketika dibuka di browser:





Ordering 

Merupakan fitur pengurut data (sorting) terhadap semua field yang ada pada tabel students

File views/index.php 
Ubah tag th didalam thead menjadi:
<thead>
    <tr>
        <th>#</th>
        <th>
            NIS
            <a href="index.php?sort=nis&order=asc"></a>
            <a href="index.php?sort=nis&order=desc"></a>
        </th>
        <th>
            Nama Lengkap
            <a href="index.php?sort=name&order=asc"></a>
            <a href="index.php?sort=name&order=desc"></a>
        </th>
        <th>
            Jenis Kelamin
            <a href="index.php?sort=gender&order=asc"></a>
            <a href="index.php?sort=gender&order=desc"></a>
        </th>
        <th>
            Alamat
            <a href="index.php?sort=address&order=asc"></a>
            <a href="index.php?sort=address&order=desc"></a>
        </th>
        <th>
            No Telepon
            <a href="index.php?sort=phone_number&order=asc"></a>
            <a href="index.php?sort=phone_number&order=desc"></a>
        </th>
        <th>
            Kelas
            <a href="index.php?sort=class&order=asc"></a>
            <a href="index.php?sort=class&order=desc"></a>
        </th>
        <th>Action</th>
    </tr>
</thead>
Penjelasannya: Jika user mengklik salah satu tanda panah dari beberapa kolom yang ada maka akan mengirimkan data melalui method GET, dengan nilai:

sort, mengurutkan data sesuai kolom yang dipilih,
order, terdapat dua pilihan nilai yakni asc dan desc.

File index.php 
<?php

include "lib/library.php";

// Check apakah sudah login atau belum, jika belum
// sistem akan me-redirect ke halaman login.php
if (checkLogin() == false) {
    header("Location: login.php");
}

// Membuat Query SQL mengambil data siswa
$query = "SELECT * FROM students";

// Searching
$search = @$_GET['search'];
if (!empty($search)) {
    $query .= " WHERE nis LIKE '%$search%' 
            OR name LIKE '%$search%'";
}

// Ordering
$order_field = @$_GET['sort']; // Mengambil field yang akan di sort
$order_mode = @$_GET['order']; // Mengambil modenya, asc / desc
if (!empty($order_field) && !empty($order_mode)) {
    $query .= " ORDER BY $order_field $order_mode";
}

$result = $mysqli->query($query);

include "views/index.php";

Mengecek adanya data pada variabel $order_field dan $order_mode, jika ternyata tidak kosong (ada) maka pada variabel $query diconcat dengan query baru diatas untuk bagian fungsi ordernya.

Mencoba order desc pada field nama, jika dibuka di browser:






Mungkin cukup sekian materi Searching dan Order PHP nya. 
Semoga sobat-sobat codingers paham, mengerti dan menguasainya. 
Dan mohon maaf atas semua kesalahan yang telah saya perbuat, tolong berikan koreksi mengenai bagian mana yang salah/kurang pas dalam postingan ini, untuk pengembangan lebih baik kedepannya.

Sekian, saya ucapkan terimakasih banyak atas waktu yang telah diluangkan, saya ucapkan kembali mohon maaf atas segalanya kesalahan. 

Wabilahiltaufik walhidayah, Wassalamu'alaikum warahmatullahi wabarakatuh.
Keep Coding Stay Awesome

0 Response to "PHP: Praktikum Searching and Ordering"

Post a Comment

Postingan Terbaru

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel