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 :

GELEMBUNG

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 :

GELEMBUNG1

October 27, 2009 at 8:07 am 2 comments

Dekripsi pada Vigenere Cipher

Artikel ini kelanjutan dari vigenere cipher posting saya sebelumnya, untuk dekripsinya desainnya saya tambahkan sebagai berikut :

vigenere3

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?

September 10, 2009 at 2:32 am 3 comments

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 :

vigenere1

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 :

vigenere2

August 22, 2009 at 6:42 am 2 comments

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 :

julius2

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:

julius1

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 :

julius3

begitulah hasilnya kalau dicoba dengan Visual Basic. Bagaimana kalau dicoba dengan php ? sekalian saja dicoba dengan membuat desain formnya seperti berikut :

julius4

sedangkan scriptnya sebagai berikut :

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;
<html xmlns=”http://www.w3.org/1999/xhtml”&gt;
<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 :

julius5

nah jadi juga akhirnya….

August 15, 2009 at 2:46 am 3 comments

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

June 12, 2009 at 3:02 am Leave a comment

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:

tamu1

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

tamu2

Isikan seperti di atas, kemudian Next. Kemudian muncul

tamu3

Set seperti di atas juga, kemudian Next.  Sehingga muncul jendela lagi

tamu4

Diset seperti di atas juga, kemudian Next. Sehingga muncul menu lagi

tamu5

Diset seperti di atas juga, kemudian Next.  Muncul jendela seperti berikut

tamu6

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 :tamu7

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 :

tamu8

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 :

tamu9rev

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 :

tamu10

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 :

tamu11rev

Selanjutnya pada jendela Aplication (kanan atas) buka Tab Databases kemudian klik tanda + kemudian MySQL Connection sehingga muncul jendela sebagai berikut :

tamu12

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.

tamu13

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

tamu14

Menu recordset sebagai berikut :

tamu15

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 :

tamu16

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.

tamu17

Kemudian dari tampilan di atas dimodif menjadi seperti berikut :

tamu18

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”&gt;

<html xmlns=”http://www.w3.org/1999/xhtml”&gt;

<!– 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%”>&nbsp;</td>

</tr>

<tr bgcolor=”#D5EDB3″>

<td height=”51″ colspan=”3″ valign=”top” align=”center”>OPTIONAL TAGLINE HERE</td>

<td width=”100%”>&nbsp;</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″>&nbsp;&nbsp;<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″>&nbsp;<br />

&nbsp;<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 />

&nbsp;<br />

&nbsp;<br />

&nbsp;<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 />

&nbsp;<br />

&nbsp;<br />

<table border=”0″ cellspacing=”0″ cellpadding=”0″ width=”305″>

<tr>

<td class=”pageName”>&nbsp;</td>

</tr>

<tr>

<td valign=”top” class=”bodyText”><p>Silahkan mengisi buku tamu</p>

<table width=”337″ border=”0″>

<tr>

<td width=”67″>&nbsp;</td>

<td width=”10″>&nbsp;</td>

<td width=”214″>&nbsp;</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>&nbsp;</td>

<td>&nbsp;</td>

<td>&nbsp;</td>

</tr>

<?php } while ($row_RecordsetTamu = mysql_fetch_assoc($RecordsetTamu)); ?>

</table></td>

</tr>

</table>

<br />

&nbsp;<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 />

&nbsp;<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 />

&nbsp;<br />          </td>

<td width=”10″>&nbsp;</td>

</tr>

</table>        </td>

<td width=”100%”>&nbsp;</td>

</tr>

<tr>

<td width=”165″>&nbsp;</td>

<td width=”50″>&nbsp;</td>

<td width=”167″>&nbsp;</td>

<td width=”138″>&nbsp;</td>

<td width=”50″>&nbsp;</td>

<td width=”190″>&nbsp;</td>

<td width=”100%”>&nbsp;</td>

</tr>

</table>

</body>

</html>

<?php

mysql_free_result($RecordsetTamu);

?>

Sampai sini sudah bisa dilihat di browser hasilnya seperti berikut :

tamu19

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

tamu20

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 :

tamu22

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 :

tamu25

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 :

tamu26

Letakkan kursor di table tengah yang kosong tersebut seperti di atas. Kemudian klik Record Insertion Form Wizard

tamu27

Kemudian keluar jendela lagi yang perlu diset seperti berikut :

tamu28

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 :

tamu29

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 :

tamu30

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.

June 1, 2009 at 5:45 am 2 comments

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&#8221; prefix=”logic”%>

<%@ taglib uri=”http://jakarta.apache.org/struts/tags-html&#8221; 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&#8221; prefix=”c”%>

<%@taglib uri=”http://jakarta.apache.org/struts/tags-html&#8221; prefix=”html”%>

<%@taglib uri=”http://jakarta.apache.org/struts/tags-logic&#8221; 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 :

menudosen2

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 :

menudosen1

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.

May 27, 2009 at 5:11 am 1 comment

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 :

generatorTable2

jadi khan ?

May 21, 2009 at 10:54 am 1 comment

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 :

generatorTable1

nah jadi kan ?

May 21, 2009 at 9:22 am 1 comment

Login di jual beli

(artikel lengkapnya bisa di download)

Artikel ini ada kelanjutan dari artikel saya sebelumnyadatabase 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 :

mysql2

Sedangkan untuk Form_Login desain formnya adalah sbb :

access6

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

access8

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 :

login01

login02

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:

access11

May 14, 2009 at 8:55 am Leave a comment

Older Posts


April 2024
M T W T F S S
1234567
891011121314
15161718192021
22232425262728
2930