FASILKOM UNSIKA
MODUL I
MENGENAL CODEIGNITER
1.1 Definisi CodeIgniter
CodeIgniter (CI) adalah suatu framework pengembangan aplikasi web berbasis PHP. CI
menyediakan banyak library sehingga memungkinkan mengembangkan aplikasi dengan
lebih cepat. Salah satu keunggulan CI dibanding framework lain adalah kesederhanaan
penggunaannya dan kecepatan eksekusinya.
CodeIgniter ( C I ) adalah sebuah kerangka (framework) pembangunan aplikasi atau
mudahnya disebut toolkit, untuk developer yang akan membuat aplikasi web dengan PHP.
Tujuan CI adalah supaya pembangunan aplikasi lebih cepat dibanding menulis source code
dari awal, karena CI telah meyediakan banyak library untuk proses-proses yang sering
digunakan pada suatu aplikasi, dan juga dengan kemudahan dalam menggunakan library
tersebut serta kesederhaan penggunaannya.
CodeIgniter ditulis (dibuat) oleh Rick Ellis, seorang musisi rock yang menjadi
programmer. Ia membangun perusahaan bernama Ellis Lab, yang mengembangkan
beberapa produk unggulan salah satunya CodeIgniter.
CodeIgniter cocok untuk developer yang:
a. Menginginkan framework yang sederhana.
b. Membutuhkan kinerja yang luar biasa.
c. Membutuhkan kompatibilitas yang luas dengan berbagai web hosting.
d. Menginginkan framework yang hampir tidak ada konfigurasi.
e. Menginginkan framework yang tidak menggunakan command line.
f. Menginginkan framework yang tidak mengharuskan mematuhi aturan penulisan source
code.
g. Tidak ingin dipaksa harus mempelajari templating language.
h. Tidak menyukai kompleksitas, lebih menyukai solusi yang sederhana.
i. Membutuhkan dokumentasi yang baik
A dapun Keunggulan CodeIgniter:
a. Gratis.
Modify by dedih
FASILKOM UNSIKA
b. Ringan.
Inti sistem CI hanya membutuhkan sangat sedikit library, hal ini merupakan perbedaan
kontras dengan framework lain. Library lainnya dapat digunakan dinamis berdasarkan
kebutuhan.
c. Cepat. Sampai saat ini CI masih diakui sebagai framework yang paling cepat.
d. Menggunakan Konsep MVC.
e. Clean URL.
URL yang digunakan CI bersifat search-engine friendly. Menggunakan pendekatan
segment-based.
f. Library yang lengkap.
g. Dapat diperluas.
Developer dapat dengan mudah mengembangkan (extend) library, helper atau bahkan
perluasan class inti CI.
h. Dukungan teknis yang lengkap di forum CI.
1.2 Alur Proses CodeIgniter
Modify by dedih
FASILKOM UNSIKA
3. Security. Sebelum Application Controller dieksekusi, paket HTTP request dan semua
data yang dikirimkan pengguna akan disaring terlebih dahulu oleh Security Class.
4. Application Controller menginisialisasi model, library utama, helpers dan semua
sumberdaya yang dibutuhkan untuk setiap request.
5. Antarmuka aplikasi (view) yang sudah disiapkan dikirimkan ke browser. Jika caching
diaktifkan, maka view akan disimpan sementara untuk request yang sama
berikutnya.
1.3 Model, View, Controller, Libraries, Helper
Seperti framework PHP pada umumnya, CodeIgniter menggunakan konsep MVC serta
menyediakan banyak library dan helper untuk digunakan. Berikut penjelasan mengenai
model, view, controller, library dan helper.
1. Model, merepresentasikan struktur data. Biasanya class model akan berisi fungsifungsi untuk mengambil data, insert data, dan update data ke database. Pada CI,
model tidak harus digunakan, tapi hal ini akan menghilangkan konsep MVC itu
sendiri.
2. View, adalah informasi / halaman yang ditampilkan ke pengguna. Sebuah view
biasanya adalah sebuah web page, tapi di CodeIgniter view juga dapat berupa
bagian-bagian halaman web, seperti header dan footer. Bahkan view juga dapat
berupa halaman RSS.
3. Controller, berfungsi sebagai penghubung antara Model, View dan dengan sumber
daya lain yang digunakan untuk memproses HTTP request. Controller juga biasanya
berfungsi sebagai inti pemrosesan lojik aplikasi.
4. Libraries, adalah macam-macam class yang masing-masing mempunyai fungsi
khusus yang dapat digunakan untuk mengembangkan aplikasi. Contoh library
database, email, validasi form, dan lain-lain.
Modify by dedih
FASILKOM UNSIKA
Modify by dedih
FASILKOM UNSIKA
MODUL 2
KEBUTUHAN SISTEM & INSTALASI CODEIGNITER
Modify by dedih
FASILKOM UNSIKA
Modify by dedih
FASILKOM UNSIKA
FASILKOM UNSIKA
FASILKOM UNSIKA
5). Language
6). Model.
Kita dapat mendefinisikan ap asaja yang harus dipanggil otomatis oleh CI sesuai
kebutuhan, misalnya library session, database, security, helper form dan url.
c. Config.php, pada file ini didefinisikan macam-macam konfigurasi utama aplikasi.
Diantaranya yang biasanya kita ubah pada setiap project adalah:
1. Base url, berfungsi sebagai URL utama aplikasi yang dibangun. Jika tidak didefinisikan
CI akan mendeteksi otomatis URL dan Domain yang dipakai aplikasi. Pada modul 1 ini
silahkan isi dengan URL kerja Anda atau biarkan kosong tidak masalah.
2. Index page, jika file index diganti namanya maka sesuaikan konfigurasi ini, jika
index.php dihilangkan dari URL menggunakan .htaccess maka kosongkan nilai
$config[index_page].
3. Url suffix, jika ingin menambahkan akhiran ekstensi file di URL. Misal
example.com/news/show/231.html
4. Language, bahasa yang akan digunakan pada aplikasi. Kita dapat merubah atau
membuat bahasa sendiri untuk sistem CI pada direktori root: system/language/.
5. Encryption key, jika aplikasi menggunakan session, maka $config[encryption_key]
harus didefinisikan. Pada modul 1 ini kita tidak menggunakan session.
6. Session, konfigurasi untuk session:
6).1. [sess_cookie_name] : nama cookie aplikasi yang dibangun, bisa diubah.
6).2. [sess_expiration] : waktu kadaluarsa session, satuannya detik.
6).3. [sess_expire_on_close] : jika bernilai TRUE, maka session expire ketika
browser ditutup.
6).4. [sess_encrypt_cookie] : beri nilai TRUE jika cookie ingin dienkripsi.
6).5. [sess_use_database] : beri nilai TRUE jika ingin menggunakan database untuk
menyimpan data session.
6).6. [sess_table_name] : nama table penyimpanan data session, bisa diubah.
6).7. [sess_match_ip] : beri nilai TRUE jika ingin membanding IP address setiap
membaca data session.
Modify by dedih
FASILKOM UNSIKA
Modify by dedih
10
FASILKOM UNSIKA
membantu agar proses aplikasi lebih cepat, dibandingkan harus menjalin koneksi ke
database setiap akan eksekusi query.
9). DB Debug, isikan nilai TRUE jika ingin error koneksi atau error query ditampilkan.
Sangat membantu pada proses development. Jika aplikasi akan di-publish / deploy
maka nilai [db_debug] sebaiknya FALSE.
e. Routes.php, pada file ini didefinisikan beberapa URL yang spesifik mengacu ke controller
yang spesifik pula sesuai kebutuhan aplikasi. Pada file ini juga dapat didefinisikan default
controller yang akan dipanggil jika tidak didefinisikan pada URL. Itulah mengapa tanpa
konfigurasi awal halaman pembuka CI bisa tampil seperti di Gambar B.2.2, karena
$route[default_controller] diisi controller welcome.
Modify by dedih
11
FASILKOM UNSIKA
MODUL 3
PROJECT CI PERTAMA
Modify by dedih
12
FASILKOM UNSIKA
Ini yg dirubah
Ini yg dirubah
Modify by dedih
13
FASILKOM UNSIKA
Penjelasan skrip :
Baris 2,
14
FASILKOM UNSIKA
Penjelasan skrip :
Baris 2, mendefinisikan clas Model bernama Siswa_model. Kelas ini meng-extend clas
CI_model yang merupakan native class Model CodeIgniter.
Baris 3, membuat method cari semua() yang bertugas mendapatkan semua data
siswa dari database.
Baris 5, memanggil library database codeigniter
Baris 6, memdapatkan data tabel siswa menggunakan metode get().
4. Langkah berikutnya , buatlah file view bernama siswa_view.php , kemudian simpanlah di
application/views/siswa_view.php
Modify by dedih
15
FASILKOM UNSIKA
Penjelasan skrip :
File siswa_view.php digunakan untuk menampilkan data siswa
Baris 9-13, dengan menggunakan perintah foreach akan mengekstrak array $siswa
kemudian menampilkan dengan perintah echo.
= 'http://localhost/ci214';
7. Untuk melihat hasil program maka kita ketikan http://localhost/ci214/siswa pada browser
sehingga akan tampil keluaran sebagai berikut ;
Modify by dedih
16
FASILKOM UNSIKA
MODUL 4
STUDI KASUS PROGRAM ABSENSI SISWA
4.1 Membuat Database
Pada modul ini kita akan memcoba untuk membuat program absensi siswa yang
dipakai untuk membantu mencatat kehadiran siswa. Dimana tujuan akhirnya untuk
menghasilkan laporan ketidakhadiran siswa untuk setiap kelas.
Pertama-tama kita buat folder absensi2014 di htdocs atau di www untuk sistem
operasi linux lalu install codeigniter tempatkan pada folder absensi2014. Selanjutnya kita
membuat database dengan nama db_absensi2014 dengan mysql selanjutnya buatlah 5
buah tabel yaitu user, kelas, siswa, semester dan absen. Adapun rancangan struktur
tabelnya terlihat seperti berikut :
Tabel user
Field
Type
Lenght
Id_user
INT
usename
VARCHAR
32
password
VARCHAR
32
Index
PRIMARY
Tabel kelas
Field
Type
Lenght
Id_kelas
INT
kelas
VARCHAR
32
Index
PRIMARY
Tabel siswa
Field
Type
Lenght
nis
VARCHAR
nama
VARCHAR
50
Id_kelas
INT
Modify by dedih
Index
PRIMARY
17
FASILKOM UNSIKA
Tabel Semester
Field
Type
Lenght
Id_semester
INT
status
ENUM
Y,N
Index
PRIMARY
Tabel Absen
Field
Type
Lenght
Id_absen
INT
11
nis
VARCHAR
Id_semester
INT
Tanggal
DATE
absen
VARCHAR
Index
PRIMARY
= 'http://localhost/absensi2014/';
$config['index_page'] = '';
$config['language']
= 'bahasa_indonesia';
Modify by dedih
18
FASILKOM UNSIKA
19
FASILKOM UNSIKA
$route['logout'] = "login/logout";
4.7 Membuat File Bahasa Indonesia
Kita perlu untuk membuat file berbahasa indonesia. Copylah folder english yang ada di
system/language, kemudian paste sembarang tempat, kemudian rename hasil copy tadi
menjadi bahasa_indonesia, lalu cut folder bahasa_indonesia ke application/language
sehingga tampak seperti gambar berikut :
file
form_validation_lang.php
pada
folder
$lang['isset']
$lang['valid_email']
$lang['valid_emails']
$lang['valid_url']
$lang['valid_ip']
$lang['min_length']
$lang['max_length']
$lang['exact_length']
$lang['alpha']
Modify by dedih
20
FASILKOM UNSIKA
$lang['alpha_numeric']
$lang['alpha_dash']
dashes.";
$lang['numeric']
$lang['is_numeric']
$lang['integer']
$lang['regex_match']
$lang['matches']
$lang['is_unique']
$lang['is_natural']
$lang['is_natural_no_zero']
$lang['decimal']
$lang['less_than']
$lang['greater_than']
21
FASILKOM UNSIKA
}
/* End of file MY_Controller.php */
/* Location: ./application/core/MY_Controller.php */
4.9 Membuat Controller Error (error404.php)
Buatlah file error404.php lalu simpan pada folder application/controller adapun skrip
programnya sbb:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Error404 extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('view404');
}
}
4.10 Membuat View Error (view404.php)
Buatlah file view404.php lalu simpan pada folder application/views adapun skrip
programnya sbb:
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
/>
<link
rel="stylesheet"
base_url('asset/css/reset.css');?>" />
<link
rel="stylesheet"
base_url('asset/css/style.css');?>" />
type="text/css"
href="<?php
echo
type="text/css"
href="<?php
echo
Modify by dedih
22
FASILKOM UNSIKA
<body>
<div id="masthead">
<?php $this->load->view('masthead'); ?>
</div>
<div id="main">
<h2 id="error_header" class="error_header">Error 404</h2>
<p class="error_content">Halaman Tidak Ditemukan.</p>
<?php echo 'Kembali ke ' . anchor(base_url(),'halaman utama'); ?>
</div>
<div id="footer">
<?php $this->load->view('footer'); ?>
</div>
</body>
</html>
MAIN CONTENT
FOOTER
Modify by dedih
23
FASILKOM UNSIKA
HEADER
Absen
Rekap
Siswa
Kelas
Logout
Absen
Message
<< Fist 1 2 3 4 5 Last >>
FOOTER
Rekap
Siswa
Kelas
Logout
FOOTER
Modify by dedih
24
FASILKOM UNSIKA
sebuah
file
bernama
template.php
simpan
pada
folder
Modify by dedih
25
FASILKOM UNSIKA
sebuah
file
bernama
masthead.php
simpan
pada
folder
simpan
pada
folder
sebuah
file
bernama
navigation.php
Modify by dedih
26
FASILKOM UNSIKA
Gambar 4.5 folder asset terdiri dari folder css, images dan js
Folder tersebut akan digunakan untuk menyimpan file css, javascript dan gambar yang
dibutuhkan pada program absensi2014.
1. Pada folder css terdapat empat buah file, yaitu :
a. Reset.css berfungsi untuk mereset style default dari browser sehingga tampilan
program absensi siswa relatif seragam untuk semua browser. Buatlah file bernama
reset.css dan simpanlah pada folder absensi2014/asset/ . dengan sript program
sebagai berikut :
/**
* -------------------------------------------------------------* CSS style aplikasi Absensi2014
* untuk pop-up datepicker
* -------------------------------------------------------------*/
/* the div that holds the date picker calendar */
.dpDiv {
}
/* the table (within the div) that holds the date picker calendar */
.dpTable {
font-family: Verdana;
font-size: 9px;
text-align: center;
Modify by dedih
27
FASILKOM UNSIKA
color: #000000;
background-color: #F9E9A9;
border: 1px solid #FFCB2D;
}
/* a table row that holds date numbers (either blank or 1-31) */
.dpTR {
}
/* the top table row that holds the month, year, and forward /
backward buttons */
.dpTitleTR { }
/* the second table row, that holds the names of days of the week
(Mo, Tu, We, etc.) */
.dpDayTR { }
/* the bottom table row, that has the "This Month" and "Close"
buttons */
.dpTodayButtonTR { }
/* a table cell that holds a date number (either blank or 1-31) */
.dpTD {
border: 1px solid #ffffff;
}
/* a table cell that holds a highlighted day (usually either
today's date or the current date field value) */
.dpDayHighlightTD {
background-color: #CCCCCC;
border: 1px solid #AAAAAA;
}
/* the date number table cell that the mouse pointer is currently
over (you can use contrasting colors to make it apparent which
cell is being hovered over) */
.dpTDHover {
border: 1px solid #FFCB2D;
cursor: pointer;
}
/* the table cell that holds the name of the month and the year */
.dpTitleTD { }
/* a table cell that holds one of the forward/backward buttons */
.dpButtonTD { }
/* the table cell that holds the "This Month" or "Close" button
Modify by dedih
28
FASILKOM UNSIKA
at the bottom */
.dpTodayButtonTD { }
/* a table cell that holds the names of days of the week
(Mo, Tu, We, etc.) */
.dpDayTD {
background-color: #FFCB2D;
color: #000000;
}
/* additional style information for the text that indicates the
month and year */
.dpTitleText {
font-size: 12px;
color: #000000;
font-weight: bold;
}
/* additional style information for the cell that holds a
highlighted day (usually either today's date or the current
date field value) */
.dpDayHighlight {
color: #000000;
font-weight: bold;
}
/* the forward/backward buttons at the top */
.dpButton, .dpTodayButton {
font-family: Verdana;
font-size: 10px;
color: #000000;
background: #FFCB2D;
font-weight: bold;
padding: 0px;
border:0px;
}
b. Style.css berfungsi untuk mengatur tampilan semua halaman kecuali login. Buatlah
file bernama style.css dan simpanlah pada folder absensi2014/asset/ . dengan sript
program sebagai berikut :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config['base_url'] = 'http://localhost/ci214';
$config['index_page'] = '';
Modify by dedih
29
FASILKOM UNSIKA
$config['uri_protocol']
= 'AUTO';
$config['url_suffix'] = '';
$config['language'] = 'english';
$config['charset'] = 'UTF-8';
$config['enable_hooks'] = FALSE;
$config['subclass_prefix'] = 'MY_';
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
$config['allow_get_array']
= TRUE;
$config['enable_query_strings'] = FALSE;
$config['controller_trigger']
= 'c';
$config['function_trigger']
= 'm';
$config['directory_trigger'] = 'd'; // experimental not currently in use
$config['log_threshold'] = 0;
$config['log_path'] = '';
$config['log_date_format'] = 'Y-m-d H:i:s';
$config['cache_path'] = '';
$config['encryption_key'] = '';
$config['sess_cookie_name']
= 'ci_session';
$config['sess_expiration']
= 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']
= FALSE;
$config['sess_use_database']
= FALSE;
$config['sess_table_name']
= 'ci_sessions';
$config['sess_match_ip']
= FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['cookie_prefix']
= "";
$config['cookie_domain'] = "";
$config['cookie_path']
= "/";
$config['cookie_secure'] = FALSE;
$config['global_xss_filtering'] = FALSE;
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['compress_output'] = FALSE;
$config['time_reference'] = 'local';
$config['rewrite_short_tags'] = FALSE;
$config['proxy_ips'] = '';
/* End of file config.php */
/* Location: ./application/config/config.php */
Modify by dedih
30
FASILKOM UNSIKA
background-color:#FFCB2D;
border-bottom:1px solid #7F5F00;
font-size:120%;
font-weight:bolder;
color:#7F5F00;
padding-top:1em;
padding-bottom:1em;
text-align:center;
#login_form{
padding:10px;
}
#login_form p label{
display:block;
float:left;
width:80px;
}
#login_form p{
margin-bottom:10px;
}
Modify by dedih
31
FASILKOM UNSIKA
#login_form p#message{
margin-left: 60px;
}
#submit{
padding:0 4px;
border:#666 solid 1px;
margin-left:80px;
}
#login_box .field_error, #login_box #message{
font-size:12px;
color:#F00;
}
#login_box #form_error_message{
margin-bottom:20px;
}
#login_box .field_error{
clear:both;
margin-left:80px;
}
.form_field{
border:#666 solid 1px;
}
.form_field:focus{
background-color:#F9E9A9;
}
d. Calender.css berfungsi mengatur tampilan kalendr pop-up yang ada pada modul
absen.
Buatlah
file
bernama
style.css
dan
simpanlah
pada
folder
32
FASILKOM UNSIKA
.dpDiv {
}
/* the table (within the div) that holds the date picker calendar */
.dpTable {
font-family: Verdana;
font-size: 9px;
text-align: center;
color: #000000;
background-color: #F9E9A9;
border: 1px solid #FFCB2D;
}
/* a table row that holds date numbers (either blank or 1-31) */
.dpTR {
}
/* the top table row that holds the month, year, and forward /
backward buttons */
.dpTitleTR { }
/* the second table row, that holds the names of days of the week
(Mo, Tu, We, etc.) */
.dpDayTR { }
/* the bottom table row, that has the "This Month" and "Close"
buttons */
.dpTodayButtonTR { }
/* a table cell that holds a date number (either blank or 1-31) */
.dpTD {
border: 1px solid #ffffff;
}
/* a table cell that holds a highlighted day (usually either
today's date or the current date field value) */
.dpDayHighlightTD {
background-color: #CCCCCC;
border: 1px solid #AAAAAA;
}
/* the date number table cell that the mouse pointer is currently
over (you can use contrasting colors to make it apparent which
cell is being hovered over) */
.dpTDHover {
border: 1px solid #FFCB2D;
cursor: pointer;
Modify by dedih
33
FASILKOM UNSIKA
}
/* the table cell that holds the name of the month and the year */
.dpTitleTD { }
/* a table cell that holds one of the forward/backward buttons */
.dpButtonTD { }
/* the table cell that holds the "This Month" or "Close" button
at the bottom */
.dpTodayButtonTD { }
/* a table cell that holds the names of days of the week
(Mo, Tu, We, etc.) */
.dpDayTD {
background-color: #FFCB2D;
color: #000000;
}
/* additional style information for the text that indicates the
month and year */
.dpTitleText {
font-size: 12px;
color: #000000;
font-weight: bold;
}
/* additional style information for the cell that holds a
highlighted day (usually either today's date or the current
date field value) */
.dpDayHighlight {
color: #000000;
font-weight: bold;
}
/* the forward/backward buttons at the top */
.dpButton, .dpTodayButton {
font-family: Verdana;
font-size: 10px;
color: #000000;
background: #FFCB2D;
font-weight: bold;
padding: 0px;
border:0px;
}
Modify by dedih
34
FASILKOM UNSIKA
2. Pada folder images terdapat gambar-gambar yang dibutuhkan pada program aplikasi
absensi
3. Pada folder js terdapa file calender.js . buatlah file tersebut dan simpan pada folder
absensi2014/asset/js dengan skrip kode sbb:
var datePickerDivID = "datepicker";
var iFrameDivID = "datepickeriframe";
var dayArrayShort = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
var dayArrayMed = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
var dayArrayLong = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday');
var monthArrayShort = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
'Oct', 'Nov', 'Dec');
var monthArrayMed = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug',
'Sept', 'Oct', 'Nov', 'Dec');
var monthArrayLong = new Array('January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December');
var defaultDateSeparator = "-";
// common values would be "/" or "."
var defaultDateFormat = "dmy" // valid values are "mdy", "dmy", and "ymd"
var dateSeparator = defaultDateSeparator;
var dateFormat = defaultDateFormat;
function CopyText(SourceFeild, DestinationFeild) {
document.getElementsByName
(DestinationFeild).item(0).value
document.getElementsByName (SourceFeild).item(0).value;
}
35
FASILKOM UNSIKA
drawDatePicker(targetDateField, x, y);
function drawDatePicker(targetDateField, x, y)
{
var dt = getFieldDate(targetDateField.value);
// the datepicker table will be drawn inside of a <div> with an ID defined by the
// global datePickerDivID variable. If such a div doesn't yet exist on the HTML
// document we're working with, add one.
if (!document.getElementById(datePickerDivID)) {
// don't use innerHTML to update the body, because it can cause global variables
// that are currently pointing to objects on the page to have bad references
//document.body.innerHTML += "<div id='" + datePickerDivID +
class='dpDiv'></div>";
var newNode = document.createElement("div");
newNode.setAttribute("id", datePickerDivID);
newNode.setAttribute("class", "dpDiv");
newNode.setAttribute("style", "visibility: hidden;");
document.body.appendChild(newNode);
}
"'
// move the datepicker div to the proper x,y coordinate and toggle the visiblity
var pickerDiv = document.getElementById(datePickerDivID);
pickerDiv.style.position = "absolute";
pickerDiv.style.left = x + "px";
pickerDiv.style.top = y + "px";
pickerDiv.style.visibility = (pickerDiv.style.visibility == "visible" ? "hidden" : "visible");
pickerDiv.style.display = (pickerDiv.style.display == "block" ? "none" : "block");
Modify by dedih
36
FASILKOM UNSIKA
pickerDiv.style.zIndex = 10000;
// draw the datepicker table
refreshDatePicker(targetDateField.name,
dt.getDate());
}
dt.getFullYear(),
dt.getMonth(),
/**
This is the function that actually draws the datepicker calendar.
*/
function refreshDatePicker(dateFieldName, year, month, day)
{
// if no arguments are passed, use today's date; otherwise, month and year
// are required (if a day is passed, it will be highlighted later)
var thisDay = new Date();
if ((month >= 0) && (year > 0)) {
thisDay = new Date(year, month, 1);
} else {
day = thisDay.getDate();
thisDay.setDate(1);
}
// the calendar will be drawn as a table
// you can customize the table elements with a global CSS style sheet,
// or by hardcoding style and formatting elements below
var crlf = "\r\n";
var TABLE = "<table cols=7 class='dpTable'>" + crlf;
var xTABLE = "</table>" + crlf;
var TR = "<tr class='dpTR'>";
var TR_title = "<tr class='dpTitleTR'>";
var TR_days = "<tr class='dpDayTR'>";
var TR_todaybutton = "<tr class='dpTodayButtonTR'>";
var xTR = "</tr>" + crlf;
var TD = "<td nowrap class='dpTD' onMouseOut='this.className=\"dpTD\";'
onMouseOver=' this.className=\"dpTDHover\";' "; // leave this tag open, because
we'll be adding an onClick event
var TD_title = "<td nowrap colspan=5 class='dpTitleTD'>";
var TD_buttons = "<td nowrap class='dpButtonTD'>";
var TD_todaybutton = "<td nowrap colspan=7 class='dpTodayButtonTD'>";
var TD_days = "<td class='dpDayTD'>";
var
TD_selected
=
"<td
class='dpDayHighlightTD'
onMouseOut='this.className=\"dpDayHighlightTD\";'
onMouseOver='this.className=\"dpTDHover\";' ";
// leave this tag open, because
we'll be adding an onClick event
var xTD = "</td>" + crlf;
Modify by dedih
37
FASILKOM UNSIKA
38
FASILKOM UNSIKA
document.getElementById(datePickerDivID).innerHTML = html;
// add an "iFrame shim" to allow the datepicker to display above selection lists
adjustiFrame();
/**
Convenience function for writing the code for the buttons that bring us back or forward
a month.
*/
function getButtonCode(dateFieldName, dateVal, adjust, label)
{
var newMonth = (dateVal.getMonth () + adjust) % 12;
var newYear = dateVal.getFullYear() + parseInt((dateVal.getMonth() + adjust) / 12);
if (newMonth < 0) {
newMonth += 12;
newYear += -1;
}
return "<button class='dpButton' onClick='refreshDatePicker(\"" + dateFieldName +
"\", " + newYear + ", " + newMonth + ");'>" + label + "</button>";
}
/**
Convert a JavaScript Date object to a string, based on the dateFormat and
dateSeparator
Modify by dedih
39
FASILKOM UNSIKA
40
FASILKOM UNSIKA
case "mdy" :
default :
d = parseInt(dArray[1], 10);
m = parseInt(dArray[0], 10) - 1;
y = parseInt(dArray[2], 10);
break;
}
dateVal = new Date(y, m, d);
} else if (dateString) {
dateVal = new Date(dateString);
} else {
dateVal = new Date();
}
} catch(e) {
dateVal = new Date();
}
}
return dateVal;
/**
Try to split a date string into an array of elements, using common date separators.
If the date is split, an array is returned; otherwise, we just return false.
*/
function splitDateString(dateString)
{
var dArray;
if (dateString.indexOf("/") >= 0)
dArray = dateString.split("/");
else if (dateString.indexOf(".") >= 0)
dArray = dateString.split(".");
else if (dateString.indexOf("-") >= 0)
dArray = dateString.split("-");
else if (dateString.indexOf("\\") >= 0)
dArray = dateString.split("\\");
else
dArray = false;
}
return dArray;
41
FASILKOM UNSIKA
targetDateField.value = dateString;
var pickerDiv = document.getElementById(datePickerDivID);
pickerDiv.style.visibility = "hidden";
pickerDiv.style.display = "none";
adjustiFrame();
targetDateField.focus();
// after the datepicker has closed, optionally run a user-defined function called
// datePickerClosed, passing the field that was just updated as a parameter
// (note that this will only run if the user actually selected a date from the datepicker)
if ((dateString) && (typeof(datePickerClosed) == "function"))
datePickerClosed(targetDateField);
42
FASILKOM UNSIKA
iFrameDiv.style.width = pickerDiv.offsetWidth;
iFrameDiv.style.height = pickerDiv.offsetHeight ;
iFrameDiv.style.top = pickerDiv.style.top;
iFrameDiv.style.left = pickerDiv.style.left;
iFrameDiv.style.zIndex = pickerDiv.style.zIndex - 1;
iFrameDiv.style.visibility = pickerDiv.style.visibility ;
iFrameDiv.style.display = pickerDiv.style.display;
} catch(e) {
}
} catch (ee) {
}
}
Modify by dedih
43
FASILKOM UNSIKA
MODUL 5
MODUL LOGIN DAN LOGOUT
5.1 Controller Login
Untuk membuat modul login yaitu dengan cara membuat controller. Buat file
login.php, lalu simpan di folder application/controller. Berikut ini skrip kodenya :
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Login extends CI_Controller
{
public $data = array('pesan'=> '');
public function __construct()
{
parent::__construct();
$this->load->helper('form');
$this->load->library('form_validation');
$this->load->model('Login_model', 'login', TRUE);
}
public function index()
{
// status user login = BENAR, pindah ke halaman absen
if ($this->session->userdata('login') == TRUE)
{
redirect('absen');
}
// status login salah, tampilkan form login
else
{
// validasi sukses
if($this->login->validasi())
{
// cek di database sukses
if($this->login->cek_user())
{
redirect('absen');
}
// cek database gagal
else
{
$this->data['pesan'] = 'Username atau Password salah.';
$this->load->view('login/login_form', $this->data);
}
Modify by dedih
44
FASILKOM UNSIKA
}
// validasi gagal
else
{
$this->load->view('login/login_form', $this->data);
}
}
}
/* End of file login.php */
/* Location: ./application/controllers/login.php */
45
FASILKOM UNSIKA
}
public function validasi()
{
$form = $this->load_form_rules();
$this->form_validation->set_rules($form);
if ($this->form_validation->run())
{
return TRUE;
}
else
{
return FALSE;
}
if ($query->num_rows() == 1)
{
$data = array('username' => $username, 'login' => TRUE);
// buat data session jika login benar
$this->session->set_userdata($data);
return TRUE;
}
else
{
return FALSE;
}
Modify by dedih
46
FASILKOM UNSIKA
Gambar 5.1 folder views terdiri dari folder absen, kelas,login, rekap,siswa & semester
Buat file view_model.php, lalu simpan di folder application/views/login. Berikut ini
skrip kodenya :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="<?php echo
base_url('asset/images/favicon.png');?>" />
<link rel="stylesheet" type="text/css" href="<?php echo
base_url('asset/css/reset.css');?>" />
<link rel="stylesheet" type="text/css" href="<?php echo
base_url('asset/css/login.css');?>" />
<title>Login</title>
</head>
Modify by dedih
47
FASILKOM UNSIKA
<body>
<div id="login_box">
<h1>Login Absensi 2014</h1>
<?php
?>
<!-- pesan start -->
<?php if (! empty($pesan)) : ?>
<p id="message">
<?php echo $pesan; ?>
</p>
<?php endif ?>
<!-- pesan end -->
<p>
<label for="username">Username:</label>
<input type="text" name="username" size="20" class="form_field"
value="<?php echo set_value('username');?>">
</p>
<?php echo form_error('username', '<p class="field_error">', '</p>');?>
<p>
<label for="password">Password:</label>
<input type="password" name="password" size="20"
class="form_field" value="<?php echo set_value('password');?>">
</p>
<?php echo form_error('password', '<p class="field_error">', '</p>');?>
<p>
</p>
</form>
</div>
</body>
</html>
Setelah semua program yang anda ketikan selesai cobalah panggil browser dan
ketikan localhost/absensi2014 sehingga akan muncul tampilan seperti gambar berikut ini :
Modify by dedih
48
FASILKOM UNSIKA
Modify by dedih
49
FASILKOM UNSIKA
MODUL 6
MODUL KELAS
Modul kelas berfungsi untuk mengatur data kelas yang meliputi kode kelas dan nama
kelas. Data kelas ini digunakan untuk mengelompokan data siswa ke dalam kelas-kelas yang
dibuat pada modul kelas.
50
FASILKOM UNSIKA
// buat tabel
$tabel = $this->kelas->buat_tabel($kelas);
$this->data['tabel_data'] = $tabel;
$this->load->view('template', $this->data);
}
// data kelas tidak ada
else
{
$this->data['pesan'] = 'Tidak ada data kelas.';
$this->load->view('template', $this->data);
}
51
FASILKOM UNSIKA
}
public function edit($id_kelas = NULL)
{
$this->data['breadcrumb'] = 'Kelas > Edit';
$this->data['main_view'] = 'kelas/kelas_form';
$this->data['form_action'] = 'kelas/edit/' . $id_kelas;
// pastikan id_kelas ada
if( ! empty($id_kelas))
{
// submit
if($this->input->post('submit'))
{
// validasi berhasil
if($this->kelas->validasi_edit() === TRUE)
{
//update db
$this->kelas->edit($this->session->userdata('id_kelas_sekarang'));
$this->session->set_flashdata('pesan', 'Proses update data berhasil.');
redirect('kelas');
}
// validasi gagal
else
{
$this->load->view('template', $this->data);
}
}
// tidak disubmit, form pertama kali dimuat
else
{
// ambil data dari database, $form_value sebagai nilai dafault form
$kelas = $this->kelas->cari($id_kelas);
foreach($kelas as $key => $value)
{
$this->data['form_value'][$key] = $value;
}
// set temporary data for edit
$this->session->set_userdata('id_kelas_sekarang', $kelas->id_kelas);
$this->session->set_userdata('kelas_sekarang', $kelas->kelas);
$this->load->view('template', $this->data);
}
}
// tidak ada parameter id_kelas, kembalikan ke halaman kelas
Modify by dedih
52
FASILKOM UNSIKA
else
{
redirect('kelas');
}
53
FASILKOM UNSIKA
}
}
/* End of file kelas.php */
Modify by dedih
54
FASILKOM UNSIKA
/* Location: ./application/controllers/kelas.php */
file
bernama
kelas_model.php
kemudian
simpan
pada
folder
55
FASILKOM UNSIKA
),
);
return $form_rules;
if ($this->form_validation->run())
{
return TRUE;
}
else
{
return FALSE;
}
if ($this->form_validation->run())
{
return TRUE;
}
else
{
return FALSE;
}
56
FASILKOM UNSIKA
->limit(1)
->get($this->db_tabel)
->row();
return $tabel;
57
FASILKOM UNSIKA
return FALSE;
if($this->db->affected_rows() > 0)
{
return TRUE;
}
else
{
return FALSE;
}
if($this->db->affected_rows() > 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
/* End of file kelas_model.php */
/* Location: ./application/models/kelas_model.php */
Modify by dedih
58
FASILKOM UNSIKA
file
bernama
kelas.php
kemudian
simpan
pada
folder
Modify by dedih
59
FASILKOM UNSIKA
Setelah semua program kelas yang anda ketikan selesai cobalah panggil browser dan
ketikan localhost/absensi2014/kelas sehingga akan muncul tampilan seperti gambar berikut
ini :
Modify by dedih
60
FASILKOM UNSIKA
MODUL 7
MODUL SEMESTER
Modul semester digunakan untuk mengatur semester yang aktif , apakah semester
ganjil atau semester genap? Menentukan semester yang aktif penting karena data ini akan
digunakan pada proses entry data absen dan rekap.
61
FASILKOM UNSIKA
// if submit
if($this->input->post('submit'))
{
// proses
$this->semester->set();
$this->session->set_flashdata('pesan', 'Proses ubah semester berhasil.');
redirect('semester');
}
// if no submit
else
{
// tampilkan
$this->load->view('template', $this->data);
}
}
/* End of file semester.php */
/* Location: ./application/controllers/semester.php */
62
FASILKOM UNSIKA
}
// buat tabel untuk ditampilkan
public function buat_tabel($data)
{
$this->load->library('table');
// buat class zebra di <tr>,untuk warna selang-seling
$tmpl = array('row_alt_start' => '<tr class="zebra">');
$this->table->set_template($tmpl);
// heading tabel
$this->table->set_heading('Semester', 'Status / Pilih');
// generate row tabel
foreach ($data as $row)
{
$this->table->add_row(
$row->id_semester == 1 ? $row->id_semester . ' (Ganjil)' : $row>id_semester . ' (Genap)',
// form_radio : perhatikan parameter ke-3, TRUE/FALSE akan menentukan
status radio
// checked atau tidak
form_radio('id_semester', $row->id_semester, ($row->status == 'Y' ? TRUE :
FALSE))
);
}
$tabel = $this->table->generate();
}
return $tabel;
// mengaktifkan semester
public function set()
{
$id_semester = $this->input->post('id_semester');
$sql1 = "UPDATE semester
SET semester.status = 'Y'
WHERE semester.id_semester = '$id_semester'";
$sql2 = "UPDATE semester
SET semester.status = 'N'
WHERE semester.id_semester != '$id_semester'";
// lakukan update dengan metode transaksi
// memastikan 2 operasi berjalan semua
Modify by dedih
63
FASILKOM UNSIKA
$this->db->trans_start();
$this->db->query($sql1);
$this->db->query($sql2);
$this->db->trans_complete();
}
/* End of file semester_model.php */
/* Location: ./application/models/semester_model.php */
64
FASILKOM UNSIKA
Modify by dedih
65
FASILKOM UNSIKA
MODUL 8
MODUL SISWA
8.1 Controller Siswa
Untuk membuat modul siswa langkah pertama adalah membuat controller siswa. Buat
file bernama siswa.php kemudian simpan pada folder application/controller/. Dengan skrip
sebagai berikut :
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Siswa extends MY_Controller
{
public $data = array(
'modul'
=> 'siswa',
'breadcrumb' => 'Siswa',
'pesan'
=> '',
'pagination' => '',
'tabel_data' => '',
'main_view' => 'siswa/siswa',
'form_action' => '',
'form_value' => '',
'option_kelas' => '',
);
public function __construct()
{
parent::__construct();
$this->load->model('Siswa_model', 'siswa', TRUE);
$this->load->model('Kelas_model', 'kelas', TRUE);
}
public function index($offset = 0)
{
// hapus data temporary proses update
$this->session->unset_userdata('nis_sekarang', '');
// cari data siswa
$siswa = $this->siswa->cari_semua($offset);
// ada data siswa, tampilkan
if ($siswa)
{
$tabel = $this->siswa->buat_tabel($siswa);
Modify by dedih
66
FASILKOM UNSIKA
$this->data['tabel_data'] = $tabel;
// Paging
// http://localhost/absensi2014/siswa/halaman/2
$this->data['pagination'] = $this->siswa->paging(site_url('siswa/halaman'));
}
// tidak ada data siswa
else
{
$this->data['pesan'] = 'Tidak ada data siswa.';
}
$this->load->view('template', $this->data);
67
FASILKOM UNSIKA
}
else
{
$this->data['pesan'] = 'Proses tambah data gagal.';
$this->load->view('template', $this->data);
}
}
// validasi gagal
else
{
$this->load->view('template', $this->data);
}
}
// if no submit
else
{
$this->load->view('template', $this->data);
}
68
FASILKOM UNSIKA
$this->siswa->edit($this->session->userdata('nis_sekarang'));
$this->session->set_flashdata('pesan', 'Proses update data berhasil.');
redirect('siswa');
}
// validasi gagal
else
{
$this->load->view('template', $this->data);
}
}
// tidak disubmit, form pertama kali dimuat
else
{
// ambil data dari database, $form_value sebagai nilai default form
$siswa = $this->siswa->cari($nis);
foreach($siswa as $key => $value)
{
$this->data['form_value'][$key] = $value;
}
// set temporary data untuk edit
$this->session->set_userdata('nis_sekarang', $siswa->nis);
$this->load->view('template', $this->data);
}
}
// tidak ada parameter $nis di URL, kembalikan ke halaman siswa
else
{
redirect('siswa');
}
69
FASILKOM UNSIKA
redirect('siswa');
}
else
{
$this->session->set_flashdata('pesan', 'Proses hapus data gagal.');
redirect('kelas');
}
}
/* End of file siswa.php */
/* Location: ./application/controllers/siswa.php */
Modify by dedih
70
FASILKOM UNSIKA
71
),
FASILKOM UNSIKA
);
return $form;
if ($this->form_validation->run())
{
return TRUE;
}
else
{
return FALSE;
}
if ($this->form_validation->run())
{
return TRUE;
}
else
{
return FALSE;
}
72
*/
{
FASILKOM UNSIKA
if (is_null($offset) || empty($offset))
$this->offset = 0;
}
else
{
$this->offset = ($offset * $this->per_halaman) - $this->per_halaman;
}
// $offset end
73
FASILKOM UNSIKA
$row->nama,
$row->kelas,
anchor('siswa/edit/'.$row->nis,'Edit',array('class' => 'edit')).' '.
anchor('siswa/hapus/'.$row->nis,'Hapus',array('class'=>
'delete','onclick'=>"return confirm('Anda yakin akan menghapus data ini?')"))
);
}
$tabel = $this->table->generate();
}
return $tabel;
74
FASILKOM UNSIKA
}
else
{
return FALSE;
}
if($this->db->affected_rows() > 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
}
/* End of file siswa_model.php */
/* Location: ./application/models/siswa_model.php */
Modify by dedih
75
FASILKOM UNSIKA
76
FASILKOM UNSIKA
Modify by dedih
77
FASILKOM UNSIKA
Setelah semua program semester yang anda ketikan selesai cobalah panggil browser
dan ketikan localhost/absensi2014/siswa/tambah sehingga akan muncul tampilan seperti
gambar berikut ini :
Modify by dedih
78
FASILKOM UNSIKA
MODUL 9
MODUL ABSEN
9.1 Controller Absen
Buatlah file absen.php, simpan di folder application/controller Berikut ini skrip
programnya :
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Absen extends MY_Controller
{
public $data = array(
'modul'
=> 'absen',
'breadcrumb' => 'Absen',
'pesan'
=> '',
'pagination' => '',
'tabel_data' => '',
'main_view' => 'absen/absen',
'form_action' => '',
'form_value' => '',
);
public function __construct()
{
parent::__construct();
$this->load->model('Absen_model', 'absen', TRUE);
$this->load->model('Semester_model', 'semester', TRUE);
$this->load->model('Siswa_model', 'siswa', TRUE);
}
public function index($offset = 0)
{
// hapus data tanggal temporary untuk proses update
$this->session->unset_userdata('tanggal_sekarang');
// id semester yang aktif
$id_semester = $this->semester->cari_semester_aktif()->id_semester;
// Cari data absen
$absen = $this->absen->cari_semua($offset, $id_semester);
// Jika ada tampilkan
if ($absen)
Modify by dedih
79
FASILKOM UNSIKA
$tabel = $this->absen->buat_tabel($absen);
$this->data['tabel_data'] = $tabel;
// Paging
// http://localhost/absensi2014/siswa/halaman/2
$this->data['pagination'] = $this->absen->paging(site_url('absen/halaman'));
}
else
{
$this->data['pesan'] = 'Tidak ada data absen.';
}
$this->load->view('template', $this->data);
80
FASILKOM UNSIKA
else
{
$this->load->view('template', $this->data);
}
81
FASILKOM UNSIKA
$this->load->view('template', $this->data);
}
// tidak ada parameter, kembalikan ke halaman absen
else
{
redirect('absen');
}
82
FASILKOM UNSIKA
Modify by dedih
83
$this->form_validation->set_message('is_double_entry_tambah',
sudah tercatat absen pada tanggal ' . $this->input->post('tanggal'));
return FALSE;
}
else
{
return TRUE;
}
}
FASILKOM UNSIKA
'Siswa
ini
// cek apakah siswa dengan NIS sama diabsen 2 kali pada tanggal yang sama?
public function is_double_entry_edit()
{
$tanggal_sekarang
= $this->session->userdata('tanggal_sekarang');
$tanggal_baru
=
date('Y-m-d',
strtotime($this->input>post('tanggal')));
$nis
= $this->input->post('nis');
if ($tanggal_baru === $tanggal_sekarang)
{
return TRUE;
}
else
{
// cek di database
$query = $this->db->where('nis', $nis)->where('tanggal', $tanggal_baru)>get('absen');
if($query->num_rows() > 0)
{
$this->form_validation->set_message('is_double_entry_edit', 'Siswa ini sudah
tercatat absen pada tanggal ' . $this->input->post('tanggal'));
return FALSE;
}
else
{
return TRUE;
}
}
}
}
/* End of file absen.php */
/* Location: ./application/controllers/absen.php */
Modify by dedih
84
FASILKOM UNSIKA
=>
85
'rules'
'required|callback_is_format_tanggal|callback_is_double_entry_edit'
),
array(
'field' => 'absen',
'label' => 'Absen',
'rules' => 'required'
),
);
return $form;
}
FASILKOM UNSIKA
=>
if ($this->form_validation->run())
{
return TRUE;
}
else
{
return FALSE;
}
if ($this->form_validation->run())
{
return TRUE;
}
else
{
return FALSE;
}
86
FASILKOM UNSIKA
return $this->db->select('absen.id_absen,
absen.tanggal,
absen.absen,
siswa.nis,
siswa.nama,
kelas.kelas')
->from('absen,
siswa,
kelas,
semester')
->where('siswa.id_kelas = kelas.id_kelas')
->where('absen.nis = siswa.nis')
->where('semester.id_semester = absen.id_semester')
->where('absen.id_semester', $id_semester)
->order_by('absen.id_absen', 'desc')
->limit($this->per_halaman, $this->offset)
->get()->result();
87
FASILKOM UNSIKA
return $tabel;
88
FASILKOM UNSIKA
$this->pagination->initialize($config);
return $this->pagination->create_links();
return $this->db->select('absen.id_absen,
absen.tanggal,
absen.absen,
siswa.nis,
siswa.nama,
kelas.kelas')
->from('absen,
siswa,
kelas,
semester')
->where('siswa.id_kelas = kelas.id_kelas')
->where('absen.nis = siswa.nis')
->where('semester.id_semester = absen.id_semester')
->where('absen.id_semester', $id_semester)
->order_by('absen.id_absen', 'desc')
->get()->num_rows();
function hapus($id_absen)
{
$this->db->where('id_absen', $id_absen)->delete($this->db_tabel);
if($this->db->affected_rows() > 0)
{
return TRUE;
}
else
{
return FALSE;
}
89
FASILKOM UNSIKA
$smt = $this->semester->cari_semester_aktif();
$id_semester = $smt->id_semester;
$absen = array(
'nis' => $this->input->post('nis'),
'id_semester' => $id_semester,
'tanggal' => date('Y-m-d', strtotime($this->input->post('tanggal'))),
'absen' => $this->input->post('absen')
);
$this->db->insert($this->db_tabel, $absen);
if($this->db->affected_rows() > 0)
{
return TRUE;
}
else
{
return FALSE;
}
if($this->db->affected_rows() > 0)
{
return TRUE;
}
else
{
return FALSE;
}
Modify by dedih
90
FASILKOM UNSIKA
}
/* End of file absen_model.php */
/* Location: ./application/models/absen_model.php */
91
FASILKOM UNSIKA
Modify by dedih
92
FASILKOM UNSIKA
Setelah semua program semester yang anda ketikan selesai cobalah panggil browser
dan ketikan localhost/absensi2014/absen/tambah sehingga akan muncul tampilan seperti
gambar berikut ini :
Modify by dedih
93
FASILKOM UNSIKA
Modify by dedih
94
FASILKOM UNSIKA
MODUL 10
MODUL REKAP
Modul rekap dibuat untuk menapilkan data laporan absensi siswa tiap kelas. User
dapat memilih kelas yang akan dibuat rekap data absensinya melalui menu dropdown yang
ada pada form. Format data rekap absensi yang akan dibuat ada dua yaitu Excel dan Pdf.
95
FASILKOM UNSIKA
=
Excel',
96
FASILKOM UNSIKA
$this->data['link_pdf']
=
anchor("rekap/download_pdf/$id_kelas/$id_semester",'Download PDF', array('class'
=> 'pdf'));
$this->load->view('template', $this->data);
}
// data kelas ada, tapi tidak ada siswa yang termasuk di kelas yang dipilih
else
{
$this->data['pesan'] = 'Tidak ada data rekap. Tidak ada siswa yang terdaftar
di kelas yang dipilih.';
$this->load->view('template', $this->data);
}
}
// if no submit
else
{
$this->load->view('template', $this->data);
}
}
// data kelas tidak ada
else
{
$this->data['option_kelas']['00'] = '-';
$this->data['pesan'] = 'Data kelas tidak tersedia. Silahkan isi dahulu data kelas.';
$this->load->view('template', $this->data);
}
}
// download rekap excel
public function download_excel($id_kelas, $id_semester)
{
// load to_excel_helper (untuk membuat laporan dengan format excel)
$this->load->helper('to_excel');
// parameter OK
if(! empty($id_kelas) && ! empty($id_semester))
{
// kelas
$kelas = $this->db->select('kelas')->where('id_kelas', $id_kelas)->get('kelas')>row()->kelas;
$query = $this->rekap->rekap($id_kelas, $id_semester);
$id_semester;
Modify by dedih
97
FASILKOM UNSIKA
to_excel($query, $nama_file);
}
// parameter tidak lengkap
else
{
$this->session->set_flashdata('pesan', 'Proses pembuatan data rekap (Excel)
gagal. Parameter tidak lengkap.');
redirect('rekap');
}
}
public function download_pdf($id_kelas, $id_semester)
{
// pastikan error reporting mati, atau file pdf akan corrupt
error_reporting(0);
// parameter OK
if(! empty($id_kelas) && ! empty($id_semester))
{
// kelas
$kelas = $this->db->select('kelas')->where('id_kelas', $id_kelas)->get('kelas')>row()->kelas;
$parameters=array(
'paper'=>'A4',
'orientation'=>'portrait',
);
// load library extension class Cezpdf
// lokasi: ./application/libraries/Pdf.php
$this->load->library('Pdf', $parameters);
// pastikan path font benar
$this->pdf->selectFont(APPPATH.'/third_party/pdf-php/fonts/Helvetica.afm');
// gambar header, pastikan path gambar benar
$this->pdf->ezImage(base_url('asset/images/logo.png'), 0, 200, 'none', 'center');
// judul rekap
$this->pdf->ezText("Data Rekap Absensi Kelas $kelas Semester $id_semester",
20, array('justification'=> 'centre'));
// spasi judul dengan tabel
$this->pdf->ezSetDy(-15);
// jalankan query
$query = $this->rekap->rekap($id_kelas, $id_semester);
Modify by dedih
98
FASILKOM UNSIKA
}
// parameter tidak lengkap
else
{
$this->session->set_flashdata('pesan', 'Proses pembuatan data rekap (PDF)
gagal. Parameter tidak lengkap.');
redirect('rekap');
}
}
}
/* End of file rekap.php */
/* Location: ./application/controllers/rekap.php */
Modify by dedih
99
FASILKOM UNSIKA
Modify by dedih
100
FASILKOM UNSIKA
101
FASILKOM UNSIKA
102
FASILKOM UNSIKA
$option_kelas,
<p>
<?php // echo form_submit($form['submit']); ?>
<?php echo form_submit(array('name' => 'submit', 'id'=>'submit', 'value'=>'OK')); ?>
</p>
<?php echo form_close(); ?>
<?php echo form_fieldset_close(); ?>
<!-- form end -->
<!-- kelas start -->
<?php if (! empty($kelas)) : ?>
<?php echo 'Kelas : <b>' . $kelas . '</b><br />'; ?>
<?php endif ?>
<!-- kelas end -->
<!-- semester start -->
<?php if (! empty($id_semester)) : ?>
<?php
($id_semester == 1) ? ($id_semester = '<b>1 (Ganjil)</b>') : ($id_semester = '<b>2
(Genap)</b>');
echo 'Semester : ' . $id_semester . '<br /><br />';
?>
<?php endif ?>
<!-- semester end -->
<!-- tabel data start -->
<?php if (! empty($tabel_data)) : ?>
<?php echo $tabel_data; ?>
<?php endif ?>
<!-- tabel data end -->
Modify by dedih
103
FASILKOM UNSIKA
104
FASILKOM UNSIKA
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "\t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\r\n";
$data = str_replace("\r","",$data);
header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=$filename.xls");
echo "$headers\n$data";
}
?>
Modify by dedih
105
FASILKOM UNSIKA
Modify by dedih
106
FASILKOM UNSIKA
DAFTAR PUSTAKA
Modify by dedih
107