Membuat Laporan dalam bentuk PDF di PHP terutama yang menggunakan framework Code Igniter 4 (CI4), sebenarnya sangat mudah, ada banyak library yang dapat digunakan untuk mempermudah pembuatan laporan pdf tersebut yang sifatnya open source dan mudah digunakan, serta ada banyak sekali tutorial di youtube maupun artikel blog yang membahas akan hal tersebut.


Namun karena pemrograman web saya masih pemula dan bahkan hanya selingan saja, terkadang jarang sekali berinteraksi dengan CI4 hanya untuk kasus-kasus tertentu saja, jadi untuk kasus-kasus tertentu saya sering lupa lagi langkah-langkahnya jika dikemudian hari saya harus berinteraksi lagi dengan CI4.

 

So melalui artikel ini saya hanya ingin mendokumentasikan beberapa catatan penting bagaimana cara mengintegrasikan TCPDF pada CI4 versi saya.

 

Mengintegrasikan dan menggunakan TCPDF di CI4 untuk membuat laporan PDF

Berikut adalah langkah-langkah yang bisa kita coba untuk mengintegrasikan TCPDF di CI 4 agar dapat digunakan untuk membuat laporan dalam bentuk file PDF.


Oh ya saya disini kebetulan tidak menggunakan composer, jadi yang saya gunakan adalah cara manual saja. langkahnya adalah sebagai berikut:

 

1. download library TCPDF

    download saja disini:https://github.com/tecnickcom/tc-lib-pdf

 

2. Extract dan letakan dilokasi projek ci4 kamu di folder app\Config\Libraries\

 Ganti saja nama folder hasil extract misal menjadi tcpdf seperti gambar di bawah ini:



3. pada projek ci4 kamu, buka file App\Config\Autoload.php, kemudian modifikasi sedikit di bagian dalamnya menjadi:


4. Untuk mencetak laporan PDF, saya buat file ProdukModel.php di folder models ci4, seperti kode berikut:

<?php

namespace App\Models;

use CodeIgniter\Model;

class ProdukModel extends Model {

    protected $table = 'produk';
    protected $primaryKey = 'ProdukID';
    protected $allowedFields = [
        'ProdukID',
        'NamaProduk',
        'Harga',
        'Stok'];

} 

Kemudian selanjutnya saya buat  file PDFReport.php di Controllers, dengan isi seperti kode di bawah ini:

<?php

namespace App\Controllers;

use App\Models\ProdukModel;
use TCPDF;

class PDFReport extends BaseController {

    protected $pModel;

    public function __construct()
        {     

            $this->pModel=new ProdukModel();
        }


    public function produk()
        {
            $data =  $this->pModel->findAll();

            $pdf = new TCPDF();
    $pdf->AddPage('P', 'mm', 'A4');
    $pdf->SetFont('', 'B', 12);
    $pdf->Cell(210, 10, "DAFTAR STOK BARANG", 0, 1, 'C');
    $pdf->SetAutoPageBreak(true, 0);
    // Add Header
    $pdf->Ln(10);
    $pdf->SetFont('', 'B', 12);
    $pdf->Cell(10, 8, "No", 1, 0, 'C');
    $pdf->Cell(130, 8, "Nama Barang", 1, 0, 'C');
    $pdf->Cell(35, 8, "Harga", 1, 0, 'R');
    $pdf->Cell(15, 8, "Stok", 1, 1, 'C');
    $pdf->SetFont('', '', 12);
    
    //Add Detail
    $no=0;
    foreach ($data as $row){
        $no++;
        $pdf->Cell(10,8,$no,1,0, 'C');
        $pdf->Cell(130,8,$row['NamaProduk'],1,0);
        $pdf->Cell(35,8,number_format($row['Harga'],2,',','.'),1,0,'R');
        $pdf->Cell(15,8,$row['Stok'],1,1,'C');
    }
    $pdf->SetFont('', 'B', 10);
    $pdf->Cell(210, 10, "Laporan Pdf Menggunakan Tcpdf, Instalasi Tcpdf dengan Download Library", 0, 1, 'L');
    $this->response->setContentType('application/pdf');
    $pdf->Output('Laporan-stok-barang.pdf');
        }
}
Jika bingung dengan perintah di atas, anda bisa baca dokumentasi lengkap TCPDF agar lebih paham.


Kemudian buat route:

//print
$routes->get('produk-pdf/','PDFReport::produk);

hasilnya kurang lebih seperti gambar di bawah ini:






 Sebenarnya sudah lama menggeluti code igniter dan sering juga membuat aplikasi web sekala kecil menengah dengan code igniter, sekarang sih lebih banyak di code igniter 4 atau ci4, tapi karena mungkin sudah lama berhenti, saat mencoba kembali menggunakan kode igniter, tidak jarang muncul error yang disibebkan oleh hal-hal sepele.

 

Ya karena lupa dan sudah lama pakum akhirnya  error ci4 yang muncul yang seharusnya mudah untuk diatasi terasa cukup membingungkan saat melakukan penelusuran.

 

Baru-baru ini karena baru terjun kembali di code igniter4, saat membuat aplikasi web, error pun muncul kembali, error yang saya dapati di projek saya saat dijalankan adalah:

call to a member function result() on bool

 

Sebenarnya error ini tidak asing, dan sering saya alami dan sebenarnya sudah tahu cara mengatasinya, namun berhubung lupa lagi dan tidak sempat saya dokumentasikan penyelesaiannya, akhirnya saya dibuat bingung 7 keliling. wkkw.

 

Nah artikel ini saya buat sebenarnya untuk saya pribadi, jika error tersebut saya alami dikemudian hari agar tidak lupa cara mengatasinya, mudah-mudahan ini juga bermanfaat dan dapat membantu siapapun anda yang mengalami error serupa di code igniter4.

 

Cara mengatasi Error: call to a member function result() on bool di Code Igniter4 

Pada kasus yang saya alami, error tersebut diakibatkan ada kesalahan pada saat akses basis data, entah itu salah nama basis data, salah nama table atau salah nama kolom pada saat kita menggunakan kode SQL untuk akses basis data.

 

Berikut kesalahan yang saya pernah alami yang menyebabkan Muncul Error call to a member function result() on bool saat aplikasi web yang dibuat menggunakan ci4 diakses melalui browser:

 

1. Tidak ada koneksi basis data karena mysql tidak aktif

Puter-puter mencari permasalahan error, eh ternyata mesin basis data mysqlnya tidak aktif, jadi jika anda menggunakan mysql db pastikan basis data mysql anda aktif, kadang karena beberapa hal basis data yang kita sebelumnya start menggunakan xampp tiba-tiba terputus. Jadi pastikan basis data mysql aktif.

 

2. Pastikan nama basis data yang diseting di file konfigurasi tidak salah.

di CI4, Konfigurasi akses ke basis data mysql bisa kita atur di file .env atau di file app>config>Database.php,

Nama basis data harus sama dengan nama di mysqldb

 

Pastikan nama basis  data yang ingin anda gunakan sesuai dengan nama basis data di mysql, ini pernah saya alami karena ada perbedaa huruf akhirnya muncul error seperti di atas.

 

3.Pastikan nama table yana akan diakses di model sama

Yang ketiga pastikan juga pada saat anda membuat model untuk mengakses table di basis data mysql, nama table yang anda cantumkan  sama dengan nama table di myslq.

Nama table di model harus sama dengan table di mysql
 

Bukan hanya nama table, primary key dan allowedFields yang anda deklarasikanpun pastikan sesuai dan cocok, terutama huruf besar dan huruf kecilnya.


 4. Pada saat menggunakan Query, pastikan objek basis data yang diakses sama

Pada saat menggunakan SQL untuk query data dari basis data, pastikan nama-nama objek basis data, nama table, kolom-kolom yang diaksesnya cocok dan sesuai, ini juga kadang menimbulkan error seperti di atas di ci 4.

 

Saya fikir, ada banyak kasus kenapa error di code igniter bisa terjadi, cara-cara di atas itu yang saat ini baru dapat saya identifikasi untuk permasalahan error: call to a member function result() on bool.

 

Kasusnya mungkin berbeda untuk projek teman-teman, seiring dengan apa yang saya alami saya akan coba terus update mengenai solusi-solusi untuk error di atas agar bisa menjadi panduan atau referensi penyelesaian masalah saaat error serupa terjadi di kemudian hari.

 

-Salam Ngoding-




Code igniter (CI) adalah framework yang cukup populer dikalangan para pengembang tanah air, untuk mengembangkan aplikasi web, framework ini sangat mudah digunakan, ringan dan juga memiliki kemanan yang sudah terjamin. seiring dengan perkembangannya Code Igniter kini sudah merelease Code Igniter versi 4 atau dikenal dengan singkatan CI4, dimana pada versi 4 ini sudah cukup banyak mengalami perubahan dibandingkan dengan versi 3 sebelumnya.

 

Akan tetapi konsep framewok code igniter 4 ini masih sama dengan pendahulunya yaitu mengusung konsep MVC (Model, View danControl), yang memecah MODUL menjadi tiga bagian utama yaitu Model yang berfungsi untuk mengatur proses proses yang berkaitan dengan basis data, view berkaitan dengan urusan tampilan halaman web dan controller berkaitan dengan pengaturan untuk mengintergrasikan model dan view.

 

Sudah banyak diketahui bahwa Untuk mempermudah pengembangan aplikasi web menggunakan code igniter, yang paling umum digunakan adalah aplikasi web server local seperti xampp, laragon, wamp server dan aplikasi web server serupa lainnya, dengan memakai web server local pengembang dapat melakukan ujicoba dengan menggunakan domain localhost secara lebih mudah.

 

Page Not Found 404 pada CI4

Ada banyak permasalahan yang kemungkinan muncul pada saat uji coba pengembangan, satu diantara yang paling banyak dialami oleh pengembang terutama pengembang pemula adalah Page Not Found 404, Error page not found 404 pada code igniter dapat terjadi karena beberapa hal tapi umumnya error ini disebabkan oleh  alamat URL tujuan tidak ditemukan.

 

Sayangnya Terkadang untuk beberapa kasus error page not found 404 pada kode igniter bisa terjadi bukan hanya disebabkan oleh alamat url yang tidak ada, ada beberapa kasus lainnya dimana alamat urlnya sudah benar tapi error page not found 404 masih saja terjadi.

 

Di artikel kali ini saya akan coba uraikan beberapa permasalahan yang bisa menyebabkan page not found 404 pada code igniter 4 beserta cara mengatasinya, mudah-mudahan satu diantara penyebab page not found 404 yang saya uraikan diartikel kali ini cocok dengan permasalahan pada source dari code igniter 4 anda.

 

Mengatasi Page Not Found 404 pada Code Igniter 4

Untuk mengatasi Error page not found 404 pada code igniter anda, langkah pertama anda harus tahu hal-hal yang bisa menyebabkan Error tersebut muncul, berikut uraiannya.

 

1. Penulisan Route salah

Yang pertama yang bisa menyebabkan Error pada Code igniter 4 yang bisa terjadi adalah karena salah dalam penulisan nama Route  misal karena salah menuliskan nama fungsi dan atau nama controller pada route.

Format penulisan Route yang benar pada kode igniter adalah sebagai berikut:

$routes->get('nama-route','NamaController::nama_fungsi');

atau

$routes->post('nama-route',NamaController::nama_fungsi');

Yang harus diperhatikan dalam pembuatan route adalah sebagai berikut:

  • Pastikan nama-route tidak mengandung spasi, bisa diganti dengan menggunakan karakter -
  • Pastikan NamaController penulisan huruf besar dan huruf kecilnya benar, wajib sesuai dengan Nama class dan file Controller yang anda buat.
  • nama_fungsi pastikan penulisannya benar dan tersedia
  • Jika route akan dipanggil menggunakan link maka bisa menggunakan $routes->get (.......
  • Sementara jika alamat route akan dipanggil pada form menggunakan tombol submit, maka pastikan route yang dibuat menyesuaikan dengan method yang digunakan pada form, untuk form yang menggunakan method='get' maka route menggunakan perintah $routes->get(......, sementara jika method pada form menggunakan method='post', maka pastikan intruksi route yang dibuat menggunakan kode $routes->post(........

 

2. Sesuaikan penulisan route dengan atribut method yang digunakan pada Form.

Jika alamat url dipanggil menggunakan tombol submit yang dimiliki oleh sebuah form, maka route yang dibuat harus menyesuaikan dengan method yang digunakan oleh form tersebut.

Misal  :

<form method="post" action="simpan-data">

        .....

        <input type="submit" value="Simpan>

</form>


Form di atas menggunakan method="post", maka jika atribut action pada form memanggil nama route simpan-data, dan nama route simpan-data akan memanggil fungsi simpan_data() pada XController, kode route yang harus dibuat pada file app/config/Routes.php adalah sebagai berikut:

$routes->post('simpan-data',"XController::simpan_data")

Sementara jika form menggunakan method="get", maka, route yang harus dibuat adalah

$routes->get('simpan-data',"XController::simpan_data")

 

 3. Salah dalam penulisan URL pada browser

Pastikan penulisan URL pada browser di komputer local pada saat uji coba benar, umumnya pemanggilan url code igniter 4 yang menggunakan webserver local menggunakan format:

http://localhost/nama_project_kamu/public/nama-route

Pastikan nama_project_kamu, huruf besar dan huruf kecilnya sama sesuai dengan folder project code igniter 4 kamu, jika tidak maka kode igniter akan mengalami error page not found 404.

misal project kamu disimpan pada c://xampp/Sekolah/

maka penulisan yang benar alamatnya harus:

http://localhost/Sekolah/public/nama-route

 Sekolah huruf S nya harus menggunakan huruf besar sesuai nama Project nya, jika menggunakan nama kecil (sekolah), biasanya akan menyebabkan page not found 404, walaupun penulisan nama-route, controlle dan fungsinya benar.

 

4. Ada Error pada Kode fungsi di Controller

Penyebab yang ke 4 yang bisa menyebabkan error page not found 404 adalah disebabkan karena ada kesalahan kode pada bagian fungsi yang terdapat di class Controller.

Cara Mengatasi:

a. Periksa nama kelas Controller barangkali ada kesalahan, nama kelas controller harus sama dengan nama filenya.

b. Periksa nama fungsi, barangkali ada penulisan karakter yang salah sehingga tidak ditemukan

c. Periksa Route, barangkali ada penulisan, pastikan penulisannya benar.

 

Selain cara di atas jika error tetap ada, silahkan uji coba misal dengan menghaspus beberapa code yang dicurigai error dan menjalankan url routenya kembali, biasanya jika ada error pada fungsi dan kode controller terkadang muncul error 404.


5. Ada Perubahan Code pada File-file bawaan code igniter.

Ini pun kadang terjadi apalagi untuk kamu yang masih pemula, jika ke 4 langkah di atas dipastikan benar, maka coba panggil halaman default kode igniter yaitu dengan menulisakan URL:

http://localhost/nama_project_ci_4_kamu.

umumnya harus keluar halaman bawaan kode igniter kamu, jika tidak muncul bisa jadi ada intruksi code igniter terutama pada file-file bawaan kode igniter yang termodifikasi tanpa senagaha. ini pernah saya alami, karena di beberapa file bawaan code igniter yang sempat syaa buka, file tertambahkan karakter khusus karena keyboard error atau beberapa karakter tertekan tanpa sengaja, alhasil error.

 Upload Code Igniter 4 (CI4) ke webhosting untuk domain utama maupun subdomain sebenarnya sangatlah mudah, tapi untuk pemula saya yakin akan merasa bingung, itupun yang terjadi pada saya saat mengupload CI4 ke webhosting, tidak seperti CI3, CI4 ini sedikit berbeda caranya.

 

Setelah membaca beberapa artikel tentang cara upload Ci4 ke hosting pun, saya masih dibuat bingung, namun setelah mencoba beberapa kali berjam-jam, akhirnya menemukan solusinya dan ternyata tidak sesualit yang dirasakan sebelumnya.


Mengenai Code igniter ini sebenarnya dari dulu saya sangat menyukai framework yang satu ini, dulu saya sering menggunakan CI3, namun itu dulu, sekarang karena sudah release versi baru yaitu CI4, dengan terpaksa sayapun mulai kembali menggunakan CI4 untuk mengembangkan sistem informasi web setelah sekian lama vakum, dan ternyata sayapun perlu adaptasi lagi karena di CI4 ini sudah banyak perubahan, terutama dari penulisan fungsi dan struktur foldernya, sangat berbeda sekali dengan CI3 sebelumnya. 

 

CI 4 memiliki struktur yang lebih baik dan lebih aman. struktur direktori CI4 memisahkan antara core dan aplikasi pengembang ini untuk tujuan keamanan, dan ini yang menyebabkan saya sedikit kesulitan saat saya mengupload Aplikasi Web CI4 saya ke hosting. 

 

 Untuk anda yang masih belum berhasil upload aplikasi Web ci4 ke hosting, anda beruntung karena sudah membaca artikel saya ini, mudah-mudahan dengan petunjuk di artikel ini anda berhasil mengupload aplikasi web anda ke webhosting baik untuk domain utama, maupun untuk subdomain.


Persiapan upload CI4 ke webhosting online

Untuk mengupload CI4 ke webhosting kamu agar halaman CI4 kamu dapat diakses secara online melalui internet, ada beberapa hal yang harus kamu persiapkan terlebih dahulu, yaitu mengkompress file-file CI4 kamu dalam format .ZIP  yang nanti akan diupload ke webhostingmu, langkah-langkahnya adalah sebagai berikut:


1. Masuk ke folder CI4 anda, kemudian pilih semua file (CTRL + A), kecuali folder public (pastikan folder ini jangan dipilih ya), seperti gambar berikut:

Kemudian, buat file ZIP untuk file-file ci4 yang sudah kamu pilih tersebut (silahkan gunakan aplikasi kompress seperti winrar, winzip dll), dan kasih nama file zip kamu misal: CI4_Core.zip.

 

2. Setelah kamu berhasil membuat CI4_Core.zip, langkah selanjutnya masuk ke dalam folder public, kemudian pilih semua file (CTRL + A) yang terdapat dalam folder public, seperti berikut:

Kemudian buat file ZIP untuk file-file yang dipilih tersebut dan berinama CI4_public.zip,


Sampai langkah ini Kamu sekarang sudah memiliki 2 buah file ZIP, yaitu CI4_Core.zip dan CI4_public.zip, silahkan siapkan 2 file tersebut untuk diupload ke webhosting punyamu.


Upload CI4 ke Subdomain punyamu.

Setelah kamu membuat 2 buah file ZIP untuk CI4 kamu,langkah selanjutnya adalah mengupload CI4 kamu ke subdomain yang kamu miliki, langkahnya adalah sebagai berikut:

 

1. Silahkan login ke Halaman C-Panel webhosting kamu (saya anggap kamu sudah bisa caranya).

 

2. Buat subdomain


 Akan muncul form pembuatan subdomain seperti gambar di bawah ini:

 

 

Setelah subdomain berhasil dibuat, maka pada folder public_html akan muncul folder baru sesuai dengan nama subdomain yang kamu buat, contoh di atas adalah folder sqlmile.


3. Selanjutnya cari dan pilih File Manager untuk masuk ke halaman file manager webhostingmu:


4. Kemudian pada halaman file manager, pilih folder public_html di bagian kiri, lalu pilih dan masuk ke folder subdomain yang sudah kamu buat (untuk contoh yang saya buat yaitu sqlmail)

 

5. setelah masuh ke folder subdomain kamu, buat folder baru dengan nama ci4_core

 

Setelah dibuat, silahkan masuk ke dalam folder ci4_core tersebut, lalu uploadkan file CI4_core.zipd ari komputermu yang sudah kamu buat sebelumnya, setelah upload selesai extract file CI4_core.zip dan hapus file CI4_core.zip tersebut setelah extract selesai. sehingga isi folder ci4_core  kamu hasilnya kelihatan seperti gambar di bawah ini:


6. Kembali lagi ke folder subdomainmu, lalu uploadkan file public.ZIP dari komputermu, kemudian extract pada subdomainmu,  sehingga isi folder subdomainmu hasilnya akan kelihatan seperti gambar di bawah ini:

 

7. pada folder subdomainmu, selanjutnya silahkan Pilih file index.php,

Lalu edit isinya menjadi sebagai berikut:


8. Selanjutnya masuk ke folder ci4_core, lalu edit file .env lakukan perubahan pada baris app.baseURL seperti gambar di bawah ini, sesuaikan dengan subdomain punya kamu

 

Jangan lupa untuk melakukan penyimpanan, setelah selesai.

 

9. Masih pada file .env, kamupun bisa melakukan konfirugasi untuk basis data dan lain sebagainya, sesuaikan dengan kebutuhan mu.


Sampai tahap di atas, anda bisa cek subdomainmu pada browser, misal dengan mengetikan nama subdomainmu, misal punya saya (https://sqlmail.testestes.com), seharusnya jika konfigurasi benar tampilan ci4 kamu akan muncul pada browser yang kamu gunakan.


Cara Upload CI4 pada domain Utama

Untuk upload CI4 pada domain utama, langkahnya sama dengan cara di atas, silahkan upload file public.zip pada public_html, dan file CI4_Core.zip pada folder ci4_core pada folder public_html domain hosting punya kamu, jika selesai harus kelihatan seperti gambar di bawah ini:


Selanjutnya pada folder public_html, lakukan konfigurasi pada file index.html dan file ci4_core/.env sesuai dengan langkah-langkah di atas, ingat sesuaikan dengan nama domain utama mu.


seharusnya cara di atas jika benar akan berhasil.