Sabtu, 30 Oktober 2021

Pagination Pada PHP

Untuk selanjutnya yakni pada tutorial ini akan membahas tampilan data. Bagaimana bila tampilan data yang kita kelola sangat besar mencapai ribuan bahkan jutaan data, tentu ini akan sangat banyak memakan waktu ketika menampilkan data dalam satu halaman. Dengan demikian kita harus membaginya jadi persekian data perhalaman agar waktu untuk menampilkan data lebih cepat atau yang sering disebut pagination.
Paginasi php


Buatlah variabel untuk data yang ditampilkan pada file read.php dengan variabel $perhalaman dimana jumlah data perhalaman yang akan ditampilkan. Untuk variabel $jumlahResult untuk jumlah semua data dari sql yang kita jalankan. Pada variabel $nomer_halaman kita menggunakan fungsi ceil yang menggunakan hasil pembagian semua data dengan jumlah data yang akan ditampilkan perhalamannya. Berikut ini contoh penggunaanya.
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
        <meta name="description" content="php programming" />
        <meta name="author" content="Yusuf Abdulloh" />
        <title>BACA Data</title>
    </head>
    <body>
        <?php
        require_once("connectdb.php");
        $perhalaman = 50
        ;
        $sql = "SELECT id, namadpn, namablkg , email FROM tamu";
        $result = $conn->query($sql);
        $jumlahResult = $result->num_rows;
        $nomer_halaman = ceil ($jumlahResult / $perhalaman);  
        if (!isset ($_GET['halaman']) ) {  
        $halaman = 1;  
        } elseif (is_numeric($_GET['halaman'])) {  
        $halaman = $_GET['halaman'];  
        }else{
        echo "<p><b>halaman tidak ditemukan</b></p>";
        }  
        $halaman_pertama = ($halaman-1) * $perhalaman;
        $sql = "SELECT *FROM tamu LIMIT " . $halaman_pertama . ',' . $perhalaman;
        $result = $conn->query($sql);
        try{
        if ($jumlahResult > 0) {
            echo "<table>";
            echo "<tr><th>ID</th><th>Nama</th><th>Email</th><th colspan=\"2\">Aksi</th></tr>";
            while($row = $result->fetch_assoc()) {
                echo "<tr><td>" . $row["id"]. "</td><td>" . $row["namadpn"]. " " . $row["namablkg"]."</td><td>" .$row["email"]."</td><td><a href=\"view.php?id=".$row["id"]."\">Perbarui</a></td><td><a  onclick=\"konfirmasi(".$row["id"].")\">Hapus</a></td></tr>";
            }
        echo "</table>";
        } else {
            echo "Data tidak tersedia";
        }
        }catch(Exception $e){
        print "System sedang sibuk harap kembali lagi nanti";
        }catch(Error $e){
        print "404 error";
        }
        $conn->close();
        
        for($halaman = 1; $halaman<= $nomer_halaman; $halaman++) {  
                echo '<a href = "read.php?halaman=' . $halaman . '">' . $halaman . ' </a>';  
        }
        ?>
<!--- Dibawah ini fungsi javascript untuk konfirmasi penghapusan data --->
<script>
    function konfirmasi(id){
    let  a = confirm("Apakah kamu yakin ingin menghapus data dengan id "+id+"?");
    if (a==true){
        window.location.href = "/remove.php?id="+id ;
    }
    }  
</script>
    </body>
</html>
Pada script kode diatas kita menggunakan metode get yang merupakan metode yang bisa saja menjadi cela atau bug keamanan maka dari itu saya menaruh try-catch block pada pengeksekusian sql perhalaman sehingga script diatas sudah aman dari bug keamanan tersebut. Disisi lain kamu harus perhatikan pada script $_GET['halaman'] yang merupakan hasil dari metode get untuk nomer halaman yang akan ditampilkan. Saya juga menggunakan fungsi is_numeric untuk memfilter masukan dari metode get untuk nomer halaman dimana yang bisa dieksekusi dengan benar hanyalah data tipe nomer. selain itu akan dialihkan ke status error yang dibuat.
Program ini cukup kompleks dan memakan banyak waktu untuk program besar yang membutuhkan proses maintenance (pembaruan) secara berkala. sehingga terkadang kita menambah waktu untuk menulis kembali kode yang mesti digunakan. Tetapi sangat bagus untuk dipelajari sebagai dasar pembuatan website atau blog yang dinamis. Happy coding all!

Tidak ada komentar:

Posting Komentar