Friday, December 22, 2017
Tugas Trigger Oracle
TUGAS TRIGGER
BASIS DATA LANJUT
Jawab pertanyaan berikut disertai dengan penjelasan.
1. Perubahan pada data hanya diperbolehkan selama jam kerja dari jam 8:45 pagi
sampai 17.30 , dari Senin hingga Jum’at. Buat stored procedure dengan nama
SECURE_DML untuk mencegah DML statement dijalankan diluar dari jam kerja,
dengan menampilkan pesan “ Perubahan pada data hanya diperbolehkan hanya pada jam kerja ”.
2.Buat statement trigger pada tabel EMPLOYEES untuk memanggil prosedur diatas.
3.Implementasikan trigger berikut pada table JOBS sehubungan dengan kenaikan gaji pegawai.
Buat stored procedure dengan nama UPD_EMP_SAL untuk mengupdate jumlah gaji pada table EMPLOYEES. Prosedur ini menerima dua parameter : job id dari gaji yang akan diubah dan nilai minimum salary yang baru. Prosedur ini dijalankan dari trigger yang dibuat pada table JOBS.
4. Lanjutan dari soal nomer 3, buat row trigger dengan nama UPDATE_EMP_SALARY pada table JOBS yang memanggil prosedur UPD_EMP_SAL, pada saat minimum gaji pada table JOBS diubah untuk suatu job_ID tertentu.
Catatan : yang merubah nilai gaji pegawai pada table EMPLOYEES adalah prosedur UPDATE_EMP_SALARY
Jawab !
1. CREATE OR REPLACE TRIGGER secure_dml
BEFORE INSERT ON employees
BEGIN
IF (TO_CHAR(SYSDATE,'DY') IN ('SAT','SUN')) OR
(TO_CHAR(SYSDATE,'HH24:MI') NOT BETWEEN '08:45’ AND '17:30')
THEN RAISE_APPLICATION_ERROR (-20500,'Penyisipan data pada table EMPLOYEES hanya diperbolehkan selama jam kerja');
END IF;
END;
/
2. INSERT INTO employees (employee_id, last_name,first_name, email, hire_date, job_id, salary, department_id) VALUES (300, 'Smith', 'Rob', 'RSMITH', SYSDATE,'IT_PROG', 4500, 60);
3. CREATE OR REPLACE PROCEDURE upd_emp_sal
(p_job_id IN employees.job_id%TYPE, p_min_sal IN employees.salary%TYPE)
IS
CURSOR c_emp_sal_update(cp_job_id employees.job_id%TYPE) IS
SELECT salary
FROM employees
WHERE job_id = cp_job_id
FOR UPDATE OF salary NOWAIT;
BEGIN
FOR v_c IN c_emp_sal_update(p_job_id)
LOOP
IF v_c.salary < p_min_sal THEN
UPDATE employees SET salary = p_min_sal
WHERE CURRENT OF c_emp_sal_update;
END IF;
END LOOP;
END upd_emp_sal;
/
4. CREATE OR REPLACE TRIGGER update_emp_salary
AFTER INSERT OR UPDATE
OF min_salary ON jobs
FOR EACH ROW
BEGIN
IF :NEW.min_salary > :OLD.min_salary THEN
upd_emp_sal(:NEW.job_id, :NEW.min_salary);
END IF;
END update_emp_salary;
/
Download
Monday, December 18, 2017
Dynamic Routing Using Routing Information Protocol (RIP) Packet Tracer
Catatan : Untuk Melakukan konfigurasi Dynamic Routing RIP ada satu kunci yang harus di perhatikan yaitu network id. Network id yang digunakan untuk konfigurasi RIP adalah network id dari lingkup network router itu sendiri tanpa memikirkan Dia (network router lain yang ditujuh). Intinya ini adalah kebalikan dari static routing. Jika static routing menggunakan tujuan network id , tetapi dynamic routing menggunakan network id nya sendiri.
Contoh Beberapa Model dan Konfigurasi RIP
1. Buatlah konfigurasi routing statis & routing dinamis dengan diagram berikut ini [1]:
Keterangan alamat IP :
Router 0 : f0/0 (Router0 --> switch0 ) : 192.168.110.1
f0/1 (Router0 --> Router 1) : 192.168.10.1
Router 1 : f0/0 (Router1 --> Router0 ) : 192.168.10.2
f0/1 (Router1 --> Router 2) : 192.168.20.1
f0/2 (Router1 --> Switch1 ) : 192.168.30.1
Router 2 : f0/0 (Router2 --> switch2 ) : 192.168.120.1
f0/1 (Router2 --> Router 1) : 192.168.20.2
Config RIP Router 0
#conf t
#routing rip
#network 192.168.110.0
#network 192.168.10.0
Config RIP Router 1
#conf t
#routing rip
#network 192.168.10.0
#network 192.168.20.0
#network 192.168.30.0
Config RIP Router 2
#conf t
#routing rip
#network 192.168.120.0
#network 192.168.20.0
2. Buatlah konfigurasi routing statis & routing dinamis dengan diagram berikut ini [2]:
Konfigurasi Alamat ip router seperti pada gambar
Config Router 5
#conf t
#routing rip
#network 1.0.0.0
#network 2.0.0.0
#network 4.0.0.0
Config Router 6
#conf t
#routing rip
#network 2.0.0.0
#network 3.0.0.0
Config Router 7
#conf t
#routing rip
#network 3.0.0.0
#network 4.0.0.0
#network 5.0.0.0
3. Buatlah konfigurasi routing dinamis dengan diagram berikut ini :
Konfigurasi Alamat ip router seperti pada gambar
Config Router A
#conf t
#routing rip
#network 1.0.0.0
#network 2.0.0.0
Config Router B
#conf t
#routing rip
#network 2.0.0.0
#network 3.0.0.0
#network 4.0.0.0
Config Router C
#conf t
#routing rip
#network 5.0.0.0
#network 6.0.0.0
#network 4.0.0.0
Config Router D
#conf t
#routing rip
#network 6.0.0.0
#network 7.0.0.0
4. Buatlah konfigurasi routing dinamis dengan diagram berikut ini [4] :
Konfigurasi Alamat ip router seperti pada gambar
Config Router R1
#conf t
#routing rip
#network 192.168.1.0
#network 192.168.2.0
Config Router R2
#conf t
#routing rip
#network 192.168.2.0
#network 192.168.3.0
Config Router R4
#conf t
#routing rip
#network 192.168.4.0
#network 192.168.5.0
#network 192.168.6.0
5. Buatlah konfigurasi routing dinamis dengan diagram berikut ini [5] :
Konfigurasi Alamat ip router seperti pada gambar
Config Router RA
#conf t
#routing rip
#network 11.0.0.0
#network 12.0.0.0
#network 13.0.0.0
Config Router RB
#conf t
#routing rip
#network 11.0.0.0
#network 10.0.0.0
Config Router RC
#conf t
#routing rip
#network 12.0.0.0
#network 14.0.0.0
Config Router RD
#conf t
#routing rip
#network 13.0.0.0
#network 15.0.0.0
6. Buatlah konfigurasi routing dinamis dengan diagram berikut ini [6] :
Keterangan alamat IP :
Router Rio1 :fa0/0 (Rio1 --> switch) : 10.0.0.1
fa0/1 (Rio1 --> Rio2) : 172.16.1.1
fa0/2 (Rio1 --> Rio5) : 172.20.1.1
Router Rio2 : fa0/0 (Rio2 --> Rio1) : 172.16.1.2
fa0/1 (Rio2 --> Rio3) : 172.17.1.1
Router Rio3 : fa0/0 (Rio3 --> switch) : 192.168.0.1
fa0/1 (Rio3 --> Rio2) : 172.17.1.2
fa0/2 (Rio3 --> Rio4) : 172.18.1.1
Router Rio4 : fa0/0 (Rio4 --> Rio3) : 172.18.1.2
fa0/1 (Rio4 --> Rio2) : 172.19.1.1
Router Rio5 : fa0/0 (Rio5 --> Rio4) : 172.19.1.2
fa0/1 (Rio5 --> Rio1) : 172.20.1.2
Config Router Rio1
#conf t
#routing rip
#versi 2
#network 172.16.0.0
#network 172.20.0.0
#network 10.0.0.0
Config Router Rio2
#conf t
#routing rip
#versi 2
#network 172.16.0.0
#network 172.17.0.0
Config Router Rio3
#conf t
#routing rip
#versi 2
#network 172.17.0.0
#network 172.18.0.0
#network 192.168.0.0
Config Rio4
#conf t
#routing rip
#versi 2
#network 172.18.0.0
#network 172.19.0.0
Config Router Rio5
#conf t
#routing rip
#versi 2
#network 172.19.0.0
#network 172.20.0.0
Download Tugas Laporan disini
Wednesday, December 13, 2017
Membuat Form Login di Codeigniter
Pada Post kali kita akan membuat form login di Codeigniter . Pertama kita buat tabel user berisi username dan password.
1. Buat form login views/login
2. Tambahkan code berikut di controller untuk menampilkan views/login
3. Buat Model login.php di folder models
1. Buat form login views/login
<div class="col-md-3">
<h1>Form Login</h1>
<form method="post" action="<?=base_url();?>hello/proses" >
<label for="username"> Username</label>
<input type="text" class="form-control" name="username" placeholder="Masukan username"><br>
<label for="password">Password</label>
<input type="password" class="form-control" name="password" placeholder="Masukan Password"><br>
<button class="btn btn-primary">Log in</button>
</form>
</div>
Untuk mempercantik tampilan gunakan bootstrap, pada <form action=""> itu adalah tujuan untuk pemrosesan login yang berada di controller.2. Tambahkan code berikut di controller untuk menampilkan views/login
public function login(){
$this->load->view('login' );
}
Cek tampilan form kalian, bisa di edit sesuka hati.3. Buat Model login.php di folder models
<?php
class Login extends CI_Model{
function cek_login($where1,$where){
$sql="SELECT * FROM nama_tabel WHERE username = ? AND password = ?";
return $this->db->query($sql,array($where1,$where));
}
}
4. Panggil Model ke controller
function __construct(){
parent::__construct();
$this->load->model('login' );
}
5. Tambahkan function proses dan untuk logout di controllerpublic function proses(){
$username=$this->input->post('username');
$password=$this->input->post('password');
$where = array(
'username' => $username,
'password' => $password
);
$cek = $this->login->cek_login('nama_tabel',$where)->num_rows();
//jika username dan password benar
if($cek > 0){
$data_session = array(
'username' => $username,
);
$this->session->set_userdata($data_session);
redirect('tujuan_url'); //isi dengan alamat tujuan
}
//jika username dan password salah
else {
$data = '<div class="alert alert-danger"><h5>Maaf User id atau Password Salah</h5></div>';
$ds = array(
'alert' => $data
);
$this->session->set_flashdata($ds);
$this->load->view('login');
}
}
function logout(){
$this->session->unset_userdata('username');
redirect('login');
}
Sekian tutorial membuat login form di Codeigniter , selamat mencoba :)
Tuesday, December 12, 2017
Tutorial Migrate Database MySql to oracle with Sql Developer
Oracle Banyak diminati oleh para administrator database karena keamanan dan kinerjanya yang handal dan dapat dijamin. Kali ini kita akan mempelajari cara migrate database dari mysql ke oracle dengan software sql developer .
Langsung saja untuk alat tempurnya :
Video Tutorial
Thursday, December 7, 2017
Membuat Koneksi dan Query Menampilkan Database di Codeigniter
Kali ini kita akan membahas tentang cara membuat koneksi dan query database di Codeigniter . Sebelumnya anda harus membuat database beserta isi tabelnya di phpmyadmin.
contoh disini tabel menu
Oke sekarang kita edit config database di CI, untuk database, username,password sesuaikan dengan milik anda
Kode diatas merupakan query menampilkan isi dari sebuah tabel. variabel $table nantinya akan di gantikan nama tabel di controller dan $where adalah dimana sebuah kondisi digunakan untuk menfilter data.
Oke sekarang lanjut membuat controller
Lanjut, kita akan membuat menu.php di folder views untuk menampilkan data
contoh disini tabel menu
Oke sekarang kita edit config database di CI, untuk database, username,password sesuaikan dengan milik anda
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost' ,
'username' => 'root' ,
'password' => '' ,
'database' => 'terserahphp' ,
'dbdriver' => '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
);
Buat models.php di folder models , misal namanya Crud.php
<?php
class Crud extends CI_Model{
function edit_data($where ,$table ){
return $this->db->get_where($table,$where);
}
}
Kode diatas merupakan query menampilkan isi dari sebuah tabel. variabel $table nantinya akan di gantikan nama tabel di controller dan $where adalah dimana sebuah kondisi digunakan untuk menfilter data.
Oke sekarang lanjut membuat controller
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Pesan extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->model ('Crud' );
}
kode diatas untuk memanggil model yang bernama Crud.php agar bisa digunakan , lanjut untuk isi dari controller
public function index(){
$where1 = array(
'kategori' => 'makan'
);
$where2 = array(
'kategori' => 'minum'
);
$where3 = array(
'kategori' => 'snack'
);
$data['makan' ] =$this->Crud->edit_data ($where1,'menu' )->result ();
$data['minum' ] =$this->Crud->edit_data ($where2,'menu' )->result ();
$data['snack' ] =$this->Crud->edit_data ($where3,'menu' )->result ();
$this->load->view('menu', $data);
}
$where , kita gunakan untuk filter tampil data, misalkan berdasarkan kategori makan.Lanjut, kita akan membuat menu.php di folder views untuk menampilkan data
<?php foreach ( $makan as $a) { ?>
<div class="col-md-4 col-xs-12">
<div class="row text-center">
<div class="thumbnail">
<img id="gbr" src="img/<?php echo $a->gambar; ?>" >
<h4><?php echo $a->nama; ?>
</h4>Price <?php echo $a->harga; ?>
<?php if ($a->stok > 0){ ?>
<p>Stok : <font color="green">Available</font></p>
<button class="btn btn-warning form-control ">Pesan</button>
<?php }else{ ?>
<p>Stok : <font color="red">Out of Stock</font></p>
<button class="btn btn-warning btn-disabled form-control " disabled>Pesan</button>
<?php } ?>
</div>
</div>
</div>
<?php } ?>
Hasilnya seperti berikut
Selamat Mencoba :)
Subscribe to:
Posts (Atom)