Dasar Web
Istilah dari kata Web atau WWW mungkin sudah tidak asing
lagi. WWW merupakan singkatan dari World Wide Web,
yaitu bagian dari ruang informasi dimana sumber-sumber
daya yang berguna untuk di indentifikasi oleh pengenal
global. Hal ini dapat disebut dengan Uniform Resource
Identifier (URL).(Fauziah, 2014)
Uniform Resource Identifier (URI) yaitu terdiri dari
beberapa karakter (string) yang digunakan untuk identifikasi
atau memberi nama suatu sumber/source di internet yang
berfungsi untuk memungkinkan interaksi dengan representasi
dari resource melalui jaringan dengan menggunakan protokol
tertentu seperti HTTP.
Ada beberapa istilah dalam web yang sering digunakan
diantaranya yaitu(Wibawanto, 2019):
1. Internet
Internet berasal dari kata “internetwork”, merupakan
rangkaian komputer yang terhubung menjadi beberapa
rangkaian jaringan. Sistem komputer dapat terhubung
secara global dengan menggunakan TCP/IP sebagai
protocol. Secara umum internet dapat diartikan sebagai
pertukaran informasi dan komunikasi. Semua informasi
2
didapatkan dengan mudah di internet sesuai dengan
keinginan tanpa ada batasan.
2. HTTP
Hypertext Transfer Protocol (HTTP) yaitu salah satu
protokol yang digunakan untuk melakukan transfer
dokumen dalam WWW (World Wide Web). Protokol ini
merupakan protokol yang ringan yang tidak berstatus dan
generik/umum yang dapat digunakan berbagai macam
tipe dokumen.
3. Website
Website merupakan sebuah alamat tertentu di WWW
(World Wide Web) yang menyediakan informasi tertentu.
Untuk membuka sebuah situs web, pengguna dapat
menggunakan browse.
4. Web Page
Web Page merupakan bagian dari situs web. Apabila web
Page diumpamakan sebagai sebuah buku, maka halaman
web merupakan lembaran-lembaran kertas penyusun
buku tersebut..
5. Homepage
Home Page (Halaman Muka) merupakan halaman muka
dari sebuah situs web. Apabila Homepage diumpamakan
sebagai sebuah buku, maka halaman web merupakan
cover depan sebuah buku. Homepage biasanya berupa
outline dari isi situs web yang bersangkutan
3
6. Browser
Browser merupakan aplikasi yang digunakan untuk
berselancar didunia internet. Browser dapat memandu
pengguna internet untuk dapat berpindah antar situs web
dengan mudah.
7. URL
URL (Universal Resource Locator) merupakan suatu alamat
yang menunjukkan sebuah halaman tertentu pada
internet.
8. HTTP
HTTP (Hypertext Transfer Protocol) merupakan bagian dari
sebuah URL yang mengidentifikasikan lokasi web, dan
digunakan dalam protokol HTML.
9. DNS
DNS (Domain Name System) merupakan sistem database
terdistribusi yang tidak banyak dipengaruhi oleh
bertambanhnya database. DNS menjamin informasi host
terbaru akan disebarkan ke jaringan bila diperlukan.
10. TCP/IP
TCP/IP (Transmission Control Protocol/Internet Protocol)
merupakan metode-metode yang digunakan untuk
menghubungi server. TCP/IP merupakan bahasa
standarisasi yang digunakan dalam internet..
4
11. IP
IP (Internet Protocol) merupakan protokol yang digunakan
dalam internet, secara teknis bermakna suatu bentuk
pengisian dan pengalamatan data-data dan informasi
yang akan dikirim melalui internet.
12. Hyperlink
Hyperlink merupakan sebuah fasilitas yang sangat
berperan dalam mempopulerkan pengguna internet,
karena mampu mereferensikan sebuah teks atau gambar
ke alamat lain di internet.
13. Web Agent
Web Agent yaitu orang atau perangkat lunak yang
berperan dalam Web/Ruang Informasi. Web Agent terdiri
dari:
a. Software Agent : Proxies, Servers, spiders, browsers,
multimedia players, dll
b. User Agent : Users.
14. Web Servers
Web Servers adalah sebuah perangkat lunak servers yang
berfungsi menerima permintaan dari HTTP/HTTPS atau
dari client yang dikenal dengan web browser. Kemudian
permintaan tersebut dikirim kembali hasilnya dalam
bentuk halaman-halaman web yang pada umumnya
berbentuk HTML. Berikut merupakan beberapa server
web yang terkenal diantaranya sebagai berikut:
5
a. Apache, Web server antar platform
b. XAMPP
c. Nginx
d. PHPTriad
e. Apache2Triad
f. Internet Information Service (IIS), hanya dapat berjalan
di sistem operasi MS Windows.
1.2 Pengenalan HTML
Hyper Text Markup Language (HTML) adalah kerangka
yang membentuk dan mengatur bagaimana sebuah halaman
web akan ditampilkan di browser dengan berbagai ragam
informasi. Untuk membentuk dan mengatur halaman tersebut
dapat menggunakan simbol/tanda/tag yang sesuai dengan
aturan dalam HTML. (Adri, 2019)
Tag HTML mempunyai bagian pembuka dan penutup.
Tag pembuka menggunakan simbol lebih kecil (<) dan lebih
besar (>), begitu pula dengan tag penutup, hanya saja untuk
tag penutup di tambahkan slash (/).
Struktur penulisan HTML dapat dilihat pada gambar 1.1:
6
Gambar 1. 1 Struktur Penulisan
contoh penggunaan HTMLdapat dilihat pada gambar 1.2.
Gambar 1. 2 Contoh Penggunaan HTML
1.3 Pengenalan PHP
PHP singkatan dari Hypertext Prepocessor merupakan
bahasa pemrograman yang didesain khusus untuk
pengembangan web. PHP memiliki sifat server-side karena
PHP dijalankan melalui server.(Saharna & Rukun, 2019)
Maksud dijalankan melalui server yaitu PHP dijalankan pada
komputer server dan bukan pada komputer client. PHP
dijalankan melalui web browser sama seperti HTML. Hampir
semua situs-situs besar dan populer yang dikembangkan
menggunakan PHP. Adapun beberapa situs tersebut
diantaranya wordpress, joomla, facebook, twitter, dan situs besar
lainnya.(Fauziah, 2014)
Dalam membangun website terdapat 2 (dua) jenis yaitu
website dinamis dan interaktif, keduanya dibangun
menggunakan bahasa pemrograman PHP yang juga
digunakan sebagai pemrograman HTML. Misalnya dalam
7
pembuatan website yang berisi data siswa, dengan
menggunakan bahasa pemrograman HTML, maka
dibutuhkan baris kode yang sangat panjang (sesuai dengan
jumlah data yang ingin diinput), sedangkan dengan
menggunakan bahasa pemrograman PHP, baris kode yang
dibutuhkan dapat dipersingkat hingga menjadi beberapa baris
saja.(Enterprise, 2020)
Selain itu PHP dapat digunakan dalam penginputan data ke
sistem database, mengkonversi halaman yang berisi text
menjadi dokumen PDF, melaksanakan session dalam berbagai
macam aplikasi, menghasilkan gambar, dan berbagai macam
kegunaan lainnya.
Contoh penggunaan php dapat dilihat pada gambar 1.3:
Gambar 1. 3 Contoh penggunaan PHP
8
Untuk menggunakan php pada HTML harus dilakukan
penyimpanan file dengan format “namafile.php”. Jika hanya
“.html”, maka script yang merupakan fungsi pada php tidak
dapat berjalan di file tersebut.
Pada bagian kode-kode tersebut, berfungsi untuk
menyisipkan fungsi php/menggunakan fungsi php, kita harus
menggunakan tag (<?php) sebagai pembuka dan tag (?>)
sebagai penutup. Kemudian pada kode tersebut terdapat kata
“echo”. “Echo” ini digunakan untuk menampilkan tulisan
ataupun value dalam sebuah variabel dan biasanya kata echo
sering disingkat dengan tag php seperti ini (<?=) kalimat atau
variable (?>).
Setelah membuat file .php, untuk mellihat hasil tampilan
pada browser, diperlukan aplikasi lain untuk mempemudah
dalam melihat hasil tampilan dari kode-kode tersebut seperti
XAMPP. Setelah itu, pada aplikasi XAMPP perlu menjalankan
module yang bernama “Apache”. Kemudian hanya ketikan
https://localhost/namafolder/ pada web browser kalian,
kemudian pilih nama file yang ingin ditampilkan.
Contoh tampilan browser dapat dilihat pada gambar 1.4:
9
Gambar 1. 4 Contoh Tampilan Browser
10
11
BAGIAN II
PENGENALAN DATABASE
2.1 Pengertian Database
Database atau biasa disebut basis data merupakan suatu
data yang dapat dimaksudkan sebagai informasi yang dapat
diperoleh dan disimpan. Sedangkan basis merupakan
semacam perkumpulan atau tempat berkumpul. Maka dapat
disimpulkan bahwa database adalah kumpulan data atau
informasi yang saling berkaitan dan selanjutnya disimpan
secara bersamaan pada suatu media (komputer) sehingga
mampu memenuhi informasi yang optimal sesuai dengan
kebutuhan pengguna. (Nugroho, 2019)
Pengolahan database dalam media komputer ditujukan
untuk mempermudah serta mengikuti perkembangan zaman
yang menerapkan era komputerisasi. Pengelolaan sistem
database dikenal dengan istilah DBMS (Database Management
System). (Budio, Fadlan, & Sari, 2019)
Pada dasarnya penerapan database tidak hanya terdapat
dalam lingkup IT, Contohnya pada Perguruan Tinggi terdapat
database Mahasiswa, Dosen, Mata Kuliah, dan lain lain.
Dalam lingkungan perusahaan pastinya terdapat data-data
perusahaan mencakup database Karyawan, Keuangan, dan
lain – lain.
12
2.2 Fungsi Database
Bagi orang awam suatu database merupakan kumpulan
data dan informasi yang hanya perlu di backup dalam fungsi
keamanan. Namun terdapat fungsi-fungsi lain dari
penggunaan database, fungsi lainnya yaitu sebagai
berikut:(Budio et al., 2019)
1. Data dapat dikelompokkan untuk mempermudah proses
identifikasi data, pengelompokkan dapat dilakukan
dengan berbagai cara seperti membuat beberapa tabel.
Sebagai contoh suatu DBMS pada perbankan dapat
mencari informasi user dengan lebih cepat karena
pengelompokan sesuai dengan kebutuhan.
2. DBMS dapat dilakukan pengaturan agar mampu
mengenali duplikasi data yang terjadi sebelum dilakukan
penyimpanan, hal ini dilakukan untuk menghindari
terjadinya data ganda yang akan tersimpan. Karena sifat
database yang dapat diakses oleh lebih dari satu
pengguna, maka salah satu cara yang dilakukan adalah
dengan menerapkan sistem kata kunci atau Primary Key.
3. Dapat mempermudah penggunaan di semua bagian
seperti dapat menginput data baru, mengupdate data
yang sudah ada, serta menghapus data yang sudah tidak
diperlukan lagi. Didukung dengan tampilan yang
menarik sesuai dengan aplikasi tertentu.
4. Menjadi solusi terbaik dari penggunaan kertas sebagai
media penyimpanan banyak memakan ruang. Dengan
adanya database maka tidak perlu khawatir data hilang
begitu saja, karena dapat dilakukan backup data.
13
5. Suatu database juga dapat menjadi alternatif lain terkait
masalah penyimpanan ruang dalam aplikas dikarenakan
keterbatasan dari media penyimpanan oleh kebanyakan
aplikasi komputer.
2.3 Pengenalan PhpMyAdmin
PhpMyAdmin adalah sebuah aplikasi/perangkat
lunak bebas (opensource) yang ditulis dalam bahasa
pemrograman PHPyang digunakan untuk menangani
administrasi database MySQL melalui jaringan lokal
maupun internet. phpMyAdmin mendukung berbagai
operasi MySQL, diantaranya (mengelola basis data,
tabel-tabel, bidang (fields), relasi (relations), indeks,
pengguna (users), perijinan (permissions), dan lain-lain).
(Standsyah & Restu, 2017)
Dengan menggunakan phpmyadmin, pengguna dapat
membuat database, membuat tabel, menambah, menghapus
dan memperbaharui data dengan tampilan antarmuka dengan
grafis dan terasa lebih mudah, tanpa perlu mengetikkan
perintah SQL secara manual.
PhpMyAdmin merupakan sebuah software gratis
berbasis scrip dengan bahasa PHP yang bertujuan untuk
memudahkan dalam mengelola database MySQL. Tanpa
phpMyAdmin, pengguna perlu menggunakan terminal untuk
mengelola database.
Saat ini hampir semua penyedia hosting di internet
menggunakan phpMyAdmin karena kemudahan dalam
menggunakan aplikasinya. PhpMyAdmin memiliki berbagai
14
fitur untuk administrasi MySQL termasuk manipulasi
database, tabel, index dan juga dapat mengeksport data dalam
berbagai format data. PhpMyAdmin juga menyediakan lebih
dari 50 bahasa, salah satunya termasuk bahasa Indonesia.
Tampilan awal dari phpMyAdmin dapat dilihat pada
gambar 2.1:
Gambar 2. 1 Tampilan Awal PhpMyAdmin
2.4 Pembuatan Database Dengan PhpMyAdmin
Dalam pembuatan database dengan phpMyAdmin,
dapat mengikuti langkah-langkah sebagai berikut:(Masykur,
Makruf, & Atmaja, 2015)
1. Ketik link pada alamat browser
http://localhost/phpmyadmin/ untuk masuk kedalam
halaman phpMyAdmin.
2. Buat database baru dengan mengetikan nama database
pada halaman localhost seperti terlihat pada gambar 2.2:
15
Gambar 2. 2 Tampilan buat database baru
3. Pilih button Create pada sisi sebelah kanan create new
database.
Berikut merupakan tampilan database yang sudah berhasil
dibuat menggunakan phpMyAdmin. Nama database yang
sudah terbentuk yaitu db-bunga. Tampilan database dapat
dilihat pada gambar 2.3.
Gambar 2. 3 Tampilan database
16
2.5 Pembuatan Tabel Dengan PhpMyAdmin
Dalam pembuatan tabel dengan phpMyAdmin, dapat
mengikuti langkah-langkah sebagai berikut:
1. 1. Pastikan posisi pada phpMyAdmin sudah di dalam
database. Tampilan sudah berada dalam database yang
telah terbentuk dapat dilihat pada gambar 2.4.
Gambar 2. 4 Tampilan sudah berada pada posisi database
2. Buat tabel baru dengan mengetikan nama tabel dan
jumlah field yang akan dibentuk pada kolom Create new
table on database db-bunga seperti pada gambar 2.5.
Gambar 2. 5 Tampilan untuk Membuat Tabel Baru
17
3. Pilih button Go pada sisi sebelah kanan Create new table
on database db-bunga, seperti gambar 2.6.
Gambar 2. 6 Pilih Botton Go pada Pembuatan Tabel
baru
Berikut merupakan tampilan tabel yang sudah berhasil
dibuat menggunakan phpMyAdmin. Nama tabel yang
sudah terbentuk yaitu transaksi yang terdiri dari 7
atribut. Tampilan tabel dapat dilihat pada gambar 2.7.
Gambar 2. 7 Tampilan Tabel yang Sudah Berhasil
Dibuat
4. Isi atribut (field) yang ada pada tabel tersebut sesuai
dengan kebutuhan pada masing-masing kolom Field,
Type, Length/Values, dan index.
18
5. Setelah semua terisi scroll layar kebawah, hingga
menemukan button Go seperti pada gambar 2.8 berikut:
Gambar 2. 8 Tampilan Form untuk Isian Field pada
Tabel
6. Pilih button Go untuk membuat isi dari tabel tersebut.
Berikut merupakan tampilan struktur tabel transaksi
dengan 7 field yang sudah berhasil dibuat menggunakan
phpMyAdmin. Tampilan struktur tabel dapat dilihat pada
gambar 2.9.
Gambar 2. 9 Tampilan Struktur Tabel
19
BAGIAN III
PENGENALAN CODEIGNITER
3.1 Framework Web
Web Application Framework (WAF) atau yang sering
disebut dengan Web framework, yaitu suatu kumpulan kode
berupa pustaka (library)dan alat (tool) yang dipadukan
sedemikian rupa menjadi kerangka kerja (framework) guna
memudahkan dan mempercepat proses pengembangan
aplikasi. (Daqiqil, n.d.)
Beberapa Framework Web untuk PHP, diantaranya:
1. Codeigniter
2. Yii
3. Slim Framework
4. Zend Framework
5. Laravel
6. Symfony
7. CakePHP
8. Phalcon
9. Kohana
10. FuelPHP
Sebagian besar dari Framework Web di atas
mengimplementasikan pola desain Model-View-Controller
(MVC), Model-View-Controller (MVC), yang memisahkan
bagian kode untuk penanganan proses bisnis dengan bagian
20
kode untuk keperluan presentasi (tampilan).(Muttaqi, Yusuf,
& Subroto, 2019)
3.2 Codeigniter
Codeidniter merupakan Framework Web untuk bahasa
pemrograman PHP, yang dibuat oleh Rick Ellis pada tahun
2006, penemu dan pendiri EllisLab
(www.ellislab.com).(Sabdojati & Sofyan, 2016) EllisLab
merupakan suatu tim kerja yang berdiri pada tahun 2002 yang
bergerak di bidang pembuatan software dan tool untuk para
pengembang web. Sejak tahun 2014 sampai dengan sekarang,
EllisLab telah menyerahkan hak kepemilikan codeigniter ke
British Columbia Institute of Technology (BCIT) saat ini situs
resmi codeigniter yaitu www.codeigniter.com.
Codeigniter merupakan sebuah framework untuk web
yang dibuat dalam format PHP. Kelebihan dari CI adalah
dapat digunakan untuk membuat sistem aplikasi web yang
kompleks, dapat mempercepat proses pembuatan web karena
semua class dan modul ynag dibutuhkan sudah ada dan
programmer tinggal menggunakan kembali pada aplikasi
yang dibuat. (Prabowo, 2015)
Dengan pemanfaatan Framework Codeigniter,
pembuatan sistem jadi lebih mudah dikarenakan struktur
MVC (Model, View, Controller) yang terdapat pada
Codeigniter, sehingga pembuatan dan penggunaan coding
dengan bahasa pemrograman PHP dapat dilakukan dengan
lebih mudah.(Saharna & Rukun, 2019)
21
3.3 Software
Software yang bisa digunakan yaitu:
1. Web server (Apache2Triad, WAMPP server, Xampp
Server, dll)
2. Text Editor (notepad, notepad++, sublime text, atom,
visual studio code, dll)
3. Codeigniter https://codeigniter.com/
4. Web Browser (Mozila Firefox, google chrome, IE, Safari,
UCBrowser, Opera, dll).
3.4 Instalasi Codeigniter
Langkah-langkah dalam menginstal codeigniter:
(Muhardian, 2020a)
1. Download Package codeigniter pada situs
https://codeigniter.com/
2. Saat ini versi stabil dari codeigniter yaitu 3.1.6
3. Setelah di download ektrak file codeigniter pada direktori
C:\xampp\htdocs. Tampilan folder dapat dilihat pada
gambar 3,1
22
Gambar 3. 1 Tampilan Folder File Codeigniter pada
Direktori C:\xampp\htdocs
4. Lalu ubah folder Codeigniter, seperti contoh akan diubah
menjadi ecommerce. Tampilan contoh ubah nama dapat
dilihat pada gambar 3.2
Gambar 3. 2 Contoh Ubah Nama Folder Codeigniter
23
5. Setelah itu, sekarang coba akses folder tersebut melalui
browser
6. Sebelum mencoba pada browser maka nyalakan XAMPP
terlebih dahulu
7. Lalu pada alamat web browser unyuk mengakses url
http://localhost/nama_folder_project pada tutorial kali ini
beri nama dengan ecommerce, sehingga muntul tampilan
seperti yang terlihat pada gambar 3.3.
Gambar 3. 3 Tampilan Halaman Utama Codeigniter
8. Jika sudah tampil halaman Welcome Codeigniter, maka
telah berhasil melakukan instalasi codeigniter.
3.5 Struktur Folder Codeigniter
Pada folder codeigniter terdapat 3 folder utama yaitu
Application, System, User Guide. Folder Application berguna
sebagai tempat untuk mendevelop aplikasi, Folder System
berisi library atau kumpulan fungsi-fungsi dasar Codeigniter
24
(CI), sedangkan User Guide berisi sebagai buku panduan atau
dokumentasi dari codeigniter. (Muhardian, 2020b)
Struktur dari folder codeigniter dapat dilihat pada
gambar 3.4.
Gambar 3. 4 Struktur Folder Codeigniter
Pada folder application/config dan semua berawal dari
file routes.php Apabila membuka file tersebut, maka akan
menemukan default_controller yang telah terisi dengan nama
“welcome”, yang mana default_controller ini berfungsi ketika
user tidak melakukan atau memasukkan apapun pada URL
browser, maka secara otomatis mencari controller dengan
nama “welcome”, seperti yang terlihat pada gambar 3.5.
25
Gambar 3. 5 Tampilan File Controller Welcome
Controller Welcome bisa ditemukan pada folder
application/controllers. Pada file welcome_controller tersebut
terdapat fungsi index yang gunanya meload bagian view
atau memanggil halaman views dengan nama
welcome_messages seperti gambar 3.6.
Gambar 3. 6 Tampilan FIle untuk Memanggil Halaman
Views
Lihat pada bagian views yang terletak pada
application/views. Pada folder view tersebut terdapat file
dengan nama welcome_message. Pada bagian ini semua html
dan css akan diletakkan yang nantinya akan ditampilkan ke
26
pengunjung. Tampilan file welcome message dapat dilihat
pada gambar 3.7.
Gambar 3. 7 Tampilan File welcome_message
27
BAGIAN IV
MODEL, VIEW, CONTROLLER
4.1 Pengertian Model, View, Controller (MVC)
Model, View, Controller (MVC) merupakan teknik atau
konsep yang memisahkan komponen utama menjadi tiga
komponen yaitu model, view dan controller. (Tyowati &
Irawan, 2017)
1. Model
Model yaitu kelas yang merepresentasikan atau
memodelkan tipe data yang akan digunakan oleh
aplikasi. Model dapat didefinisakan sebagai bagian
penanganan yang berhubungan dengan pengolahan atau
manipulasi database. Seperti mengambil data dari
database, menginput dan pengolahan database lainnya.
Semua intruksi atau fungsi yang berhubung dengan
pengolahan database di letakkan di dalam model. Sebagai
contoh, jika ingin membuat aplikasi untuk menghitung
luas dan keliling persegi panjang, maka dapat
memodelkan objek persegi panjang sebagai kelas
model.(Setiadi, 2018)
2. View
View merupakan bagian yang menangani halaman user
interface atau halaman yang muncul pada user(pada
browser). Tampilan dari user interface di kumpulkan
28
pada view untuk memisahkannya dengan controller dan
model sehingga memudahkan web designer dalam
melakukan pengembangan tampilan halaman website.
3. Controller
Controller merupakan kumpulan intruksi aksi yang
menghubungkan model dan view, jadi user tidak akan
berhubungan dengan model secara langsung, intinya data
yang tersimpan di database (model) di ambil oleh
controller dan kemudian controller pula yang
menampilkannya ke view. Controller yang mengolah
intruksi.
Controller yaitu sebagai penghubung view dan model,
seperti pada aplikasi yang menampilkan data dengan
menggunakan metode konsep MVC, Controller memanggil
intruksi pada model yang mengambil data pada database,
kemudia controller yang meneruskannya pada view untuk di
tampilkan. Cara MVC sangat mudah dalam pengembangan
aplikasi karena web designer atau front-end developer tidak
perlu lagi berhubungan dengan controller, itu hanya perlu
berhubungan dengan view untuk mendesign tampilan
aplikasi, karena back-end developer yang menangani bagian
controller dan modelnya. Sehingga pembagian tugas menjadi
mudah dan pengembangan aplikasi dapat dilakukan dengan
terstruktur dan cepat. (Sidik, 2012)
Bentuk umum model sebagai berikut:
Class Nama_model extends CI_model {
//badan kelas }
29
Jika ingin memanggil konstruktor kelas CI_model dari
konstruktor kelas model yang didefinisikan, maka bentuk
umumnya seperti berikut:
class Nama_model extends CI_model {
//konstruktor kelas model
Function __construct( ) {
//memanggil konstruktor kelas
CI_model
$parent: : __construct( );
//...
}
// ...
}
4.2 Menentukan Kontroler Standar
Controller standar (default) adalah controller yang akan
dipanggil secara otomatis ketika user tidak menyertakan nama
controller di dalam URL. Controller standar dapat ditentukan
sendiri sesuai dengan keinginan, yaitu dengan cara
melakukan konfigurasi pada file routes.php yang terletak
pada folder application\config\(Muhardian, 2020c), seperti
yang terlihat pada gambar 4.1.
Gambar 4. 1 Tampilan File Membuat Controller Standar
Ubah kata welcome dengan nama controller yang
diinginkan untuk dijadikan controller standar.
30
4.3 Menghilangkan index.php pada Codeigniter
Seorang web developer, dalam rangka pengamanan web
site miliknya akan melakukan berbagai trik. Ada yang
dibuatkan sistem sandi yang diubah secara berkala, ada yang
menggunakan trik kamuplase pengaksesan file dan ada juga
yang menggunakan sistem sandi dengan teknik kriptografi
yaitu mengenkrip sandi sedemikian rupa agar tidak mudah
dipecahkan oleh pihak yang tidak bertanggung jawab. Berikut
adalah salah satu trik untuk mengelabui pihak yang tidak
bertanggung jawab agar tidak mudah untuk melakukan
pencurian atau penggunaan data yang akan merugikan.
Dengan cara menghilangkan index.php pada url codeigniter,
caranya buka config.php yang terletak pada folder
application/config/, kemudian cari pengaturan
$config[„index_page] seperti gambar 4.2.
Gambar 4. 2 Tampilan Pengaturan $config[„index_page]
Kemudian hapus index.php pada pengaturan sehingga
akan menjadi seperti terlihat pada gambar 4.3.
Gambar 4. 3 Tampilan Menghilangkan index.php
Setelah menghapus index, maka selanjutnya adalah
membuat file .htaccess pada direktori root codeigniter.
Caranya buat file baru dengan nama .htaccess tanpa diberi
extensi, karena .htaccess merupakan file yang tidak
berektensi. Diawali dengan tanda titik(.).
31
File ecommerce/.htaccess dapat dilihat pada gambar 4.4.
Gambar 4. 4 Tampilan File ecommerce/.htaccess
4.4 Aturan Merancang Model, View, Controller
1. Model
Secara umum perancangan model dapat dibuat
menggunakan aturan sebagai berikut:
a. Model harus memiliki atribut yang dapat mewakili
element tertentu.
b. Model seharusnya berisi kode kode yang menangani
proses bisnis untuk data bersangkutan, misalnya untuk
melakukan proses validasi data.
c. Model boleh berisi kode kode yang dugunakan untuk
memanipulasi data, misalnya untuk menambah baris
data baru, mengubah baris data, dan menghapus baris
data pada sebuah tabel yang terdapat dalam database.
d. Model seharusnya tidak berisi kode kode yang
berkaitan langsung dengan permintaan yang
dilakukan oleh user melalu URL (tidak berisi $_GET
32
maupun $_POST). Pekerjaan seperti ini seharusnya
dilakukan oleh controller.
e. Model seharusnya tidak berisi kode kode yang
berkaitan dengan presentasi (tampilan) halaman web
yang akan disajikan ke hadapan user. Pekerjaan
semacam ini seharusnya dilakukan oleh view.
2. View
Berikut ini aturan yang dapat digunakan untuk
merancang view:
a. View harus berisi kode kode yang bersifat
presentasional, biasanya berupa kode HTML. View
juga dapat berisi perintah perintah PHP sederhana
yang masih berkaitan dengan proses pembuatan
tampilna, misalnya untuk menampilkan data yang
dihasilkan oleh model tertentu.
b. View seharusnya tidak berisi kode PHP yang
melakukan akses data secara langsung ke database.
Pekerjaan semacam ini sebaiknya dilakukan oleh
model.
c. View seharunsnya menghindari kode PHP yang
mengakses secara langsung permintaan dari user
(tidak berisi $_GET maupun $_POST). Tugas ini
sebaiknya didelegasikan ke controller.
3. Controller
Berikut ini aturan yang dapat digunakan untuk
merancang controller:
33
a. Controller boleh mengakses $_GET, $_POST, dan
variabel variabel PHP lainnya yang berkaitan dengan
permintaan user.
b. Controller boleh membuat objek (instance) dari kelas
kelas model dan mengarahkan ke view (jika model
bersangkutan menghasilkan data yang perlu
ditampilkan ke user).
c. Controller seharusnya tidak berisi kode kode yang
mengakses data secara langsung dari database. Tugas
seperti ini sebaiknya dilakukan oleh model. Dan
controller tinggal menggunakannya saja.
d. Controller seharusnya tidak berisi kode kode HTML
yang diperlukan untuk tujuan presentasi. Tugas ini
sebaiknya dilakukan oleh view.
4.5 Parsing Data dari Controller ke View
Untuk mengirimkan nilai dari controller ke view, yaitu
dapat mengirimkannya dengan menggunakan bantuan array.
Jadi data yang akan diparsing di masukkan ke array.
Perhatikan contoh cara pengiriman nilai ke view codeigniter
berikut ini. (Sidik, 2012)
Buat sebuah view baru beri nama view-produk.php
kemudian simpan dalam forlder
Application/views/mod_produk dan ketik script pada
gambar 4.5 berikut:
34
Gambar 4. 5 Skrip view-produk.php
Script di atas akan membentuk sebuah tampilan form
input data yang akan di submit kemudian di proses ke sebuah
controller. Untuk itu perlu membuat controller terlebih
dahulu beri nama Produk.php kemudian simpan dalam folder
Application/controllers/ lalu ketiklah script gambar 4.6
berikut ini:
35
36
Gambar 4. 6 Skrip Produk.php
37
BAGIAN V
PENGENALAN BOOTSTRAP
5.1 Pengenalan Bootstrap
Bootstrap merupakan salah satu Framework CSS yang
paling populer. Digunakan oleh Web Designer global yang
mampu menjawab kebutuhan konsep responsive web design
(RWD) karena integrasi yang baik antara HTML 5, CSS 3, dan
jQuery (yang merupakan JavaScript Library) di dalam
framework Bootstrap. Framework ini terus berkembang
hingga saat ini telah berada pada versi 4 (Adri, 2019)ad.
Bootstrap meneyediakan class dan komponen yang siap
dipakai, sehingga kita tidak perlu menulis kode CSS dari nol.
Bootstrap awalnya dikembangkan oleh developer Twitter, lalu
dibuat open source agar semua orang dapat berkontribusi di
dalamnya.(Muhardian, 2018) Selain itu, bootstrap juga
responsive terhadap banyak platform, yang artinya tampilan
halaman website yang menggunakan Bootstrap ini akan
tampak tetap rapi, baik itu versi mobile ataupun desktop.
Saat ini penggunaan Bootstrap sudah meluas di
kalangan disainer front-end web, perkembangannya masih
terus berlangsung hingga sekarang. Penggunaannya tidak
begitu rumit, mudah karena dapat tinggal memanggil CSS
dan JS yang tersedia lalu menuliskan class-class nya pada
script program. Bootstrap memiliki 12-column responsive
grid, macam-macam components, typography, JavaScript
38
plugins, form controls dan juga sebuah Web Based
Customizer untuk membuat Bootstrap sendiri.
Struktur utama file Bootstrap seperti gambar 5.1:
Gambar 5. 1 Struktur Utama File Bootstrap
5.2 Mulai Menggunakan Bootstrap
1. Heading
Untuk heading dalam bootstrap yaitu sama dengan
HTML biasa, yaitu dengan menggunakan script
<h1>...<h6>(Widyantoro, 2012)
39
Gambar 5. 2 Heading dalam Bootstrap
2. Body Copy
Ukuran standar dalam text bootstrap untuk bodytext
adalah font-size 14px, line-hight 20px. Selama masih di dalam
tag paragraph <p>...<p/>
Contoh:
<html>
<head>
<title>Latihan Bootstrap</title>
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet"
media="screen">
</head>
<body>
<p> Haloo...mari latihan bootstrap </p>
<script src="http://code.jquery.com/jquery.js"> </script>
<script src="js/bootstrap.min.js"></script>
40
</body>
</html>
Hasilnya akan seperti gambar 5.3:
Gambar 5. 3 Tampilan hasil Body Copy
3. Lead Body Copy
Cara memanggil class css dalam bootstrap, dan sebagai
contoh awal yaitu menggunakan class lead
<html>
<head>
<title>Latihan Bootstrap</title>
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet"
media="screen">
</head>
<body>
<p class=”lead”>Hai, kali ini belajar menggunakan class lead
</p>
<script src="http://code.jquery.com/jquery.js"> </script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Hasilnya seperti gambar 5.4.:
41
Gambar 5. 4 Tampilan Hasil Lead Body Copy
Kesimpulannya, class lead merubah teks menjadi lebih
tebal dan besar, fungsinya beda dengan <b>…</b> atau
<strong>…</strong>.
4. Class Paragraf
Untuk mengatur paragraph, yaitu dengan memanggil
class seperti kode yang ditebalkan dibawah ini:
<html>
<head>
<title>Latihan Bootstrap</title>
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet"
media="screen">
</head>
<body>
<p class="text-left">paragraf kiri</p>
<p class="text-center">paragraf tengah</p> 15
<p class="text-right">paragraf kanan</p>
<script src="http://code.jquery.com/jquery.js"> </script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
5. Text Pertanda
42
Didalam bootstrap juga dapat menambahkan warna teks
sesuai dengan maksud dan isi pada teksnya, Contoh sebagai
berikut:
<html>
<head>
<title>Latihan Bootstrap</title>
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet"
media="screen">
</head>
<body>
<p class="muted">Teks ini berwarna abu-abu muted</p>
<p class="text-warning">Peringatan hanya untuk 5 tahun
keatas.</p>
<p class="text-error">Login gagal! Username & password
salah</p>
<p class="text-info">Silahkan download disini aplikasi
gratis</p>
<p class="text-success">Login berhasil, silahkan mengisi
kolom berikut</p>
<script src="http://code.jquery.com/jquery.js"> </script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Hasilnya akan tampak seperti gambar 5.5:
43
Gambar 5. 5 Tampilan Hasil Text Pertanda
6. Blockquotes
Menggunakan Blockquotes yaitu menggunakan tag
<blockquote>...</blockquote>, Contoh sebagai berikut:
<html>
<head>
<title>Latihan Bootstrap</title>
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet"
media="screen">
</head>
<body>
<blockquote>Raihlah cita-citamu setinggi
langit</blockquote>
<script src="http://code.jquery.com/jquery.js"> </script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Hasilnya akan tampak seperti gambar 5.6:
44
Gambar 5. 6 Tampilan Skrip Blockquotes
Untuk mengubah blockquote jadi rata Kanan yaitu
dapat menggunakan class pull-right.
<blockquote class=”pull-right”> Raihlah cita-citamu setinggi
langit </blockquote>
Gambar 5. 7 Tampilan Skrip Blockquotes Rata kanan
7. Memasukkan Kode Dalam HTML (Inline)
<html>
<head>
<title>Latihan Bootstrap</title>
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet"
media="screen">
</head>
<body>
Contoh seperti ini, <code><section> </code> harusnya
menjadi inline.
<script src="http://code.jquery.com/jquery.js"> </script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
45
Hasilnya seperti gambar 5.8.:
Gambar 5. 8 Tampilan Hasil Memasukkan Kode Dalam
HTML (Inline)
8. Membuat Tabel
Cara membuat tabel dalam pemanggilan classnya cukup
mudah, yaitu sebagai berikut:
<html>
<head>
<title>Latihan Bootstrap</title>
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet"
media="screen">
</head>
<body>
<table class="table">
<tr class="success">
<td>1</td>
<td>Yuyun Yuningsih</td>
<td>14/05/2020</td>
<td>Diterima</td>
</tr>
<tr class="error">
<td>2</td>
<td>Lia Mazia</td>
46
<td>14/05/2020</td>
<td>Ditolak</td>
</tr>
<tr class="warning">
<td>3</td>
<td>Wulan Dari</td>
<td>14/05/2020</td>
<td>Diterima bersyarat</td>
</tr>
<tr class="info">
<td>4</td>
<td>Endang Pujiastuti</td>
<td>14/05/2020</td>
<td>Hubungi Administrator Terlebih Dahulu</td>
</tr>
</table>
<script src="http://code.jquery.com/jquery.js"> </script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Hasilnya seperti gambar 5.9.:
47
Gambar 5. 9 Tampilan Hasil Membuat Tabel
9. Membuat Form
<html>
<head>
<title>Latihan Bootstrap</title>
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet"
media="screen">
</head>
<body>
<form>
<fieldset>
<legend>Judul Form</legend>
<label>Label</label>
<input type="text" placeholder="Tulis sesuatu">
<span class="help-block">contoh text penjelas. </span>
<label class="checkbox">
<input type="checkbox"> Teks Penjelasan Checkbox
</label>
48
<button type="submit" class="btn">Submit
</button></fieldset>
</form>
<script src="http://code.jquery.com/jquery.js"> </script>
<script src="js/bootstrap.min.js"></script>
</body></html>
Hasilnya seperti gambar 5.10:
Gambar 5. 10 Tampilan Form
10. Form Pencarian
<html>
<head>
<title>Latihan Bootstrap</title>
<meta name="viewport" content="width=device-width,
initialscale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet"
media="screen">
49
</head>
<body>
<form class="form-search">
<input type="text" class="input-medium search-query">
<button type="submit" class="btn">Cari</button>
</form>
<script src="http://code.jquery.com/jquery.js"> </script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Hasilnya seperti gambar 5.11:
Gambar 5. 11 Tampilan Form Pencarian
11. Form Login
<html>
<head>
<title>Latihan Bootstrap</title>
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet"
media="screen">
</head>
<body>
<form class="form-horizontal">
<div class="control-group">
<label class="control-label" for="inputEmail">Email </label>
50
<div class="controls">
<input type="text" id="inputEmail" placeholder= "Email">
</div>
</div>
<div class="control-group">
<label class="control-label" for="inputPassword">
Password</label>
<div class="controls">
<input type="password" id="inputPassword"
placeholder="Password">
</div>
</div>
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox"> Remember me
</label>
<button type="submit" class="btn">Sign in</button>
</div>
</div>
</form>
<script src="http://code.jquery.com/jquery.js"> </script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Hasilnya seperti gambar 5.12:
51
Gambar 5. 12 Tampilan Form Login
12. Extending Form Control
<div class="input-prepend">
<span class="add-on">@</span>
<input class="span2" id="prependedInput" type="text"
placeholder="Username">
</div>
<div class="input-append">
<input class="span2" id="appendedInput" type="text">
<span class="add-on">.00</span>
</div>
Hasilnya seperti gambar 5.13:
Gambar 5. 13 Tampilan Extending Form Control
13. Button Disamping Textfield
52
<div class="input-append">
<input class="span2" id="appendedInputButton" type="text">
<button class="btn" type="button">Go!</button>
</div>
Hasilnya seperti gambar 5.14:
Gambar 5. 14 Tampilan Button Disamping Textfield
53
BAGIAN VI
RANCANG BANGUN WEB
ECOMMERCE
6.1 Setting Base URL
Pengaturan base url adalah pengaturan URL dalam
sebuah project aplikasi yang akan dibuat dengan
menggunakan codeigniter 4. Pengaturan base url di
codeigniter biasanya terdapat di dalam file yang bernama
config.php di dalam folder project codeigniter yang sudah
ada.
ecommerce\application\config\config.php
dalam tahapan ini kita akan membuka beberapa library
dan helper pada codeigniter yang kita butuhkan dalam
pembuatan aplikasi e-commerce ini. Untuk menjalankan atau
membuka library dan helper secara otomatis pada codeiginter,
dapat diatur dalam file yang bernama autoload.php didalam
folder application/config/autoload.php.
Library yang akan kita buka secara otomatis yaitu
database, session dan form_validation. Lalu cari sintaks:
$autoload['libraries']=array();
54
Kemudian pada sintak yang sudah ada tambahkan
database, session dan form_validation. Sehingga menjadi
seperti:
$autoload['libraries']=
array('session','database','mylibrary','pagination','table','form_
validation','template','user_agent','email','rss');
Dan helper yang akan kita buka secara otomatis adalah
url berikut:
$autoload['helper']=
array('url','form','phpmu','download','html','engine','captcha','c
ookie','string');
Proses autoload library dan helper telah selesai.
Selanjutnya kita buat database untuk aplikasi e-commerce dan
melakukan konfigurasi database pada codeigniter.
6.2 Membuat dan Merancang database Aplikasi
Ecommerce
Buat sebuah database baru dengan nama “ecommerce”
kemudian buatlah tabel-tabel yang dibutuhkan.
1. Nama tabel : tb_agenda
Tabel 6. 1 Agenda
No Nama
Field
Type
Data
size Keterangan
1. id_agenda int 5 - Primary key
- Auto_Increment
2. tema varchar 100
3. tema_seo varchar 100
55
No Nama
Field
Type
Data
size Keterangan
4. isi_agenda text
5. tempat varchar 100
6. pengirim varchar 100
7. gambar varchar 100
8. tgl_mulai date
9. tgl_selesai date
10. tgl_posting date
11. jam time
12. dibaca int 5
13. username varchar 50
2. Nama Tabel : tb_background
Tabel 6. 2 Background
No Nama Field Type
Data
size Keterangan
1. id_background int 5 - Primary key
- Auto_Increment
2. gambar varchar 255
3. Nama Tabel : tb_banner
Tabel 6. 3 Tabel Banner
No Nama
Field
Type Data size Keterangan
1. id_banner int 5 - Primary key
- Auto_Increment
2. judul varchar 100
3. url varchar 100
4. gambar varchar 100
56
5. tgl_posting date
4. Nama Tabel : tb_berita
Tabel 6. 4 Berita
No Nama
Field
Type
Data
size Keterangan
1. id_berita int 5 - Primary key
- Auto_Increment
2. id_kategor
i
int 5 Foreign Key
3. username varchar 50
4. judul varchar 100
5. sub_judul varchar 255
6. youtube varchar 100
7. judul_seo varchar 100
8. headline Enum
(‘Y’,’N’)
9. aktif Enum
(‘Y’,’N’)
10. utama Enum
(‘Y’,’N’)
11. isiberita longtext
12. keteranga
n_gambar
text
13. hari varchar 20
14. tanggal date
15. jam time
16. gambar varchar 100
17. dibaca int 5
18. tag varchar 100
19. status Enum
57
No Nama
Field
Type
Data
size Keterangan
(‘Y’,’N’)
5. Nama Tabel: tb_download
Tabel 6. 5 Download
No Nama
Field
Type
Data
size Keterangan
1. id_downlo
ad
int 5 - Primary key
- Auto_Increment
2. judul varchar 100
3. nama_file varchar 50
4. tgl_postin
g
date
5. hits int 3
6. Nama Tabel : tb_halamanstatis
Tabel 6. 6 Halaman Statis
No Nama Field Type
Data
size Keterangan
1. id_halaman int 5 - Primary key
- Auto_Increment
2. judul varchar 100
3. judul_seo varchar 100
4. isi_halaman text
5. tgl_posting date
6. gambar varchar 100
7. username varchar 50
8. dibaca int 5
9. jam time
58
No Nama Field Type
Data
size Keterangan
10. hari varchar 20
7. Nama Tabel: tb_header
Tabel 6. 7 Header
No Nama Field Type
Data
size Keterangan
1. id_header int 5 - Primary key
- Auto_Increment
2. judul varchar 100
3. url varchar 100
4. gambar varchar 100
5. tgl_posting date
8. Nama Tabel : tb_hubungi
Tabel 6. 8 Hubungi
No Nama Field Type
Data
size Keterangan
1. id_hubungi int 5 - Primary key
- Auto_Increment
2. nama varchar 50
3. email varchar 100
4. subjek varchar 100
5. pesan text
6. tangal date
7. jam time
8. dibaca enum
(‘Y’,’N’)
9. lampiran varchar 255
59
9. Nama Tabel : tb_identitas
Tabel 6. 9 Identitas
No Nama Field Type
Data
size Keterangan
1. id_identitas int 5 - Primary key
- Auto_Increment
2. nama_website varchar 100
3. email varchar 100
4. url varchar 100
5. facebook text
6. rekening varchar 100
7. no_telp varchar 20
8. meta_deksrips
i
varchar 250
9. meta_keyword varchar 250
10. maps text
10. Nama Tabel : tb_iklanatas
Tabel 6. 10 Iklan Atas
No Nama Field Type
Data
size Keterangan
1. id_iklanatas int 5 - Primary key
- Auto_Increment
2. judul varchar 100
3. username varchar 50
4. url varchar 100
5. gambar varchar 100
6. tgl_posting date
60
11. Nama Tabel : tb_iklantengah
Tabel 6. 11 Iklan Tengah
No Nama Field Type
Data
size Keterangan
1. id_iklantengah int 5 - Primary key
- Auto_Increme
nt
2. judul varchar 100
3. username varchar 50
4. url varchar 100
5. gambar varchar 100
6. tgl_posting date
12. Nama Tabel : tb_katajelek
Tabel 6. 12 Kata Jelek
No Nama Field Type
Data
size Keterangan
1. id_jelek int 11 - Primary key
- Auto_Increment
2. kata varchar 60
3. username varchar 50
4. ganti varchar 60
13. Nama Tabel : tb_kategori
Tabel 6. 13 Kategori
No Nama Field Type
Data
size Keterangan
1. id_kategori int 5 - Primary key
61
No Nama Field Type
Data
size Keterangan
- Auto_Increment
2. nama_katego
ri
varchar 50
3. username varchar 50
4. kategori_seo varchar 100
5. aktif enum
(‘Y’,’N’)
6. sidebar int 10
14. Nama Tabel : komentar
Tabel 6. 14 Komentar
No Nama Field Type
Data
size Keterangan
1. id_komentar int 5 - Primary key
- Auto_Increment
2. id_berita int 5 Foreign Key
3. nama_koment
ar
varch
ar
100
4. url varch
ar
100
5. isi_komentar text
6. tgl date
7. jam_komentar time
8. aktif enum
(‘Y’,’
N’)
9. email varch
ar
100
62
15. Nama Tabel : logo
Tabel 6. 15 Logo
No Nama Field Type
Data
size Keterangan
1. id_logo int 5 - Primary key
- Auto_Increment
2. gambar varchar 100
16. Nama Tabel : menu
Tabel 6. 16 Menu
No Nama Field Type
Data
size Keterangan
1. id_menu int 5 - Primary key
- Auto_Increment
2. id_parent int 5
3. nama_menu varchar 100
4. link varchar 100
5. aktif enum
(‘Y’,’N’)
6. position enum
(‘top’,’b
ottom’)
7. urutan int 3
17. Nama Tabel : modul
Tabel 6. 17 Modul
No Nama Field Type
Data
size Keterangan
1. id_modul int 5 - Primary key
63
No Nama Field Type
Data
size Keterangan
- Auto_Increment
2. nama_modul varchar 50
3. username varchar 50
4. link varchar 100
5. static_content text
6. gambar varchar 100
7. publish enum
(‘Y’,’N’)
8. status enum
(‘user’,’a
dmin’)
9. aktif enum
(‘Y’,’N’)
10. urutan int 5
11. link_seo varchar 50
18. Nama Tabel : mod_alamat
Tabel 6. 18 Modul Alamat
No Nama Field Type
Data
size Keterangan
1. id_alamat int 5 - Primary key
- Auto_Increment
2. alamat text
64
19. Nama Tabel : pasangiklan
Tabel 6. 19 Pasang Iklan
No Nama Field Type
Data
size Keterangan
1. id_pasangikl
an
int 5 - Primary key
- Auto_Increment
2. judul varchar 100
3. username varchar 50
4. url varchar 100
5. gambar varchar 100
6. tgl_posting date
20. Nama Tabel : rb_kategori_produk
Tabel 6. 20 Kategori Produk
No Nama Field Type
Data
size Keterangan
1. id_kategori_
produk
int 11 - Primary key
- Auto_Increment
2. nama_katego
ri
varchar 255
3. kategori_seo varchar 255
21. Nama Tabel : rb_kategori_produk_sub
Tabel 6. 21 Kategori Produk Sub
No Nama Field Type
Data
size Keterangan
1. id_kategori_
produk_sub
int 11 - Primary key
- Auto_Increment
2. id_kategori int 11 Foreign Key
65
No Nama Field Type
Data
size Keterangan
3. nama_katego
ri_sub
varchar 255
4. kategori_seo_
sub
varchar 255
22. Nama Tabel : rb_keterangan
Tabel 6. 22 Keterangan
No Nama Field Type
Data
size Keterangan
1. id_keterangan int 5 - Primary key
- Auto_Increment
2. id_reseller int 11
3. keterangan text
4. tanggal_postin
g
date
23. Nama Tabel : rb_konfirmasi_pembayaran
Tabel 6. 23 Konfirmasi Pembayaran
No Nama Field Type
Data
size Keterangan
1. id_konfirmas
i_pembayara
n
int 11 - Primary key
- Auto_Increment
2. id_penjual int 11
3. total_transfer varchar 20
4. id_rekening int 11
5. nama_pengir
im
varchar 255
66
No Nama Field Type
Data
size Keterangan
6. tanggal_trans
fer
date
7. bukti_transfe
r
varchar 255
8. waktu_konfir
masi
datetime
24. Nama Tabel : rb_konsumen
Tabel 6. 24 Konsumen
No Nama Field Type Data size Keterangan
1. id_konsumen int 11 - Primary key
- Auto_Increment
2. username varchar 50
3. password text
4. nama_lengka
p
varchar 255
5. email varchar 60
6. jeni_kelamin enum(‘La
ki-
laki’,’Pere
mpuan’)
7. tanggal_lahir date
8. tempat_lahir varchar 100
9. alamat_lengk
ap
text
10. kecamatan varchar 255
11. kota_id int 11
12. no_telp varchar 15
13. foto varchar 255
67
No Nama Field Type Data size Keterangan
14. tanggal_dafta
r
date
25. Nama Tabel : rb_kota
Tabel 6. 25 Kota
No Nama Field Type Data size Keterangan
1. kota_id int 11 - Primary key
- Auto_Increment
2. provinsi_id int 11
3. nama_kota varchar 11
26. Nama Tabel : rb_pembelian
Tabel 6. 26 Pembelian
No Nama Field Type
Data
size Keterangan
1. id_pembelian int 11 - Primary key
- Auto_Increment
2. kode_pembeli
an
varchar 50
3. id_supplier int 11
4. waktu_beli datetime
27. Nama Tabel : rb_pembelian_detail
Tabel 6. 27 Pembelian Detail
68
No Nama Field Type Data size Keterangan
1. id_pembelian
_detail
int 11 - Primary key
- Auto_Increment
2. id_pembelian int 11
3. id_produk int 11
4. harga_pesan int 11
5. jumlah_pesa
n
int 11
6. satuan varchar 50
28. Nama Tabel : rb_penjualan
Tabel 6. 28 Penjualan
No Nama Field Type
Data
size Keterangan
1. id_penjualan int 11 - Primary key
- Auto_Increment
2. kode_transaksi varchar 50
3. id_pmbeli int 11
4. id_penjual int 11
5. status_pembeli Enum
(‘reseller’
,’konsum
en’)
6. status_penjual Enum
(‘admin’,
’reseller’)
7. kurir varchar 255
8. service varchar 255
9. ongkir int 11
10. waktu_transak
ksi
datetime
69
No Nama Field Type
Data
size Keterangan
11. proses enum
(‘0’,’1’,’2’
)
29. Nama Tabel : rb_penjualan_detail
Tabel 6. 29 Penjualan Detail
No Nama Field Type
Data
size Keterangan
1. id_penjualan_
detail
int 11 - Primary key
- Auto_Increment
2. id_penjual int 11
3. id_produk int 11
4. jumlah int 11
5. diskon int 11
6. harga_jual int 11
7. satuan varchar 50
30. Nama Tabel : rb_penjualan_temp
Tabel 6. 30 Penjualan Temporary
No Nama Field Type Data size Keterangan
1. id_penjualan
_detail
int 11 - Primary key
- Auto_Increment
2. session varchar 50
3. id_produk int 11
4. jumlah int 11
5. diskon int 11
6. harga_jual int 11
7. satuan varchar 50
70
No Nama Field Type Data size Keterangan
8. waktu_order datetime
31. Nama Tabel : rb_produk_diskon
Tabel 6. 31 Produk Diskon
N
o
Nama Field Type Data size Keterangan
1. id_produk_di
skon
int 11 - Primary key
- Auto_Increment
2. id_produk int 11
3. id_reseller int 11
4. diskon int 11
32. Nama Tabel : rb_produk
Tabel 6. 32 Produk
No Nama Field Type
Data
size Keterangan
1. id_produk int 11 - Primary key
- Auto_Increment
2. id_produk_peru
sahaan
int 11
3. id_kategori_pro
duk
int 11
4. id_kategori_pro
duk_seo
int 11
5. id_reseller int 11
6. nama_produk varchar 255
7. produk_seo varchar 255
8. satuan varchar 50
9. harga_beli int 11
71
No Nama Field Type
Data
size Keterangan
10. harga_reseller int 11
11. harga_konsume
n
int 11
12. berat varchar 50
13. gambar varchar 255
14. keterangan text
15. username varchar 50
16. waktu_input datetim
e
33. Nama Tabel : rb_provinsi
Tabel 6. 33 Provinsi
No Nama Field Type
Data
size Keterangan
1. provinsi_id int 11 - Primary key
- Auto_Increment
2. nama_provinsi varchar 50
34. Nama Tabel : rb_rekening
Tabel 6. 34 Rekening
No Nama Field Type
Data
size Keterangan
1. id_rekening int 5 - Primary key
- Auto_Increment
72
No Nama Field Type
Data
size Keterangan
2. nama_bank varchar 50
3. no_rekening varchar 50
4. pemilik_rekenin
g
varchar 150
35. Nama Tabel : rb_reseller
Tabel 6. 35 Reseller
No Nama Field Type
Data
size Keterangan
1. id_reseller int 11 - Primary key
- Auto_Increment
2. username varchar 50
3. password varchar 255
4. nama_reseller varchar 255
5. jenis_kelamin varchar 50
6. kota_id int 10
7. alamat_lengka
p
text
8. no_telpon varchar 15
9. email varchar 100
10. kode_pos int 7
11. keterangan text
12. foto varchar 255
13. referral varchar 50
14. tanggal_daftar datetime
73
6.3 Membuat Koneksi Database Codeigniter
dengan MySQL
Untuk menghubungkan codeigniter dengan database
buka file config database pada codeigniter yang terletak di
application/config/database.php, kemudian cari baris sintak
seperti berikut:
<?php
defined('BASEPATH') OR exit('No direct script access
allowed');
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array('dsn' =>'','hostname'=> 'localhost',
'username' => 'root', 'password' => '', 'database' =>
'ecommerce', => 'mysqli', 'dbprefix' => '', 'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'), 'cache_on'
=> FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' =>
'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE,
'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(),
'save_queries' => TRUE
); ?>
6.4 Membuat Model untuk CRUD
Tahapan ini kita akan membuat fungsi-fungsi yang bisa
digunakan berulang-ulang, dan tidak perlu repot membuat
banyak fungsi pada sebuah model. contohnya file untuk insert
data ke dalam sebuah database, hanya cukup membuat satu
fungsi saja untuk perintah insert database. Begitu juga dengan
74
fungsi edit, hapus dan update data pada database dapat kita
buat satu fungsi yang dapat dipergunakan berulang kali.
a. model_app.php
<?php
class Model_app extends CI_model{
public function view($table){
return $this->db->get($table);
}
public function insert($table,$data){
return $this->db->insert($table, $data);
}
public function edit($table, $data){
return $this->db->get_where($table, $data);
}
public function update($table, $data, $where){
return $this->db->update($table, $data, $where);
}
public function delete($table, $where){
return $this->db->delete($table, $where);
}
public function view_where($table,$data){
$this->db->where($data);
return $this->db->get($table);
}
public function view_ordering_limit ($table,$order,
$ordering,$baris,$dari){
75
$this->db->select('*');
$this->db->order_by($order,$ordering);
$this->db->limit($dari, $baris);
return $this->db->get($table);
}
public function view_where_ordering_limit ($table,
$data,$order,$ordering,$baris,$dari){
$this->db->select('*');
$this->db->where($data);
$this->db->order_by($order,$ordering);
$this->db->limit($dari, $baris);
return $this->db->get($table);
}
public function view_ordering ($table,$order, $ordering){
$this->db->select('*');
$this->db->from($table);
$this->db->order_by($order,$ordering);
return $this->db->get()->result_array();
}
public function view_where_ordering ($table,$data,
$order,$ordering){
$this->db->where($data);
$this->db->order_by($order,$ordering);
$query = $this->db->get($table);
return $query->result_array();
}
76
public function view_join_one ($table1,$table2,
$field,$order,$ordering){
$this->db->select('*');
$this->db->from($table1);
$this->db->join($table2, $table1.'.'.$field.'='.$table2.' .'.$field);
$this->db->order_by($order,$ordering);
return $this->db->get()->result_array();
}
public function view_join_where ($table1,$table2,
$field,$where,$order,$ordering){
$this->db->select('*');
$this->db->from($table1);
$this->db->join($table2, $table1.'.'.$field.'='.$table2.'. '.$field);
$this->db->where($where);
$this->db->order_by($order,$ordering);
return $this->db->get()->result_array();
}
function umenu_akses($link,$id){
return $this->db->query ("SELECT * FROM
modul,users_modul WHERE modul.id_modul
=users_modul.id_modul AND users_modul.id_session ='$id'
AND modul.link='$link'")->num_rows();
}
77
public function cek_login ($username,$password, $table){
return $this->db->query("SELECT * FROM $table where
username='".$this->db-> escape_str($username)."' AND
password='".$this-> db->escape_str($password)."' AND
blokir='N'");
}
function grafik_kunjungan(){
return $this->db->query("SELECT count(*) as jumlah, tanggal
FROM statistik GROUP BY tanggal ORDER BY tanggal DESC
LIMIT 10");}
function kategori_populer($limit){
return $this->db->query("SELECT * FROM (SELECT a.*,
b.jum_dibaca FROM
(SELECT * FROM tb_kategori) as a left join
(SELECT id_kategori, sum(dibaca) as jum_dibaca FROM
tb_berita GROUP BY id_kategori) as b on
a.id_kategori=b.id_kategori) as c where c.aktif='Y' ORDER BY
c.jum_dibaca DESC LIMIT $limit");
}
}
b. model_menu.php
<?php
class Model_menu extends CI_model{
function top_menu(){
return $this->db->query("SELECT * FROM menu where
position='Top' ORDER BY urutan ASC");
}
78
function menugroup(){
return $this->db->query("SELECT * FROM group_menu
ORDER BY id_group_menu DESC");
}
function menugroup_edit($id){
return $this->db->query("SELECT * FROM group_menu
where id_group_menu='$id'");}
function menugroup_update(){
$datadb = array('nama_group_menu'=>$this-> db->
escape_str($this->input->post('a')));
$this->db->where('id_group_menu',$this->input-> post('id'));
$this->db->update('group_menu',$datadb); }
function bottom_menu(){
return $this->db->query("SELECT * FROM menu where
id_parent='0' AND position = 'Bottom' AND aktif='Ya'
ORDER BY urutan ASC");
}
function dropdown_menu($id){
return $this->db->query("SELECT * FROM menu WHERE
id_parent='$id' AND aktif='Ya' ORDER BY urutan ASC");
}
function menu_utama(){
return $this->db->query("SELECT * FROM menu where
id_parent='0' ORDER BY urutan");
79
}
function menu_cek($id){
return $this->db->query("SELECT * FROM menu where
id_menu='$id'");}
function menu_edit($id){
return $this->db->query("SELECT * FROM menu where
id_menu='$id'");}
function menu_delete($id){
return $this->db->query("DELETE FROM menu where
id_menu='$id'");
}
}
c. model_reseller.php
<?php
class Model_reseller extends CI_model{
function top_menu(){
return $this->db->query("SELECT * FROM menu where
position='Top' ORDER BY urutan ASC");
}
function testimoni(){
return $this->db->query("SELECT a.*, b.nama_lengkap,
b.id_konsumen FROM testimoni a JOIN rb_konsumen b ON
a.id_konsumen = b.id_konsumen ORDER BY a.id_testimoni
DESC");
}
80
function testimoni_update(){
$datadb = array('isi_testimoni'=>$this->input-> post('b'),
'aktif'=>$this->input->post('f'));
$this->db->where('id_testimoni',$this->input-> post('id'));
$this->db->update('testimoni',$datadb);
}
function testimoni_edit($id){
return $this->db->query("SELECT a.*, b.nama_lengkap,
b.id_konsumen FROM testimoni a JOIN rb_konsumen b ON
a.id_konsumen= b.id_konsumen where a.id_testimoni='$id'");
}
function testimoni_delete($id){
return $this->db->query("DELETE FROM testimoni where
id_testimoni='$id'");
}
function public_testimoni($sampai, $dari){
return $this->db->query("SELECT a.*,b.nama_lengkap,
b.foto,b.id_konsumen,b.jenis_kelamin FROM testimoni a JOIN
rb_konsumen b ON a.id_konsumen=b.id_konsumen where
a.aktif='Y' ORDER BY a.id_testimoni DESC LIMIT $dari,
$sampai");
}
function hitung_testimoni(){
81
return $this->db->query("SELECT * FROM testimoni where
aktif='Y'");
}
function insert_testimoni(){
$datadb=array('id_konsumen'=>$this->session->
id_konsumen,'isi_testimoni'=>$this->input-> post('testimoni'),
'aktif'=>'N', 'waktu_testimoni'=> date('Y-m-d H:i:s'));
$this->db->insert('testimoni',$datadb);
}
function cari_reseller($kata){
$pisah_kata = explode(" ",$kata);
$jml_katakan = (integer)count($pisah_kata);
$jml_kata = $jml_katakan-1;
$cari = "SELECT * FROM rb_reseller a LEFT JOIN rb_kota b
ON a.kota_id=b.kota_id WHERE";
for ($i=0; $i<=$jml_kata; $i++){
$cari.= " a.nama_reseller LIKE '%".$pisah_kata[$i]."%' OR
b.nama_kota LIKE '%".$pisah_kata[$i]."%' ";
if ($i < $jml_kata ){
$cari .= " OR ";
}
}
$cari .= " ORDER BY a.id_reseller DESC LIMIT 36";
return $this->db->query($cari);}
public function view_join_rows($table1,$table2,$field,
$where,$order,$ordering){
82
$this->db->select('*');
$this->db->from($table1);
$this->db->join($table2, $table1.'.'.$field.'='.$table2.'. '.$field);
$this->db->where($where);
$this->db->order_by($order,$ordering);
return $this->db->get();
}
function penjualan_list_konsumen($id,$level){
return $this->db->query("SELECT * FROM `rb_penjualan` a
JOIN rb_konsumen b ON a.id_pembeli=b.id_konsumen where
a.status_penjual='$level' AND a.id_penjual='$id' ORDER BY
a.id_penjualan DESC");
}
function jual($id){
return $this->db->query("SELECT sum(a.jumlah) as jual
FROM rb_penjualan_detail a JOIN rb_penjualan b ON
a.id_penjualan=b.id_penjualan where a.id_produk ='$id' AND
b.status_penjual='admin' AND b.proses= '1'");
}
function beli($id){
return $this->db->query("SELECT sum (a.jumlah_ pesan) as
beli FROM rb_pembelian_detail a where a.id_produk='$id'");
}
83
function jual_reseller($penjual, $produk){
return $this->db->query("SELECT sum(jumlah) as jual FROM
`rb_penjualan` a JOIN rb_penjualan_detail b ON
a.id_penjualan=b.id_penjualan where
a.status_pembeli='konsumen' AND a.status_penjual='reseller'
AND a.id_penjual='$penjual' AND b.id_produk='$produk'
AND a.proses='1'");
}
function beli_reseller($pembeli, $produk){
return $this->db->query("SELECT sum(jumlah) as beli FROM
`rb_penjualan` a JOIN rb_penjualan_detail b ON
a.id_penjualan=b.id_penjualan where
a.status_pembeli='reseller' AND a.status_penjual='admin'
AND a.id_pembeli='$pembeli' AND b.id_produk='$produk'
AND a.proses='1'"); }
function penjualan_konsumen_detail($id){
return $this->db->query("SELECT * FROM `rb_penjualan` a
JOIN rb_reseller b ON a.id_penjual= b.id_reseller JOIN
rb_kota c ON b.kota_id=c.kota_id where
a.id_penjualan='$id'");
}
function profile_konsumen($id){
return $this->db->query("SELECT a.id_konsumen,
a.username, a.nama_lengkap, a.email, a.jenis_kelamin,
a.tanggal_lahir, a.tempat_lahir, a.alamat_lengkap,
84
a.kecamatan, a.no_hp, a.tanggal_daftar, b.kota_id,
b.nama_kota as kota, c.provinsi_id, c.nama_provinsi as
propinsi FROM `rb_konsumen` a LEFT JOIN rb_kota b ON
a.kota_id=b.kota_id LEFT JOIN rb_provinsi c ON
b.provinsi_id=c.provinsi_id where a.id_konsumen= '$id'");
}
function orders_report($id,$level){
return $this->db->query("SELECT * FROM `rb_penjualan` a
JOIN rb_reseller b ON a.id_penjual=b.id_reseller where
a.status_penjual= '$level' AND a.id_pembeli='$id' ORDER BY
a.id_penjualan DESC");
}
function agenda_terbaru($limit){
return $this->db->query("SELECT * FROM tb_agenda ORDER
BY id_agenda DESC LIMIT $limit"); }
public function view_join_where_one($table1,$table2,
$field,$where){
$this->db->select('*');
$this->db->from($table1);
$this->db->join($table2, $table1.'.'.$field.'='.$table2.'.' .$field);
$this->db->where($where);
return $this->db->get();
}
function modupdatefoto(){
$config['upload_path'] = 'asset/foto_user/';
$config['allowed_types'] = 'gif|jpg|png|JPG|gif|JPEG |jpeg';
85
$config['max_size'] = '1000'; // kb
$this->load->library('upload', $config);
$this->upload->do_upload();
$hasil=$this->upload->data();
$config['image_library'] = 'gd2';
$config['source_image']='asset/foto_user/'.$hasil ['file_name'];
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['height'] = 622;
$this->load->library('image_lib', $config);
$this->image_lib->crop();
$datadb = array('foto'=>$hasil['file_name']);
$this->db->where('id_konsumen',$this->session
->id_konsumen);
$this->db->update('rb_konsumen',$datadb);
}
function modupdatefotoreseller(){
$config['upload_path'] = 'asset/foto_user/';
$config['allowed_types'] = 'gif|jpg|png|JPG|gif|JPEG| jpeg';
$config['max_size'] = '1000'; // kb
$this->load->library('upload', $config);
$this->upload->do_upload();
$hasil=$this->upload->data();
$config['image_library'] = 'gd2';
$config['source_image'] = 'asset/foto_user/'.$hasil
['file_name'];
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
86
$config['height'] = 622;
$this->load->library('image_lib', $config);
$this->image_lib->crop();
$datadb = array('foto'=>$hasil['file_name']);
$this->db->where('id_reseller',$this->session-> id_reseller);
$this->db->update('rb_reseller',$datadb);
}
function profile_update($id){
if (trim($this->input->post('a')) != ''){
$datadbd = array('username'=>$this->db-> escape_str
(strip_tags($this->input->post('aa'))),
'password'=>hash("sha512", md5($this->input-> post('a'))),
'nama_lengkap'=>$this->db-> escape_str (strip_tags($this->
input->post('b'))), 'email'=>$this-> db-> escape_str (strip_tags
($this->input->post('c'))),'jenis_kelamin'=>$this->db->
escape_str($this->input ->post('d')), 'tanggal_lahir'=>$this->
db->escape_str ($this-> input->post('e')), 'tempat_lahir'=>
$this->db->escape_str(strip_tags($this->input->post('f'))),
'alamat_lengkap'=>$this->db->escape_str (strip_tags ($this->
input->post('g'))),kecamatan'=>$this->db->escape_str
(strip_tags($this->input->pos('k'))),'kota_id'=>$this->db->
escape_str(strip_tags($this->input->post('ga'))),'no_hp'=>
$this->db->escape_str (strip_tags($this ->input->post('l'))));
}else{
$datadbd = array('username'=>$this->db->escape_str
(strip_tags($this->input->post('aa'))), 'nama_lengkap'=>$this-
db->escape_str (strip_tags ($this->input->post('b'))), 'email'=>
87
$this->db-> escape_str(strip_tags($this->input->post('c'))),
'jenis_kelamin'=>$this->db->escape_str($this->input->
post('d')), 'tanggal_lahir'=>$this->db->escape_str ($this->
input->post('e')),'tempat_lahir'=>$this->db->escape_str
(strip_tags($this->input->post('f'))), 'alamat_lengkap'=>$this->
db->escape_str(strip_tags($this->input->post('g'))),
'kecamatan'=>$this->db-> escape_str(strip_tags($this->input->
post('k'))), 'kota_id'=>$this->db-> escape_str(strip_tags($this->
input->post('ga'))), 'no_hp'=>$this->db->escape_str (strip_tags
($this ->input->post('l'))));
}
$this->db->where('id_konsumen',$id);
$this->db->update('rb_konsumen',$datadbd);
}
function penjualan_list_konsumen_top($id, $level){
return $this->db->query("SELECT * FROM `rb_penjualan` a
JOIN rb_konsumen b ON a.id_pembeli=b.id_konsumen where
a.status_penjual= '$level' AND a.id_penjual='$id' ORDER BY
a.id_penjualan DESC LIMIT 10");
}
function reseller_pembelian($id,$level){
return $this->db->query("SELECT * FROM `rb_penjualan` a
JOIN rb_reseller b ON a.id_pembeli= b.id_reseller where
a.status_penjual='$level' AND a.id_pembeli='$id' ORDER BY
a.id_penjualan DESC");
88
}
function penjualan_detail($id){
return $this->db->query("SELECT * FROM `rb_penjualan` a
JOIN rb_reseller b ON a.id_pembeli= b.id_reseller where
a.id_penjualan='$id'");
}
function penjualan_konsumen_detail_reseller($id){
return $this->db->query("SELECT * FROM `rb_penjualan` a
JOIN rb_konsumen b ON a.id_pembeli =b.id_konsumen
where a.id_penjualan='$id'");
}
function penjualan_list($id,$level){
return $this->db->query("SELECT * FROM `rb_penjualan` a
JOIN rb_reseller b ON a.id_pembeli =b.id_reseller where
a.status_penjual='$level' AND a.id_penjual='$id' ORDER BY
a.id_penjualan DESC");
}
function pembelian($id_reseller){
return $this->db->query("SELECT sum((b.jumlah*
b.harga_jual)-b.diskon) as total FROM rb_penjualan a JOIN
rb_penjualan_detail b ON a.id_penjualan= b.id_penjualan
89
where a.status_penjual='admin' AND
a.id_pembeli='".$id_reseller."' AND a.proses='1'");
}
function penjualan_perusahaan($id_reseller){
return $this->db->query("SELECT sum((a.jumlah*
a.harga_jual)-a.diskon) as total, sum(a.jumlah) as produk
FROM `rb_penjualan_detail` a JOIN rb_produk b ON
a.id_produk=b.id_produk JOIN rb_penjualan c ON
a.id_penjualan=c.id_penjualan where c.status_
penjual='reseller' AND b.id_produk_perusahaan!='0' AND
id_penjual='".$id_reseller."' AND c.proses='1'");
}
function penjualan($id_reseller){
return $this->db->query("SELECT sum((a.jumlah*
a.harga_jual)-a.diskon) as total, sum(a.jumlah) as produk
FROM `rb_penjualan_detail` a JOIN rb_produk b ON
a.id_produk=b.id_produk JOIN rb_penjualan c ON
a.id_penjualan=c.id_penjualan where c.status_
penjual='reseller' AND b.id_produk_perusahaan='0' AND
id_penjual= '".$id_reseller."' AND c.proses='1'");
}
function modal_perusahaan($id_reseller){
return $this->db->query("SELECT sum(a.jumlah*
b.harga_reseller) as total FROM `rb_penjualan_detail` a JOIN
rb_produk b ON a.id_produk=b.id_produk JOIN
90
rb_penjualan c ON a.id_penjualan=c.id_penjualan where
c.status_pembeli='konsumen' AND c.proses ='1' AND
c.id_penjual='".$id_reseller."' AND b.id_
produk_perusahaan!='0'");
}
function modal_pribadi($id_reseller){
return $this->db->query("SELECT sum(a.jumlah*
b.harga_beli) as total FROM `rb_penjualan_detail` a JOIN
rb_produk b ON a.id_produk=b.id_produk JOIN
rb_penjualan c ON a.id_penjualan=c.id_penjualan where
c.status_pembeli='konsumen' AND c.proses= '1' AND
c.id_penjual='".$id_reseller."' AND b.id_produk_perusahaan
='0'");
}
function produk_perkategori($id_reseller,$id_produk_
perusahaan,$id_kategori_produk,$limit){
return $this->db->query("SELECT a.*, b.nama_reseller,
c.nama_kota FROM rb_produk a LEFT JOIN rb_reseller b ON
a.id_reseller=b.id_reseller LEFT JOIN rb_kota c ON
b.kota_id=c.kota_id where a.id_reseller!='$id_reseller' AND
a.id_produk_ perusahaan='$id_produk_perusahaan' AND
a.id_kategori_produk= '$id_kategori_produk' ORDER BY
a.id_produk DESC LIMIT $limit"); } }
d. model_utama.php
<?php
class Model_utama extends CI_model{
91
public function view($table){
return $this->db->get($table);
}
public function view_where($table,$data){
$this->db->where($data);
return $this->db->get($table);
}
public function view_ordering_limit($table, $order,
$ordering,$baris,$dari){
$this->db->select('*');
$this->db->order_by($order,$ordering);
$this->db->limit($dari, $baris);
return $this->db->get($table); }
public function view_where_ordering_limit($table ,
$data,$order,$ordering,$baris,$dari){
$this->db->where($data);
$this->db->order_by($order,$ordering);
$this->db->limit($dari, $baris);
return $this->db->get($table);
}
public function view_single($table,$data,$order, $ordering){
$this->db->where($data);
$this->db->order_by($order,$ordering);
return $this->db->get($table);
}
92
public function view_join($table1,$table2,$field,
$order,$ordering,$baris,$dari){
$this->db->select('*');
$this->db->from($table1);
$this->db->join($table2, $table1.'.'.$field.'='.$table2.'. '.$field);
$this->db->order_by($order,$ordering);
$this->db->limit($dari, $baris);
return $this->db->get();
}
public function view_join_one($table1,$table2, $field,
$where,$order,$ordering,$baris,$dari){
$this->db->select('*');
$this->db->from($table1);
$this->db->join($table2, $table1.'.'.$field.'='.$table2.'. '.$field);
$this->db->where($where);
$this->db->order_by($order,$ordering);
$this->db->limit($dari, $baris);
return $this->db->get();
}
public function view_joinn($table1,$table2,$table3,$field,
$field1,$order,$ordering,$baris,$dari){
$this->db->select('*');
$this->db->from($table1);
$this->db->join($table2,$table1.'.'.$field.'='.$table2.'.' .$field);
$this->db->join($table3,$table1.'.'.$field1.'='.$table3. '.'.$field1);
$this->db->order_by($order,$ordering);
$this->db->limit($dari, $baris);
93
return $this->db->get();
}
public function view_join_two($table1,$table2,$table3,
$field,$field1,$where,$order,$ordering,$baris,$dari){
$this->db->select('*');
$this->db->from($table1);
$this->db->join($table2,$table1.'.'.$field.'='.$table2.'.'. $field);
$this->db->join($table3,$table1.'.'.$field1.'='.$table3.'.'. $field1);
$this->db->where($where);
$this->db->order_by($order,$ordering);
$this->db->limit($dari, $baris);
return $this->db->get(); }
function cari_berita($kata){
$pisah_kata = explode(" ",$kata);
$jml_katakan = (integer)count($pisah_kata);
$jml_kata = $jml_katakan-1;
$cari = "SELECT * FROM tb_berita a join users b on
a.username=b.username join tb_kategori c on
a.id_kategori=c.id_kategori WHERE a.status='Y' AND";
for ($i=0; $i<=$jml_kata; $i++){
$cari .= " a.judul LIKE '%".$pisah_kata[$i]."%'";
if ($i < $jml_kata ){
$cari .= " OR ";
}
}
$cari .= " ORDER BY a.id_berita DESC LIMIT 15";
return $this->db->query($cari);
}
94
public function insert($table,$data){
return $this->db->insert($table, $data);
}
public function update($table, $data, $where){
return $this->db->update($table, $data, $where);
}
public function polling_sum(){
return $this->db->query("SELECT SUM(rating) as jml_vote
FROM poling WHERE aktif='Y'"); }
function kunjungan(){
$ip = $_SERVER['REMOTE_ADDR'];
$tanggal = date("Y-m-d");
$waktu = time();
$cekk = $this->db->query("SELECT * FROM statistik WHERE
ip='$ip' AND tanggal='$tanggal'");
$rowh = $cekk->row_array();
if($cekk->num_rows() == 0){
$datadb = array('ip'=>$ip, 'tanggal'=>$tanggal, 'hits'=>'1',
'online'=>$waktu);
$this->db->insert('statistik',$datadb);
}else{
$hitss = $rowh['hits'] + 1;
$datadb = array('ip'=>$ip, 'tanggal'=>$tanggal, 'hits'=>$hitss,
'online'=>$waktu);
$array = array('ip' => $ip, 'tanggal' => $tanggal);
95
$this->db->where($array);
$this->db->update('statistik',$datadb);
}
}
}
Dari skrip yang sudah dibuat, untuk menginput data
ke dalam database kita dapat menggunakan function
simpan(), untuk menampilkan data atau mengambil data dari
sebuah database kita dapat menggunakan function tampil(),
dan untuk menghapus data dari sebuah database kita dapat
menggunakan function hapus(), selain itu untuk mengupdate
data pada sebuah database kita bisa menggunakan function
ubah().
Kemudian kita akan mengatur autoload model di
dalam folder application/config/autoload.php. agar model-
model yang sudah dibuat dapat digunakan dan di buka secara
otomatis. Jadi tidak perlu lagi kita buka dari file controller.
autoload.php
<?php
defined('BASEPATH') OR exit('No direct script access
allowed');
$autoload['packages'] = array();
$autoload['libraries'] = array('session','database', 'mylibrary',
'pagination','table','form_validation','template','user_agent','em
ail','rss');$autoload['drivers'] = array();
$autoload['helper'] = array('url','form','phpmu', 'tb_download',
'html','engine','captcha','cookie','string');
96
$autoload['config'] = array(); $autoload['language'] = array();
$autoload['model'] = array('model_app','model_utama',
'model_reseller');
6.5 Membuat Form Login
Form login akan dibuat pada file controller Autentifikasi.
Controller yang kita buat ini akan dijadikan sebagai controller
default.
Tampilan-tampilan aplikasi ecommerce akan dibuat dengan
menggunakan template dari bootstrap yange terbaru yaitu
versi 4. Sebelumnya kita harus mempersiapkan terlebih
dahulu template webite yang menggunakan bootsrap 4.
pada folder template bootstrap yang sudah diekstrak,
kemudian cari file dengan naman login.html, kemudian buka
file tersebut menggunakan menggunakan editor php atau
html. Setelah file terbuka, copy isi script dari file login tersebut
kemudian buat file view yang baru pada projek yang sedang
dibuat dengan nama login.php. kemudian simpan file dalam
folder Application/views/administrator. Maka hasilnya
seperti berikut:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content= "IE=edge">
<title>AdminLTE 2 | Log in</title>
<!-- Tell the browser to be responsive to screen width -->
97
<meta content="width=device-width, initial-scale=1,
maximum-scale=1, user-scalable=no" name= "viewport">
<!-- Bootstrap 3.3.5 -->
<link rel="stylesheet"
href="../../bootstrap/css/bootstrap.min.css">
<!-- Font Awesome -->
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/font-
awesome/4.4.0/css/font-awesome.min.css">
<!-- Ionicons -->
<link rel="stylesheet"
href="https://code.ionicframework.com/ionicons/2.0.1/css/i
onicons.min.css">
<!-- Theme style -->
<link rel="stylesheet"
href="../../dist/css/AdminLTE.min.css">
<!-- iCheck -->
<link rel="stylesheet"
href="../../plugins/iCheck/square/blue.css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5
elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the
page via file:// -->
<!--[if lt IE 9]>
<script
src="https://oss.maxcdn.com/html5shiv/3.7.3/html5sh
iv.min.js"></script>
98
<script
src="https://oss.maxcdn.com/respond/1.4.2/respond.
min.js"></script>
<![endif]-->
</head>
<body class="hold-transition login-page">
<div class="login-box">
<div class="login-logo">
<a href="../../index2.html"><b>Admin</b>LTE</a>
</div><!-- /.login-logo -->
<div class="login-box-body">
<p class="login-box-msg">Sign in to start your session</p>
<form action="../../index2.html" method="post">
<div class="form-group has-feedback">
<input type="email" class="form-control" placeholder=
"Email">
<span class="glyphicon glyphicon-envelope form-control-
feedback"></span>
</div>
<div class="form-group has-feedback">
<input type="password" class="form-control" placeholder=
"Password">
<span class="glyphicon glyphicon-lock form-control-
feedback"></span>
</div>
<div class="row">
<div class="col-xs-8">
<div class="checkbox icheck">
99
<label>
<input type="checkbox"> Remember Me
</label>
</div>
</div><!-- /.col -->
<div class="col-xs-4">
<button type="submit" class="btn btn-primary btn-block btn-
flat">Sign In</button>
</div><!-- /.col -->
</div>
</form>
<div class="social-auth-links text-center">
<p>- OR -</p>
<a href="#" class="btn btn-block btn-social btn-facebook btn-
flat"><i class="fa fa-facebook"></i> Sign in using Facebook
</a>
<a href="#" class="btn btn-block btn-social btn-google btn-
flat"><i class="fa fa-google-plus"></i> Sign in using Google+
</a>
</div><!-- /.social-auth-links -->
<a href="#">I forgot my password</a><br>
<a href="register.html" class="text-center">Register a new
membership</a>
</div><!-- /.login-box-body -->
</div><!-- /.login-box -->
100
<!-- jQuery 2.1.4 -->
<script src="../../plugins/jQuery/jQuery-
2.1.4.min.js"></script>
<!-- Bootstrap 3.3.5 -->
<script src="../../bootstrap/js/bootstrap.min.js"> </script>
<!-- iCheck -->
<script src="../../plugins/iCheck/icheck.min.js"> </script>
<script>
$(function () {
$('input').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%' // optional
});
});
</script>
</body>
</html>
Untuk melihat hasilnya dari scrip yang sudah dibuat,
silahkan ketik URL seperti ini http://localhost/ecommerce/,
lalu pilih menu login. Maka hasilnya seperti gambar 6.1:
101
Gambar 6. 1 Tampilan Form Login
6.6 Membuat Halaman Admin
Halaman admin adalah halaman yang digunakan untuk
mengelola data-data master seperti produk, kategori produk
dan data lainnya.
Dalam pembuatan halaman admin, template yang
digunakan masih tetap menggunakan template dari bootsrap.
Lalu buka index.php dari template bootstrap menggunakan
web editor yang biasa digunakan. Selanjutnya buat file
main_header.php, footer.php, menu_admin.php,
view_home_admin.php, view_home_user.php, grafik.php,
view_reset.php dan simpan di dalam folder
application\views\administrator.
A. Index.php
<?php
102
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ?
$_SERVER['CI_ENV'] : 'development');
switch (ENVIRONMENT)
{
case 'development':
error_reporting(-1);
ini_set('display_errors', 1);
break;
case 'testing':
case 'production':
ini_set('display_errors', 0);
if(version_compare(PHP_VERSION, '5.3', '>='))
{
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED
& ~E_STRICT & ~E_USER_NOTICE &
~E_USER_DEPRECATED);
}
else
{
error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT &
~E_USER_NOTICE);
}
break;
default:
header('HTTP/1.1 503 Service Unavailable.', TRUE, 503);
echo 'The application environment is not set correctly.';
exit(1); // EXIT_ERROR
}
103
//$system_path = 'system';
$system_path = dirname(__FILE__) .
DIRECTORY_SEPARATOR . 'system';
//$application_folder = 'application';
$application_folder = dirname(__FILE__) .
DIRECTORY_SEPARATOR . 'application';
$view_folder = '';
// Set the current directory correctly for CLI requests
if (defined('STDIN'))
{
chdir(dirname(__FILE__));
}
if (($_temp = realpath($system_path)) !== FALSE)
{
$system_path = $_temp.'/';
}
else
{
// Ensure there's a trailing slash
$system_path = rtrim($system_path, '/').'/';}
// Is the system path correct?
if ( !is_dir($system_path))
{
header('HTTP/1.1 503 Service Unavailable.', TRUE, 503);
104
echo 'Your system folder path does not appear to be set
correctly. Please open the following file and correct
this:'.pathinfo(__FILE__,PATHINFO_ BASENAME);
exit(3); // EXIT_CONFIG
}
// The name of THIS file
define('SELF',pathinfo(__FILE__,PATHINFO_ BASENAME));
// Path to the system folder
define('BASEPATH',str_replace('\\','/', $system_path));
// Path to the front controller (this file)
define('FCPATH', dirname(__FILE__).'/');
// Name of the "system folder"
define('SYSDIR', trim(strrchr(trim(BASEPATH, '/'), '/'), '/'));
// The path to the "application" folder
if (is_dir($application_folder))
{
if (($_temp = realpath($application_folder)) !== FALSE)
{
$application_folder = $_temp;
}
define('APPPATH',
$application_folder.DIRECTORY_SEPARATOR);
}
105
else
{
if(!is_dir(BASEPATH.$application_folder.
DIRECTORY_SEPARATOR))
{
header('HTTP/1.1 503 Service Unavailable.', TRUE, 503);
echo 'Your application folder path does not appear to be set
correctly. Please open the following file and correct this:
'.SELF;
exit(3); // EXIT_CONFIG
}
define('APPPATH',BASEPATH.$application_folder.DIRECTO
RY_SEPARATOR);
}
// The path to the "views" folder
if ( ! is_dir($view_folder))
{
if (!empty($view_folder) && is_dir (APPPATH.
$view_folder.DIRECTORY_SEPARATOR))
{
$view_folder = APPPATH.$view_folder;
}
elseif(!is_dir(APPPATH.'views'.DIRECTORY_ SEPARATOR))
{
header('HTTP/1.1 503 Service Unavailable.', TRUE, 503);
106
echo 'Your view folder path does not appear to be set
correctly. Please open the following file and correct this:
'.SELF;
exit(3); // EXIT_CONFIG
}
else
{
$view_folder = APPPATH.'views';
}
}
if (($_temp = realpath($view_folder)) !== FALSE)
{
$view_folder = $_temp.DIRECTORY_SEPARATOR;
}
else
{
$view_folder = rtrim($view_folder, '/\\') .DIRECTORY_
SEPARATOR;
}
define('VIEWPATH', $view_folder);
require_once BASEPATH.'core/CodeIgniter.php';
B. main_header.php
<style type="text/css">
.sekolah{
float: left;
background-color: transparent;
background-image: none;
107
padding: 15px 15px;
font-family: fontAwesome;
color:#fff;
}
.sekolah:hover{
color:#fff;
}
</style>
<!-- Logo -->
<a href="index.php" class="logo">
<!-- mini logo for sidebar mini 50x50 pixels -->
<span class="logo-mini"></span>
<!-- logo for regular state and mobile devices -->
<span class="logo-lg"><b>ADMINISTRATOR</b> </span>
</a>
<!-- Header Navbar: style can be found in header.less -->
<nav class="navbar navbar-static-top" role= "navigation">
<!-- Sidebar toggle button-->
<a href="#" class="sidebar-toggle" data-toggle= "offcanvas"
role="button">
<span class="sr-only">Toggle navigation</span>
</a>
<div class="navbar-custom-menu">
<ul class="nav navbar-nav">
<!-- User Account: style can be found in dropdown.less -->
<?php if ($this->session->level=='admin'){ ?>
<li class="dropdown messages-menu">
108
<a href="#" class="dropdown-toggle" data-toggle=
"dropdown">
<i class="fa fa-envelope-o"></i> Pesan Masuk
<?php $jmlh = $this->model_app->view_where ('tb_hubungi',
array('dibaca'=>'N'))->num_rows(); ?>
<span class="label label-success"><?php echo $jmlh;
?></span>
</a>
<ul class="dropdown-menu">
<li class="header">You have <?php echo $jmlh; ?> new
messages</li>
<li>
<ul class="menu">
<?php
$pesan = $this->model_app->view_ordering_limit
('tb_hubungi', 'id_hubungi','DESC',0,10);
foreach ($pesan->result_array() as $row) {
$isi_pesan = substr($row['pesan'],0,30);
$waktukirim = cek_terakhir($row['tanggal'].''.$row ['jam']);
if ($row['dibaca']=='N'){ $color = '#f4f4f4'; }else{ $color = '#fff';
}
echo "<li style='background-color:$color'>
<a href='".base_url().$this->uri->segment(1).
"/detail_pesanmasuk/$row[id_hubungi]'>
<div class='pull-left'>
<img src='".base_url()."asset/foto_user/blank.png' class='img-
circle' alt='User Image'>
109
</div>
<h4>$row[nama]<small><i class='fa fa-clock-o'></i>
$waktukirim</small></h4>
<p>$isi_pesan...</p>
</a>
</li>";
} ?>
</ul>
</li>
<li class="footer"><a href="<?php echo base_url(). $this->uri-
>segment(1); ?>/pesanmasuk">See All Messages</a></li>
</ul>
</li>
<?php } ?>
<li>
<a target='_BLANK' href="<?php echo base_url(); ?>"><i
class="glyphicon glyphicon-new-window"> </i></a>
</li>
</ul></div></nav>
C. footer.php
<strong>Copyright © 2021 - <?php echo date('Y'); ?>
</strong>
All rights reserved.
D. menu_admin.php
<section class="sidebar">
<!-- Sidebar user panel -->
<div class="user-panel">
<div class="pull-left image">
110
<?php $usr = $this->model_app->view_where('users', array
('username'=> $this->session->username))-> row_array();
if (trim($usr['foto'])==''){ $foto = 'blank.png'; }
else{ $foto = $usr['foto']; } ?>
<img src="<?php echo base_url();?> /asset/foto_user/<?php
echo $foto; ?>" class="img-circle" alt="User Image">
</div>
<div class="pull-left info">
<?php echo "<p>$usr[nama_lengkap]</p>"; ?>
<a href="#"><i class="fa fa-circle text-success"></i>
Online</a>
</div>
</div>
<!-- sidebar menu: : style can be found in sidebar.less -->
<ul class="sidebar-menu">
<li class="header" style='text-transform:uppercase;'> MENU
<span class='uppercase'><?php echo $this-> session->level;
?></span></li>
<li><a href="<?php echo base_url().$this->uri->
segment(1);?> /home"> <i class="fa fa-dashboard"> </i>
<span>Dashboard</span></a></li>
<li class="treeview">
<a href="#"><i class="fa fa-shopping-cart"></i> <span>Toko
/Reseller </span><i class="fa fa-angle-left pull-right"></i>
</a>
111
<ul class="treeview-menu">
<li class="treeview">
<a href="#"><i class="fa fa-circle-o"></i> Master