Kang Iwan (bukan nama yang sebenarnya) memiliki sebuah aplikasi desktop berupa sebuah buku tamu sederhana untuk mencatat kehadiran peserta yang datang ke acara pernikahannya. Kang Iwan menginginkan setiap data yang masuk ke database buku tamunya di komputer lokal langsung otomatis masuk ke database pada webserver agar bisa langsung tampil di Websitenya. Jadi, dalam kasus ini ada 2 database: yang satu di komputer si penerima tamu, satunya lagi di webserver. Tujuannya adalah jika sewaktu-waktu koneksi internet terputus, data tetap masuk ke database di komputer lokal.
Nah, dalam artikel ini, saya akan membahas bagaimana mengintegrasikan Vb6 dengan PHP/MySql dengan cara yang paling mudah untuk membantu Kang Iwan (beneran bukan nama yang sebenarnya,
kok)
Alur Program
Alur program yang diinginkan Kang Iwan kurang lebih demikian:
- Aplikasi Desktop: Mengambil serta nilai pada textbox yang menampung nama dan alamat, serta mengambil informasi waktu saat ini
- Aplikasi Desktop: Memasukkan nilai tersebut ke database lokal (Dalam contoh kali ini, fungsi memasukkan data ke database lokal saya ganti dengan fungsi untuk menuliskan data ke file TXT. Silahkan diubah sendiri.)
- Aplikasi Desktop: Mengirimkan nilai tersebut dengan metode POST ke http://www.spyrozone.net/playground/inetgb/index.php
- Aplikasi Web: index.php memasukkan nilai yang ditangkap ke database website lalu menampilkan respon “Success, bos!” jika berhasil dan pesan “ERROR!” jika gagal.
- Aplikasi Desktop: Menangkap respon server lalu menampilkannya melalui Message Box.
Mempersiapkan Database
Karena contoh kali ini cuma buat buku tamu acara
kawinan (ih, jadi pengen kawin –
lagi)
, jadi tabelnya cukup 4 field ajah, yaitu
id,
name untuk menampung nama,
address untuk menampung alamat peserta, dan
datetime untuk menampung informasi waktu.
2 | `id` int (4) NOT NULL auto_increment, |
3 | ` name ` varchar (30) NOT NULL default '' , |
4 | `address` longtext NOT NULL , |
5 | `datetime` varchar (23) NOT NULL default '' , |
7 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; |
Kode index.php
File index.php inilah yang akan menangkap parameter dari aplikasi desktop lalu memasukkannya kedalam database di webserver. Salin lalu upload script berikut. Jangan lupa untuk memasukkan username, password dan nama database Anda pada variabel yang telah saya beri comment.
10 | mysql_connect( "$host" , "$username" , "$password" ) or die ( "cannot connect server " ); |
11 | mysql_select_db( "$db_name" ) or die ( "cannot select DB" ); |
13 | if ( $_POST [ 'insert' ]== "yes" ){ |
14 | $name = $_POST [ 'name' ]; |
15 | $address = $_POST [ 'address' ]; |
16 | $datetime = $_POST [ 'datetime' ]; |
17 | $sql = "INSERT INTO $tbl_name(name, address, datetime)VALUES('$name', '$address', '$datetime')" ; |
18 | $result =mysql_query( $sql ); |
26 | $sql = "SELECT * FROM $tbl_name" ; |
27 | $result =mysql_query( $sql ); |
28 | while ( $rows =mysql_fetch_array( $result )){ |
30 | <table width= "400" border= "0" align= "center" cellpadding= "0" cellspacing= "1" bgcolor= "#CCCCCC" ><tr><td valign= "top" > |
31 | <table width= "400" border= "0" cellpadding= "3" cellspacing= "1" bgcolor= "#FFFFFF" > |
32 | <tr><td valign= "top" >ID</td><td valign= "top" >:</td><td valign= "top" > |
33 | <? echo htmlspecialchars( $rows [ 'id' ], ENT_QUOTES); ?></td></tr> |
34 | <tr><td width= "117" >Name</td><td width= "14" >:</td><td width= "357" > |
35 | <? echo htmlspecialchars( $rows [ 'name' ], ENT_QUOTES); ?></td></tr> |
36 | <tr><td valign= "top" >Address</td><td valign= "top" >:</td><td valign= "top" > |
37 | <? echo htmlspecialchars( $rows [ 'address' ], ENT_QUOTES); ?></td></tr> |
38 | <tr><td valign= "top" > Date /Time </td><td valign= "top" >:</td><td valign= "top" > |
39 | <? echo htmlspecialchars( $rows [ 'datetime' ], ENT_QUOTES); ?></td></tr> |
41 | </td></tr></table><BR> |
Baris ke 21 dan 23 pada code diatas itulah yang akan ditampilkan VB6 sebagai pemberitahuan kepada user apakah insert data ke database pada webserver berhasil atau gagal dilakukan.
VB6.0 Project
Saya asumsikan Anda sudah mengenal VB6. Kalo belum pernah menjamah VB6, bersyukurlah, silahkan beralih ke bahasa yang lebih baik, C misalnya
Tapi jika terlanjur ingin mencoba, silahkan membuka area kerja VB6 dan buat sebuah project baru (Standard EXE)
Panggil komponen Microsoft internet Transfer Control 6.0 dengan klik Project -> Components…
Add New Component
Pilih Microsoft internet Transfer Control 6.0 lalu klik OK.
Microsoft internet Transfer Control 6.0
Icon MSINET akan tampil di Toolbox Anda
Toolbox
Buatlah sebuah form dengan komponen sebagai berikut (klik untuk memperbesar):
Form dan komponen yang dibutuhkan
Salin kode berikut, masukkan kedalam area code:
06 | Private Sub cmdSend_Click() |
13 | txtfPath = App.Path & "\inetGB.txt" |
19 | Open txtfPath For Append As #1 |
20 | Print #1, "Name" ; Tab(15); ": " + txtName.Text |
21 | Print #1, "Address" ; Tab(15); ": " + txtAddress.Text |
22 | Print #1, "Date/Time" ; Tab(15); ": " ; Now |
23 | Print #1, "---------------------------------------" |
27 | gbParam = "insert=yes&name=" & txtName.Text & "&address=" & txtAddress.Text & "&datetime=" & Now |
28 | InetGb.Execute gbUrl, "POST" , gbParam, "Content-Type: application/x-www-form-urlencoded" |
29 | Do Until InetGb.StillExecuting = False |
32 | Screen.MousePointer = vbArrow |
34 | Private Sub InetGb_StateChanged( ByVal State As Integer ) |
36 | Dim myData As String : myData = "" |
37 | Dim flagDone As Boolean : flagDone = False |
38 | Screen.MousePointer = vbHourglass |
42 | lblStatus.Caption = " Looking up IP address of host computer.." |
44 | lblStatus.Caption = "IP address found!" |
46 | lblStatus.Caption = "Attempting to connect to Host.." |
48 | lblStatus.Caption = "Connected!" |
50 | lblStatus.Caption = "Making Request.." |
52 | lblStatus.Caption = "Request sent!" |
53 | Case icReceivingResponse |
54 | lblStatus.Caption = "Chatting with Host.." |
55 | Case icResponseReceived |
56 | lblStatus.Caption = "Response received!" |
58 | lblStatus.Caption = "Disconnecting.." |
60 | lblStatus.Caption = "Disconnected!" |
62 | lblStatus.Caption = "Error " & InetGb.ResponseCode & " " & InetGb.ResponseInfo |
63 | Screen.MousePointer = vbArrow |
66 | Case icResponseCompleted |
68 | chData = InetGb.GetChunk(1024, icString) |
70 | If Len(chData) = 0 Then |
75 | myData = myData & chData |
76 | chData = InetGb.GetChunk(1024, icString) |
77 | If Len(chData) = 0 Then |
82 | MsgBox myData, 64, "Info" |
Uji Coba
- Silahkan dihias sesuka hati lalu compile dengan nama inetGB.exe atau dengan nama terserah Anda.Berikut hasil akhir kreasi saya:
Tampilan InetGB
Pastikan Anda terhubung internet, lalu isikan nama dan alamat Anda. Klik tombol {Send}
- Anda bisa melihat proses yang sedang terjadi di pojok kiri bawah. Setelah request terkirim, akan tampil sebuah Message Box yang memberikan status dari index.php
InetGB result
- Lihat hasilnya pada file inetGB.txt yang otomatis tercipta di lokasi yang sama dengan inetGB.exe. Karena inetGB.exe saya berada di C:\, maka inetGB.txt berada di tempat yang sama, yaitu C:\inetGB.txt
File inetGB.txt
- Sekarang, mari kita lihat apakah web sudah terupdate. Klik http://www.spyrozone.net/playground/inetgb/
InetGB Web
Nah, tampil tuch hasilnya. Datanya sama dengan data di komputer lokal
Note: Karena project ini menggunakan MSINET.OCX, anda harus menyertakan file tersebut dalam distribusi file exe Anda untuk antisipasi Error pada komputer yang tidak memiliki MSINET.OCX
Penutup
Cukup sederhana dan menyenangkan bukan?
Klik tombol Download di bawah jika Anda ingin mencicipi langsung project sederhana ini
Selamat belajar, selamat mencoba, semoga bermanfaat
1 komentar:
kalo mau nampilin datanya di VB gimana om?
Posting Komentar
Jangan lupa tinggalkan komentar :D