Senin, 16 Februari 2015

Cara Koneksi Database Mysql Ke Flash

Assalamu'alaikum wr wb.
Ini adalah tutorial pamungkas tentang koneksi Flash, PHP, dan MySql dengan actionscript (AS) 1 dan 2 (perbedaannya kedua AS ini tidak signifikan, namun sangat berbeda jika dibandingkan dengan AS3). Tutorial ini tidak menyertakan demo atau preview.

Prinsip-prinsip Dasar Flash+PHP+MySQL
  • Untuk mengambil data dari database, Flash membutuhkan bantuan bahasa server-side, yakni PHP sebagai "perantara" untuk mengambil data dari server database, dalam hal ini MySQL. PHP bertugas melakukan koneksi berdasarkan variabel yang dikirim Flash dan mengirimkan variabel outputnya kembali ke Flash.
  • Output PHP yang dimengerti AS1 dan AS2 adalah variabel yang ditandai dengan tanda "&" atau ampersand jika hasilnya adalah string atau teks. Ada juga metode yang membuat output PHP dalam format XML. Sebagai catatan, akan lebih efisien jika Flash langsung mengambil output dari PHP ketimbang dari XML. Meski begitu, metode mana yang dipilih tergantung preferensi pribadi Anda.
  • Untuk menghasilkan output PHP yang dimengerti Flash, nilai-nilai yang diambil dari tabel database dikirim sebagai output dengan perintah echo() atau print();

Pertama, kita harus melakukan koneksi dengan MySQL.
Kode dasar file PHP.
?
1
2
3
4
5
6
7
8
9
10
<?php
$server "localhost";
$username "root";
$password "";
$database "nama_database";
$tabel "nama_tabel";
mysql_connect ($server$username$passwordor die (mysql_error());
mysql_select_db ($databaseor die (mysql_error());
?>

Jika masih di server lokal (contoh server lokal Xampp, Wamp, Mamp, AppServ, dll) , nama server adalah "localhost" dan username "root", password dikosongkan kecuali Anda membuat password database di server local. Jika sudah online, variabel koneksi seperti nama server, username, password, database, tabel bisa dilihat dengan menggunakan Phpmyadmin. Jika sudah masuk ke database dan tabel tujuan, di bagian kepala akan tercantum nama server, nama database, dan nama tabel. Username dan password akan tergantung setting hosting. Umumnya, username dan password yang dipakai sama dengan yang dipakai untuk control panel.
Dengan alasan kepraktisan, konfigurasi variabel koneksi biasanya dipisahkan dalam file php sendiri. Misalnya "config.php" atau "connect.php" dst. Dengan demikian, sebelum melakukan query ke tabel, file php tersebut harus dimasukkan dalam file php berikutnya. Pemisahan variabel koneksi menjadi file tersendiri berguna jika Anda menggunakan banyak file php yang memerlukan koneksi ke database yang sama. Cukup include file koneksinya di awal, lalu lakukan query ke tabel.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
include_once("connect.php");
$qr = mysql_query("SELECT id, username, user_bio from $tabel");
$nr = 0;
while($kolom=mysql_fetch_row($qr) )
$ids=$kolom[0];
$usern=$kolom[1];
$ubio=$kolom[2];
echo "&idlv$nr=$ids&usernlv$nr=$usern&ubiolv$nr=$ubio";
$nr++;
}
echo "&nr=$nr&";
?>


Pada kode di atas, field di tabel database yang dipilih (SELECT) sebaiknya ditentukan. Penggunaan SELECT * from $tabel (memilih semua field di tabel) harus dihindari karena alasan keamanan.
Penggunaan mysql_fetch_row akan menghasilkan baris-baris nilai berdasarkan kolom yang dipilih. Ini sumber data yang akan dikirim ke Flash. Kita menamakan sumber data ini berdasarkan kolom di tabel yang dipilih (dalam contoh: kolom1=field id, kolom2= field username, kolom3= field user_bio), tidak peduli apakah user_bio ada di field urutan ke-3 atau urutan ke-7 dalam tabel database.
Save as file php di atas menjadi "getrow.php".
Ketika diketik di alamat pada browser, hasil yang sukses menunjukkan data seperti ini, di mana variabel akhir ("nr") adalah jumlah baris data tabel database:

&idlv0=1&usernlv0=sad&ubiolv0=Bos besar&idlv1=2&usernlv1=Anu&ubiolv1=pemulung&idlv2=3&usernlv2=bandit&ubiolv2=outlaw... &nr=10&

Itulah data yang BISA dibaca Flash. Itu struktur data eksternal yang biasa di-load Flash. Baca tutorial tentang LoadVars untuk eksternal teks.
Variabel untuk Flash adalah:
idlv0, usernlv0, ubiolv0 ... idlv1, usernlv1, ubiolv1 ... dst sampai idlv10, usernlv10, ubiolv10 sesuai jumlah row (nr)

Objek LoadVars sebagai Penampung Data
Sekarang kita akan mengambil data tersebut dengan objek LoadVars di Flash.
?
1
2
3
4
5
6
7
8
l = new LoadVars();
l.onLoad = function(ok) {
ids0=l.idlv0; sek0=l.usernlv0; pik0=l.ubiolv0;
ids1=l.idlv1; sek1=l.usernlv1; pik1=l.ubiolv1;
};
l.sendAndLoad("http://localhost/getrow.php", l, "POST"); //Metode "GET" bisa menunjukkan hasilnya langsung tanpa browser namun metode "POST" disebut lebih aman.

Ingat struktur data output PHP adalah:
idlv0, usernlv0, ubiolv0Kita akan tampung dalam variabel:
ids0, sek0, pik0Buat dynamic teks dengan variabel seperti di atas, yang akan menampung objek LoadVars kita:
ids0=l.idlv0; sek0=l.usernlv0; pik0=l.ubiolv0;
ids1=l.idlv1; sek1=l.usernlv1; pik1=l.ubiolv1;
...
ids10=l.idlv10; sek10=l.usernlv10; pik10=l.ubiolv10;

Preview. Dan Anda akan bisa melihat dynamic text berisi variabel dari PHP sesuai isi tabel di database.

l = new LoadVars(); adalah objek LoadVars. Anda bisa mengganti huruf "el" ("l") dengan nama lain, bisa saja "lv= new LoadVars()" atau "myLoadVars= new LoadVars()" dst. Metode l.onLoad digunakan untuk mendapatkan sumber data yang dihasilkan file PHP. Artinya, onLoad dijalankan jika Flash sudah menerima hasil dari metode "sendAndLoad".

Jika Anda menginginkan variabel LoadVars mengisi dynamic text di frame yang sama, penggunaan "this" bisa menggantikan LoadVars (objek "l").
?
1
2
3
4
5
6
7
8
l = new LoadVars();
l.onLoad = function(ok) {
ids0=this.idlv0; sek0=this.usernlv0; pik0=this.ubiolv0;
ids1=this.idlv1; sek1=this.usernlv1; pik1=this.ubiolv1;
};
l.sendAndLoad("http://localhost/getrow.php", l, "POST");

Kesalahan yang kerap terjadi adalah mengolah variabel LoadVars di frame yang sama (meski kode diletakkan di dalam onLoad) ketika belum semua variabel terdownload.
Cara yang paling aman adalah menyuruh Flash ke frame lain jika sukses me-load semua variabel.
?
1
2
3
4
5
6
7
l = new LoadVars();
l.onLoad = function(ok) {
gotoAndStop("sukses")
};
l.sendAndLoad("http://localhost/getrow.php", l, "POST");

Kode di atas menyuruh Flash ke frame dengan label "sukses" jika sudah berhasil me-load semua variabel.
Di frame "sukses", masukkan kode yang untuk mengelola variabel LoadVars. Kita tidak memakai "this" untuk merujuk objek LoadVars, tapi cukup menuliskan nama objeknya, yakni "l".
stop();
ids0=l.idlv0; sek0=l.usernlv0; pik0=l.ubiolv0;
ids1=l.idlv1; sek1=l.usernlv1; pik1=l.ubiolv1;

Menggunakan iterasi tanpa terperangkap "this" yang menjadi objek LoadVars menjadi lebih mudah jika dilakukan di frame lain. Dengan "this" yang merujuk _root di timeline, kode di frame "sukses" bisa dipersingkat menjadi:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
for (i=0; i<l.nr; i++) {
this["ids"+i]=l["idlv"+i];
this["sek"+i]=l["usernlv"+i];
this["pik"+i]=l["ubiolv"+i]
}
//Bagaimana versi me-load data dengan button? Masukkan onLoad dan metode sendAndLoad dalam satu fungsi seperti ini:
l = new LoadVars();
function ambil_data() {
l.onLoad = function(ok) {
gotoAndStop("sukses")
}
l.sendAndLoad("http://localhost/getrow.php", l, "POST");
};
btn.onRelease=ambil_data;
MySQL_fetch_row vs mySQL_fetch_assoc vs mySQL_fetch_array
MySQL_fetch_row disebut lebih cepat dari fetch_assoc dan fetch_array. Jika memakai mysql_fetch_row, kita mendapat hasilnya berupa baris data setiap kolom yang disimpan dalam array yang dimulai dari 0. Kelemahannya, kita harus mengingat posisi kolom dengan benar, apakah kolom[1] adalah field "username" ataukah kolom[2]?
Mysql_fetch_assoc akan menghasilkan data string dalam bentuk associative array. Setiap kunci dalam array mewakili nama kolom field tabel database. Metode fetch_assoc lebih mudah digunakan karena kita bisa menggunakan nama field atau kolom. Sementara fetch_array menghasilkan baris string dalam bentuk associative array seperti fetch_assoc, atau urutan baris yang numerik sepeti fetch_row atau keduanya.
Ada debat tentang yang mana metode mengambil data MySQL yang lebih cepat, sebagian memihak fetch_assoc karena fetch_array sebenarnya merupakan gabungan fetch_row dan fetch_assoc. Namun, jika data yang diambil tidak "banyak", perbedaannya tidak begitu signifikan. Ujung-ujungnya terserah Anda.

Contoh dan perbandingan.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
mysql_fetch_row
<?php
include_once("connect.php");
$qr = mysql_query("SELECT id, username, user_bio from $tabel");
$nr = 0;
while($kolom=mysql_fetch_row($qr) )
$ids=$kolom[0];
$usern=$kolom[1];
$ubio=$kolom[2];
echo "&idlv$nr=$ids&usernlv$nr=$usern&ubiolv$nr=$ubio";
$nr++;
}
echo "&nr=$nr&";
?>
//mysql_fetch_assoc
{code}
<?php
include_once("connect.php");
$qr = mysql_query("SELECT id, username, user_bio from $tabel");
$nr = 0;
while($row = mysql_fetch_assoc($qr))
{
echo "&idlv$nr=$row[id]&usernlv$nr=$row[username]&ubiolv$nr=$row[ user_bio]&<br>";
$nr++;   
}
echo "&nr=$nr&";
?>
//mysql_fetch_array
<?php
include_once("connect.php");
$qr = mysql_query("SELECT id, username, user_bio from $tabel");
$nr = 0;
while($row=mysql_fetch_array($qr))
{
echo "&idlv$nr=$row[id]&usernlv$nr=$row[username]&ubiolv$nr=$row[ user_bio]&<br>";
$nr++;
}
echo "&nr=$nr&";
?>


Memakai Array untuk menampung variabel LoadVarsSebenarnya, output dari PHP yang diterima Flash merupakan array, di mana baris pertama tabel merupakan row[0] pada field yang ada. Misalnya data yang diambil 10 baris, maka nilai baris pertama field "id" adalah "id0", dan baris kedua adalah "id1", begitu juga pada field "username" adalah "username0" dan "username1". Pada praktiknya, demi alasan kemudahan membaca kode, kita mendefinisikan ulang variabel yang diterima dari PHP ke dalam variabel Loadvars. Misalnya untuk "id" kita namakan "idlv" dan untuk "username" kita namakan "usernlv". Isinya adalah array. "usernlv1" akan menampung "username1".
Menggunakan array di Flash untuk menampung variabel dari PHP (yang sebenarnya array juga) meski agak berlebihan (soalnya kita bisa mengakses langsung output variabel PHP) akan ada gunanya. Seandainya kita mengambil sekian banyak field dari tabel namun hanya mengolah satu dua field secara dinamis, penggunaan array Flash akan membantu. Yang mesti diingat, agar bisa diakses di manapun di dalam Flash, array didefinisikan secara_global (dimulai pada AS2). Walau tanpa _global, kode tetap bisa dijalankan, ketika struktur aplikasi sudah kompleks, Anda bisa kehilangan scope. Jadi, sebaiknya tetap memakai _global.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
getlv.= new LoadVars();
myArray = new Array(); // atau _global.myArray = new Array();
getlv.onLoad = function(ok:Boolean) {
for (var i:Number = 0; i<3; i++)
{
myArray.push (getlv["user_bio"+i]);      
}
gotoAndStop("sukses");   
};
getlv.sendAndLoad("http://localhost/getarray.php", getlv, "POST");
//Kita memasukkan output dari "getarray.php" (ambil dari contoh fetch_array sebelumnya) ke dalam array myArray dengan metode "push".
//Lalu di frame "sukses", kita menampung array dalam dynamic text dengan nama variabel masing-masing "dat0"..."dat2".
dat0=myArray[0];
dat1=myArray[1];
dat2=myArray[2];
//versi yang ringkas dengan iterasi
for (var i:Number = 0; i<myArray.length; i++) {
this["dat"+i]=myArray[i]
}
 Ctrl+Enter. 
Sukses.

Related Posts

Cara Koneksi Database Mysql Ke Flash
4/ 5
Oleh

Subscribe via email

Like the post above? Please subscribe to the latest posts directly via email.