SlideShare a Scribd company logo
1 of 13
Modul Pembelajaran
1
Pengenalan Frameword CodeIgniter
Framework CodeIgniter merupakan framework berbasis bahasa
pemrograman PHP yang menggunakan model MVC (model, view, dan
controller) untuk membangun sebuah aplikasi berbasis web yang dinamis,
dengan konsep ini akan mudah dalam membangun sebuah aplikasi dan
desain tampilan yang terstuktur sehingga maintenance aplikasi lebih mudah.
CodeIgniter merupakan salah satu framework yang banyak dipakai saat ini,
selain mudah dalam penggunaan, dokumentasi yang disediakan oleh
komunitas (khususnya di Indonesia) juga banyak karena notabene CI bersifat
open source sehingga dapat diunduh gratis dan semua orang bisa ikut untuk
mengembangkannya.
Konsep MVC merupakan sebuah patern teknik pemprograman yang
memisahkan antara alur, data dan antarmuka suatu sistem, untuk lebih
jelasnya konsep MVC sebagai berikut:
• Model, biasanya berhubungan langsung dengan database (query)
untuk manajemen data.
• View, biasanya berupa file HTML, yang diatur oleh controller. View
berfungsi untuk menerima dan merepresentasikan data kepada user.
• Controller, merupakan bagian yang mengatur hubungan antara bagian
model dan bagian view, controller berfungsi untuk menerima request
dan data dari user kemudian menentukan apa yang akan diproses oleh
aplikasi.
Pembuatan Project
2
1. Siapkan server (bersifat local saja) untuk mengeksekusi bahasa PHP, disini
yang dipakai adalah XAMPP (bisa di download di
https://www.apachefriends.org/download.html)
2. Database server, ketika download XAMPP telah include yaitu MySQL
Database
3. Hidupkan service Apache dan MySQL
4. Text Editor, bisa Notepad++, Sublime Text 3, Visual Studio Code, dll
5. Framework codeigniter, jika belum ada bisa di download di
https://github.com/bcit-ci/CodeIgniter/archive/3.1.10.zip. Kemudian
ekstrak di letakkan di folder htdocs nama project sesuaikan dengan
keinginan.
Berikut tampilan awal dari framework codeigniter
6. Membuat database
Tabel dosen
CREATE TABLE `dosen` (
`id` int(10) NOT NULL,
`nip` varchar(18) NOT NULL,
`nama` varchar(100) NOT NULL,
3
`alamat` varchar(100) NOT NULL,
`deleted` enum('0','1') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `dosen` ADD PRIMARY KEY (`id`);
ALTER TABLE `dosen` MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
Tabel mata_kuliah
CREATE TABLE `mata_kuliah` (
`id` int(10) NOT NULL,
`mata_kuliah` varchar(100) NOT NULL,
`deleted` enum('0','1') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `mata_kuliah` ADD PRIMARY KEY (`id`);
ALTER TABLE `mata_kuliah` MODIFY `id` int(10) NOT NULL AUTO_INCREMENT;
Tabel pengampu
CREATE TABLE `pengampu` (
`id` int(10) NOT NULL,
`dosen_id` int(10) NOT NULL,
`mata_kuliah_id` int(10) NOT NULL,
`deleted` enum('0','1') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `pengampu`
ADD PRIMARY KEY (`id`),
ADD KEY `dosen_id` (`dosen_id`),
ADD KEY `mata_kuliah_id` (`mata_kuliah_id`);
ALTER TABLE `pengampu` MODIFY `id` int(10) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
ALTER TABLE `pengampu`
ADD CONSTRAINT `fk_dosen` FOREIGN KEY (`dosen_id`) REFERENCES `dosen` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `fk_mata_kuliah` FOREIGN KEY (`mata_kuliah_id`) REFERENCES `mata_kuliah` (`id`) ON DELETE CASCADE ON
UPDATE CASCADE;
Constraint diatas menunjukkan relasi antar tabel, dimana dalam teori
terbagi menjadi 3 jenis yaitu many to many, many to one, dan one to
many. Dalam sebuah relasi antar tabel, database (khususnya MySQL)
sendiri sudah memberi option ketika hal itu terjadi yaitu berupa cascade,
set null, no action, dan restrict. Berikut penjelasanya :
Cascade = apabila id pada tabel A dihapus maka tabel B juga ikut
terhapus
SET NULL = apabila id pada table A dihapus maka table B di set null
No action = apabila id pada table A dihapus maka tidak dilakukan apa-
apa
Restrict = apabila id pada table A ingin dihapus maka tidak
diperbolehkan jika di table B ditemukan ID yang berelasi
4
7. Setting awal, masuk ke folder application > config
config.php  $config['base_url'] = 'http://localhost/latihan/';
autoload.php  $autoload['helper'] = array('url');
$autoload['libraries'] = array('database');
database.php  'username' => 'root',
'password' => '',
'database' => 'latihan',
8. Membuat controller baru dengan nama controller Home, karena default
aplikasi ketika di buka adalah controller Welcome maka kita ubah ke
controller yg baru atau yg lainnya sesuai kebutuhan di file routes.php 
$route['default_controller'] = 'Home';, selain itu bisa juga mengarahkan
tampilan error 404 ketika user mengakses halaman yg tidak memiliki
akses, serta manipulasi url juga bisa dilakukan di file ini.
1. <?php
2. defined('BASEPATH') OR exit('No direct script access allowed');
3.
4. class Home extends CI_Controller {
5. public function index()
6. {
7. }
8. }
9. Membuat sebuah model yg isinya patern query karena nantinya akan
digunakan berulang kali.
Masuk ke folder application > folder model
1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2. class Master_model extends CI_Model{
3. function manualQuery($q)
4. {
5. return $this->db->query($q)->result();
6. }
7. function insertData($table,$data){
8. $res = $this->db->insert($table,$data);
9. return $res;
10. }
11. function updateData($table,$data,$field_key)
12. {
13. $this->db->update($table,$data,$field_key);
14. }
15. function deleteData($table,$data)
16. {
17. $this->db->delete($table,$data);
18. }
19. }
5
Karena model ini akan dipakai berulang kali, agar memudahkan dalam
pemanggilan set di file autoload.php  $autoload['model'] =
array('Master_model');
10.Buat tampilan home, masuk ke folder application > views
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Latihan</title>
5. <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
6. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-
awesome.min.css">
7. </head>
8. <body>
9. <div class="w3-row">
10. <div class="w3-container w3-quarter"></div>
11. <div class="w3-container w3-half">
12. <center><h1>Pengampu Mata Kuliah</h1></center>
13. <hr>
14. <button class="w3-button w3-small w3-teal">+ Tambah Data</button>
15. <br>
16. <br>
17. <table class="w3-table-all w3-card-4 w3-centered w3-border">
18. <thead>
19. <tr class="w3-gray">
20. <th style='text-align: center'>#</th>
21. <th style='text-align: center'>Mata Kuliah</th>
22. <th style='text-align: center'>Nama Dosen</th>
23. <th style='text-align: center'>Aksi</th>
24. </tr>
25. </thead>
26. <tbody>
27. <tr>
28. <th style='text-align: center'>1.</th>
29. <td>Mark</td>
30. <td>Otto</td>
31. <td><a href="" title='Ubah Data'><i class="fa fa-pencil"
style="color:blue;"></i></a>|<a href="" title='Hapus Data'><i class="fa fa-trash"
style="color:red;"></i></a></td>
32. </tr>
33. </tbody>
34. </table>
35. </div>
36. <div class="w3-container w3-quarter"></div>
37. </div>
38. </body>
39. </html>
11.Persiapkan data di controller yg nantinya akan ditampilkan di view
1. $data_matkul = $this->Master_model->manualQuery("SELECT a.* FROM mata_kuliah a WHERE a.deleted='0'");
2. $data = array();
3. foreach ($data_matkul as $key => $value) {
4. $pengampu = '';
5. $data_dosen = $this->Master_model->manualQuery("SELECT b.nama FROM pengampu a LEFT JOIN dosen b ON
a.dosen_id=b.id WHERE a.mata_kuliah_id=".$value->id." AND a.deleted='0' AND b.deleted='0'");
6. foreach ($data_dosen as $key => $value2) {
7. $pengampu .= $value2->nama.'<br>';
8. }
9. $data[] = array(
10. 'id' => $value->id,
6
11. 'mata_kuliah' => $value->mata_kuliah,
12. 'pengampu' => $pengampu
13. );
14. }
15. $data_tampil['data_matkul'] = $data;
16. $this->load->view('home',$data_tampil);
Kodingan diletakkan di fungsi index, karena setiap memanggil sebuah
controller defaultnya akan membaca fungsi index.
*Catatan: foreach sendiri adalah perulangan khusus untuk array yg
disediakan php, yg tentunya dapat menyimpan banyak data dalam satu
variabel akan sangat berguna untuk menyederhanakan dan menghemat
penggunaan variabel.
12.Integrasikan data yg dibawa dari controller dengan tabel yg telah dibuat
di view
1. <?php
2. $no = 1;
3. foreach ($data_matkul as $value) {
4. ?>
5. <tr>
6. <th style='text-align: center'><?= $no++; ?>.<br></th>
7. <td><?= $value['mata_kuliah']; ?></td>
8. <td><?= ($value['pengampu'] == "") ? '-' : $value['pengampu']; // ternary operators
?></td>
9. <td><a href="" title='Ubah Data'><i class="fa fa-pencil"
style="color:blue;"></i></a>|<a href="" title='Hapus Data'><i class="fa fa-trash"
style="color:red;"></i></a></td>
10. </tr>
11. <?php } ?>
13.Buat tampilan untuk menambahkan data
Karena menggunakan modal kita tambahkan dulu atribut untuk
memanggil css dan jquery
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
Kemudian persiapkan tombol yg akan digunakan untuk memunculkan
modal
<button data-toggle="modal" href="#tambahdata" class="w3-button w3-small w3-teal">+ Tambah Data</button>
Karena membutuhkan list data mata kuliah dan list data dosen maka harus
ada di controller
7
$data_tampil['data_matkul_master'] = $data_matkul;
$data_tampil['data_dosen'] = $this->Master_model->manualQuery("SELECT a.* FROM dosen a WHERE a.deleted='0'");
Tampilan untuk modalnya
<div class="modal fade bs-modal-lg" id="tambahdata" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-
hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">Form Tambah Data</h4>
</div>
<div class="modal-body">
<div class="box box-primary">
<!-- form start -->
<form role="form" class="form-horizontal" action="<?=site_url('Home/simpan_data');?>"
method="post">
<div class="form-body">
<div class="form-group form-md-line-input has-danger">
<label class="col-md-2 control-label" for="form_control_1">Mata Kuliah <span
class="required"> * </span></label>
<div class="col-md-10">
<?php
echo '<select name="matkul" class="form-control" required><option value="">--
Pilih --</option>';
foreach ($data_matkul_master as $key => $value) {
echo '<option value="'.$value->id.'">'.$value->mata_kuliah.'</option>';
}
echo '</select>';
?>
</div>
</div>
<div class="form-group form-md-line-input has-danger">
<label class="col-md-2 control-label" for="form_control_1">Daftar Dosen <span
class="required"> * </span></label>
<div class="col-md-10">
<?php
foreach ($data_dosen as $key => $value) {
echo'
<div class="col-md-6">
<input type="checkbox" name="dosen[]" value="'.$value->id.'">
'.$value->nama.'
</div>
';
}
?>
</div>
</div>
</div>
<br>
<div class="form-actions margin-top-10">
<div class="row">
<div class="col-md-offset-2 col-md-10">
<button type="button" data-dismiss="modal" class="btn default">Batal</button>
<button type="submit" class="btn blue">Simpan</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
8
</div>
14.Membuat fungsi untuk menambahkan data
Karena di modal sudah kita tuliskan nama fungsinya maka di controller
disamakan dengan nama fungsi simpan_data (tetap menggunakan
controller Home)
public function simpan_data(){
$this->db->trans_start();
for ($i=0; $i < COUNT($this->input->post('dosen')); $i++) {
$data = array(
'dosen_id' => $this->input->post('dosen')[$i],
'mata_kuliah_id' => $this->input->post('matkul')
);
$this->Master_model->insertData('pengampu',$data);
}
$this->db->trans_complete();
if($this->db->trans_status() === false){
echo 'alert("Gagal tambah data!!")';
echo "<script>window.location='".site_url()."'</script>";
}
else{
echo '<script>alert("Berhasil tambah data!!")</script>';
echo "<script>window.location='".site_url()."'</script>";
}
}
*Catatan:
o Transactions digunakan saat kita menjalankan beberapa query sebagai
satu kesatuan, untuk memastikan bahwa semua query tersebut
berhasil dijalankan, ketika salah satu ada yg gagal maka query yg lain
(dalam satu kesatuan dan itu berhasil) maka akan di cancel dan
memiliki balikan berupa false/ gagal.
o Modifier
 Public  seluruh kode program di luar class bisa mengaksesnya,
termasuk class turunan.
 Protected  property atau method tersebut tidak bisa diakses dari
luar class, namun bisa diakses oleh class itu sendiri atau turunan
class tersebut.
 Private  satu-satunya yang bisa mengakses adalah class itu
sendiri.
Operator Nama Contoh Hasil
9
== Sama
dengan
$x ==
$y
Jika $x sama dengan $y, Benar
=== Identik $x ===
$y
Jika $x sama dengan $y, dan memiliki
jenis yg sama, Benar
Kolarborasi Code dengan Git
Apa itu git?
Sebelum menggunakan git
Setelah menggunakan git
Apa perbedaannya?
10
Saat kita ingin menyimpan semua perubahan pada file, biasanya kita
membuat file baru dengan “save as”. Lalu, file akan menumpuk dalam
direktori proyek seperti pada ilustrasi di atas. Tapi setelah menggunakan git,
hanya akan ada satu file dalam proyek dan perubahannya disimpan dalam
database. Git hanya akan menyimpan delta perubahannya saja, dia tidak akan
menyimpan seluruh isi file yang akan memakan banyak memori.
Selain untuk mengontrol versi, git juga digunakan untuk kolaborasi code, dari
situ kita bisa tahu apa yang diubah dan siapa yang mengubahnya. Berikut
cara penggunaan git,
1. Install git, jika belum ada download di https://git-scm.com/downloads.
2. Selanjutnya pemilihan terminal emolator pilih Use Windows' default
console window.
3. Kemudian install sampai finish
4. Konfigurasi awal masukkan name dan email, jika kamu memiliki akun
Github, Gitlab, Bitbucket atau yang lainnya, maka username dan email
harus mengikuti akun tersebut agar mudah diintegrasikan.
git config --global user.name "fakhirrizal"
git config --global user.email bokir.rizal@gmail.com
untuk mengecek konfigurasinya bisa jalankan perintah berikut,
git config --list
6. Fork & clone repository
Fork bisa kita artikan sebagai menyalin repository dari akun orang lain ke
akun kita sendiri. https://github.com/fakhirrizal/latihan
7. Selanjutnya silahkan clone (download) repository tersebut ke komputer
lokal, ada pilihan antara https dan ssh, jika pilih ssh ketika melakukan push
maka tidak perlu memasukkan password. Namun disini agar cepat
11
menggunakan https saja, ssh membutuhkan setting public key terlebih
dahulu
git clone https://github.com/nama_akun/latihan.git/* jika belum ada repository dengan nama latihan */
8. Lakukan modifikasi pada code, kemudian commit terhadap apa yang
kamu rubah.
git add nama_file
git commit -m “pesan”
9. Melakukan push ke repository kita yg telah di fork dari project sumber
git push origin master
10.Mengupload perubahan ke project sumber
Melakukan pull request terlebih dahulu, pull request adalah istilah yang
bisa kita artikan sebagai permintaan untuk menggabungkan kode.
Setelah itu github akan memproses, jika berhasil makan akan muncul
pesan Able to merge, selanjutnya silahkan klik tombol Create pull
request.
Tambahkan catatan dari apa yg akan kamu kerjakan.
Setelah owner melihat hasil kodinganmu apakah sesuai dengan yg
diinginkan atau harus ada bagian direvisi, jika diterima biasanya akan ada
tulisan “Marged” berwarna ungu.
12
Jika kalian sebagai project manager yg bertugas untuk membuat repository,
kemudian akan mengupload proyek dari local ke GitHub
1. Masuk ke situs github.com kemudian buat sebuah repository baru
2. Berilah nama kemudian atur tingkat publikasinya, apakah public atau
private
3. Kemudian upload vie terminal dengan perintah berikut
git init gitadd . // titik dibelakang artinya upload all file
git commit -m "pesan"
git remote add origin https://github.com/username/nama_repository.git
git push -u origin master
4. Kemudian akan diminta akses ke akun GitHub untuk memproses upload
file, tunggu sampai selesai.

More Related Content

What's hot (15)

Array
ArrayArray
Array
 
Modul praktikum 3 - Android Sudaryatno
Modul praktikum 3 - Android SudaryatnoModul praktikum 3 - Android Sudaryatno
Modul praktikum 3 - Android Sudaryatno
 
WEB II PHP 03
WEB II PHP 03WEB II PHP 03
WEB II PHP 03
 
Implementasi ajax 25 okt2012
Implementasi ajax 25 okt2012Implementasi ajax 25 okt2012
Implementasi ajax 25 okt2012
 
Kelompok 7
Kelompok 7Kelompok 7
Kelompok 7
 
Batching php
Batching phpBatching php
Batching php
 
Desain Dashboard Berbasis Web dengan Platform Opensource
Desain Dashboard Berbasis Web  dengan Platform OpensourceDesain Dashboard Berbasis Web  dengan Platform Opensource
Desain Dashboard Berbasis Web dengan Platform Opensource
 
Modul praktikum 8 - Android Sudaryatno
Modul praktikum 8 - Android SudaryatnoModul praktikum 8 - Android Sudaryatno
Modul praktikum 8 - Android Sudaryatno
 
Modul mysql5
Modul mysql5Modul mysql5
Modul mysql5
 
Dasar dasar Database
Dasar dasar DatabaseDasar dasar Database
Dasar dasar Database
 
Modul praktikum 4 - Android Sudaryatno
Modul praktikum 4 - Android SudaryatnoModul praktikum 4 - Android Sudaryatno
Modul praktikum 4 - Android Sudaryatno
 
Modul praktikum 7 - Android Sudaryatno
Modul praktikum 7 - Android SudaryatnoModul praktikum 7 - Android Sudaryatno
Modul praktikum 7 - Android Sudaryatno
 
Materi my sql part 2
Materi my sql part 2Materi my sql part 2
Materi my sql part 2
 
Laporan 1 annissaul hidayah 11120018_6
Laporan 1  annissaul hidayah 11120018_6Laporan 1  annissaul hidayah 11120018_6
Laporan 1 annissaul hidayah 11120018_6
 
Materi my sql part 5
Materi my sql part 5Materi my sql part 5
Materi my sql part 5
 

Similar to Modul framework code igniter

Jamal aplikasicrud
Jamal aplikasicrudJamal aplikasicrud
Jamal aplikasicrud
males Aja
 
Membuat mvc framework sederhana dengan php
Membuat mvc framework sederhana dengan phpMembuat mvc framework sederhana dengan php
Membuat mvc framework sederhana dengan php
Cahya Dwiana SN
 
#7 - Stored Procedure And Function.pptx
#7 - Stored Procedure And Function.pptx#7 - Stored Procedure And Function.pptx
#7 - Stored Procedure And Function.pptx
ahmadfadlitambunan
 
Wawan tutorial-zend-bagian-4
Wawan tutorial-zend-bagian-4Wawan tutorial-zend-bagian-4
Wawan tutorial-zend-bagian-4
Haswi Haswi
 
Belajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterBelajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniter
George Kartutu
 
Belajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterBelajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniter
Muhammad Rais
 

Similar to Modul framework code igniter (20)

Form validation dengan code igniter
Form validation dengan code igniterForm validation dengan code igniter
Form validation dengan code igniter
 
16406 pertemuan17(konsep basis-data-di-web)
16406 pertemuan17(konsep basis-data-di-web)16406 pertemuan17(konsep basis-data-di-web)
16406 pertemuan17(konsep basis-data-di-web)
 
Jamal aplikasicrud
Jamal aplikasicrudJamal aplikasicrud
Jamal aplikasicrud
 
Membuat mvc framework sederhana dengan php
Membuat mvc framework sederhana dengan phpMembuat mvc framework sederhana dengan php
Membuat mvc framework sederhana dengan php
 
#7 - Stored Procedure And Function.pptx
#7 - Stored Procedure And Function.pptx#7 - Stored Procedure And Function.pptx
#7 - Stored Procedure And Function.pptx
 
Belajar php-dengan-framework-code-igniter1
Belajar php-dengan-framework-code-igniter1Belajar php-dengan-framework-code-igniter1
Belajar php-dengan-framework-code-igniter1
 
Modul PBO Bab-11 - JDBC
Modul PBO Bab-11 - JDBCModul PBO Bab-11 - JDBC
Modul PBO Bab-11 - JDBC
 
Script login form php
Script login form phpScript login form php
Script login form php
 
Modul Laravel 10 - ToT Laravel TcOT.pptx
Modul Laravel 10 - ToT Laravel TcOT.pptxModul Laravel 10 - ToT Laravel TcOT.pptx
Modul Laravel 10 - ToT Laravel TcOT.pptx
 
Laravel 5 Tutorial : Membuat Blog Sederhana dengan Laravel 5.3
Laravel 5 Tutorial : Membuat Blog Sederhana dengan Laravel 5.3Laravel 5 Tutorial : Membuat Blog Sederhana dengan Laravel 5.3
Laravel 5 Tutorial : Membuat Blog Sederhana dengan Laravel 5.3
 
Wawan tutorial-zend-bagian-4
Wawan tutorial-zend-bagian-4Wawan tutorial-zend-bagian-4
Wawan tutorial-zend-bagian-4
 
Blog 10
Blog 10Blog 10
Blog 10
 
Kelompok 7
Kelompok 7Kelompok 7
Kelompok 7
 
Belajar membuat modul crud di laravel 5
Belajar membuat modul crud di laravel 5Belajar membuat modul crud di laravel 5
Belajar membuat modul crud di laravel 5
 
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ci
 
Belajar framework code igniter xii rpl
Belajar framework code igniter xii rplBelajar framework code igniter xii rpl
Belajar framework code igniter xii rpl
 
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTEModul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
 
Belajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterBelajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniter
 
Belajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterBelajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniter
 

Modul framework code igniter

  • 2. 1 Pengenalan Frameword CodeIgniter Framework CodeIgniter merupakan framework berbasis bahasa pemrograman PHP yang menggunakan model MVC (model, view, dan controller) untuk membangun sebuah aplikasi berbasis web yang dinamis, dengan konsep ini akan mudah dalam membangun sebuah aplikasi dan desain tampilan yang terstuktur sehingga maintenance aplikasi lebih mudah. CodeIgniter merupakan salah satu framework yang banyak dipakai saat ini, selain mudah dalam penggunaan, dokumentasi yang disediakan oleh komunitas (khususnya di Indonesia) juga banyak karena notabene CI bersifat open source sehingga dapat diunduh gratis dan semua orang bisa ikut untuk mengembangkannya. Konsep MVC merupakan sebuah patern teknik pemprograman yang memisahkan antara alur, data dan antarmuka suatu sistem, untuk lebih jelasnya konsep MVC sebagai berikut: • Model, biasanya berhubungan langsung dengan database (query) untuk manajemen data. • View, biasanya berupa file HTML, yang diatur oleh controller. View berfungsi untuk menerima dan merepresentasikan data kepada user. • Controller, merupakan bagian yang mengatur hubungan antara bagian model dan bagian view, controller berfungsi untuk menerima request dan data dari user kemudian menentukan apa yang akan diproses oleh aplikasi. Pembuatan Project
  • 3. 2 1. Siapkan server (bersifat local saja) untuk mengeksekusi bahasa PHP, disini yang dipakai adalah XAMPP (bisa di download di https://www.apachefriends.org/download.html) 2. Database server, ketika download XAMPP telah include yaitu MySQL Database 3. Hidupkan service Apache dan MySQL 4. Text Editor, bisa Notepad++, Sublime Text 3, Visual Studio Code, dll 5. Framework codeigniter, jika belum ada bisa di download di https://github.com/bcit-ci/CodeIgniter/archive/3.1.10.zip. Kemudian ekstrak di letakkan di folder htdocs nama project sesuaikan dengan keinginan. Berikut tampilan awal dari framework codeigniter 6. Membuat database Tabel dosen CREATE TABLE `dosen` ( `id` int(10) NOT NULL, `nip` varchar(18) NOT NULL, `nama` varchar(100) NOT NULL,
  • 4. 3 `alamat` varchar(100) NOT NULL, `deleted` enum('0','1') NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ALTER TABLE `dosen` ADD PRIMARY KEY (`id`); ALTER TABLE `dosen` MODIFY `id` int(10) NOT NULL AUTO_INCREMENT; Tabel mata_kuliah CREATE TABLE `mata_kuliah` ( `id` int(10) NOT NULL, `mata_kuliah` varchar(100) NOT NULL, `deleted` enum('0','1') NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ALTER TABLE `mata_kuliah` ADD PRIMARY KEY (`id`); ALTER TABLE `mata_kuliah` MODIFY `id` int(10) NOT NULL AUTO_INCREMENT; Tabel pengampu CREATE TABLE `pengampu` ( `id` int(10) NOT NULL, `dosen_id` int(10) NOT NULL, `mata_kuliah_id` int(10) NOT NULL, `deleted` enum('0','1') NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ALTER TABLE `pengampu` ADD PRIMARY KEY (`id`), ADD KEY `dosen_id` (`dosen_id`), ADD KEY `mata_kuliah_id` (`mata_kuliah_id`); ALTER TABLE `pengampu` MODIFY `id` int(10) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; ALTER TABLE `pengampu` ADD CONSTRAINT `fk_dosen` FOREIGN KEY (`dosen_id`) REFERENCES `dosen` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `fk_mata_kuliah` FOREIGN KEY (`mata_kuliah_id`) REFERENCES `mata_kuliah` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; Constraint diatas menunjukkan relasi antar tabel, dimana dalam teori terbagi menjadi 3 jenis yaitu many to many, many to one, dan one to many. Dalam sebuah relasi antar tabel, database (khususnya MySQL) sendiri sudah memberi option ketika hal itu terjadi yaitu berupa cascade, set null, no action, dan restrict. Berikut penjelasanya : Cascade = apabila id pada tabel A dihapus maka tabel B juga ikut terhapus SET NULL = apabila id pada table A dihapus maka table B di set null No action = apabila id pada table A dihapus maka tidak dilakukan apa- apa Restrict = apabila id pada table A ingin dihapus maka tidak diperbolehkan jika di table B ditemukan ID yang berelasi
  • 5. 4 7. Setting awal, masuk ke folder application > config config.php  $config['base_url'] = 'http://localhost/latihan/'; autoload.php  $autoload['helper'] = array('url'); $autoload['libraries'] = array('database'); database.php  'username' => 'root', 'password' => '', 'database' => 'latihan', 8. Membuat controller baru dengan nama controller Home, karena default aplikasi ketika di buka adalah controller Welcome maka kita ubah ke controller yg baru atau yg lainnya sesuai kebutuhan di file routes.php  $route['default_controller'] = 'Home';, selain itu bisa juga mengarahkan tampilan error 404 ketika user mengakses halaman yg tidak memiliki akses, serta manipulasi url juga bisa dilakukan di file ini. 1. <?php 2. defined('BASEPATH') OR exit('No direct script access allowed'); 3. 4. class Home extends CI_Controller { 5. public function index() 6. { 7. } 8. } 9. Membuat sebuah model yg isinya patern query karena nantinya akan digunakan berulang kali. Masuk ke folder application > folder model 1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 2. class Master_model extends CI_Model{ 3. function manualQuery($q) 4. { 5. return $this->db->query($q)->result(); 6. } 7. function insertData($table,$data){ 8. $res = $this->db->insert($table,$data); 9. return $res; 10. } 11. function updateData($table,$data,$field_key) 12. { 13. $this->db->update($table,$data,$field_key); 14. } 15. function deleteData($table,$data) 16. { 17. $this->db->delete($table,$data); 18. } 19. }
  • 6. 5 Karena model ini akan dipakai berulang kali, agar memudahkan dalam pemanggilan set di file autoload.php  $autoload['model'] = array('Master_model'); 10.Buat tampilan home, masuk ke folder application > views 1. <!DOCTYPE html> 2. <html> 3. <head> 4. <title>Latihan</title> 5. <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> 6. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font- awesome.min.css"> 7. </head> 8. <body> 9. <div class="w3-row"> 10. <div class="w3-container w3-quarter"></div> 11. <div class="w3-container w3-half"> 12. <center><h1>Pengampu Mata Kuliah</h1></center> 13. <hr> 14. <button class="w3-button w3-small w3-teal">+ Tambah Data</button> 15. <br> 16. <br> 17. <table class="w3-table-all w3-card-4 w3-centered w3-border"> 18. <thead> 19. <tr class="w3-gray"> 20. <th style='text-align: center'>#</th> 21. <th style='text-align: center'>Mata Kuliah</th> 22. <th style='text-align: center'>Nama Dosen</th> 23. <th style='text-align: center'>Aksi</th> 24. </tr> 25. </thead> 26. <tbody> 27. <tr> 28. <th style='text-align: center'>1.</th> 29. <td>Mark</td> 30. <td>Otto</td> 31. <td><a href="" title='Ubah Data'><i class="fa fa-pencil" style="color:blue;"></i></a>|<a href="" title='Hapus Data'><i class="fa fa-trash" style="color:red;"></i></a></td> 32. </tr> 33. </tbody> 34. </table> 35. </div> 36. <div class="w3-container w3-quarter"></div> 37. </div> 38. </body> 39. </html> 11.Persiapkan data di controller yg nantinya akan ditampilkan di view 1. $data_matkul = $this->Master_model->manualQuery("SELECT a.* FROM mata_kuliah a WHERE a.deleted='0'"); 2. $data = array(); 3. foreach ($data_matkul as $key => $value) { 4. $pengampu = ''; 5. $data_dosen = $this->Master_model->manualQuery("SELECT b.nama FROM pengampu a LEFT JOIN dosen b ON a.dosen_id=b.id WHERE a.mata_kuliah_id=".$value->id." AND a.deleted='0' AND b.deleted='0'"); 6. foreach ($data_dosen as $key => $value2) { 7. $pengampu .= $value2->nama.'<br>'; 8. } 9. $data[] = array( 10. 'id' => $value->id,
  • 7. 6 11. 'mata_kuliah' => $value->mata_kuliah, 12. 'pengampu' => $pengampu 13. ); 14. } 15. $data_tampil['data_matkul'] = $data; 16. $this->load->view('home',$data_tampil); Kodingan diletakkan di fungsi index, karena setiap memanggil sebuah controller defaultnya akan membaca fungsi index. *Catatan: foreach sendiri adalah perulangan khusus untuk array yg disediakan php, yg tentunya dapat menyimpan banyak data dalam satu variabel akan sangat berguna untuk menyederhanakan dan menghemat penggunaan variabel. 12.Integrasikan data yg dibawa dari controller dengan tabel yg telah dibuat di view 1. <?php 2. $no = 1; 3. foreach ($data_matkul as $value) { 4. ?> 5. <tr> 6. <th style='text-align: center'><?= $no++; ?>.<br></th> 7. <td><?= $value['mata_kuliah']; ?></td> 8. <td><?= ($value['pengampu'] == "") ? '-' : $value['pengampu']; // ternary operators ?></td> 9. <td><a href="" title='Ubah Data'><i class="fa fa-pencil" style="color:blue;"></i></a>|<a href="" title='Hapus Data'><i class="fa fa-trash" style="color:red;"></i></a></td> 10. </tr> 11. <?php } ?> 13.Buat tampilan untuk menambahkan data Karena menggunakan modal kita tambahkan dulu atribut untuk memanggil css dan jquery <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script> Kemudian persiapkan tombol yg akan digunakan untuk memunculkan modal <button data-toggle="modal" href="#tambahdata" class="w3-button w3-small w3-teal">+ Tambah Data</button> Karena membutuhkan list data mata kuliah dan list data dosen maka harus ada di controller
  • 8. 7 $data_tampil['data_matkul_master'] = $data_matkul; $data_tampil['data_dosen'] = $this->Master_model->manualQuery("SELECT a.* FROM dosen a WHERE a.deleted='0'"); Tampilan untuk modalnya <div class="modal fade bs-modal-lg" id="tambahdata" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria- hidden="true">&times;</span></button> <h4 class="modal-title" id="myModalLabel">Form Tambah Data</h4> </div> <div class="modal-body"> <div class="box box-primary"> <!-- form start --> <form role="form" class="form-horizontal" action="<?=site_url('Home/simpan_data');?>" method="post"> <div class="form-body"> <div class="form-group form-md-line-input has-danger"> <label class="col-md-2 control-label" for="form_control_1">Mata Kuliah <span class="required"> * </span></label> <div class="col-md-10"> <?php echo '<select name="matkul" class="form-control" required><option value="">-- Pilih --</option>'; foreach ($data_matkul_master as $key => $value) { echo '<option value="'.$value->id.'">'.$value->mata_kuliah.'</option>'; } echo '</select>'; ?> </div> </div> <div class="form-group form-md-line-input has-danger"> <label class="col-md-2 control-label" for="form_control_1">Daftar Dosen <span class="required"> * </span></label> <div class="col-md-10"> <?php foreach ($data_dosen as $key => $value) { echo' <div class="col-md-6"> <input type="checkbox" name="dosen[]" value="'.$value->id.'"> '.$value->nama.' </div> '; } ?> </div> </div> </div> <br> <div class="form-actions margin-top-10"> <div class="row"> <div class="col-md-offset-2 col-md-10"> <button type="button" data-dismiss="modal" class="btn default">Batal</button> <button type="submit" class="btn blue">Simpan</button> </div> </div> </div> </form> </div> </div> </div> </div>
  • 9. 8 </div> 14.Membuat fungsi untuk menambahkan data Karena di modal sudah kita tuliskan nama fungsinya maka di controller disamakan dengan nama fungsi simpan_data (tetap menggunakan controller Home) public function simpan_data(){ $this->db->trans_start(); for ($i=0; $i < COUNT($this->input->post('dosen')); $i++) { $data = array( 'dosen_id' => $this->input->post('dosen')[$i], 'mata_kuliah_id' => $this->input->post('matkul') ); $this->Master_model->insertData('pengampu',$data); } $this->db->trans_complete(); if($this->db->trans_status() === false){ echo 'alert("Gagal tambah data!!")'; echo "<script>window.location='".site_url()."'</script>"; } else{ echo '<script>alert("Berhasil tambah data!!")</script>'; echo "<script>window.location='".site_url()."'</script>"; } } *Catatan: o Transactions digunakan saat kita menjalankan beberapa query sebagai satu kesatuan, untuk memastikan bahwa semua query tersebut berhasil dijalankan, ketika salah satu ada yg gagal maka query yg lain (dalam satu kesatuan dan itu berhasil) maka akan di cancel dan memiliki balikan berupa false/ gagal. o Modifier  Public  seluruh kode program di luar class bisa mengaksesnya, termasuk class turunan.  Protected  property atau method tersebut tidak bisa diakses dari luar class, namun bisa diakses oleh class itu sendiri atau turunan class tersebut.  Private  satu-satunya yang bisa mengakses adalah class itu sendiri. Operator Nama Contoh Hasil
  • 10. 9 == Sama dengan $x == $y Jika $x sama dengan $y, Benar === Identik $x === $y Jika $x sama dengan $y, dan memiliki jenis yg sama, Benar Kolarborasi Code dengan Git Apa itu git? Sebelum menggunakan git Setelah menggunakan git Apa perbedaannya?
  • 11. 10 Saat kita ingin menyimpan semua perubahan pada file, biasanya kita membuat file baru dengan “save as”. Lalu, file akan menumpuk dalam direktori proyek seperti pada ilustrasi di atas. Tapi setelah menggunakan git, hanya akan ada satu file dalam proyek dan perubahannya disimpan dalam database. Git hanya akan menyimpan delta perubahannya saja, dia tidak akan menyimpan seluruh isi file yang akan memakan banyak memori. Selain untuk mengontrol versi, git juga digunakan untuk kolaborasi code, dari situ kita bisa tahu apa yang diubah dan siapa yang mengubahnya. Berikut cara penggunaan git, 1. Install git, jika belum ada download di https://git-scm.com/downloads. 2. Selanjutnya pemilihan terminal emolator pilih Use Windows' default console window. 3. Kemudian install sampai finish 4. Konfigurasi awal masukkan name dan email, jika kamu memiliki akun Github, Gitlab, Bitbucket atau yang lainnya, maka username dan email harus mengikuti akun tersebut agar mudah diintegrasikan. git config --global user.name "fakhirrizal" git config --global user.email bokir.rizal@gmail.com untuk mengecek konfigurasinya bisa jalankan perintah berikut, git config --list 6. Fork & clone repository Fork bisa kita artikan sebagai menyalin repository dari akun orang lain ke akun kita sendiri. https://github.com/fakhirrizal/latihan 7. Selanjutnya silahkan clone (download) repository tersebut ke komputer lokal, ada pilihan antara https dan ssh, jika pilih ssh ketika melakukan push maka tidak perlu memasukkan password. Namun disini agar cepat
  • 12. 11 menggunakan https saja, ssh membutuhkan setting public key terlebih dahulu git clone https://github.com/nama_akun/latihan.git/* jika belum ada repository dengan nama latihan */ 8. Lakukan modifikasi pada code, kemudian commit terhadap apa yang kamu rubah. git add nama_file git commit -m “pesan” 9. Melakukan push ke repository kita yg telah di fork dari project sumber git push origin master 10.Mengupload perubahan ke project sumber Melakukan pull request terlebih dahulu, pull request adalah istilah yang bisa kita artikan sebagai permintaan untuk menggabungkan kode. Setelah itu github akan memproses, jika berhasil makan akan muncul pesan Able to merge, selanjutnya silahkan klik tombol Create pull request. Tambahkan catatan dari apa yg akan kamu kerjakan. Setelah owner melihat hasil kodinganmu apakah sesuai dengan yg diinginkan atau harus ada bagian direvisi, jika diterima biasanya akan ada tulisan “Marged” berwarna ungu.
  • 13. 12 Jika kalian sebagai project manager yg bertugas untuk membuat repository, kemudian akan mengupload proyek dari local ke GitHub 1. Masuk ke situs github.com kemudian buat sebuah repository baru 2. Berilah nama kemudian atur tingkat publikasinya, apakah public atau private 3. Kemudian upload vie terminal dengan perintah berikut git init gitadd . // titik dibelakang artinya upload all file git commit -m "pesan" git remote add origin https://github.com/username/nama_repository.git git push -u origin master 4. Kemudian akan diminta akses ke akun GitHub untuk memproses upload file, tunggu sampai selesai.