Kali ini kita akan membuat sebuah pencarian sederhana di CodeIgniter 4, ada banyak perubahan yang perlu dilakukan bila anda pindah dari CodeIgniter versi 2/3 ke CodeIgniter 4. Beberapa diantaranya
– Penggunaan .env untuk menyimpan variabel
– Penggunaan composer
– PHP minimal 7.2+
– Server development menggunakan spark, seperti artisan di Laravel

Sebelum memulai tutorial ini pastikan PHP, MySQL/MariaDB sudah terinstall di system anda.

Install CodeIgniter 4

Install CodeIgniter 4 dengan composer

composer create-project codeigniter4/appstarter pencarian

setelah selesai, folder baru dengan nama pencarian akan muncul. Pindah ke folder tersebut untuk memulai proses pembuatan scriptnya.
Mirip seperti Laravel, CodeIgniter 4 sudah menggunakan dotenv (.env) untuk menyimpan konfigurasinya. Copy file env menjadi .env, di linux/MacOS caranya

cp env .env

Buat User dan Database

Database yang akan digunakan adalah MariaDB, kita perlu membuat database dan user baru untuk aplikasi yang akan kita buat. Hal ini sangat penting agar tidak bercampur dengan aplikasi lainnya.
Login sebagai MySQL root, lalu jalankan perintah dibawah ini

# buat database baru
create database pencarian;
# buat user untuk database 
GRANT ALL PRIVILEGES ON pencarian.* TO "pencarian"@"localhost" IDENTIFIED BY "JARANGUDACOM";

mysql membuat user dan database codeigniter

Konfigurasi Database di CodeIgniter 4

Di folder project pencarian yang tadi dibuat terdapat file .env, buka file tersebut lalu edit/tambahkan

database.default.hostname = localhost
database.default.database = pencarian
database.default.username = pencarian
database.default.password = JARANGUDACOM
database.default.DBDriver = MySQLi

Import Data Dummy

Sebagai contoh kita akan mengimport data dummy yang sudah dipersiapkan dibawah ini. Login ke database pencarian

mysql -h localhost -u pencarian -p pencarian

copy paste file dibawah ini

CREATE TABLE `users` (
  `id` INT(11) NOT NULL,
  `first_name` VARCHAR(50) DEFAULT NULL,
  `last_name` VARCHAR(50) DEFAULT NULL,
  `email` VARCHAR(50) DEFAULT NULL,
  `password` VARCHAR(50) DEFAULT NULL,
  `country` VARCHAR(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
--
-- Dumping data for table `users`
--
INSERT INTO `users` (`id`, `first_name`, `last_name`, `email`, `password`, `country`) VALUES
(1, 'Winston', 'Bebis', '[email protected]', 'RCOWs2uJq7', 'Indonesia'),
(2, 'Ethelyn', 'Henrys', '[email protected]', 'ZwirrolHMukN', 'Russia'),
(3, 'Vittorio', 'Vellender', '[email protected]', 'hz7uqNpZ', 'Brazil'),
(4, 'Gearalt', 'Scinelli', '[email protected]', 'noer33vU', 'Poland'),
(5, 'Fey', 'Stevens', '[email protected]', 'j1afGfuw7Ve7', 'China'),
(6, 'Bentley', 'Ditt', '[email protected]', 'BUR6fv0A', 'Portugal'),
(7, 'Tonya', 'Rye', '[email protected]', 'X5tmZ9jDcS', 'China'),
(8, 'Juline', 'Roughey', '[email protected]', 'kjRRO45jeD0w', 'Indonesia'),
(9, 'Alic', 'Wevell', '[email protected]', 'TzSWEfZWy8vQ', 'China'),
(10, 'Norbie', 'Gelder', '[email protected]', '4jYZi2rj', 'Albania'),
(11, 'Emmalynn', 'Gabler', '[email protected]', 'Uri553LlQO', 'Sweden'),
(12, 'Sibelle', 'Bernardo', '[email protected]', 'Lbiznun', 'Ukraine'),
(13, 'Laurie', 'Spooner', '[email protected]', 'IpkvoEL96BXc', 'China'),
(14, 'Othilie', 'Eckly', '[email protected]', '27kZgqGFJMmL', 'Venezuela'),
(15, 'Artus', 'Pennycook', '[email protected]', 'QOs7uRh5yLKB', 'Mali'),
(16, 'Vincenz', 'Osler', '[email protected]', 'Gu5QCXHQ', 'China'),
(17, 'Isidro', 'Hemphall', '[email protected]', 'NQ4KEqzc', 'France'),
(18, 'Pinchas', 'Le Guin', '[email protected]', 'ZsfzyYqo', 'China'),
(19, 'Rorie', 'Aleksandrev', '[email protected]', 'dstH8RB5', 'South Africa'),
(20, 'Mayer', 'Pitkethly', '[email protected]', 'OHjZtbmX5gt', 'Canada'),
(21, 'Karol', 'Baiden', '[email protected]', 'EZ1iIWBYV1p6', 'Morocco'),
(22, 'Franciska', 'Peeters', '[email protected]', 'QJX2b8DfGs', 'Russia'),
(23, 'Chlo', 'Kennford', '[email protected]', 'NU8YjWQF', 'Portugal'),
(24, 'Wolfie', 'Lownds', '[email protected]', '1D00dQaOaO', 'Greece'),
(25, 'Sherri', 'Hellens', '[email protected]', 'Ee7nls3', 'Poland'),
(26, 'Emory', 'Semark', '[email protected]', 'VAIBfR8uO', 'Tajikistan'),
(27, 'Jakie', 'Hulks', '[email protected]', 'jI5ylhi', 'China'),
(28, 'Leticia', 'Mathie', '[email protected]', 'euFzcmE', 'Indonesia'),
(29, 'Raimondo', 'Milier', '[email protected]', '3fNmX69MpoiF', 'Poland'),
(30, 'Fawn', 'Cush', '[email protected]', 'odFVlovDiSj9', 'China');
 
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);
 
ALTER TABLE `users`
  MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=31;
COMMIT;

Membuat Model

Buat file model baru dengan nama UserModel.php di folder app/Models/

<?php namespace App\Models;
 
use CodeIgniter\Model;
 
class UserModel extends Model
{
    protected $table = 'users';
}

model diatas agar kita mudah mengakses table users yang tadi dibuat, untuk pencarian ini, file model tersebut sudah cukup.

Membuat Controller

Buat satu file controller baru dengan nama User.php di folder app/Controllers/. File di controller ini bisa kita bilang merupakan backend dari aplikasi sederhana yang kita buat

<?php namespace App\Controllers;
 
use App\Models\UserModel;
 
class User extends BaseController
{
    public function index()
    {
        return view('pencarian');
    }
 
    public function cari()
    {
        $users = new UserModel();
        $cari = $this->request->getGet('cari');
        $data = $users->where('country', $cari)->findAll();
        return view('hasil_pencarian', compact('data'));
    }
}

dari script diatas $users->where('country', $cari)->findAll(); melakukan query SELECT * FROM users WHERE country="$cari" untuk mengambil data berdasarkan firstname, lastname atau lainnya tinggal merubah dibagian country, sesuai dengan nama kolom tabel.

function index fungsi tersebut untuk menampilkan halaman HTML yang akan kita buat kemudian, sementara function cari berguna untuk melakukan query ke model UserModel dan menyimpan datanya di variable $data

Membuat View

Bagian terakhir disini kita membuat tampilan untuk user atau biasa disebut frontend. File yang akan kita buat diletakkan di app/Views/.

1. File pencarian.php, file ini akan ditampilkan sewaktu mengakses /user di browser. File ini berisi file HTML, dan memang isinya hanya HTML aja

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha2/css/bootstrap.min.css" integrity="sha384-DhY6onE6f3zzKbjUPRc2hOzGAdEf4/Dz+WJwBvEYL/lkkIsI3ihufq9hk9K4lVoK" crossorigin="anonymous">
    <title>Script Pencarian dengan CodeIgniter 4 &raquo; Jaranguda.com</title>
  </head>
  <body>
    <div class="container">
        <br>
        <h3>Pencarian</h3>
        <hr>
        <form  action="<?php echo base_url('user/cari')?>" action="GET">
          <div class="mb-3">
            <label for="cari">data yang dicari</label>
            <input type="text" class="form-control" name="cari" aria-describedby="cari">
          </div>
          <button type="submit" class="btn btn-primary" value="Cari">Submit</button>
        </form>
    </div>
  </body>
</html>

file html pencarian codeigniter

2. File hasil_pencarian.php, file ini yang akan dipanggil untuk menampilkan hasil pencarian setelah user mengklik tombol Submit.

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha2/css/bootstrap.min.css" integrity="sha384-DhY6onE6f3zzKbjUPRc2hOzGAdEf4/Dz+WJwBvEYL/lkkIsI3ihufq9hk9K4lVoK" crossorigin="anonymous">
    <title>Script Pencarian dengan CodeIgniter 4 &raquo; Jaranguda.com</title>
  </head>
  <body>
    <div class="container">
    <br>
    <h3>Hasil Pencarian</h3>
    <hr>
 
    <table class="table">
    <thead>
    <tr>
        <th>Nama Lengkap</th>
        <th>Email</th>
        <th>Password</th>
        <th>Negara</th>
    </tr>
    </thead>
    <?php
    if(count($data)>0) {
        foreach ($data as $user) {
            echo "<tr>";
            echo "<td>" . $user['first_name'] . ' ' .  $user['last_name'] . "</td>";
            echo "<td>" . $user['email'] . "</td>";
            echo "<td>" . $user['password'] . "</td>";
            echo "<td>" . $user['country'] . "</td>";
            echo "</tr>";
        }
    }
    else {
        echo "Data tidak ditemukan";
    }
    ?>
    </table>
 
 
    </div>
  </body>
</html>

hasil pencarian codeigniter

Leave a comment

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