Mengurutkan data dengan metode BubbleSort
Metode gelembung (BubbleSort) atau sering disebut dengan istilah metode penukaran (ExchangeSort) adalah metode yang mendasarkan penukaran dua buah elemen untuk mencapai keadaan urut yang diinginkan. Meskipun metode ini tidak begitu efisien namun cukup mudah untuk dipelajari. Untuk mengurutkan data dengan metode ini ada dua cara yang bisa dilakukan. Yang pertama adalah selalu meletakkan nilai terbesar pada posisi terakhir (posisi ke N). Kemudian elemen dengan nilai paling besar kedua diletakkan pada posisi ke N-1, dan seterusnya. Cara kedua adalah kebalikan cara pertama. Dalam hal ini nilai terkecil menjadi patokan.
Saya mencoba menyajikan pengurutan data dengan menggunakan cara pertama. Logikanya saya gambarkan dengan tabel berikut :
Iterasi ke | A[1] | A[2] | A[3] | A[4] | A[5] |
Awal | 24 | 23 | 56 | 45 | 12 |
I=1 | 23 | 24 | 56 | 45 | 12 |
23 | 24 | 56 | 45 | 12 | |
23 | 24 | 45 | 56 | 12 | |
23 | 24 | 45 | 12 | 56 | |
I=2 | 23 | 24 | 45 | 12 | 56 |
23 | 24 | 45 | 12 | 56 | |
23 | 24 | 12 | 45 | 56 | |
I=3 | 23 | 24 | 12 | 45 | 56 |
23 | 12 | 24 | 45 | 56 | |
I=4 | 12 | 23 | 24 | 45 | 56 |
Tabel di atas mengurutkan 5 elemen. Ilustrasi tabel di atas menunjukkan bahwa untuk vector dengan N elemen akan memerlukan iterasi sebagnyak N-1 kali. Disamping itu bisa diperhatikan pula bahwa apabila nomor iterasi kita tambah dengan banyaknya langkah pada iterasi tersebut besarnya tetap, yaitu sama dengan N. Sebagai contoh, untuk iterasi ke-1 terdapat 4 langkah; iterasi ke-2 terdapat 3 langkah, dan seterusnya. Algoritnya sebagai berikut :
Langkah 0 Baca vector yang akan diurutkan
Langkah 1 Kerjakan langkah 2 untuk I = 1 sampai N-1
Langkah 2 Kerjakan langkah 3 untuk J = 1 sampai N-1
Langkah 3 Test:apakah A[j] > A[j+1] ?
Jika ya, tukarkan nilai kedua elemen tersebut.
Langkah 4 Selesai
Sebagai implementasi dari logika di atas saya mencoba dengan visual basi sebagai berikut :
Textbox atas diberi nama txtkunci
Textbox bawah diberi nama txturut
Sedangkan source codenya sebagai berikut:
Private Sub cmdurut_Click()
Dim i, j As Integer
Dim A(20) As Integer
n = Len(Trim(txtkunci.Text))
For k = 1 To n
A(k) = Asc(Mid(txtkunci.Text, k, 1))
Next k
For i = 1 To n – 1
For k = 1 To n – 1
If A(k) > A(k + 1) Then
d = A(k)
A(k) = A(k + 1)
A(k + 1) = d
End If
Next k
Next i
For i = 1 To n
kar = Chr(A(i))
kalimat = kalimat + kar
txturut.Text = kalimat
Next i
End Sub
Jika di run contoh hasilnya sebagai berikut :
Dekripsi pada Vigenere Cipher
Artikel ini kelanjutan dari vigenere cipher posting saya sebelumnya, untuk dekripsinya desainnya saya tambahkan sebagai berikut :
saya tambahkan tombol cmdDekripsi dan txtplain1 untuk menampilkan hasil dekripsi dan text yang sudah dienkripsi. Sedangkan coding untuk cmdDekripsi adalah sebagai berikut :
Private Sub cmdDekripsi_Click()
panjangcipher = Len(Trim(txtcipher.Text))
panjangkunci = Len(Trim(txtkunci.Text))
j = 1
For x = 1 To panjangcipher
karcipher = Mid(txtcipher.Text, x, 1)
karkunci = Mid(txtkunci.Text, j, 1)
If karcipher = ” ” Then
hasil = hasil + ” ”
j = j – 1
Else
Adovigenere.RecordSource = “select * from tblvigenere where kunci = ‘” + karkunci + “‘”
Adovigenere.Refresh
For y = 1 To 26
sql = Adovigenere.Recordset.Fields(y)
If (sql = karcipher) Then
cetak = Chr(y + 64)
hasil = hasil + cetak
End If
Next y
End If
If j = panjangkunci Then
j = 1
Else
j = j + 1
End If
Next x
txtplain1.Text = hasil
End Sub
Oke akhirnya selamat mencoba. Semoga jadi ya?
Vigenere Cipher
Pada artikel sebelumnya saya mencoba menerapkan Julius Caesar Enkripsi dengan menggunakan Visual Basic dan php, kali ini saya akan mencoba menerapkan salah satu metode enkripsi yaitu Vigenere Cipher.
Vigenere Cipher pertama kali diusulka oleh Blaise de Vigenere dari pengadiln Henry III di Perancis pada abad 16. Vigenere menggunakan table Vigenere dalam melakukan enkripsi. Tabel Vinegerenya seperti berikut :
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | ||
A | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
B | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | |
C | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | |
D | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | |
E | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | |
F | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | |
G | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | |
H | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | |
I | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | |
J | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | |
K | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | |
L | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | |
M | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | |
N | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | |
O | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | |
P | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | |
Q | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | |
R | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | |
S | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | |
T | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | |
U | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | |
V | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | |
W | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | |
X | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | |
Y | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | |
Z | Z | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y |
Tabel di atas sangat berhubungan dengan caesar cipher karena menggunakan pergeseran juga. Pada baris pertama pergeserannya adalah 0 (nol) kemudian baris kedua pergeserannya adalah 1 (satu) dan seterusnya sampai baris terakhir pergeserannya adalah 25. dengan demikian dalam penerapannya tabel vigenere tidak dibuatpun bisa, artinya nantinya tidak perlu membuat database beserta tabel vigenerenya. Namun jika mau dikembangkan akan lebih baik jika digunakan database dan tabel sendiri, apalagi jika nantinya isi dari tabel vigenerenya akan dimodifikasi, sehingga akan lebih sulit untuk dipecahkan alias didekripsikan oleh orang yang ingin berhak.
Misalkan seorang jenderal mengirim pesan kepada komandan perang di medan pertempuran pesannya sebagai berikut :
Pesan : SERANGAN FAJAR
Kata Kunci : PAGI
Cara mengenkripsinya kata kunci disejajarkan dengan pesan tersebut, sehingga hasilnya seperti berikut :
Plaintext | S | E | R | A | N | G | A | N | F | A | J | A | R | |
Kata Kunci | P | A | G | I | P | A | G | I | P | A | G | I | P | |
Ciphertext | H | A | X | I | C | G | G | V | U | A | P | I | G |
Ambil contoh S dengan P maka cara mencari ciphertextnya ditabel vigenere dilihat kolom S dan cari baris P maka hasil pertemannya adalah H, begitu juga untuk seterusnya.
Lalu bagaimana kalau dicoba dengan Visual Basic dan MySql ?
Pertama buat dahulu database dan tabelnya, atau anda bisa download saja.
Berikutnya buat desainnya seperti berikut :
Textbox untuk PLAINTEXT namenya adalah txtplain
Textbox untuk KUNCI namenya adalah txtkunci
Textbox untuk CIPHER namenya adalah txtcipher
Tombol Enkrisi namenya adalah cmdEnkripsi
Adodc1 namenya adalah Adovigenere
Sedangkan untuk Source codenya adalah
Private Sub cmdEnkripsi_Click()
panjangplain = Len(Trim(txtplain.Text))
j = 1
For I = 1 To panjangplain
kar = Mid(txtplain.Text, I, 1)
IndexAscii = Asc(kar) – 64
panjangkunci = Len(Trim(txtkunci.Text))
If kar = ” ” Then
data= ” ”
j = j – 1
Else
karkunci = Mid(txtkunci.Text, j, 1)
Adovigenere.RecordSource = “select * from tblvigenere where kunci = ‘” + karkunci + “‘”
Adovigenere.Refresh
data = Adovigenere.Recordset.Fields(IndexAscii)
End If
If j = panjangkunci Then
j = 1
Else
j = j + 1
End If
sandi = sandi +data
Next I
txtcipher.Text = sandi
End Sub
Private Sub txtkunci_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub txtplain_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Sehingga jika dirun hasilnya seperti berikut :
Enkripsi Julius Caesar
Bagi orang yang memiliki data pribadi, atau data tertentu yang hanya boleh diketahui orang tertentu saja, tentu dia menginginkan agar data yang dia miliki hanya dia dan orang-orang tertentu saja yang bisa melihatnya. Contoh sebuah surat, apabila surat yang akan kita kirim adalah surat yang isinya rahasia, maka tentunya isi surat tersebut dimasukkan ke dalam amplop. Andaikata ada orang yang berniat tidak baik kemudian membuka amplop tersebut, maka bagaimana caranya agar isi surat tersebut tidak bisa dibaca oleh orang tersebut. Istilahnya isi surat tersebut sudah dienkripsi sehingga pembaca surat tersebut harus mendekripsikan agar bisa membacanya. Untuk bisa mendeskripsikannya maka perlu tahu caranya, atau metode enkripsi yang digunakan oleh sang penulis surat.
Enkripsi adalah suatu proses yang melakukan perubahan sebuah kode dari yang bisa dimengerti menjadi sebuah kode yang tidak bisa dimengerti (tidak berbaca). Enkripsi bisa diartikan sebagai kode atau chipper. Sebuah chiper menggunakan suatu algoritma yang dapat mengkodekan semua aliran data (stream) bit dari sebuah pesan menjadi cryptogram yang tidak dimengerti (unintelligible).
3 (tiga) kategori enkripsi, yaitu :
1. Kunci enkripsi rahasia. Dalam hal ini ada sebuah kunci rahasia yang digunakan untuk mengenkripsi dan sekaligus digunakan untuk mendeskripsi.
2. Kunci enkripsi public. Dalam hal ini ada dua kunci yang digunakan. Satu untuk enkripsi dan satunya untuk deskripsi.
3. Fungsi “one way”, atau satu arah adalah suatu fungsi dimana informasi dienkripsi untuk menciptakan “signature” dari informasi asli yang bisa digunakan untuk keperluan autentikasi.
Cryptography adalah suatu ilmu ataupun seni mengamankan pesan, dan dilakukan oleh cryptographer. Sedang, cryptanalysis adalah suatu ilmu dan seni membuka (breaking) ciphertext dan orang yang melakukannya disebut cryptanalyst.
Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita [bruce Schneier – Applied Cryptography]
Cryptographic system atau cryptosystem adalah suatu fasilitas untuk mengkonversikan plaintext ke ciphertext dan sebaliknya. Dalam sistem ini, seperangkat parameter yang menentukan transformasi pencipheran tertentu disebut suatu set kunci. Proses enkripsi dan dekripsi diatur oleh satu atau beberapa kunci kriptografi. Secara umum, kunci-kunci yang digunakan untuk proses pengenkripsian dan pendekripsian tidak perlu identik, tergantung pada sistem yang digunakannya
Suatu pesan yang tidak disandikan disebut sebagai plaintext ataupun dapat disebut juga sebagai cleartext. Proses yang dilakukan untuk mengubah plaintext ke dalam ciphertext disebut encryption atau enchiperment. Sedangkan proses untuk mengubah chipertext kembali ke plaintext disebut decryption atau decipherment. Secara sederhana istilah-istilah di atas dapat digambarkan sebagai berikut :
Jauh sebelum ada enkripsi di dunia maya, Julius Caesar ternyata sudah menggunakan enkripsi dalam menulis pesan untuk para jenderalnya. Cara yang digunakan Julius Caesar adalah dengan menggeser setiap huruf dalam pesan yang dia kirimkan. Sebagai contoh jika pergeserannya adalah penambahan tiga karakter, maka :
Huruf asli : A B C D E F G H I J K L M O P Q R S T U V W X Y Z
Huruf sandi : D E F G H I J K L M O P Q R S T U V W X Y Z [ \ ]
Sebagai contoh dasar apabila menggunakan Visual Basic desain formnya seperti berikut:
TextBox paling atas diberinama txtplain
TextBox bawahnya lagi diberinama txtchipper
TextBox paling bawa diberinama txtplain1
Ada dua Command yang digunakan untuk mengenkripsi dan satunya lagi untuk mendekripsi.
Sedangkan coding untuk kedua tombol tersebut adalah
Private Sub cmdenkripsi_Click()
n = Len(Trim(txtplain.Text))
For i = 1 To n
kar = Mid(txtplain.Text, i, 1)
nascii = Asc(kar)
ntambah = nascii + 3
sandi = Chr(ntambah)
xsandi = xsandi + sandi
Next i
txtchipper.Text = xsandi
End Sub
Private Sub cmddekripsi_Click()
n = Len(Trim(txtchipper.Text))
For i = 1 To n
kar = Mid(txtchipper.Text, i, 1)
nascii = Asc(kar)
nkurang = nascii – 3
sandi1 = Chr(nkurang)
xsandi1 = xsandi1 + sandi1
Next i
txtplain1.Text = xsandi1
End Sub
Sehingga jika dirun hasilnya seperti berikut :
begitulah hasilnya kalau dicoba dengan Visual Basic. Bagaimana kalau dicoba dengan php ? sekalian saja dicoba dengan membuat desain formnya seperti berikut :
sedangkan scriptnya sebagai berikut :
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>Julius Caesar</title>
</head>
<body>
<?
if ($_POST[‘submit1’])
{
$n = strlen(trim($_POST[‘plain’]));
for ($i=1; $i<= $n; $i++) {
$w = substr($_POST[‘plain’], $i-1, 1);
$x = ord($w);
$xx = chr($x + 3);
$sandi = $sandi . $xx;
}
$hasilplain = $sandi;
}
else if ($_POST[‘submit2’])
{
$n = strlen(trim($_POST[‘plain’]));
for ($i=1; $i<= $n; $i++) {
$w1 = substr($_POST[‘plain’], $i-1, 1);
$x1 = ord($w1);
$xx1 = chr($x1 + 3);
$sandi1 = $sandi1 . $xx1;
}
$hasilplain = $sandi1; //untuk chipper text
$n = strlen(trim($_POST[‘chipper’]));
for ($i=1; $i<= $n; $i++) {
$w = substr($_POST[‘chipper’], $i-1, 1);
$x = ord($w);
$xx = chr($x – 3);
$sandi = $sandi . $xx;
}
$hasilchipper = $sandi; //untuk plain text bawah
}
?>
<form method=”POST” action=”<?php echo $_SERVER[‘PHP_SELF’]; ?>””>
<table>
<tr><td>Plain Text</td><td>:</td><td><input type=”text” name=”plain” value = “<? echo $_POST[‘plain’] ;?>” /></td> </tr>
<tr><td></td><td></td><td>
<input type=”submit” name=”submit1″ value=”Enkripsi” />
</td></tr>
<tr><td>Chipper Text</td><td>:</td><td>
<input type=”text” name=”chipper” value = “<? echo “$hasilplain” ; ?>”/></td> </tr>
<tr><td></td><td></td><td>
<input type=”submit” name=”submit2″ value=”Dekripsi” />
</td></tr>
<tr><td>Plain Text</td><td>:</td><td><input type=”text” name=”plain1″ value =”<? echo “$hasilchipper”; ?>” /></td> </tr>
</table>
</form>
</body>
</html>
jika dijalankan hasilnya sebagai berikut :
nah jadi juga akhirnya….
makan dan bicara
Inilah yang terjadi pada elit politik kita. Saling serang, saling menyindir, saling mencaci, bahkan ndak tanggung-tanggung aib seseorang bisa saja terlontar, walapun itu belum tentu benar. Saya miris melihat itu. Apakah sudah sedemikiankah demi kekuasaan harus saling serang. Saya rakyat biasa. enjoy saja menyaksikan semua ini, namun dalam hati kecil saya biarlah mereka yang diatas saling berargument, asal tidak saling menjatuhkan, tidak saling menghina, namu tetap santun dan terjaga. Toh segala muara dari pilpress ini ada ditangan rakyat. Elit politik yang banyak bicara, rakyat yang menentukan. Maka berhati-hatilah bicara (kata Mario Teguh) . Dua masalah yang sering muncul dalam hidup ini adalah :
1. Apa yang kita makan
2. Apa yang kita ucapkan
How to create a guestbook ?
Bagaimana sih membuat buku tamu yang mudah ? pakai php ?
Ohhh. Langkahnya sederhana saja. Pertama siapkan dahulu web servernya. Kemudian gunakan dreamweaver agar proses pembuatannya tinggal klak klik saja. Kalaupun ditambah coding ya sedikitlah. Oke ? siapkan folder untuk menyimpan file-file webnya.
Saya menggunakan AppServ untuk web servernya, Dreamweaver untuk editornya, dan mysql untuk DBMSnya.
Berikutnya buat database dan tablenya, saya sertakan sebagai contoh DDL dan DMLnya sebagai berikut :
Create database tamu;
CREATE TABLE `bukutamu` (
`id` int(11) NOT NULL auto_increment,
`nama` varchar(35) NOT NULL,
`email` varchar(35) NOT NULL,
`komentar` mediumtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
INSERT INTO `bukutamu` VALUES (1, ‘Hary’, ‘hary@amik-kebumen.ac.id’, ‘Hallo semua’);
INSERT INTO `bukutamu` VALUES (2, ‘Hary’, ‘harys06@yahoo.co.id’, ‘Baik baik’);
INSERT INTO `bukutamu` VALUES (3, ‘Wiwit’, ‘wiwit09@yahoo.co.id’, ‘apik apik bae\r\n’);
INSERT INTO `bukutamu` VALUES (4, ‘Agus’, ‘agus@yahoo.com’, ‘Siip\r\nah\r\n’);
INSERT INTO `bukutamu` VALUES (5, ‘Sunaryo’, ‘naryo@gmail.com’, ‘ya benar’);
INSERT INTO `bukutamu` VALUES (6, ‘Gunawan’, ‘gun99@gmail.com’, ‘Sukses selalu\r\n’);
INSERT INTO `bukutamu` VALUES (7, ‘Gun Gun’, ‘gun89@gmail.com’, ‘dadi ora ya ?’);
INSERT INTO `bukutamu` VALUES (8, ‘jejel’, ‘jel@yahoo.co.id’, ‘mlebu’);
Buat folder untuk menyimpan file-file websitenya, saya contohkan seperti berikut:
Kelihatan bahwa saya menggunakan 3 folder dengan hirarki folder bukutamu dan image berada di dalam folder Website.
Langkah berikutnya buka Dreamweaver (saya gunakan Dreamweaver 8), buka Menu > Site > New Site
Isikan seperti di atas, kemudian Next. Kemudian muncul
Set seperti di atas juga, kemudian Next. Sehingga muncul jendela lagi
Diset seperti di atas juga, kemudian Next. Sehingga muncul menu lagi
Diset seperti di atas juga, kemudian Next. Muncul jendela seperti berikut
Diset seperti di atas juga, kemudian Next. Muncul jendela dan ada Pilihan Yes, enable check in and check out dan No, do not enable check in and check out. Pilih No, do not enable check in and check out dan kemudian Next. Kemudian Done.
Tampilan di atas menunjukkan file-file gambar dari template Healht & Nutrition – Home Page yang sudah dipilih akan dicopykan ke folder mana ? dari tampilan diatas saya arahkan ke folder image (C:\AppServ\www\Website\image) maksudnya saya agar image-image yang saya gunakan terkumpul di folder itu dan tidak tercampur dengan yang lain. Kemudian klik tombol Copy. Sehingga hasilnya seperti berikut :
Berikutnya mulai dengan proses pembuatan website. Pertama buat dahulu web untuk Home Pagenya, langkahnya > File > New > General > Starter Pages > Healht & Nutrition – Home Page > Create, kemudian Keluar menu Save As, beri nama file index dengan of typenya adalah PHP Files. File tersebut disimpan di Folder Website (C:\AppServ\www\Website). Kemudian keluar jendela lagi seperti berikut :
Tampilan di atas menunjukkan file-file gambar dari template Healht & Nutrition – Home Page yang sudah dipilih akan dicopykan ke folder mana ? dari tampilan diatas saya arahkan ke folder image (C:\AppServ\www\Website\image) maksudnya saya agar image-image yang saya gunakan terkumpul di folder itu dan tidak tercampur dengan yang lain. Kemudian klik tombol Copy. Sehingga hasilnya seperti berikut :
Selanjutnya pada menu food science (sebelah kiri) diganti textnya menjadi Buku Tamu, kemudian text Buku Tamu tersebut diblok dan pada Combo Link diisikan “bukutamu/index.php” seperti jendela berikut :
Setelah tampak seperti tampilan diatas, maka langkah selanjutnya file tersebut di Save As saja dengan nama index.php dan disimpan di folder bukutamu (C:\AppServ\www\Website\bukutamu) apabila ada pesan Update Link, maka pilihannya adalah Yes. Hirarkinya bisa dilihat juga di dreamweaver seperti berikut :
Kelihatan ada dua index.php, index.php yang bawah sebagai Home Page dan index.php yang ada di folder bukutamu adalah file web yang digunakan untuk menampilkan buku tamu. Kemudian buka index.php yang ada pada folder buku tamu.
Hapus text WELCOME MESSAGE
Hapus text This Home Page layout makes a great starting point for your website. Virtually all of the content is customizable, including the images, the text, and the links. You can decide whether to keep the existing graphics or swap them out for pictures of your own dan seterusnya ke bawah dihapus juga.
Kemudian kursor akan berada di kiri tengah, agar kursor terletak di atas, pada Properties di bawah cari Vert dan pilih Top. Sehingga tampak seperti berikut :
Selanjutnya pada jendela Aplication (kanan atas) buka Tab Databases kemudian klik tanda + kemudian MySQL Connection sehingga muncul jendela sebagai berikut :
Diset sesuai di atas, untuk user name dan password bisa disesuaikan dengan user name dan password databasenya. Disini saya mencoba menggunakan root dan password rootnya.
Hasilnya bisa dilihat seperti jendela di atas. Setelah koneksi dibuat langkah selanjutnya adalah membuat recordset, langkahnya buka dahulu toolbar Application pada kiri atas dan pilih Recordset
Menu recordset sebagai berikut :
Saya set seperti di atas, sort saya aktifkan berdasarkan id dan Descending, dengan maksud postingan terakhir akan tampil paling atas. Kemudian OK dan OK.
Selanjutnya letakkan kursor di bawah text “Silahkan mengisi buku tamu” kemudian klik Dynamic Table disebelah kanan Icon Recordset, sehingga keluar Jendela Dynamic Table seperti berikut :
Saya set seperti di atas, pada Show saya set 10, maksudnya dalam satu halaman nantinya menampilkan 10 data saja, data yang lain ada di halaman berikutnya.
Kemudian dari tampilan di atas dimodif menjadi seperti berikut :
Sesuai dengan tampilan yang saya lingkari, cara memodifnya saya rubah sedikit codingnya (saya tebalkan) seperti berikut :
<?php require_once(‘../Connections/koneksi.php’); ?>
<?php
$maxRows_RecordsetTamu = 10;
$pageNum_RecordsetTamu = 0;
if (isset($_GET[‘pageNum_RecordsetTamu’])) {
$pageNum_RecordsetTamu = $_GET[‘pageNum_RecordsetTamu’];
}
$startRow_RecordsetTamu = $pageNum_RecordsetTamu * $maxRows_RecordsetTamu;
mysql_select_db($database_koneksi, $koneksi);
$query_RecordsetTamu = “SELECT nama, email, komentar FROM bukutamu ORDER BY id DESC”;
$query_limit_RecordsetTamu = sprintf(“%s LIMIT %d, %d”, $query_RecordsetTamu, $startRow_RecordsetTamu, $maxRows_RecordsetTamu);
$RecordsetTamu = mysql_query($query_limit_RecordsetTamu, $koneksi) or die(mysql_error());
$row_RecordsetTamu = mysql_fetch_assoc($RecordsetTamu);
if (isset($_GET[‘totalRows_RecordsetTamu’])) {
$totalRows_RecordsetTamu = $_GET[‘totalRows_RecordsetTamu’];
} else {
$all_RecordsetTamu = mysql_query($query_RecordsetTamu);
$totalRows_RecordsetTamu = mysql_num_rows($all_RecordsetTamu);
}
$totalPages_RecordsetTamu = ceil($totalRows_RecordsetTamu/$maxRows_RecordsetTamu)-1;
?><!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<!– DW6 –>
<head>
<!– Copyright 2005 Macromedia, Inc. All rights reserved. –>
<title>Home Page</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<link rel=”stylesheet” href=”../image/mm_health_nutr.css” type=”text/css” />
<script language=”JavaScript”>
//————— LOCALIZEABLE GLOBALS —————
var d=new Date();
var monthname=new Array(“January”,”February”,”March”,”April”,”May”,”June”,”July”,”August”,”September”,”October”,”November”,”December”);
//Ensure correct for language. English is “January 1, 2004″
var TODAY = monthname[d.getMonth()] + ” ” + d.getDate() + “, ” + d.getFullYear();
//————— END LOCALIZEABLE —————
</script>
</head>
<body bgcolor=”#F4FFE4″>
<table width=”100%” border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr bgcolor=”#D5EDB3″>
<td width=”382″ colspan=”3″ rowspan=”2″><img src=”../image/mm_health_photo.jpg” alt=”Header image” width=”382″ height=”101″ border=”0″ /></td>
<td width=”378″ height=”50″ colspan=”3″ valign=”bottom” align=”center” nowrap=”nowrap”>insert website name</td>
<td width=”100%”> </td>
</tr>
<tr bgcolor=”#D5EDB3″>
<td height=”51″ colspan=”3″ valign=”top” align=”center”>OPTIONAL TAGLINE HERE</td>
<td width=”100%”> </td>
</tr>
<tr>
<td colspan=”7″ bgcolor=”#5C743D”><img src=”../image/mm_spacer.gif” alt=”” width=”1″ height=”2″ border=”0″ /></td>
</tr>
<tr>
<td colspan=”7″ bgcolor=”#99CC66″ background=”../image/mm_dashed_line.gif”><img src=”../image/mm_dashed_line.gif” alt=”line decor” width=”4″ height=”3″ border=”0″ /></td>
</tr>
<tr bgcolor=”#99CC66″>
<td colspan=”7″ height=”20″> <script language=”JavaScript”>
document.write(TODAY); </script> </td>
</tr>
<tr>
<td colspan=”7″ bgcolor=”#99CC66″ background=”../image/mm_dashed_line.gif”><img src=”../image/mm_dashed_line.gif” alt=”line decor” width=”4″ height=”3″ border=”0″ /></td>
</tr>
<tr>
<td colspan=”7″ bgcolor=”#5C743D”><img src=”../image/mm_spacer.gif” alt=”” width=”1″ height=”2″ border=”0″ /></td>
</tr>
<tr>
<td width=”165″ valign=”top” bgcolor=”#5C743D”>
<table border=”0″ cellspacing=”0″ cellpadding=”0″ width=”165″ id=”navigation”>
<tr>
<td width=”165″> <br />
<br /></td>
</tr>
<tr>
<td width=”165″><a href=”javascript:;”>topics</a></td>
</tr>
<tr>
<td width=”165″><a href=”javascript:;” class=”navText”>guidelines</a></td>
</tr>
<tr>
<td width=”165″><a href=”javascript:;” class=”navText”>educators</a></td>
</tr>
<tr>
<td width=”165″><a href=”javascript:;”>special needs</a></td>
</tr>
<tr>
<td width=”165″><a href=”index.php”>Buku Tamu</a> </td>
</tr>
</table>
<br />
<br />
<br />
<br /> </td>
<td width=”50″><img src=”../image/mm_spacer.gif” alt=”” width=”50″ height=”1″ border=”0″ /></td>
<td width=”305″ colspan=”2″ valign=”top”><img src=”../image/mm_spacer.gif” alt=”” width=”305″ height=”1″ border=”0″ /><br />
<br />
<br />
<table border=”0″ cellspacing=”0″ cellpadding=”0″ width=”305″>
<tr>
<td class=”pageName”> </td>
</tr>
<tr>
<td valign=”top” class=”bodyText”><p>Silahkan mengisi buku tamu</p>
<table width=”337″ border=”0″>
<tr>
<td width=”67″> </td>
<td width=”10″> </td>
<td width=”214″> </td>
</tr>
<?php do { ?>
<tr>
<td>Nama</td>
<td>:</td>
<td><?php echo $row_RecordsetTamu[‘nama’]; ?></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td><?php echo $row_RecordsetTamu[’email’]; ?></td>
</tr>
<tr>
<td>Komentar</td>
<td>:</td>
<td><?php echo $row_RecordsetTamu[‘komentar’]; ?></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<?php } while ($row_RecordsetTamu = mysql_fetch_assoc($RecordsetTamu)); ?>
</table></td>
</tr>
</table>
<br />
<br /> </td>
<td width=”50″><img src=”../image/mm_spacer.gif” alt=”” width=”50″ height=”1″ border=”0″ /></td>
<td width=”190″ valign=”top”><br />
<br />
<table border=”0″ cellspacing=”0″ cellpadding=”0″ width=”190″>
<tr>
<td width=”10″><img src=”../image/mm_spacer.gif” alt=”” width=”10″ height=”1″ border=”0″ /></td>
<td width=”170″><br />
<p><span class=”subHeader”>TITLE HERE</span><br />
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam. </p>
<p><span class=”subHeader”>TITLE HERE</span><br />
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam. </p>
<p><span class=”subHeader”>TITLE HERE</span><br />
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam. </p>
<br />
<br /> </td>
<td width=”10″> </td>
</tr>
</table> </td>
<td width=”100%”> </td>
</tr>
<tr>
<td width=”165″> </td>
<td width=”50″> </td>
<td width=”167″> </td>
<td width=”138″> </td>
<td width=”50″> </td>
<td width=”190″> </td>
<td width=”100%”> </td>
</tr>
</table>
</body>
</html>
<?php
mysql_free_result($RecordsetTamu);
?>
Sampai sini sudah bisa dilihat di browser hasilnya seperti berikut :
Sudah kelihatan bahwa data sudah bisa ditampilkan, langkah selanjutnya adalah membuat link untuk first prev next last, fasilitas ini disediakan oleh dreamweaver, tinggal diaktifkan saja. Cara mengaktifkannya letakkan kursor di bawah table Recordset atau table yang menampilkan buku tamu. Kemudian klik Recordset Navigation Bar seperti gambar di bawah ini
Kemudian keluar jendela Recordset Navigation Bar, pada Recordset pilih RecordsetTamu dan pada Display using ada pilihan Text dan Images, saya mencoba memili Text kemudian klik OK.
Sehingga navigasinya muncul, namun sampai disini apabila dilihat di browser belum bisa muncul karena data yang masuk pada table bukutamu baru 8 data, sedangkankan pada RecordsetTamu sudah diset 10, jadi jika datanya belum lebih dari 10 tentu navigasinya belum muncul. Agar muncul navigasinya saya tambahkan datanya dengan memasukkan DML di SQL sebagai berikut :
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Hary’, ‘hary@amik-kebumen.ac.id’, ‘Alhamdulilan OL juga’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Aris’, ‘aris@yahoo.com’, ‘iya betul dah OL’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Hary’, ‘hary@amik-kebumen.ac.id’, ‘coba diposting baru’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘wiwin’, ‘wiwin90@yahoo.co.id’, ‘aku ikut posting deh’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Hary’, ‘hary@amik-kebumen.ac.id’, ‘nah itu sip’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘wiwin’, ‘wiwin90@yahoo.co.id’, ‘Kuliah lagi mulai kapan ya’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Hary’, ‘hary@amik-kebumen.ac.id’, ‘Oke jadwal kuliah dah aku psoting’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘wiwin’, ‘wiwin90@yahoo.co.id’, ‘Ya trims infonya’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Hary’, ‘hary@amik-kebumen.ac.id’, ‘Sama-sama’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Ani’, ‘any908@yahoo.com’, ‘Mohon info pendaftaran donk’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Hary’, ‘hary@amik-kebumen.ac.id’, ‘info PMB ada diindex bisa dilihat kok’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Ani’, ‘any908@yahoo.com’, ‘OK trim sudah aku copy’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Aris’, ‘aris@yahoo.com’, ‘Sertifikasi Jeni akan dimulai kapan Pak’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Hary’, ‘hary@amik-kebumen.ac.id’, ‘ya besok aku psoting deh’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘wiwin’, ‘wiwin90@yahoo.co.id’, ‘kami tunggu pak’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Hary’, ‘hary@amik-kebumen.ac.id’, ‘ya insya allh besok dah ada di web ini juga terpampang di Kampus’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘wiwin’, ‘wiwin90@yahoo.co.id’, ‘Dengar-dengar ada seminar di AULA AMIK’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Hary’, ‘hary@amik-kebumen.ac.id’, ‘ya tapi kemarin minggu’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘wiwin’, ‘wiwin90@yahoo.co.id’, ‘walah telat donk’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Hary’, ‘hary@amik-kebumen.ac.id’, ‘ya, penyelenggaranya Yayasan PGRI’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Ani’, ‘any908@yahoo.com’, ‘Pembicara dari mana’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Hary’, ‘hary@amik-kebumen.ac.id’, ‘UNNES’);
INSERT INTO bukutamu (nama,email,komentar) VALUES (‘Ani’, ‘any908@yahoo.com’, ‘oh, ya thanks’);
Ok sampai disini datanya sudah ada 31 tinggal dilihat di browser sudah muncul ada belum ? hasilnya seperti berikut :
Kelihatan bahwa navigatornya muncul, bisa dicoba Next dan Last. Dalam satu halaman terlihat ada 10 postingan yang ditampilkan, namun jika saya ingin merubahnya sederhana saja, saya akan mencoba menampilkan 5 psotingan saja. Maka cukup dengan merubah coding paling atas seperti berikut :
<?php require_once(‘../Connections/koneksi.php’); ?>
<?php
$currentPage = $_SERVER[“PHP_SELF”];
$maxRows_RecordsetTamu = 5;
$pageNum_RecordsetTamu = 0;
if (isset($_GET[‘pageNum_RecordsetTamu’])) {
$pageNum_RecordsetTamu = $_GET[‘pageNum_RecordsetTamu’];
}
Hanya saya ganti nilai $maxRows_RecordsetTamu = 10; menjadi $maxRows_RecordsetTamu = 5; kemudian simpan dan coba, sehingga hasilnya bisa dilihat di browser seperti berikut :
Sudah muncul, bisa dicoba dengan klik Next, Last, Previous, First.
Selanjutnya untuk mengentry buku tamu, perlu dibuat page baru lagi. Dari file index.php yang ada dalam buku tamu, saya Save As saja kemudian table yang menampilkan data dihapus, termasuk table yang didalamnya berisi Navigator sehingga menjadi seperti berikut :
Letakkan kursor di table tengah yang kosong tersebut seperti di atas. Kemudian klik Record Insertion Form Wizard
Kemudian keluar jendela lagi yang perlu diset seperti berikut :
Diset seperti di atas, yang perlu diperhatikan, pada Form fields ada 4 field yaitu id, nama, email, dan komentar, khusus untuk id dihilangkan dengan cara diklik kemudian klik tanda min (-), sehingga id tidak ada dalam daftar Form fields.
Kemudian perlu dicek satu-satu mulai dari field nama, mestinya menggunakan Display as Text field, untuk email juga demikian, namun khusus untuk komentar menggunakan Display as Text area. Kemudian OK. Sehingga hasilnya seperti berikut :
Sampai disini perlu disimpan filenya, dan kembali ke file index.php yang ada pada folder bukutamu. Kemudian blok text mengisi dari kalimat Silahkan mengisi buku tamu. Kemudian buka menu Insert > Hyperlink sehingga muncul jendela sebagai berikut :
Bisa diset seperti di atas dan kemudian OK. Kemudian jalankan di browser index.php, maka buku tamunya sudah jadi.
Sebagai arsip digital bisa artikel ini bisa didownload.
Menambah menu Dosen dengan struts
Pada artikel ini saya coba memanfaatkan skill exam jeni 3 yang sudah ada strutsnya, saya akan mencoba menambahkan menu Dosen, artikel ini juga kelanjutan dan artikel saya yan berjudul TRIK MENGERJAKAN SKILL EXAM JENI 3. Langkah-langkahnya sebagai berikut :
Ok, Bikin dahulu table dosen :
DDL dan DML seperti berikut :
CREATE TABLE `dosen` (
`nidn` int(10) NOT NULL default ‘0’,
`nama` varchar(45) NOT NULL,
`alamat` varchar(128) default ”,
`hp` varchar(15) default ”,
PRIMARY KEY (`nidn`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `dosen` VALUES (613036801,’Heru Krisdyantoro Hadi, S.Kom’,’Gombong’,’08156877777′);
INSERT INTO `dosen` VALUES (613127802,’Hary Susanto, S.Kom’,’Karanganyar’,’08122222222′);
Buka menu-left.jsp
Rubahlah menjadi
<%@taglib uri=”http://jakarta.apache.org/struts/tags-logic” prefix=”logic”%>
<%@ taglib uri=”http://jakarta.apache.org/struts/tags-html” prefix=”html” %>
<h3>Layanan Kami</h3>
<ul>
<li><html:link page=”/SeminarList.do” title=”List All Seminar”>Daftar Seminar</html:link></li>
<li><html:link page=”/CompanyList.do” title=”List All Company”>Daftar Rekanan</html:link></li>
<li><html:link page=”/DosenList.do” title=”List All Dosen”>Daftar Dosen</html:link></li>
<li><html:link page=”/AccountList.do” title=”List All Account”>Daftar User</html:link></li>
</ul>
<br/>
<logic:notPresent property=”employee” scope=”session”>
<ul class=”leftbox borderedlist”>
</ul>
</logic:notPresent>
<logic:present property=”employee” scope=”session”>
<h3 class=”leftbox header_small”>Admin Menu</h3>
<ul class=”leftbox borderedlist”>
<li><html:link page=”/SeminarForm.do” title=”Form to add a seminar event”>Add New Seminar</html:link></li>
<li><html:link page=”/SeminarList.do” title=”Modify existing seminar”>Modify Existing Seminar</html:link></li>
</ul>
<hr />
<ul class=”leftbox borderedlist”>
<li><html:link page=”/AccountForm.do” title=”Add New User or Employee Account”>Add New Account</html:link></li>
<li><html:link page=”/AccountList.do” title=”Add Modify existing Account”>Modify Existing Account</html:link></li>
</ul>
<ul class=”leftbox borderedlist”>
<li><html:link page=”/CompanyForm.do” title=”Add New Company or Company Account”>Add New Company</html:link></li>
<li><html:link page=”/CompanyList.do” title=”Add Modify existing Company”>Modify Existing Company</html:link></li>
</ul>
<ul>
<li><html:link page=”/DosenForm.do” title=”Add New Dosen “>Add New Dosen</html:link></li>
<li><html:link page=”/DosenList.do” title=”Add Modify existing Dosen”>Modify Existing Dosen</html:link></li>
</ul>
</logic:present>
<ul>
</ul>
Langkah selanjutnya, buka file tiles-def.xml tambahkan seperti berikut :
<definition extends=”basicDefinition”>
<put name=”body” value=”/WEB-INF/view_pages/account/accountList.jsp”/>
</definition>
<definition name=”dosenListPage” extends=”basicDefinition”>
<put value=”/WEB-INF/view_pages/dosen/dosenList.jsp”/>
</definition>
Langkah selanjutnya, tambahkan coding pada struts-config.xml seperti berikut :
<action path=”/CompanyDetail” forward=”companyDetailPage”/>
<action path=”/CompanyList” forward=”companyListPage”/>
<action path=”/DosenList” forward=”dosenListPage”/>
Kemudian buat folder dengan nama dosen dalam folder view_pages, dan dilanjutkan dengan membuat file dosenList.jsp didalamnya, codingnya adalah sebagai berikut :
<%@taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
<%@taglib uri=”http://jakarta.apache.org/struts/tags-html” prefix=”html”%>
<%@taglib uri=”http://jakarta.apache.org/struts/tags-logic” prefix=”logic”%>
<font color=”red”>
<html:errors/>
</font>
<h2>Daftar Dosen</h2>
<jsp:useBean scope=”session” class=”jeni.struts.seminar.helper.DosenViewHelper” />
<table border=”1″>
<thead>
<tr>
<th>NIDN</th>
<th>Nama</th>
<th>Alamat</th>
<th>No HP</th>
<logic:present name=”EmployeeContainer” property=”employee” scope=”session”>
<th>Action</th>
</logic:present>
</tr>
</thead>
<tbody>
<c:forEach items=”${dosenHelper.dosenList}” var=”dosen”>
<tr>
<td>${dosen.nidn}</td>
<td>${dosen.nama}</td>
<td>${dosen.alamat}</td>
<td>${dosen.hp}</td>
<td>
<logic:present property=”employee” scope=”session”>
<html:link forward=”EditDosenForm” paramId=”nidn” paramName=”dosen” paramProperty=”nidn”>Edit</html:link> |
<html:link forward=”cDeleteDosen” paramId=”nidn” paramName=”dosen” paramProperty=”nidn”>Delete</html:link></td>
</logic:present>
</td>
</tr>
</c:forEach>
</tbody>
</table>
Langkah selanjutnya buat package jeni.struts.seminar.dao.dosen dan di dalamnya ada 2 files DosenDAO.java dan DosenMySQLDAO.java, coding untuk DosenDAO.java sebagai berikut :
package jeni.struts.seminar.dao.dosen;
import java.util.Collection;
import jeni.struts.seminar.bean.Dosen;
import jeni.struts.seminar.bean.User;
public interface DosenDAO {
Collection getDosenList();
}
Dan coding DosenMySQLDAO.java sebagai berikut :
package jeni.struts.seminar.dao.dosen;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collection;
import java.util.Vector;
import jeni.struts.seminar.bean.Dosen;
import jeni.struts.seminar.dao.MySQLDataAccessObject;
public class DosenMySQLDAO extends MySQLDataAccessObject implements DosenDAO{
private Collection dosenList;
public Collection getDosenList() {
Dosen dosen = null;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = “SELECT * FROM dosen”;
Vector dosenList = new Vector();
try {
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()){
dosen = new Dosen();
dosen.setNidn(rs.getInt(“nidn”));
dosen.setNama(rs.getString(“nama”));
dosen.setAlamat(rs.getString(“alamat”));
dosen.setHp(rs.getString(“hp”));
dosenList.add(dosen);
}
return dosenList;
} catch (SQLException e) {
System.out.println(“Error while executing select dosen query”);
e.printStackTrace();
return null;
}finally {
releaseResources(conn, stmt,rs);
}
}
}
Langkah selanjutnya buka DAOFactory.java yang terdapat di dalam package jeni.struts.seminar.dao dan modif codingnya seperti berikut :
package jeni.struts.seminar.dao;
import jeni.struts.seminar.dao.company.CompanyDAO;
import jeni.struts.seminar.dao.company.CompanyMySQLDAO;
import jeni.struts.seminar.dao.employee.EmployeeDAO;
import jeni.struts.seminar.dao.employee.EmployeeMySQLDAO;
import jeni.struts.seminar.dao.seminar.SeminarDAO;
import jeni.struts.seminar.dao.seminar.SeminarMySQLDAO;
import jeni.struts.seminar.dao.user.UserDAO;
import jeni.struts.seminar.dao.user.UserMySQLDAO;
import jeni.struts.seminar.dao.dosen.DosenDAO;
import jeni.struts.seminar.dao.dosen.DosenMySQLDAO;
public class DAOFactory {
public static UserDAO getUserDAOInstance(){
return new UserMySQLDAO();
}
public static SeminarDAO getSeminarDAOInstance() {
return new SeminarMySQLDAO();
}
public static EmployeeDAO getEmployeeInstance() {
return new EmployeeMySQLDAO();
}
public static CompanyDAO getCompanyDAOInstance() {
return new CompanyMySQLDAO();
}
public static DosenDAO getDosenDAOInstance() {
return new DosenMySQLDAO();
}
}
Langkah berikutnya buatlah file Dosen.java pada package jeni.struts.seminar.bean, codingnya seperti berikut :
package jeni.struts.seminar.bean;
public class Dosen {
private int nidn;
private String nama;
private String alamat;
private String hp;
}
Namun, pada langkah ini belum cukup, pendeklarasian variable nidn, nama, alamat, dan hp tidak cukup hanya begitu saja. Perlu diset and get, caranya :
Blok keempat baris :
private int nidn;
private String nama;
private String alamat;
private String hp;
kemudian klik kanan, refactore, EncapsulateFields sehingga muncul menu sebagai berikut :
Kemudian beri centang alias contreng pada semua field di atas, di atas terlihat baru hp yang sudah diget dan set, yang lain juga harus diset dan get semua kemudian next, kemudian perhatikan pada netbean pojok kiri bawah, ada tombol Do factoring, klik tombol Do Factoring tersebut sehingga coding Dosen.java lengkapnya seperti berikut :
package jeni.struts.seminar.bean;
public class Dosen {
private int nidn;
private String nama;
private String alamat;
private String hp;
public int getNidn() {
return nidn;
}
public void setNidn(int nidn) {
this.nidn = nidn;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getAlamat() {
return alamat;
}
public void setAlamat(String alamat) {
this.alamat = alamat;
}
public String getHp() {
return hp;
}
public void setHp(String hp) {
this.hp = hp;
}
}
Langkah berikutnya, buat file DosenFacade.java yang diletakkan dalam package jeni.struts.seminar.facade dengan coding seperti berikut :
package jeni.struts.seminar.facade;
import java.util.Collection;
import jeni.struts.seminar.bean.Dosen;
import jeni.struts.seminar.dao.DAOFactory;
import jeni.struts.seminar.dao.dosen.DosenDAO;
public class DosenFacade {
public Collection getDosenList() {
DosenDAO dao = DAOFactory.getDosenDAOInstance();
return dao.getDosenList();
}
}
Langkah berikutnya lagi buat file DosenViewHelper.java di dalam package jeni.struts.seminar.helper yang codingnya seperti berikut :
package jeni.struts.seminar.helper;
import java.util.Collection;
import java.util.Iterator;
import jeni.struts.seminar.bean.Dosen;
import jeni.struts.seminar.facade.DosenFacade;
public class DosenViewHelper {
private Collection dosenList;
private DosenFacade cFacade;
private int nidn;
public DosenViewHelper() {
cFacade = new DosenFacade();
}
public Collection getDosenList(){
dosenList = cFacade.getDosenList();
return dosenList;
}
public void setNidn(int nidn) {
this.nidn = nidn;
}
public Dosen getDosen(){
if(nidn == 0) return null;
Iterator it = dosenList.iterator();
while (it.hasNext()){
Dosen dosen = (Dosen)it.next();
if (dosen.getNidn() == nidn){
nidn = 0;
return dosen;
}
}
nidn = 0;
return null;
}
}
Dari sekian langkah, maka jika sudah selesai hasilnya seperti berikut :
Apa yang saya coba ini bisa dikembangkan sesuai dengan kebutuhan dari menu apa yang ditambahkan, tidak harus dosen, mungkin yang lain, misalnya guru, karyawan, siswa atau yang lain yang tentunya field-fieldnya menyesuaikan. Apa yang saya coba ini juga belum lengkap, saya baru mencoba sederhana saja, jadi bisa dikembangkan lagi. Selamat mencoba.
Paging using php (first prev 1 234567 next last)
Paging alias penomoran halaman sering sekali digunakan di website, terutama untuk menampilkan data yang banyak dan perlu ditampilkan dalam beberapa halaman, misalnya bukutamu, di buku tamu suatu web banyak sekali yang posting, sehingga jika ditampilkan dari awal posting sampai yang terakhir mungkin akan panjang sekali. Sehingga perlu ditampilkan dalam beberapa halaman. Sebagai contoh saya coba menampilkan data mahasiswa sebagai berikut :
Buat file Paging.php dengan coding sebagai berikut :
<?
class Paging {
private $conn;
private $root;
private $rows;
private $total_rows;
private $links;
private $sql;
private $page;
private $max;
function __construct($conn, $sql, $root, $rows, $links) {
$this->conn = $conn;
$this->sql = $sql;
$this->root = $root;
$this->rows = $rows;
$this->links = $links;
if (isset($_GET[‘page’])) {
$this->page = intval($_GET[‘page’]);
}
}
function paging() {
$rs1 = $this->conn->query($this->sql);
if (!rs1){
return false;
}
$this->total_rows = $rs1->num_rows;
$rs1->close();
$this->max= ceil($this->total_rows / $this->rows);
if ($this->page > $this->max || $this->page <= 0) {
$this->page = 1;
}
$offset = $this->rows * ($this->page-1);
$rs = $this->conn->query($this->sql . ‘ LIMIT ‘ . $offset . ‘, ‘ . $this->rows);
if (!$rs) {
return false;
}
return $rs;
}
public function show() {
if ($this->page==1) {
$first = ‘first’;
} else {
$first = ‘<a href=”‘.$this->root.’?page=1″>first</a>’;
}
if ($this->page > 1 ) {
$prev = ‘<a href=”‘.$this->root.’?page=’.($this->page-1).'”>prev</a>’;
} else {
$prev = ‘prev’;
}
for ($i = 1; $i <= $this->max; $i += $this->links) {
if ($this->page >= $i) {
$start = $i;
}
}
if ($this->max > $this->links){
$end = $start + $this->links;
if ($end > $this->max) {
$end = $this->max+1;
}
} else {
$end = $this->max;
}
$num = ”;
for ($i = $start; $i < $end; $i++) {
if ($i == $this->page) {
$num .=’ ‘ .$i. ‘ ‘;
} else {
$num .='<a href=”‘ .$this->root. ‘?page=’ .$i. ‘”>’ .$i. ‘</a>’;
}
}
if ($this->page < $this->max) {
$next = ‘<a href=”‘ .$this->root.’?page=’.($this->page+1). ‘”>next</a>’;
} else {
$next = ‘next’;
}
if ($this->page == $this->max) {
$last = ‘last’;
} else {
$last = ‘<a href=”‘ .$this->root. ‘?page=’ .$this->max. ‘”>last</a>’;
}
echo $first, ‘ ‘, $prev, ‘ ‘, $num, ‘ ‘,$next,’ ‘,$last;
}
}
?>
Kemudian buat file tampil123.php dengan coding sebagai berikut :
<?
require ‘Paging.php’;
require ‘GeneratorTable.php’;
$mysqli = new mysqli(‘localhost’,’root’,’password’,’t78187_amik’);
$sql = ‘select nim,nama,tmplhr from mahasiswa’;
$self = $_SERVER[‘PHP_SELF’];
$pg = new Paging($mysqli,$sql,$self,10,7);
$res = $pg->paging();
$gt = new GeneratorTable($res);
$gt->showTabel();
$pg->show();
?>
Dari coding di atas ada instansiansi dari fungsi GeneratorTable, jadi file GeneratorTable.php masih saya gunakan. Kemudian coba dijalankan file tampil123.php sehingga hasilnya seperti berikut :
jadi khan ?
Generator Table using php
Untuk menampilkan data dari suatu table dalam database agar bisa ditampilkan di website, saya sering menggunakan table-table yang saya buat dengan HTML. Tentunya setiap ada tambahan kolom ataupun ada tambahan baris saya harus menambahkan script untuk menambah kolom atau baris. Nah dengan adanya Generator Table ini, nantinya pekerjaan ini sudah tidak perlu dilakukan lagi, yang perlu dimanipulasi hanya DML yang untuk menampilkan datanya saja. Sebagai latihan saya coba menampilkan data dari suatu table mahasiswa, langkahnya adalah sebagai berikut :
Langkah awal buat dahulu fungsi GeneratorTable sebagai berikut :
<?
class GeneratorTable {
private $rs;
private $num = 1;
private $numRow = true;
private $rowColor = true;
private $fldColor = false;
public function __construct($rs) {
$this->rs = $rs;
}
public function setData($rs) {
$this->rs = $rs;
}
public function showNumber($numRow, $num=1) {
$this->numRow = $numRow;
$this->num = $num;
}
public function showRowColor($rowColor){
$this->rowColor = $rowColor;
$this->fldColor = 0;
}
public function showFieldColor($fldColor){
$this->fldColor=$fldColor;
}
public function showTabel() { ?>
<table width=”80%” cellpadding=1 cellspacing=1 style=”border:1px solid #999″>
<tr>
<th bgcolor=”#999999″>
<?php echo $this->numRow ? ‘No’ : ”;?> </th>
<?php
$numFld = $this->rs->field_count;
while ($fld = $this->rs->fetch_field()) { ?>
<th bgcolor=”#999999″>
<?php echo ucwords($fld->name); ?></th>
<?php
}
?>
</tr>
<?php
while ($row = $this->rs->fetch_row()) {
if ($this->rowColor) {
(($this->num % 2) != 0)? $bgR=”#cccccc” : $bgR=”#ffffff”;?>
<tr bgcolor=”<?php echo $bgR;?>”>
<?php
}
?>
<td align=”center”>
<?php echo $this->numRow ? $this->num : ”; ?>
</td>
<?php
for ($i=0; $i<$numFld; $i++) {
if ($this->fldColor) {
(($i % 2) != 0) ? $bgF=”#cccccc” : $bgF=”#ffffff”;?>
<td bgcolor=”<?php echo $bgF;?>”>
<?php echo $row[$i];?> </td>
<?php } else { ?>
<td> <?php echo $row[$i]; ?> </td>
<?php
}
}
?>
</tr>
<?php $this->num++;
}
?>
</table>
<?php
}
}
?>
File di atas disimpan dengan nama GeneratorTable.php dan selanjutnya buat file dengan nama tampil.php yang codingnya sebagai berikut :
<?
require ‘GeneratorTable.php’;
$mysqli = new mysqli(‘localhost’,’root’,’password’,’namadatabase’);
$sql = ‘select nim,nama,tmplhr from mahasiswa’;
$res = $mysqli->query($sql);
$gt = new GeneratorTable($res);
$gt->showNumber(true);
$gt->showRowColor(true);
$gt->showTabel();
?>
Kemudian running tampil.php sehingga hasilnya seperti berikut :
nah jadi kan ?
Login di jual beli
(artikel lengkapnya bisa di download)
Artikel ini ada kelanjutan dari artikel saya sebelumnya, database juga sudah saya sertakan yang sudah dalam bentuk jadi sehingga anda bisa langsung mendownload database jualbeli tersebut kemudian anda buat database jual belinya dan anda import ke dalam mysql. langkah berikutnya adalah
Menginstall dahulu driver untuk konek ke mysql, setelah terinstall dilanjutkan dengan membuat koneksi ODBCnya dahulu dalam contoh saya ini saya buat koneksinya dengan nama koneksimysql, caranya :
Masuk ke Control panel > Administrative Tools > Data Sources > pada tab User DSN > Add > MySql ODBC 3.51 Driver > Finish
Keluar menu lagi, pada Data Source Name diisi koneksimysql
Description diisi boleh tidak juga boleh
Server diisi localhost
User diisi root
Password diisi password mysqlnya
Database pilih jualbeli > OK > OK
Kemudian buat Form sebanyak 2 Form, yaitu Form_Login dan Form_Menu sbb :
Sedangkan untuk Form_Login desain formnya adalah sbb :
Textbox yang atas saya beri nama txtusername
Textbox yang bawahnya saya beri nama txtpassword
Sedangkan tombol yang Login diberi nama cmdlogin
Pada Form tsb pada Properties, Captionnya = Login, StartUpPosition = CenterScreen, MinButton = False, MaxButton = False, BorderStyle = 1. Fixed Single
Langkah berikutnya, Pada toolbox diklik kanan, pilih Components, kemudian cari dan centang Microsoft Ado Data Control 6.0 (OLEDB) > Ok
Masukkan/drag Componen ADODC ke dalam Form_Login, kemudian pada Propertis Visiblenya diset False. Kemudian klik kanan Adodc1 tersebut pilih Adodc Properties, kemudian > pada Use Connection String pilih > Build > pada Tab Provider pilih Microsoft OLEDB Provider for ODBC Driver > Next > Pada Use data source name > cari koneksi mysql>kemudian untuk menyakinkan koneksinya sukses atau tidak Coba Test Connection, jika sukses bisa dilanjutkan > Kemudian masukke Tab Record Source, buka pada Command Text (SQL) masukkan perintah SQL sbb :
Select * from tuser
Kemudian OK
Langkah selanjutnya lagi masuk ke Form_Menu atur propertiesnya StartUpPosition = CenterScreen
Lalu buat menunya menggunakan Menu Editor, dan susunlah menjadi seperti berikut :
Sedangkan settingannya sebagai berikut :
Caption | name |
Master | mnMaster |
User | mnUser |
Pengkodean Barang | mnBarang |
Keluar | mnKeluar |
Transaksi | mnTransaksi |
Pembelian | mnPembelian |
Penjualan | mnPenjualan |
Laporan | mnLaporan |
Data User | mnLapUser |
Utility | mnUtility |
Pengguna Software | mnPengguna |
BackUp Data | mnBackupData |
Setelah menu terbentu, tinggal pasang coding untuk keluar, caranya pada Form_Menu, buka Master klik Keluar, kemudian tambahkan coding
End
sehingga tampak sbb :
Private Sub mnKeluar_Click()
End
End Sub
Kemudian buka kembali Form_Login dan pada Tombol Login klik 2x dan isikan codingnya menjadi sbb :
Private Sub cmdlogin_Click()
Vusername = txtusername.Text
n = Len(Trim(txtpassword.Text))
For i = 1 To n
w = Mid(txtpassword, i, 1)
x = Asc(w)
xx = Chr(x + 3)
sandi = sandi + xx
Next i
Adodc1.RecordSource = “select * from TBKaryawan where NIK = ‘” + Vusername + “‘ and password = ‘” + sandi + “‘”
Adodc1.Refresh
If (Adodc1.Recordset.RecordCount >= 1) Then
tbagian = Adodc1.Recordset!bagian
If (tbagian <> “Admin”) Then
Form_Menu.mnPengguna.Enabled = False
End If
Form_Menu.Show
Form_Login.Hide
Else
MsgBox “Username atau password salah”
End If
End SubNah sampai disini selesai sudah tinggal di run, saat Login Username isikan anwar dengan password edp, walaupun di mysql tersimpan hgs, karena enscripsinya setiap karakter ditambah tiga, logikanya e menjadi h, d menjadi g, p menjadi s. Jika yang login Admin maka semua menu bisa diakses, namun jika yang lagin bukan Admin, maka menu Pengguna Software tidak bisa diakses sbb:
Recent Comments