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)
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.
CREATE TABLE `inetgb` ( `id` int(4) NOT NULL auto_increment, `name` varchar(30) NOT NULL default '', `address` longtext NOT NULL, `datetime` varchar(23) NOT NULL default '', PRIMARY KEY (`id`) ) 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.
<?PHP
//--------- Config DB
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name="inetgb"; // Table name
//---------- End Config
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
mysql_select_db("$db_name") or die("cannot select DB");
if($_POST['insert']=="yes"){
$name = $_POST['name'];
$address = $_POST['address'];
$datetime=$_POST['datetime'];
$sql="INSERT INTO $tbl_name(name, address, datetime)VALUES('$name', '$address', '$datetime')";
$result=mysql_query($sql);
//Inserted
if($result){
echo "Success, bos!";
}else{
echo "ERROR!";
}
}else{
$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result)){
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"><tr><td valign="top">
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr><td valign="top">ID</td><td valign="top">:</td><td valign="top">
<? echo htmlspecialchars($rows['id'], ENT_QUOTES); ?></td></tr>
<tr><td width="117">Name</td><td width="14">:</td><td width="357">
<? echo htmlspecialchars($rows['name'], ENT_QUOTES); ?></td></tr>
<tr><td valign="top">Address</td><td valign="top">:</td><td valign="top">
<? echo htmlspecialchars($rows['address'], ENT_QUOTES); ?></td></tr>
<tr><td valign="top">Date/Time </td><td valign="top">:</td><td valign="top">
<? echo htmlspecialchars($rows['datetime'], ENT_QUOTES); ?></td></tr>
</table>
</td></tr></table><BR>
<?PHP
}
}
mysql_close();
?>
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…
Pilih Microsoft internet Transfer Control 6.0 lalu klik OK.
Icon MSINET akan tampil di Toolbox Anda
Buatlah sebuah form dengan komponen sebagai berikut (klik untuk memperbesar):
Salin kode berikut, masukkan kedalam area code:
'----------------------------------------------------- 'Author : SPYRO KiD 'Website: http://www.spyrozone.net 'Mail : root@spyrozone.net '----------------------------------------------------- Private Sub cmdSend_Click() Dim gbUrl As String Dim gbParam As String Dim txtfPath As String 'inetgb index.php location gbUrl = "http://www.spyrozone.net/playground/inetgb/index.php" 'Path to inetGB.txt txtfPath = App.Path & "\inetGB.txt" '----------------------------------------------------- 'Write to text file 'you can replace it with function to insert data into 'local database '----------------------------------------------------- Open txtfPath For Append As #1 Print #1, "Name"; Tab(15); ": " + txtName.Text Print #1, "Address"; Tab(15); ": " + txtAddress.Text Print #1, "Date/Time"; Tab(15); ": "; Now Print #1, "---------------------------------------" Close #1 '----------------------------------------------------- 'Now, send data to the net via Inet gbParam = "insert=yes&name=" & txtName.Text & "&address=" & txtAddress.Text & "&datetime=" & Now InetGb.Execute gbUrl, "POST", gbParam, "Content-Type: application/x-www-form-urlencoded" Do Until InetGb.StillExecuting = False DoEvents Loop Screen.MousePointer = vbArrow End Sub Private Sub InetGb_StateChanged(ByVal State As Integer) Dim chData As Variant Dim myData As String: myData = "" Dim flagDone As Boolean: flagDone = False Screen.MousePointer = vbHourglass 'Control state Select Case State Case icResolvingHost lblStatus.Caption = " Looking up IP address of host computer.." Case icHostResolved lblStatus.Caption = "IP address found!" Case icConnecting lblStatus.Caption = "Attempting to connect to Host.." Case icConnected lblStatus.Caption = "Connected!" Case icRequesting lblStatus.Caption = "Making Request.." Case icRequestSent lblStatus.Caption = "Request sent!" Case icReceivingResponse lblStatus.Caption = "Chatting with Host.." Case icResponseReceived lblStatus.Caption = "Response received!" Case icDisconnecting lblStatus.Caption = "Disconnecting.." Case icDisconnected lblStatus.Caption = "Disconnected!" Case icError lblStatus.Caption = "Error " & InetGb.ResponseCode & " " & InetGb.ResponseInfo Screen.MousePointer = vbArrow Exit Sub 'Make sure the complete response has been received Case icResponseCompleted 'get the first chunk chData = InetGb.GetChunk(1024, icString) 'if there is nothing on the document If Len(chData) = 0 Then flagDone = True End If 'Loop until everything extracted Do While Not flagDone myData = myData & chData chData = InetGb.GetChunk(1024, icString) If Len(chData) = 0 Then flagDone = True End If Loop 'display server response MsgBox myData, 64, "Info" End Select End Sub
Uji Coba
- Silahkan dihias sesuka hati lalu compile dengan nama inetGB.exe atau dengan nama terserah Anda.Berikut hasil akhir kreasi saya:
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
- 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
- Sekarang, mari kita lihat apakah web sudah terupdate. Klik http://www.spyrozone.net/playground/inetgb/
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
- Right Triangle a.k.a Segi Tiga Siku-Siku in C
- Windows Troubleshooting: A specified authentication package is unknown
- Aman dari mailto Bomber
- Perjalanan KDE (K Desktop Environment)
- Error Operator Assisted or Manual Dial Pada Modem
- SQL Injection Pada Website Fakultas Hukum Universitas Indonesia
- Merename File HTML berdasarkan Title dengan PHP













