Untuk Pertanyaan anda silahkan hub admin di 087773328129

Sabtu, 06 Agustus 2011

Integration Between VB6, PHP and MySql

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) :D

Alur Program

Alur program yang diinginkan Kang Iwan kurang lebih demikian:
  1. Aplikasi Desktop: Mengambil serta nilai pada textbox yang menampung nama dan alamat, serta mengambil informasi waktu saat ini
  2. 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.)
  3. Aplikasi Desktop: Mengirimkan nilai tersebut dengan metode POST ke http://www.spyrozone.net/playground/inetgb/index.php
  4. Aplikasi Web: index.php memasukkan nilai yang ditangkap ke database website lalu menampilkan respon “Success, bos!” jika berhasil dan pesan “ERROR!” jika gagal.
  5. 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) :D , jadi tabelnya cukup 4 field ajah, yaitu id, name untuk menampung nama, address untuk menampung alamat peserta, dan datetime untuk menampung informasi waktu.
1CREATE TABLE `inetgb` (
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 '',
6 PRIMARY KEY  (`id`)
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.
01<?PHP
02//--------- Config DB
03$host="localhost"; // Host name
04$username=""; // Mysql username
05$password=""; // Mysql password
06$db_name=""; // Database name
07$tbl_name="inetgb"; // Table name
08//---------- End Config
09// Connect to server and select database.
10mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
11mysql_select_db("$db_name") or die("cannot select DB");
12 
13if($_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);
19 //Inserted
20 if($result){
21 echo "Success, bos!";
22 }else{
23 echo "ERROR!";
24 }
25}else{
26 $sql="SELECT * FROM $tbl_name";
27 $result=mysql_query($sql);
28 while($rows=mysql_fetch_array($result)){
29 ?>
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>
40 </table>
41 </td></tr></table><BR>
42<?PHP
43 }
44}
45mysql_close();
46?>
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 :D 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…
{Image: Add New Component}
Add New Component
Pilih Microsoft internet Transfer Control 6.0 lalu klik OK.
{Image: Microsoft internet Transfer Control 6.0}
Microsoft internet Transfer Control 6.0
Icon MSINET akan tampil di Toolbox Anda
{Image: Toolbox}
Toolbox
Buatlah sebuah form dengan komponen sebagai berikut (klik untuk memperbesar):
{Image: Form dan komponen yang dibutuhkan}
Form dan komponen yang dibutuhkan
Salin kode berikut, masukkan kedalam area code:
01'-----------------------------------------------------
02'Author : SPYRO KiD
04'Mail   : root@spyrozone.net
05'-----------------------------------------------------
06Private Sub cmdSend_Click()
07Dim gbUrl As String
08Dim gbParam As String
09Dim txtfPath As String
10'inetgb index.php location
12'Path to inetGB.txt
13txtfPath = App.Path & "\inetGB.txt"
14'-----------------------------------------------------
15'Write to text file
16'you can replace it with function to insert data into
17'local database
18'-----------------------------------------------------
19Open 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, "---------------------------------------"
24Close #1
25'-----------------------------------------------------
26'Now, send data to the net via Inet
27gbParam = "insert=yes&name=" & txtName.Text & "&address=" & txtAddress.Text & "&datetime=" & Now
28InetGb.Execute gbUrl, "POST", gbParam, "Content-Type: application/x-www-form-urlencoded"
29Do Until InetGb.StillExecuting = False
30 DoEvents
31Loop
32Screen.MousePointer = vbArrow
33End Sub
34Private Sub InetGb_StateChanged(ByVal State As Integer)
35Dim chData As Variant
36Dim myData As String: myData = ""
37Dim flagDone As Boolean: flagDone = False
38Screen.MousePointer = vbHourglass
39'Control state
40Select Case State
41Case icResolvingHost
42lblStatus.Caption = " Looking up IP address of host computer.."
43Case icHostResolved
44lblStatus.Caption = "IP address found!"
45Case icConnecting
46lblStatus.Caption = "Attempting to connect to Host.."
47Case icConnected
48lblStatus.Caption = "Connected!"
49Case icRequesting
50lblStatus.Caption = "Making Request.."
51Case icRequestSent
52lblStatus.Caption = "Request sent!"
53Case icReceivingResponse
54lblStatus.Caption = "Chatting with Host.."
55Case icResponseReceived
56lblStatus.Caption = "Response received!"
57Case icDisconnecting
58lblStatus.Caption = "Disconnecting.."
59Case icDisconnected
60lblStatus.Caption = "Disconnected!"
61Case icError
62lblStatus.Caption = "Error " & InetGb.ResponseCode & " " & InetGb.ResponseInfo
63Screen.MousePointer = vbArrow
64Exit Sub
65'Make sure the complete response has been received
66Case icResponseCompleted
67'get the first chunk
68chData = InetGb.GetChunk(1024, icString)
69'if there is nothing on the document
70If Len(chData) = 0 Then
71 flagDone = True
72End If
73'Loop until everything extracted
74Do While Not flagDone
75myData = myData & chData
76chData = InetGb.GetChunk(1024, icString)
77If Len(chData) = 0 Then
78flagDone = True
79End If
80Loop
81'display server response
82MsgBox myData, 64, "Info"
83End Select
84End Sub

Uji Coba

  1. Silahkan dihias sesuka hati lalu compile dengan nama inetGB.exe atau dengan nama terserah Anda.Berikut hasil akhir kreasi saya:
    {Image: Hasil akhir InetGB}
    Tampilan InetGB
    Pastikan Anda terhubung internet, lalu isikan nama dan alamat Anda. Klik tombol {Send}
  2. 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
    {Image: inetGB result}
    InetGB result
  3. 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
    {Image: File inetGB.txt}
    File inetGB.txt
  4. Sekarang, mari kita lihat apakah web sudah terupdate. Klik http://www.spyrozone.net/playground/inetgb/
    {Image: InetGB Web}
    InetGB Web
    Nah, tampil tuch hasilnya. Datanya sama dengan data di komputer lokal :D
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 ;)
{Image: Download Project}
Selamat belajar, selamat mencoba, semoga bermanfaat :D

1 komentar:

kalo mau nampilin datanya di VB gimana om?

Posting Komentar

Jangan lupa tinggalkan komentar :D

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites