Ilmu Coding Ilmucoding.com - Merupakan situs yang membantu Anda belajar coding lebih mudah, nyaman, interaktif dan profesional. Belajar sekarang di ilmu coding. GRATIS

Tutorial Codeigniter #3: Export Data ke PDF Berdasarkan Dua Tanggal

4 min read

Tutorial Codeigniter - Ilmucoding

Halo coder, kali ini saya akan membahas tentang fitur export data ke PDF berdasarkan dua tanggal (range) di Codeigniter.

Penasaran donk gimana cara buatnya?

So, yuk kita mulai saja…

Tutorial kali ini merupakan lanjutan dari Tutorial Codeigniter #2: Membuat Fitur Export Data ke PDF.

Agar bisa mengikuti tutorial kali ini, kami sarankan Anda mengikuti tutorial sebelumnya yang kami rekomendasikan.

Harapan kami agar Anda tidak tersesat ketika mengikuti tutorial ini.

Baik, kami anggap Anda sudah membaca dan memahami materi sebelumnya. Jadi bisa kami lanjutkan tutorialnya.

Kami membayangkan setiap programmer pernah membuat fitur laporan namun harus berdasarkan antara dua waktu tertentu.

Jika di tutorial sebelumnya hanya sebatas semua laporan, kali ini laporannya lebih spesifik.

Untuk mewujudkan itu semua kiat perlu melakukan beberapa step berikut ini:

Step 1 – Ubah Nama Table “ci_pdf” dari “Order” Menjadi “Orders”

Perubahan nama ini diperlukan agar query buka laporan antara dua tanggal tidak akan terjadi error. Sebab jika nama tablenya order akan terbaca seperti “order by” yang merupakan sintax Mysql.

Step 2 – Modifikasi Order Controller

Buka Order.php pada directory applications/controllers, lalu ubah menjadi:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Order extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('order_model');
    }

    public function index()
    {
        $data['orders'] = $this->order_model->get_all();
        $this->load->view('list_order', $data);
    }
    
    public function create()
    {
        $this->load->view('add_order');
    }
    public function store()
    {
        $product = $this->input->post('product');
        $tanggal = $this->input->post('tanggal');
        $jumlah = $this->input->post('jumlah');
        $total = $this->input->post('total');
        $data = [
            'product' => $product,
            'tanggal' => $tanggal,
            'jumlah' => $jumlah,
            'total' => $total
        ];
        $simpan = $this->order_model->insert("orders", $data);
        if($simpan){
            echo '<script>alert("Berhasil menambah data order");window.location.href="'.base_url('index.php/order').'";</script>';
        }
    }

    public function form_export()
    {
        $this->load->view('form_export');
    }

    public function export() {
        $tgl_awal = date('Y-m-d', strtotime($this->input->post('tanggal_awal')));
        $tgl_akhir = date('Y-m-d', strtotime($this->input->post('tanggal_akhir')));
        $orders = $this->order_model->get_all_with_date($tgl_awal, $tgl_akhir);
        $tanggal = date('d-m-Y');

        $pdf = new \TCPDF();
        $pdf->AddPage();
        $pdf->SetFont('', 'B', 20);
        $pdf->Cell(115, 0, "Laporan Order - ".$tanggal, 0, 1, 'L');
        $pdf->Cell(115, 0, "Tanggal Awal: ".date('d-m-Y', strtotime($this->input->post('tanggal_awal'))), 0, 1, 'L');
        $pdf->Cell(115, 0, "Tanggal Akhir: ".date('d-m-Y', strtotime($this->input->post('tanggal_akhir'))), 0, 1, 'L');
        $pdf->SetAutoPageBreak(true, 0);
        
        // Add Header
        $pdf->Ln(10);
        $pdf->SetFont('', 'B', 12);
        $pdf->Cell(10, 8, "No", 1, 0, 'C');
        $pdf->Cell(55, 8, "Produk", 1, 0, 'C');
        $pdf->Cell(35, 8, "Tanggal", 1, 0, 'C');
        $pdf->Cell(35, 8, "Jumlah", 1, 0, 'C');
        $pdf->Cell(50, 8, "Total", 1, 1, 'C');
        $pdf->SetFont('', '', 12);

        foreach($orders->result_array() as $k => $order) {
            $this->addRow($pdf, $k+1, $order);
        }

        $tanggal = date('d-m-Y');
        $pdf->Output('Laporan Order - '.$tanggal.'.pdf'); 
    }

    private function addRow($pdf, $no, $order) {

        $pdf->Cell(10, 8, $no, 1, 0, 'C');
        $pdf->Cell(55, 8, $order['product'], 1, 0, '');
        $pdf->Cell(35, 8, date('d-m-Y', strtotime($order['tanggal'])), 1, 0, 'C');
        $pdf->Cell(35, 8, $order['jumlah'], 1, 0, 'C');
        $pdf->Cell(50, 8, "Rp. ".number_format($order['total'], 2, ',' , '.'), 1, 1, 'L');
    }

}

Step 3 – Modifikasi Order Model

Buka Order_model.php pada directory applications/models, lalu ubah menjadi:

<?php
class Order_model extends CI_Model
{

    public function get_all_with_date($tgl_awal, $tgl_akhir)
    {
        return $this->db->query("SELECT * FROM orders WHERE tanggal between '$tgl_awal' AND '$tgl_akhir' ORDER BY tanggal ASC");
    }

    public function insert($table, $data)
    {
        return $this->db->insert($table, $data);
    }
}

Step 4 – Modifikasi List Order

Buka list_product.php pada directory applications/views, lalu ubah menjadi:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>List Order</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    <style>
        .row {
            padding: 20px;
        }
    </style>
</head>
<body>
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-12">
                <div class="card">
                    <div class="card-header">
                        List Data Order
                        <div class="btn-group float-right">
                            <a href="<?= base_url('index.php/order/create') ?>" class="btn btn-success">Tambah</a>
                            <a href="<?= base_url('index.php/order/form_export') ?>" class="btn btn-primary" target="_blank">Export</a>
                        </div>
                    </div>
                    <div class="card-body">
                        <table class="table table-bordered table-hover">
                            <thead>
                                <tr>
                                    <th>No</th>
                                    <th>Produk</th>
                                    <th>Tanggal</th>
                                    <th>Jumlah</th>
                                    <th>Total</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php $no = 1; foreach($orders->result_array() as $data) { ?>
                                <tr>
                                    <td><?= $no++ ?></td>
                                    <td><?= $data['product'] ?></td>
                                    <td><?= $data['tanggal'] ?></td>
                                    <td><?= $data['jumlah'] ?></td>
                                    <td class="text-left"><?= 'Rp. '.number_format($data['total'], 2, ',' , '.') ?></td>
                                </tr>
                                <?php } ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- Page Script -->
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</body>
</html>

Step 5 – Buat Form Export Berdasarkan Dua Tanggal

Buat form_export.php pada directory applications/views, lalu ketik code berikut:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Form Export</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    <style>
        .row {
            padding: 20px;
        }
    </style>
</head>
<body>
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-12">
                <div class="card">
                    <div class="card-header">
                        Form Export
                    </div>
                    <div class="card-body">
                        <form action="<?= base_url('index.php/order/export') ?>" method="post" target="_blank">
                            <div class="form-group">
                                <label for="">Tanggal Awal</label>
                                <input type="date" name="tanggal_awal" class="form-control">
                            </div>
                            <div class="form-group">
                                <label for="">Tanggal Akhir</label>
                                <input type="date" name="tanggal_akhir" class="form-control">
                            </div>
                            <div class="form-group">
                                <button class="btn btn-primary" type="submit">Buka Laporan</button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- Page Script -->
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</body>
</html>

Step 6 – Uji Aplikasi

Pada akhirnya kita telah sampai pada proses modifikasi dan membuat form baru. Artinya aplikasi sudah siap diuji apakah berjalan dengan baik atau tidak.

Mari kita mulai:

Tampilan List Produk

Tutorial Codeigniter - Membuat Fitur Export ke PDF

Tampilan Form Export

Tutorial Codeigniter - Membuat Fitur Export ke PDF Berdasarkan Dua Waktu

Tampilan Laporan Akhir

Tutorial Codeigniter - Membuat Fitur Export ke PDF Berdasarkan Dua Waktu

Alhamdulillah, pengujian berhasil dan sukses.

Selanjutnya, Apa yang Harus Dilakukan?

Jika coder belum puas dengan penjelasan kami di tutorial kali ini, coder bisa menonton versi videonya di chanel youtube Ilmu Coding.

Kesimpulan

Codeigniter adalah framework yang bisa digunakan untuk berbagai macam kebutuhan aplikasi modern saat ini. Di samping itu masih banyak hal-hal yang bisa diexplore lagi dari codeigniter ini.

Pada akhirnya kami mengakhiri materi cara export data ke pdf di Codeigniter ini yang terdiri dari 2 seri.

Mohon maaf atas segala kekurangannya.

Semoga bermanfaat. Aamiin.

NB:

Cek repository kami yang membahas tutorial programming kami melalui Github. Klik di sini.

Ilmu Coding Ilmucoding.com - Merupakan situs yang membantu Anda belajar coding lebih mudah, nyaman, interaktif dan profesional. Belajar sekarang di ilmu coding. GRATIS

2 Replies to “Tutorial Codeigniter #3: Export Data ke PDF Berdasarkan Dua…”

  1. Message: Too few arguments to function Order_model::get_all_with_date(), 0 passed in C:\xampp\htdocs\appci\tespdf\application\controllers\Order.php on line 14 and exactly 2 expected

Leave a Reply

Your email address will not be published. Required fields are marked *

Jika terbantu dengan artikel ini, silahkan share, beri komentar dan "klik" 1 kali pada iklan ya.