IT Solution

Wednesday 17 July 2013

Ukuran kullah yg sesuia untuk bersesuci

July 17, 2013 Posted by Bops 2 comments

2 Qullah Adalah Ketetapan Hadits Nabawi
posted by:Nazih
 
Ukuran jumlah air 2 qullah sesungguhnya bersumber dari hadits nabawi berikut ini:
وعَنْ عَبدِ اللهِ بنِ عُمَرَ رَضِيَ اللهُ عَنْهُ قَالَ: قَالَ رسولُ الله صلى اللهُ عليه وسلم: إِذَا كَانَ المَآءُ قُلَّتَيْنِ لَمْ يَحمِلِ الخَبَثَ، وفي لَفْظٍ: لَمْ يَنْجُسْ، أَخْرَجَهُ الأَرْبَعَةُ، وَصَحَّحَهُ ابْنُ خُزَيْمَةَ والحاكمُ وابْنُ حِبَّانَ.
Dari Abdullah bin Umar ra. berkata bahwa Rasulullah SAW bersabda, "Apabila jumlah air mencapai 2 qullah, tidak membawa kotoran." Dalam lafadz lainnya,"Tidak membuat najis." (HR Arbaah: Abu Daud, Nasai, Tirmizi dan ibnu Majah)
Ibnu Khuzaemah, Al-Hakim dan Ibnu HIbban menshahihkan hadits ini. Sehingga ketentuan air harus berjumlah 2 qullah bukan semata-mata ijtihad para ulama saja, melainkan datang dari ketetapan Rasulullah SAW sendiri lewat haditsnya.
Berapakah Ukuran 2 Qullah?
Istilah qullah adalah ukuran volume air yang digunakan di masa Rasulullah SAW masih hidup. Bahkan 2 abad sesudahnya, para ulama fiqih di Baghdad dan di Mesir pun sudah tidak lagi menggunakan skala ukuran qullah. Mereka menggunakan ukuran rithl (bukan liter) yang sering diterjemahkan dengan istilah kati. Sayangnya, ukuran rithl ini pun tidak standar, bahkan untuk beberapa negeri Islam sendiri. Satu rithl air buat orang Baghdad ternyata berbeda dengan ukuran satu rithl air buat orang Mesir. Walhasil, ukuran ini agak menyulitkan juga sebenarnya.
Dalam banyak kitab fiqih disebutkan bahwa ukuran volume 2 qulah itu adalah 500 rithl Baghdad. Tapi kalau diukur oleh orang Mesir, jumlahnya tidak seperti itu. Orang Mesir mengukur 2 qullah dengan ukuran rithl mereka dan ternyata jumlahnya hanya 446 3/7 Rithl. Lucunya, begitu orang-orang di Syam mengukurnya dengan menggunakan ukuran mereka yang namanya rithl juga, jumlahnya hanya 81 rithl. Namun demikian, mereka semua sepakat volume 2 qullah itu sama, yang menyebabkan berbeda karena volume 1 rithl Baghdad berbeda dengan volume 1 rithl Mesir dan volume 1 rithl Syam.
Lalu sebenarnya berapa ukuran volume 2 qullah dalam ukuran standar besaran international di masa sekarang ini?
Para ulama kontemporer kemudian mencoba mengukurnya dengan besaran zaman sekarang. Dan ternyata dalam ukuran masa kini kira-kira sejumlah 270 liter. Demikian disebutkan oleh Dr. Wahbah az-Zuhaili dalam Al-Fiqhul Islami Wa Adillatuhu.
Jadi bila air dalam suatu wadah jumlahnya kurang dari 270 liter, lalu digunakan untuk berwudhu, mandi janabah atau kemasukan air yang sudah digunakan untuk berwudhu`, maka air itu dianggap sudah musta`mal. Air itu suci secara pisik, tapi tidak bisa digunakan untuk bersuci (berwudhu` atau mandi). Tapi bila bukan digunakan untuk wudhu` seperti cuci tangan biasa, maka tidak dikategorikan air musta`mal.
Namun kalau kita telliti lebih dalam, ternyata pengertian musta`mal di antara fuqoha mazhab masih terdapat variasi perbedaan. Sekarang mari coba kita dalami lebih jauh dan kita cermati perbedaan pandangan para fuqaha tentang pengertian air musta’mal, atau bagaimana suatu air itu bisa sampai menjadi musta’mal:
a. Ulama Al-Hanafiyah
Air musta`mal dalam pengertian mereka adalah air yang telah digunakan untuk mengangkat hadats (wudhu` untuk shalat atau mandi wajib) atau untuk qurbah. Maksudnya untuk wudhu` sunnah atau mandi sunnah. Tetapi secara lebih detail, menurut mazhab ini bahwa yang menjadi musta`mal adalah air yang membasahi tubuh saja dan bukan air yang tersisa di dalam wadah. Air itu langsung memiliki hukum musta`mal saat dia menetes dari tubuh sebagai sisa wudhu` atau mandi.
Sedangkan air yang di dalam wadah tidak menjadi musta`mal. Bagi mereka, air musta`mal ini hukumnya suci tapi tidak bisa mensucikan. Artinya air itu suci tidak najis, tapi tidak bisa digunakan lagi untuk wudhu` atau mandi.
Keterangan seperti ini bisa kita lihat pada kitab Al-Badai` jilid 1 hal. 69 dan seterusnya, juga Ad-Dur Al-Mukhtar jilid 1 hal. 182-186, juga Fathul Qadir 58/1,61.
b. Ulama Al-Malikiyah
Air musta`mal dalam pengertian mereka adalah air yang telah digunakan untuk mengangkat hadats baik wudhu` atau mandi. Dan tidak dibedakan apakah wudhu` atau mandi itu wajib atau sunnah. Juga yang telah digunakan untuk menghilangkan khabats (barang najis).
Dan sebagaimana Al-Hanafiyah, mereka pun mengatakan bahwa yang musta`mal hanyalah air bekas wudhu atau mandi yang menetes dari tubuh seseorang. Namun yang membedakan adalah bahwa air musta`mal dalam pendapat mereka itu suci dan mensucikan. Artinya, bisa dan syah digunakan untuk mencuci najis atau wadah. Air ini boleh digunakan lagi untuk berwudhu` atau mandi sunnah selama ada air yang lainnya meski dengan karahah.
Keterangan ini bisa kita dapati manakala kita membukan kitab As-Syahru As-Shaghir 37/1-40, As-Syarhul Kabir ma`a Ad-Dasuqi 41/1-43, Al-Qawanin Al-Fiqhiyah hal. 31, Bidayatul Mujtahid 1 hal 26 dan sesudahnya.
c. Ulama Asy-Syafi`iyyah
Air musta`mal dalam pengertian mereka adalah air sedikit yang telah digunakan untuk mengangkat hadats dalam fardhu taharah dari hadats. Air itu menjadi musta`mal apabila jumlahnya sedikit yang diciduk dengan niat untuk wudhu` atau mandi meski untuk untuk mencuci tangan yang merupakan bagian dari sunnah wudhu`.
Namun bila niatnya hanya untuk menciduknya yang tidak berkaitan dengan wudhu`, maka belum lagi dianggap musta`mal. Termasuk dalam air musta`mal adalah air mandi baik mandinya orang yang masuk Islam atau mandinya mayit atau mandinya orang yang sembuh dari gila. Dan air itu baru dikatakan musta`mal kalau sudah lepas/ menetes dari tubuh.
Air musta`mal dalam mazhab ini hukumnya tidak bisa digunakan untuk berwudhu` atau untuk mandi atau untuk mencuci najis. Karena statusnya suci tapi tidak mensucikan. Silahkan lihat pada kitab Mughni Al-Muhtaj 1/20 dan Al-Muhazzab jilid 5.



Friday 12 July 2013

Membangun Jaringan Internet

July 12, 2013 Posted by Bops No comments

TUTORIAL KONFIGURASI
JARINGAN INTERNET
posted by : Muhammad Nazih

Sebagai seorang administrator anda diminta untuk membangun server jaringan sebuah perusahaan yang mempunyai 50 PC Client. Adapun server berfungsi sebagai berikut:
  1. Gateway internet/Internet Connection Sharing
  2. DHCP Server
  3. DNS Server
  4. Mail Server
  5. Web Server
  6. Proxy Server

1. Mengkonfigurasikan server sebagai Gateway/Internet Connection Sharing dengan konfigurasi ethernet sbb:

    • eth0 = ip address yang didapatkan dari dhcp server PeTIK
    • eth1 = 192.168.X.1, dimana X adalah nomor meja masing-masing
Langkah pertama kita tentukan IP kita yang sudah di berikan masing masing.

--------------------------
=>ubah selinux/config
selinux=disabled
=>restart
--------------------------
=>edit eth0 sesuaikan dengan ip host
#vim /etc/sysconfig/network-scripts/ifcfg-eth0















-----------------------------
=>Restart network
#service network restart
=>lalu ping ke arah gateway
-----------------------------
=>lalu edit kembali eth1
#vim /etc/sysconfig/network-scripts/ifcfg-eth1













------------------------------
=>restart kembali network
=>lalu ubah
#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
-------------------------------
=>reboot komputer
=>tes ping dari host ke ip eth1 guest.
-------------------------------
=>untuk sharing gunakkan iptables di guest.
=>pastikan iptables(firewall) dalam keadaan stop
#service iptables stop
#iptables -t nat -A POSTROUTING -s 192.168.65.0/24 -o eth0 -j MASQUERADE
#service iptables satatus
-------------------------------

2. Mengkonfigurasi server sebagai DHCP server yang melayani 50 PC client. PC client di alokasikan IP address mulai dari 192.168.X.60, dimana X adalah nomor meja masing masing.

DHCP

=>install dhcp
#yum install dhcp
=>edit file dhcpd.conf yang berada di /etc/dhcp/dhcpd.conf
#vim /etc/dhcp/dhcpd.conf
=>masukkan file sample dengan perintah dalam vim
:r /usr/share/doc/dhcp*/dhcpd.conf.sample
=>edit script dan hapus script selain dri yang dibawah ini 











=> lalu restart dhcp
#service dhcpd restart/start
-------------------------------

DNS SERVER
install bind
#yum install bind-utils bind-chroot bind caching-nameserver
=>DNS chacing
=>edit file named.conf
#vim /etc/named.conf

----------------------------------------------------
=>tambah zones
#vim /etc/named.rfc1912.zones 



=>kemudian save
3. Mengkonfigurasikan server sebagai caching only server (DNS cache) dan master DNS yang mengelola domain petik.nf dengan subdomain www.petik.nf dan mail.petik.nf!!
=>edit named yang ada di /var dengan mengcopy dahulu named.empty
#cp /var/named/named.empty /var/named/named.petik.nf

#vim /var/named/named.petik.nf















=>ubah grup named.petik.nf -> named
#chgrp named named.peti.nf
=>tambah lagi loopback
#vim /etc/named.rfc1912zones
zone "5.168.192.in-addr.arpa" IN {
type master;
file "named.5.168.192";
allow-update { none; };
};
=>lalu buat skirpt loopback yang ada di /var
#cp /var/named/named.loopback /var/named/named.5.168.192
#vim /var/named/named.5.168.168.192
$TTL 1D
@
IN SOA @ root (
                                           0 ; serial
                                           1D ; refresh
                                           1H ; retry
                                           1W ; expire
                                            ) ; minimum
        NS
        @
        A         192.168.5.65
65    PTR      petik.nf. 
 
=>ubah grup named.5.168.192 -> named
#chgrp named named.5.168.192
=>restart named
#service named restart
=>lalu rubah nameserver dan arahkan ke IP sendiri

#vim /etc/resolv.con
      nameserver 192.168.54.1
----------------------------------------------------
=>restart named
#service named restart
#nslookup petik.nf
#kalau untuk client vboxnet0 nya di ganti 192.168.54.11 

#gateway clientnya di ganti menggunakan ROUTE
#vim /etc/resolv.conf






#nslookup mail.petik.nf

WEB SERVER
        =>d0wnload web server httpd
#yum install httpd*
#service httpd status 

      =>kalo mau membuat alias bisa dengan cara
       =>edit file alias yang ada di /etc/httpd 

      #vim /etc/httpd/conf.d/alisa.conf
      #Alias /dl /home/usro/public_html
      #<Directory "/home/usro/htdocs">
      # Options Indexes FollowSymLinks
     # AllowOverride None
     # Order allow,deny
     # Allow from all
     #</Directory>
      Alias /usro /home/usaro/htdocs
     <Directory "/home/usro/htdocs">
     Options Indexes FollowSymLinks
     AllowOverride None
      Order allow,deny
     Allow from all
     </Directory>
    =>restart kembalai httpd 

   #service httpd restart
   =>restart named 

   #service named restart

4. Mengkonfigurasikan server sebagai web.server,membuat virtual host dengan ketentuan :
      - DocumentRoot = /usr/share/squirrelmail
      - Servername = mal.petik.nf
=>coba di browser
----------------------------------------
BUAT VIRUAL HOST
=>download httpd
=>edit file
#vim /etc/httpd/conf/httpd.conf

buka comentar yang ada di dalamnya yaitu
    • serveradmin root@localhost
    • namevirtualhost *:80
    • pengaturan virtualhostnya

       










=>Restart kembali named
#service named restart
=>Restart httpd
#service httpd restart
=>Kemudian test
5. Mengkonfigurasikan server sebagai smpt server menggunakan postfix dan pop/imap server menggunakan dovecot dengan nama mail.petik.nf.

Mail Server
----------- 
 
Cara kerja: 
 
    SMTP        MTA         SMTP                 POP
User1 -----> MAIL_SERVER1 -----> MAIL_SERVER2 <----- User2
sugeng@yahoo.com   yahoo.com   gmail.com   adon@gmail.com
to:adon@gmail.com   to:adon@gmail.com
           !=               |                 =
      yahoo.com     |     gmail.com
                        V
                Mailbox_adon

SMTP --> kirim mail --> port 25 --> postfix
           SMTP-SSL --> port 465
           SMTP-Login-> port 587
IMAP --> akses mail (Webmail) --> port 143 |--> dovecot
           IMAP-SSL--> port 993 |
POP --> ambil mail --> port 110 |
           POP-SSL--> port 995 |
Webmail --> Squirrelmail

Mail Transfer Agent --> Mengirim email ke tujuan.
Mail Delivery Agent --> Mengirim email ke mailbox dari user.
Mail User Agent --> Aplikasi untuk mengelola email di sisi client
         Contoh: Thunderbird, Ms. Outlook, dll
         Contoh Mail Transfer Agent: 
 
- Postfix (Zimbra, IredMail)
- Sendmail
- Qmail (Qmailtoaster)
- Exim
- MDaemon
- Ms. Exchange 
 
Webmail: Squirrelmail, Roundcube

Instalasi
---------
#yum install php*
# yum install postfix
#yum install dovecot

Download squirrelmail-1.4.22-3.e16.noarch.rpm
kemudian install dengan menggunakan

#rpm -ivh squirrelmail-1.4.22.e16.noarch.rpm
#vim /etc/httpd/conf.d/squirrelmail.conf


# service sendmail stop
# chkconfig sendmail off
# vim /etc/postfix/main.cf
-------------------------------------
yang di buka comentarnya sebagia berikut
    • myhosname = mail.petik.nf
    • mydomain = petik.nf
    • myorigin = $myhostname
    • myorigin = $mydomain
    • inet_interfaces = all
    • inet_protocols = all
    • mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    • maynetworks = 192.168.54.0/24, 127.0.0.0/0
    • mail_location = Maildir
    • home_MailboX = Maildir/ kalau ingin menggunakan maildir
    • home_MailboX = Mailbox #kalau ingin menggunakan Mailbox
myhostname = mail.petik.oke
mydomain = petik.nf

#service postfix restart
#vim /etc/dovecot/dovecot.conf
yang di edit untuk memberikan comentar pada text dovecot yaitu sbg;
    • protocols = imap pop3 lmtp
      dan tambahkan paling bawah yaitu
    • protocol imap {
      mail_location = maildir:~/Maildir
      }
untuk menambahkan maildirnya di tambahkan di
#vim /etc/dovecot/conf.d/10-auth.conf
(disable.auth plain text nya diubah menjadi =no)
auth_mechanisms = plain
#vim /etc/dovecot/conf.d/10-mail.conf
(mail location = mejadi =maildir:~/Maildir)
mail_access_group = mail
mbox_write_locks = fcntl
#service dovecot restart

6. Mengkonfigurasikan server sebagia proyx server, dengan ketentuan ;#vim /etc/squid/squid.conf

#vim /etc/squid/squid.conf
      • cache manager = root@petik.nf
        dengan menambahkan text di lokasi yang paling bawah.
        #cache_mgr root@petik.nf
      • menambahkan dns_nameserver = 192.168.54.1,192.168.5.1
      • visible hostname = www.petik.nf
        di tambahkan di lokasi yang paling bawah,di baawahnya root@petik.nf
        #visible_hostname = www.petik.nf
      • Mengaktifkan caching web content dengan kapasitas cache directory sebesar 256MB
        denagan cara membuka comentar nya di
        #cache_dir ufs /var/spool/squid 256
      • Situs yang blok = .google.com .yahoo.com
        Ditambahkan di :

      • Transparent atau intercept proxy


    • http_access allow localnet
    • http-access allow localhost
  1. Lakukann tes untuk memastikn semua konfigurasi yang di perintahkan di atas sudah selesai dan berjalan dengan baik

untuk bisa mengetes di clientnya bisadengan cara-cara sbg:


  • route -n

Tuesday 9 July 2013

Wednesday 3 July 2013

Tutorial yii

July 03, 2013 Posted by Bops 1 comment
INSTALASI Yii:
posted by : Muhammad Nazih 
tgl ; 3 juli 2013

MEMBUAT TUTORIAL YII FRAMEWORK



  1. Download
  2. Letakkan di document root => /var/www
  3. Ektrak dan rename => yii
  4. Lihat juga requirements di http://localhost/yii/requirements/
  5. masuk ke direc /var/www/framework
  6. install dengan cara : ./yiic webapp /var/www/appyiiku
  7. ubah kepemilikan : chown 777 /var/www/appyiimu -R
  8. Ubah Mode di MVC : chmod 777 var/www/appyiimu -R
  9. masuk ke directory procted config buka main.php dan buka komentar

Untuk yii controller
    // uncomment the following to enable the Gii tool
    'gii'=>array(
    'class'=>'system.gii.GiiModule',
    'password'=>'1234', // dengan password anda
    // If removed, Gii defaults to localhost only. Edit carefully to taste.
    'ipFilters'=>array('127.0.0.1','::1'),
    ),
    ),
    // uncomment the following to enable URLs in path-format
    Untuk url menjadi lebih singkat / lebih enak di lihat
    'urlManager'=>array(
    'urlFormat'=>'path',
    'rules'=>array(
    '<controller:\w+>/<id:\d+>'=>'<controller>/view',
    '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
    '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    ),
    ),
    // uncomment the following to use a MySQL database
    Untuk Menghubungkan ke database
    'db'=>array(
    'connectionString' => 'mysql:host=localhost;dbname=dbpegawai',
    'emulatePrepare' => true,
    'username' => 'root',
    'password' => 'rahmatia',
    'charset' => 'utf8',
    ),
  1. Menganti Themes
  • Downloads template yang anda sukai terlebih dahulu
  • Tambahkan hasil Downloads ke dalam Directory themes
  • tambahkan file yang ke dalam file yang di bawah procted config main.php tambah kan seperti yang berwarna merah

    return array(
    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
    'name'=>'Aplikasi Absesi Kelurahan ',
    'theme'=>'mortalkombat',

  • Mengganti Tampilan Awal
Ketika anda buka url aplikasi anda terdapat keterangan jelas bagaimana cara mengganti
tampilan web anda. Dengan pengetahuan HTML, tentu sangat mudah mengganti halaman
ini. Buka file C:\xampp\htdocs\aplikasiku\protected\views\site\index.php editlah sesuai
kreatifitas Anda, misalnya
<h1>Selamat Datang di Aplikasi Bopas</h1>
<p>Aplikasi ini digunakan untuk melakukan pengelolaan terhadap
administrasi program diklat yang diselenggarakan
oleh Pusdiklat Keuangan Umum - Badan Pendidikan dan Pelatihan
Keuangan - Kementerian Keuangan</p>
<p>Pendaftaran pegawai untuk mengikuti diklat dapat diselenggarakan
secara online dengan sistem yang terintegrasi
dan dapat dilihat secara uptodate secara online</p>
<p>Terima kasih</p>
Kemudian untuk mengganti footer default Yii, saya akan buka file di direktori
C:\xampp\htdocs\aplikasiku\protected\views\layouts\main.php kemudian pada bagian
bawah ada tampilan seperti berikut:
<div id="footer">
Copyright copy; <?php echo date('Y'); ?> by My
Company.<br/>
All Rights Reserved.<br/>
<?php echo Yii::powered(); ?>
</div><!-- footer -->
Lalu saya ubah menjadi seperti ini:
<div id="footer">
Copyright copy; <?php echo date('Y'); ?> by Hargi.<br/>
All Rights Reserved.<br/>
Powered by PusdiklatKU
</div><!-- footer -->

  • Membuat database sederhana
Sebelum membuat database ada perlunya untuk menyiapkan software databse designer,
penulis menggunakan MySQL Workbench, skenario kita kali ini akan membuat aplikasi bisnis
Komunitas eLearning IlmuKomputer.Com
Copyright © 2008‐2012 IlmuKomputer.Com
2
yang berhungan dengan training, buka browser lalu ketikkan http://localhost/phpmyadmin,
buat database baru dengan nama aplikasikudb, buat 4 tabel dengan ketentuan sebagai
berikut:
1. Table user dengan 4 field yaitu sebagai berikut:
a. iduser, int(11)
b. username, varchar(45)
c. password, varchar(45)
d. name varchar(45)
2. Table category dengan 2 field yaitu sebagai berikut:
a. idcategory, int(11)
b. category_name, varchar(45)
3. Table training dengan 5 field yaitu sebagai berikut:
a. idtraining, int(11)
b. name_training, varchar(45)
c. hours, varchar(45)
d. time_start, (time)
e. time_end, (time)
4. Table participant dengan 3 field yaitu sebagai berikut:
a. idparticipant, int(11)
b. name_participant, varchar(45)
c. nip, bigint(18)
dengan gambar EER sebagai berikut:



Berikut script mysql nya:
CREATE TABLE IF NOT EXISTS `category` (
`idcategory` int(11) NOT NULL AUTO_INCREMENT,
`category_name` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idcategory`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `category` (`idcategory`, `category_name`) VALUES
(1, 'Diklat Teknis Umum (DTU)'),
(2, 'Diklat Fungsional (DF)');
CREATE TABLE IF NOT EXISTS `participant` (
`idparticipant` int(11) NOT NULL AUTO_INCREMENT,
`name_participant` varchar(45) DEFAULT NULL,
`nip` bigint(18) DEFAULT NULL,
`city` varchar(45) DEFAULT NULL,
`trainingid` int(11) NOT NULL,
PRIMARY KEY (`idparticipant`),
KEY `fk_participant_training1` (`trainingid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;
INSERT INTO `participant` (`idparticipant`, `name_participant`, `nip`,
`city`, `trainingid`) VALUES
(1, 'Pegawai1', 198607202007011004, 'Surabaya', 2),
(2, 'Ninin Sapto Hargiyanto', 198607202007011001, 'Jakarta', 2);
CREATE TABLE IF NOT EXISTS `training` (
`name_training` varchar(45) DEFAULT NULL,
`hours` varchar(45) DEFAULT NULL,
`time_start` date DEFAULT NULL,
`time_end` date DEFAULT NULL,
`categoryid` int(11) NOT NULL,
PRIMARY KEY (`idtraining`),
KEY `fk_training_category` (`categoryid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `training` (`idtraining`, `name_training`, `hours`,
`time_start`, `time_end`, `categoryid`) VALUES
(1, 'Legal Drafting', '30', '2012-07-12', '2012-07-19', 1),
(2, 'Pranata Komputer', '150', '2012-07-15', '2012-08-10', 2);
CREATE TABLE IF NOT EXISTS `user` (
`iduser` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(45) DEFAULT NULL,
`password` varchar(45) DEFAULT NULL,
`name` varchar(45) DEFAULT NULL,
PRIMARY KEY (`iduser`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `user` (`iduser`, `username`, `password`, `name`) VALUES
(1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 'Administrator'),
(2, 'hargi', '69510e32280ccbb3eb99bb36fc24b312', 'Hargi');
ALTER TABLE `participant`
ADD CONSTRAINT `participant_ibfk_1` FOREIGN KEY (`trainingid`) REFERENCES
`training` (`idtraining`) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE `training`
ADD CONSTRAINT `fk_training_category` FOREIGN KEY (`categoryid`)
REFERENCES `category` (`idcategory`) ON DELETE NO ACTION ON UPDATE NO
ACTION;


  • Melakukan Generate Tabel dengan Gii
Fitur Yii framework yang membuat cepat suatu pemrograman adalah adanya bantuan dari
extensions bernama Gii, singkatan dari Yii Code Generator yang berfungsi untuk
menghasilkan kode secara otomoatis. Implementasinya adalah membuat model, class dan
controller dengan klik‐klik saja.
Ok, langsung aja kita buka folder C:\xampp\htdocs\aplikasiku\protected\config\main.php
lalu cari code berikut:
'modules'=>array(
// uncomment the following to enable the Gii tool
/*
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'Enter Your Password Here',
// If removed, Gii defaults to localhost only. Edit
carefully to taste.
'ipFilters'=>array('127.0.0.1','::1'),
),
*/
),
Ubah codenya menjadi seperti berikut:
'modules'=>array(
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'passwordku',
'ipFilters'=>array('127.0.0.1','::1'),
),
),
Kode diatas berfungsi untuk mengaktifkan Yii Code Generator (Gii) dengan mengisikan
passwordnya dengan nilai passwordku, kemudian cari lagi kode koneksi database nya
seperti dibawah ini:
/*
'db'=>array(
'connectionString' =>
'mysql:host=localhost;dbname=testdrive',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
),
*/
Lalu ubah menjadi seperti berikut:
'db'=>array(
'connectionString' =>
'mysql:host=localhost;dbname=aplikasikudb',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
),
Kode diatas memberikan koneksi ke database kita yang telah kita buat sebelumny. Buka lagi
browser anda lalu ketikkan alamat http://localhost/aplikasiku/index.php?r=gii masukkan
passwordku di kolom password lalau enter. Akan muncul 5 list, yang akan kita lakukan disini
adalah Model Generator dan Crud Generator saja.


Kode diatas memberikan koneksi ke database kita yang telah kita buat sebelumny. Buka lagi
browser anda lalu ketikkan alamat http://localhost/aplikasiku/index.php?r=gii masukkan
passwordku di kolom password lalau enter. Akan muncul 5 list, yang akan kita lakukan disini
adalah Model Generator dan Crud Generator saja.

Pertama Klik pada Model Generator, pastikan anda ingat nama 4 tabel di database kita,
isikan Table Name dengan nama tabel kita, isikan nama Model Class dengan nama tabel
kita dengan huruf awal kapital klik Preview, Klik Generate. Ulangi untuk 3 tabel kita
Kedua Klik pada Crud Generator, isikan Model Class dengan nilai pada step Pertama tadi,
yaitu nama tabel dengan huruf awal kapital. Klik preview lalu Generate. Ulangi untuk 3
Model Class lainnya.
Selamat, kini kita telah mempunyai
4 file Model di dalam folder models, berekstensi php
4 file Controller di dalam folder controllers, berekstensi php
4 folder View di dalam folder views
Semuanya ada di dalam folder C:\xampp\htdocs\aplikasiku\protected. Kita akan fokus pada
folder di dalam protected ya. Jika ada kesalahan pastikan anda telah benar melakukan
generate Model Generator dan Crud Generator
Referensi:

  • Pengelolaan Aplikasi Web‐based
Hasil generate Gii pada tahap sebelumnya telah cukup untuk melakukan pengeloaan data
dan informasi lewat web yang terkoneksi dengan database kita. Kita telah dapat menambah,
merubah dan menghapus data.
Buka browser ketikkan http://localhost/aplikasiku/index.php?r=training
Hasilnya adalah anda dapat melihat daftar tabel berisi training yang telah terhubung dengan
database kita.
a) Menambah (Insert)
Untuk menambah data baru, diperlukan login. Default Yii adalah menggunakan
username : admin dan password : admin. Setelah berhasil login, Anda dapat melakukan
penambahan data ke dalam tabel dengan melihat pada jendela Operations, lalu klik
Create yang terdapat pada sisi samping tabel listing data.
b) Mengurangi (Update)
Sama seperti pada point a, klik pada Update
c) Menghapus (Delete)
Sama seperti pada point a, klik pada Delete
d) Mengelola (Manage)
Sama seperti pada point a, klik pada Manage. Akan muncul listing data yang powerfull,
fasilitas search berdasarkan data, ditambah pula 3 fitur Insert (Menambah), Update
(Merubah), dan Menghapus (Delete).

  • MODIFIKASI APLIKASI DASAR
Modifikasi Menu Kategori
Pada menu standar Yii, kita ingin menambahkan menu baru.
Buka C:\xampp\htdocs\aplikasiku\protected\views\layouts\main.php cari halaman berikut:
<div id="mainmenu">
<?php $this->widget('zii.widgets.CMenu',array(
'items'=>array(
array('label'=>'Home',
'url'=>array('/site/index')),
array('label'=>'About',
'url'=>array('/site/page', 'view'=>'about')),
array('label'=>'Contact',
'url'=>array('/site/contact')),

Ubah menjadi seperti berikut:
<div id="mainmenu">
<?php $this->widget('zii.widgets.CMenu',array(
'items'=>array(
array('label'=>'Home',
'url'=>array('/site/index')),
array('label'=>'Kelola Diklat',
'url'=>array('/category/index')),
Hasilnya memberikan link Kelola Diklat dengan tampilan (view) adalah category/index.php.
ke dalam Menu.

  • Modifikasi Tampilan Kategori
Untuk merubah tampilan nya buka file nya di dalam folder berikut:
C:\xampp\htdocs\aplikasiku\protected\views\category lalu edit index.php
Ubah <h1>Categories</h1> menjadi <h1>Pilih Kategori Diklat</h1>
Tampilan listingnya ternyata diarahkan ke _view, buka lagi file
C:\xampp\htdocs\aplikasiku\protected\views\category\_view.php
Ubah
<b><?php echo CHtml::encode($data->getAttributeLabel('idcategory'));
?>:</b>
<?php echo CHtml::link(CHtml::encode($data->idcategory),
array('view', 'id'=>$data->idcategory)); ?>
<br />
<b><?php echo CHtml::encode($data-
>getAttributeLabel('category_name')); ?>:</b>
<?php echo CHtml::encode($data->category_name); ?>
<br />
Menjadi cukup seperti ini
<h2><?php echo CHtml::link(CHtml::encode($data->category_name),
array('view', 'id'=>$data->idcategory)); ?></h2>
Ini akan menjadikan tampilan ketika di klik menu kategori, akan muncul listing data kategori
saja.

  • Modifikasi Isi Halaman
Ketika diklik masing‐masing kategori kita akan dihadapkan pada tampilah nama dari kategori
tersebut beserta link Operations‐nya. Kini kita akan merubah tampilanya menjadi daftar
diklat yang masuk dalam kategori tersebut
a. Pertama masuk ke folder view dari kategori lalu buka file view.php, hapus semua isinya
lalu ganti menjadi berikut ini
<?php
$this->breadcrumbs=array(
'Categories'=>array('index'),
$model->category_name,
);?>
Hal ini akan memberikan tampilan jejak posisi (breadcrumbs) dengan nama kategori.
b. Selain breadcrumbs, tentunya harus ada isinya. Isi dari kategori setelah diklik adalah list
diklat. Ada 5 langkah sbb yaitu:

1) Pada TrainingController definisikan dulu parameter Category pada bagian
ActionCreate. Buka folder controller lalu buka file TrainingController.php atur hingga
tampilanya sama dengan code dibawah ini:
public function actionCreate($id)
{
$model=new Training;
if(isset($_POST['Training']))
{
$model->attributes=$_POST['Training'];
$model->categoryid=$id;
if($model->save())
$this->redirect(array('view','id'=>$model-
>idtraining));
}
$this->render('create',array(
'model'=>$model,
));
}
Dengan kode ini, orang yang akan menambah diklat baru, harus melewati langkah
mengeklik nama kategori dahulu. Ini bermanfaat supaya tidak ada diklat dibuat
tanpa kategori sama sekali.
2) Sekarang saatnya membuat link Menambah Diklat pada view Category. Masuk ke
folder view dari kategori lalu buka file view.php tambahkan kode dibawah ini :
<?php
$this->menu=array(
array('label'=>'Tambah Diklat Baru',
'url'=>array('training/create','id'=>$model->idcategory )),);
?>
3) Ubah juga view dari _form.php dari Training, hilangkan field Categoryid atau untuk
amannya uncheck dengan //
<?php //echo $form->labelEx($model,'categoryid'); ?>
<?php //echo $form->textField($model,'categoryid'); ?>
<?php //echo $form->error($model,'categoryid'); ?>
Perintah diatas tidak digunakan karena pada langkah sebelumnya kita telah
mendefinisikan kategori untuk setiap Diklat yang dipilih, selain itu kalau diaktifkan
juga akan terjadi konflik dualisme kategori.
4) Dibagian view Kategori ini, selain bisa membuat training baru kita juga ingin
menambah peserta ke masing‐masing diklat. Buka CategoryController.php atur
script pada actionView menjadi seperti berikut:
public function actionView($id)
{
$totraining=new Training('search');
$totraining->unsetAttributes();
$totraining->categoryid=$id;
$this->render('view',array(
'model'=>$this->loadModel($id),
'totraining'=>$totraining,
));
}
5) Masuk ke folder view dari kategori lalu buka file view.php, kita ingin menampilkan
listing diklat yang dikategorikan per masing‐masing kategori, tambahkan kode
sebagai berikut:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'training-grid',
'dataProvider'=>$totraining->search(),
//'filter'=>$totraining,
'emptyText'=>'Belum ada training pada kategori ini',
summaryText'=>'',
'columns'=>array(
array(
'name'=>'No',
'type'=>'raw',
'value'=>'$data->idtraining',
),
array(
'name'=>'Nama diklat',
'type'=>'raw',
'value'=>'Chtml::link($data-
>name_training,array(\'training/view\',\'id\'=>$data->idtraining))',
),
array(
'name'=>'Jamlat',
'type'=>'raw',
'value'=>'$data->hours',
),
)));?>
Berhasil sudah anda membuat tampilan statis kategori diklat sampai keisi‐isinya.
  • Modifikasi Subisi Halaman Aplikasi
Langkah ini adalah mirip langkah membuat kategori ke diklat, kita akan membuat peserta
yang dikategorikan per masing‐masing diklat. Hasilnya adalah mirip sebelumnya, kalau
sebelumnya ketika kategori diklik, yang muncul adalah listing diklat, maka langkah ini adalah
jika diklat diklik yang muncul adalah listing peserta diklat. Tentu ada sedikit perbedaan yaitu
tidak dilakukan langkah 2) karena tidak ada sub sub isi halaman, artinya peserta diklat tidak
memiliki anak kategori lagi, di kondisi tertentu bisa saja ada tapi untuk kali ini tidak ada.
Langkah ketiga juga tidak kita ulangi karena kita telah memasukkan pembahasan pembuatan
Mari kita mulai.
a. Pertama masuk ke folder view dari training lalu buka file view.php, hapus semua isinya
lalu ganti menjadi berikut ini
<?php
$this->breadcrumbs=array(
'Categories'=>array('index'),
$model->name_training,
); ?>
Hal ini akan memberikan tampilan jejak posisi (breadcrumbs) dengan nama diklat.
b. Selain breadcrumbs, tentunya harus ada isinya. Isi dari diklat setelah diklik adalah list
peserta. Ada 5 langkah sbb yaitu:
1) Pada ParticipantController definisikan dulu parameter Training pada bagian
ActionCreate. Buka folder controller lalu buka file ParticipantController.php atur
hingga tampilanya sama dengan code dibawah ini:

public function actionCreate($id)
{
$model=new Participant;
if(isset($_POST['Participant']))
{
$model->attributes=$_POST['Participant'];
$model->trainingid=$id;
if($model->save())
$this->redirect(array('view','id'=>$model-
>idparticipant));
}
$this->render('create',array(
'model'=>$model,
));
}
Dengan kode ini, orang yang akan menambah diklat baru, harus melewati langkah
mengeklik nama kategori dahulu. Ini bermanfaat supaya tidak ada diklat dibuat
tanpa kategori sama sekali.
2) Sekarang saatnya membuat link Menambah Peserta pada view Training. Masuk ke
folder view dari Training lalu buka file view.php tambahkan kode dibawah ini :

<?php
$this->menu=array(
array('label'=>'Daftarkan Peserta',
'url'=>array('participant/create','id'=>$model->idtraining )),);
?>
3) Ubah juga view dari _form.php dari Participant, hilangkan field Trainingid atau untuk
amannya uncheck dengan //
<?php //echo $form->labelEx($model,'trainingid'); ?>
<?php //echo $form->textField($model,'trainingid'); ?>
<?php //echo $form->error($model,'trainingid'); ?>?>
Perintah diatas tidak digunakan karena pada langkah sebelumnya kita telah
mendefinisikan Diklat untuk setiap Peserta yang dipilih, selain itu kalau diaktifkan
juga akan terjadi konflik dualisme Diklat.
4) Dibagian view Training ini, selain bisa membuat training baru kita juga ingin
menambah peserta ke masing‐masing diklat. Buka TrainingController.php atur script
pada actionView menjadi seperti berikut:
public function actionView($id)
{
$toparticipant=new Participant('search');
$toparticipant->unsetAttributes();
$toparticipant->trainingid=$id;
$this->render('view',array(
'model'=>$this->loadModel($id),
'toparticipant'=>$toparticipant,
));
}

5) Masuk ke folder view dari Training lalu buka file view.php, kita ingin menampilkan
listing diklat yang dikategorikan per masing‐masing training, tambahkan kode
sebagai berikut: ]
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'participant-grid',
'dataProvider'=>$toparticipant->search(),
//'filter'=>$toparticipant,
'emptyText'=>'Belum ada Peserta yang mendaftar pada diklat ini',
'summaryText'=>'',
'columns'=>array(
array(
'name'=>'No',
'type'=>'raw',
'value'=>'$data->idparticipant',
),
array(
'name'=>'Nama Peserta',
'type'=>'raw',
'value'=>'Chtml::link($data-
>name_participant,array(\'participant/view\',\'id\'=>$data-
>idparticipant))',
),
array(
'name'=>'Jamlat',
'type'=>'raw',
'value'=>'$data->city',
),
)));?>
Satu langkah lagi akan saya tambahkan yaitu tampilan dari Participant, buka folder view,
participant, view.php
  1. Breadcrumbs dari participant
$this->breadcrumbs=array(
'Participants'=>array('index'),
$model->idparticipant,
);
ubah menajdi:
$this->breadcrumbs=array(
'Participants'=>array('index'),
$model->name_participant,
);
  1. Ubah pula operations dari participant
$this->menu=array(
array('label'=>'List Participant', 'url'=>array('index')),
array('label'=>'Create Participant', 'url'=>array('create')),
array('label'=>'Update Participant', 'url'=>array('update',
'id'=>$model->idparticipant)),
array('label'=>'Delete Participant', 'url'=>'#',
'linkOptions'=>array('submit'=>array('delete','id'=>$model-
>idparticipant),'confirm'=>'Are you sure you want to delete this
item?')),
array('label'=>'Manage Participant', 'url'=>array('admin')),
);
Ubah menjadi seperti ini:
$this->menu=array(
array('label'=>'Ubah Peserta', 'url'=>array('update',
'id'=>$model->idparticipant)),
array('label'=>'Hapus Peserta', 'url'=>'#',
'linkOptions'=>array('submit'=>array('delete','id'=>$model-
>idparticipant),'confirm'=>'Are you sure you want to delete this
item?')),
);
  1. Kemudian ubah pula tampilan dari tulisan peserta diklat dari menjadi
<h1><?php echo $model->name_participant; ?></h1>
  1. Data peserta juga ingin kita ubah, dari seperti ini
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'idparticipant',
'name_participant',
'nip',
'city',
'trainingid',
),
)); ?>
Menjadi begini
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'name_participant',
'nip',
'city',
),
)); ?>
Langkah berikutnya, anda bisa berkreasi sendiri tentunya. Misal dihalaman update ingin
diubah, atau halaman Manage menurut anda perlu ditampilkan, halaman create ingin
dimodif dll. Hal penting yang harus diperhatikan adalah bahwa, setiap halaman view adalah
hasil representasi dari proses coding yang telah kita buat di controller, function actionView,
action adalah akan menghasilkan view.php, actionCreate akan menghasilkan create.php dst.
Selamat mencoba....!!!

Featured post

Game PC (BMW M3)