Selasa, 30 Desember 2008

Pengenalan MYSQL Pada PHP

Page 1

Pengenalan MYSQL Pada PHP
(Jul 07, 2008 at 06:57 AM) -
MySQL adalah salah satu program penghasil database yang berbasis DOS jadi bila anda ingin menjalanlan program ini,
Anda harus masuk ke MS DOS Prompt lebih dahulu. Untuk lebih jelasnya kita praktekkan langka berikut.
1.Buka MS –DOS prompt Anda dengan dengan klik start,program,MS-DOS Prompt
2.Setelah itu, Anda akan dihadapkan pada halaman DOS dengan C: Prompt. Dari sana anda harus pindah direktory
sampai mendapatkan direktory
C:\xammplite\mysql\bin\mysql.exe
3.Untuk dapat masuk ke MYSQL anda harus ketik perintah sebagai berikut
4.Dari prompt C:\WINDOWS\ CD\ (Untuk keluar dari direktori)
5.setelah berada di direktory C:\ keti perintah berikut ini
C:\cd xampplite (tekan enter)
C:\xampplite\cd mysql (tekan enter)
C:\xampplite\mysql\cd bin
C:\xammplite\mysql\bin\mysql
Anda akan ditanya user name dan password isilah dengan defult user name yang telah ada yaitu
C:\xammplite\mysql\bin\mysql -u root –p (tekan enter dan kosongkan password yang diminta)
Prompt MY SQL
Pada saat anda pertama kali masuk ke dalam server MYSQL.local maupun remote,Anda akan mendapatkan prompt
bertuliskan mysql >.ini adalah prompt standart yang pertama kali anda temui dalam mySQL.akan tetapi setelah anda
melakukan beberapa perintah yang mengakibatkan Anda harus berganti baris makan anda akan memui prompt
berbentuk >. Tanda tersebut merupakan prompt yang ada pada mysql masalahnya apa perbedaan dari prompt tersebut
?. Ada empat macam prompt yang dimiliki oleh MYSQL
http://www.itkomputer.com - Kursus komputer
Powered by Mambo
Generated:24 December, 2008, 06:33
Page 2
•Mysql>: Prompt standar yang menandakan siap menerima perintah baru yang anda ketik
•->: Prompt ini akan muncul apabila perintah yang anda masukan belum selesai jadi artinya sedang menunggu intruksi
selanjutnya
•“> :Prompt ini memberi pesan bawa perintah yang ada minta tidak dapat di eksekusi karena query belum anda tutup (“),
tetapi sudah anda akhiri.
•‘>:Promp ini mirip dengan “>, tetapi kesalahannya adalah anda kurang tanda petik(‘) dalan menulis perintah,
Note:
Untuk menjalankan perintah yang siap di eksekusi akhiri dengan tanda (; ),
Selamat Mencoba
Nantikan tutorial berikutnya
Salam
itkomputer.com
http://www.itkomputer.com - Kursus komputer
Powered by Mambo
Generated:24 December, 2008, 06:33

Belajar Lebih Jauh Click Here!

TENTANG PHP

Page 1
1. Pengenalan PHP
PHP (akronim dari PHP Hypertext Preprocessor) yang merupakan bahasa pemrogramman
berbasis web yang memiliki kemampuan untuk memproses data dinamis.
PHP dikatakan sebagai sebuah server-side embedded script language artinya sintaks-sintaks dan
perintah yang kita berikan akan sepenuhnya dijalankan oleh server tetapi disertakan pada
halaman HTML biasa. Aplikasi-aplikasi yang dibangun oleh PHP pada umumnya akan memberikan
hasil pada web browser, tetapi prosesnya secara keseluruhan dijalankan di server.
Pada prinsipnya server akan bekerja apabila ada permintaan dari client. Dalam hal ini client
menggunakan kode-kode PHP untuk mengirimkan permintaan ke server (dapat dilihat pada
gambar dibawah). Ketika menggunakan PHP sebagai server-side embedded script language maka
server akan melakukan hal-hal sebagai berikut :

Membaca permintaan dari client/browser

Mencari halaman/page di server

Melakukan instruksi yang diberikan oleh PHP untuk melakukan modifikasi pada
halaman/page.

Mengirim kembali halaman tersebut kepada client melalui internet atau intranet.
Mengapa PHP
?

PHP dapat dijalankan pada platform yang berbeda-beda (Windows, Linux, Unix, etc.)

PHP merupakan
web scripting open source

PHP mudah dipelajari Click Here!


echo “Hello”;
?>


Hello

Hello
HTTP request
WEB SERVER
CLIENT
Browser
creates the
web page
Server Response
Gets page
Page 2
2.Syntax PHP
Kode PHP
disimpan
sebagai plain text dalam format ASCII, sehingga kode PHP dapat ditulis hampir di
semua editor text
seperti
windows notepad, windows wordpad, dll. Kode PHP adalah kode yang disertakan
di sebuah halaman HTML dan kode tersebut dijalankan oleh server sebelum dikirim ke browser.
Contoh file PHP (contoh.php):

Print ("Contoh text yang menggunakan kode PHP");
?>

Pada file .html, HTTP server hanya melewatkan content dari file menuju ke browser. Server tidak
mencoba untuk mengerti atau memproses file, karena itu adalah tugas sebuah browser.
Pada file dengan ekstensi .php akan ditangani secara berbeda. Yang memiliki kode PHP akan
diperiksa. Web server akan memulai bekerja apabila berada diluar lingkungan kode HTML. Oleh
karena itu server akan melewati semua content yang berisi kode HTML, CSS, JavaScript, simple
text di browser tanpa diinterpretasikan di server.
Blok
scripting
PHP selalu diawali dengan . Blok
scripting
PHP dapat
ditempatkan dimana saja di dalam dokumen. Pada beberapa server yang mendukung, blok
scripting
PHP dapat diawali dengan . Namun, untuk kompatibilitas
maksimum, sebaiknya menggunakan bentuk yang standar ().
Setiap baris kode PHP harus diakhiri dengan semikolon (;). Semikolon ini merupakan
separator
yang digunakan untuk membedakan satu instruksi dengan instruksi lainnya.
PHP menggunakan // untuk membuat komentar baris tunggal atau /* dan */ untuk membuat
suatu blok komentar.

3. Variabel PHP
Variabel digunakan untuk menyimpan suatu nilai, seperti text, angka atau array. Ketika sebuah
variabel dibuat, variabel tersebut dapat dipakai berulang-ulang.
Pada PHP semua variabel harus dimulai dengan karakter '$'. Variabel PHP tidak perlu
dideklarasikan dan ditetapkan jenis datanya sebelum kita menggunakan variabel tersebut. Hal
itu berarti pula bahwa tipe data dari variabel dapat berubah sesuai dengan perubahan konteks
yang dilakukan oleh user. Secara tipikal, variabel PHP cukup diinisialisasikan dengan memberikan
nilai kepada variabel tersebut.
Contoh berikut akan mencetak "PHP" :
$text = "PHP";
print "$text";
Identifier dalam PHP adalah case-sensitive, sehingga $text dengan $Text merupakan variabel yang berbeda.
Built-in function dan structure tidak case-sensitive, sehingga echo dengan ECHO akan mengerjakan
perintah
yang sama. Identifier dapat berupa sejumlah huruf, digit/angka, underscore, atau tanda dollar
tetapi identifier tidak dapat dimulai dengan digit/angka.
Aturan Penamaan Variabel

Nama variabel harus diawali dengan sebuah huruf atau garis bawah (underscore) “_”
Page 3

Nama variabel hanya boleh mengandung karakter alpha-numeric dan underscore (a-Z, 0-
9, dan _ )

Nama variabel tidak boleh mengandung spasi.

4. String di PHP
Variabel string digunakan untuk nilai yang mengandung k
arakter string. Pada contoh berikut, skript
PHP memberikan string "Hello World" pada variabel string bernama $txt :
$txt="Hello World";
echo $txt;
?>
Keluaran kode tersebut adalah : Hello World
Hanya ada satu operator string di PHP.
Concatenation operator
(.). digunakan untuk menggabungkan dua
string. Contoh :
$txt1="Hello World";
$txt2="1234";
echo $txt1 . " " . $txt2;
?>
Keluaran kode tersebut adalah : Hello World 1234

5. Operator di PHP
Operator digunakan untuk menentukan sebuah nilai dengan melakukan suatu prosedur, atau dengan suatu
operasi
dari beberapa nilai. Nilai yang digunakan dalam sebuah operasi disebut operand. Penjumlahan
adalah sebuah contoh sederhana dari suatu operasi.
Sebagai
contoh : 2 + 4
2 dan 4 adalah sebuah operand. Ekspresi ini akan menghasilkan 6.
Arithmetic
Operator (Operator Aritmatika)
PHP
menggunakan
operator arithmetic dasar :
Operator Aksi
Contoh Penejelasan
+
Penjumlahan
5 + 9
Menghasilkan nilai : 14
-
Pengurangan 9 - 4
Menghasilkan nilai : 5
*
Perkalian
5 * 6
Menghasilkan nilai : 30
/
Pembagian
20 / 4
Menghasilkan nilai : 5
%
Modulus
9 % 4
Menghasilkan nilai : 1
Page 4
PHP mengabaikan karakter spasi dalam sebuah operasi. Ekspresi $x = 5 + 9 dengan dengan $x=5+9 akan
menghasilkan nilai yang sama.
Penggunaan
spasi disesuaikan dengan keinginan dari para user.
Unary Operator
Tanda minus ( - ) digunakan dengan sebuah nilai numerik tunggal untuk menegatifkan sebuah
bilanga
n (untuk membuat negatif bilangan postif atau membuat postif bilangan negatif).
Contoh :
$x = 2;
$y = -$x;
// $y = -2
$i = -234;
$j = -$i;
// $j = 234
Variable Assignment Operator
Tanda sama dengan ( = ) digunakan untuk mengatur atau menetapkan nilai suatu variabel. Oleh
karena itu tanda tersebut dikenal sebagai operator penugasan.
Contoh :
$x = 1;
$y = x + 1;
$luas = $panjang * $lebar;
$statements = "Yes";
Variabel disebelah kiri tanda ( = ) akan diberikan nilai dari ekspresi disebelah kanan tanda ( = ).
Comparison Operator (Operator Perbandingan)
Operator perbandingan digunakan untuk menguji suatu kondisi. Ekspresi yang menggunakan operator
perbandingan akan selalu menghasilkan nilai boolean, yaitu antara true (benar) atau false (salah).
Contoh :
$i = 4;
if ($i < 6) print "akan dilakukan pencetakan";
// ekspresi '$i < 6' adalah benar
if ($i > 6) print "tidak akan tercetak";
// ekspresi '$i > 6' adalah salah
Beberapa operator perbandingan yang lain adalah sebagai berikut :
Operator Arti
Contoh
Menghasilkan benar (true) ketika :
==
Sama dengan
$i == $j
$i dan $j mempunyai nilai yang sama
<
Kurang dari
$i < $j
$i kurang dari $j
Page 5
>
Lebih dari
$i > $j
$i lebih dari $j
<=
Kurang dari atau
sama dengan
$i <= $j
$i kurang dari atau sama dengan $j
>=
Lebih dari atau
sama dengan
$i >= $j
$i lebih dari atau sama dengan $j
!=
Tidak
sama
dengan
$i != $j
$i tidak sama dengan $j
<>
Tidak
sama
dengan
$i <> $j
$i tidak sama dengan $j
===
Identik
$a ===
$b
Benar jika $a sama dengan $b, dan keduanya
memiliki type data yang sama.(hanya dalam PHP4)
Ingat
!
Tanda ( == ) merupakan operator perbandingan untuk menguji suatu variabel sedangkan tanda ( = )
adalah operator penugasan untuk memberikan nilai kepada suatu variabel. Perhatikan dua contoh dibawah
ini.
Contoh salah !
$i = 3;
if($i = 5) print "lima";
// akan mencetak lima. Pernyataan $i=3 akan diabaikan
$i = 3;
if(5 = $i) print "lima";
/* parse error terdapat kesalahan. PHP berusaha memberikan nilai
$i kepada bilangan 7
*/
Contoh Benar !
$i = 3;
if($i == 5) print "lima";
// $i == 5 menghasilkan nilai false (salah) sehingga pernyataan
// print "lima" tidak dijalankan.
$i = 3;
if(5 == $i) print "lima";
// 5 == $i menghasilkan nilai false (salah) sehingga pernyataan
// print "lima" tidak dijalankan.
$a = "7";
$b = 7.00;
Page 6
print ($a == $b);
// mencetak 1 (true)
print (($a == $b) and (gettype($a) == gettype($b))); // mencetak 0
Logical Operator (Operator Logika)
Operator logika digunakan untuk mengkombinasikan kondisi, sehingga beberapa kondisi dapat
dievaluasi atau diperiksa dalam sebuah ekspresi. Sebagai contoh logika AND akan bernilai true
jika semua kondisi benar. Tabel
berikut ini menunjukkan semua anggota dari operator logika :
Operator
Contoh
Bernilai benar jika :
AND / and
$i && $j atau $i AND $j
$i dan $j bernilai bernilai benar
OR / or
$i || $j atau $i OR $j
Salah satu atau kedua variabel bernilai benar
XOR
$i XOR $j
Salah satu variabel bernilai benar, tetapi tidak
keduanya benar
NOT
!$i
$i tidak bernilai benar
Contoh :
$i = 1;
$j = 2;
$k = 3;
if($i==1 && $j==2 && $k==3) print "akan tercetak";
// akan mengeksekusi pernyataan print
if($i==1 OR $k==3) print "akan tercetak";
// akan mengeksekusi pernyataan print
if($i==1 XOR $j==2) print "akan tercetak";
// tidak mengeksekusi pernyataan print karena kedua variabel //bernilai benar
if !($i==1 && $k==3) print "akan tercetak";
// tidak akan mengeksekusi pernyataan print
if (($i==1 && $k==3) XOR ($i==1 || $j=2) XOR ($i==1)) print "akan tercetak";
// akan mengeksekusi pernyataan print
String Concatenation Operator
Tanda
titik ( . ) sebagai operator concatenate (penggabung) digunakan untuk menggabungkan dua atau
lebih nilai string menjadi sebuah string tunggal.
Contoh :
$subjek = "saya";
Page 7
$predikat = "sedang belajar";
$objek = "PHP";
$kalimat = $subjek." ".$predikat." ".$objek;
print $kalimat;
// akan mencetak saya sedang belajar PHP
print "$kalimatversi 3";
// akan akan mencetak 3
print "$kalimat versi 3";
// akan mencetak saya sedang belajar PHP versi 3
print "${kalimat} versi 3";// akan mencetak saya sedang belajar PHP versi 3
$bilangan = "1 ";
$bilangan .= "2 ";
$bilangan .= "3";
print $bilangan;
// akan mencetak 1 2 3
Variable
Assignment Shortcut
Pada PHP dimungkinkan untuk melakukan penggunaan jalan pintas untuk operator pada pernyataan
penugasan dimana operand pertama adalah sebuah variabel dan hasilnya disimpan pada variabel yang
sama.
Contoh
Ekivalen dengan
$x += $y
$x = $x + $y
$x -= $y
$x = $x - $y
$x *= $y
$x = $x * $y
$x /= $y
$x = $x / $y
$x %= $y $x = $x % $y
$x &= $y
$x = $x & $y
$x |= $y
$x = $x | $y
$x ^= $y
$x = $x ^ $y
$x .= $y
$x = $x . $y
$x >>= 2 $x = $x >> 2
$x <<= 2 $x = $x << 2
$x++
$x = $x + 1
$x--
$x = $x - 1
Contoh :
$x = 10; // $x bernilai 10
$x++;
// $x bernilai 11
Page 8
$x = 10; // $x bernilai 10
++$x;
// $x bernilai 11
tetapi,
$x = 10; // $x bernilai 10
$y = $x++;
// $x bernilai 11 tetapi $y bernilai 10
$x = 10; // $x bernilai 10
$y = ++$x;
// $x dan $y bernilai 11
// penugasan terjadi setelah penambahan
6.
Control Structures
di PHP
Skrip PHP terdiri dari rangkaian pernyataan. Sebuah pernyataan dapat berupa
assignment
,
pemanggilan fungsi, sebuah
loop
, pernyataan kondisional atau bahkan pernyataan kosong.
Pernyataan biasanya diakhiri dengan semikolon. Sebagai tambahan, pernyataan-pernyataan
dapat dikelompokkan menjadi suatu kelompok pernyataan menggunakan kurung kurawal ( {} ).
Sebuah kelompok pernyataan merupakan sebuah pernyataan juga.

IF
Syntax : if (expr) statement
Contoh : - if ($a > $b) print "a is bigger than b";
- Jika statemen lebih dari satu maka :
if ($a > $b) {
print "a is bigger than b";
$b = $a;
}

Else
if ($a > $b) {
print "a is bigger than b";
} else {
print "a is NOT bigger than b";
}

Elseif
if ($a > $b) {
print "a is bigger than b";
} elseif ($a == $b) {
print "a is equal to b";
} else {
print "a is smaller than b";
}

Switch
Page 9
Pernyataan switch mirip dengan rangkaian pernyataan IF dengan ekspresi yang sama.
Pernyataan switch digunakan untuk membandingkan variabel yang sama (atau ekspresi) dengan
banyak nilai yang berbeda, dan menjalankan kode-kode yang berbeda tergantung pada nilai
mana variabel tersebut sama.
Sangat penting untuk memahami bagaimana pernyataan switch dieksekusi agar terhindar dari
kesalahan. Pernyataan switch dieksekusi per pernyataan. Di awal, tidak ada kode yang
dieksekusi. Ketika pernyataan
case
sesuai dengan ekspresi pada switch, PHP mulai mengeksekusi
pernyataan-pernyataan tersebut. PHP terus mengeksekusi pernyataan-pernyataan tersebut
hingga akhir blok switch, atau pada saat pertama kali bertemu pernyataan break. Jika tidak ada
pernyataan break, PHP akan mengeksekusi pernyataan-pernyataan pada case berikutnya.
Contoh:
switch ($i) {
case 0:
print "i equals 0";
case 1:
print "i equals 1";
case 2:
print "i equals 2";
}
Pada pernyataan switch, kondisi (ekspresi) hanya diperiksa sekali dan hasilnya dibandingkan
dengan setiap pernyataan case.

While
Perulangan
while
merupakan perulangan yang paling sederhana di PHP. Bentuk dasar
pernyataan while adalah :
while (expr) statement
Pada while, PHP mengeksekusi pernyataan-pernyataan bersarang (
nested statement(s)
)
berulang-ulang, selama ekspresi yang dievaluasi bernilai benar (
TRUE
). Nilai ekspresi tersebut
diperiksa setiap saat di awal perulangan. Jika hasil evaluasi ekspresi adalah salah (
FALSE
) sejak
awal, pernyataan-pernyataan bersarang tersebut tidak akan dijalankan meskipun sekali.
Contoh :
$i = 1;
while ($i <= 10) {
print $i++; /* the printed value would be
$i before the increment
(post-increment) */
}

Do ... while
Perulangan do..while loops hamper sama dengan perulangan while, kecuali kebenaran ekspresi
dicek di akhir iterasi. Perbedaan mendasar dari perulangan while adalah iterasi pertama pada
do…while pasti akan dijalankan.
Contoh :
$i = 0;
do {
print $i;
} while ($i>0);
Page 10

For
Syntax : for (expr1; expr2; expr3) statement
Ekspresi pertama (expr1) dievaluasi (dieksekusi) sekali di awal perulangan. Di awal setiap iterasi,
expr2 dievaluasi. Jika benar, perulangan dilanjutkan dan pernyataan-pernyataan bersarang
dieksekusi. Jika salah, perulangan dihentikan. Di akhir setiap iterasi, expr3 dievaluasi
(dieksekusi).
Contoh :
for ($i = 1; $i <= 10; $i++) {
print $i;
}
7. Array di PHP
Array sederhana
Dalam PHP, sebuah variabel dapat dinyatakan sebagai sebuah tempat untuk sebuah nilai
tunggal. Sedangkan Array adalah sebuah tempat untuk sekumpulan nilai. Sebuah array terdiri
dari sejumlah element, yang masing-masing memiliki sebuah nilai - data yang tersimpan pada
elemen array tersebut - dan sebuah key atau index, dimana elemen tersebut dapat dirujuk.
Normalnya, sebuah index berupa integer. Secara default, array adalah basis nol, artinya elemen
pertama dari array memiliki index nol. akan tetapi index dapat juga berupa string.
Bentuk sederhana array terdiri dari serangkaian elemen yang bertanda dimulai dari nol dan
bertambah secara sekuensial. Sebagai contoh sebuah array bernama $branch, setiap elemen
berisi nama kota cabang sebuah perusahaan.
$branch[0]
$branch[1]
$branch[2]
$branch[3]
$branch[4]
"Semarang"
"Surabaya"
"Medan"
"Bandung"
"Yogyakarta"
Array dalam PHP dapat berisi elemen dari sejumlah tipe data yang berbeda. Artinya array dalam
PHP tidak harus memiliki tipe data yang sama. Setiap elemen dapat berupa tipe data apa saja.
Ada tiga jenis array di PHP:

Numeric array – Array dengan dengan kunci ID numerik

Associative array – Array dimana setiap kunci ID berasosiasi dengan sebuah nilai

Multidimensional array - Array yang menyimpan satu atau lebih array
Inisialisasi array
Ada banyak cara untuk melakukan inisialisasi sebuah array. Cara pertama yang sederhana adalah
cukup dengan memberikan nilai kepada variabel array.
$branch[] = "Semarang";
$branch[] = "Surabaya";
$branch[] = "Medan";
Page 11
Jika tanda kurung siku pada variabel array tidak diberikan nilai index, maka secara default maka
element sebenarnya bernilai index 0,1,2,.... contoh dibawah akan menghasilkan array yang sama
dengan contoh diatas.
$branch[0] = "Semarang";
$branch[1] = "Surabaya";
$branch[2] = "Medan";
Dalam prakteknya, pemberian index dilakukan secara sekuensial atau berurutan. Tetapi dilain hal
dapat dilakukan peng-indekkan secara acak sesuai keinginan user.
$branch[20] = "Semarang";
$branch[22] = "Surabaya";
$branch[23] = "Medan";
print $branch[23] // print Medan
Array tersebut memiliki tiga buah elemen juga tetapi indeksnya merupakan bilangan acak yaitu
20, 22, 23.
Jika menginginkan jumlah dari elemen array yang terdapat pada sebuah variabel array, dapat
digunakan fungsi count(). Fungsi tersebut mengembalikan nilai fungsi berupa integer yang
menyatakan jumlah elemen array.
$branch[20] = "Semarang";
$branch[23] = "Surabaya";
$branch[] = "Medan";
// memiliki indeks 24
// bilangan indeks kedua setelah
// bilangan indeks terbesar
print count ($branch)
// print 3
print $branch[]
// print nothing
print $branch[24]
// print Medan
Cara lain untuk menginisialisasi array adalah dengan konstruksi array array(). Nilai dikirimkan
kedalam array yang akan diberikan.
$branch = array("Semarang", "Surabaya", "Medan");
print $branch[2]; // print Medan
Jika user ingin mengesampingkan indeks secara default, operator (=>) dapat digunakan untuk
memberikan indeks spesifik untuk elemen array. Pada contoh sebelumnya $branch memiliki tiga
elemen dengan indeks 0, 1, dan 2. jika user menginginkan array dengan basis satu (indeks
dimulai dari 1, 2, 3, ...), maka dapat dituliskan dengan menggunakan operator (=>).
$branch = array(1 => "Semarang", "Surabaya", "Medan");
$city = array("Solo", 7 => "Gresik", "Brastagi");
print $branch[3]; // print Medan
print $city[8];
// print Brastagi
Page 12
8. Form di PHP
Contoh Form :



Name:
Age:




Contoh halaman HTML di atas mengandung dua field input dan sebuah tombol submit. Ketika
user mengisi form dan mengklik tombol submit, data form akan dikirim ke file.
File "welcome.php" :


Welcome .

You are years old.


Keluaran dari skrip tersebut adalah :
Welcome John.
You are 28 years old.
Untuk mengambil data form di PHP digunakan variabel $_GET atau $_POST.

Jumat, 19 Desember 2008

CMS

Content Management System (CMS)


CMS adalah perangkat lunak yang memungkinkan seseorang untuk menambahkan dan/atau memanipulasi (mengubah) isi dari suatu situs Web. Umumnya, sebuah CMS (Content Management System) terdiri dari dua elemen:

* aplikasi manajemen isi (Content Management Application, [CMA])
* aplikasi pengiriman isi (content delivery application [CDA]).

Terdapat banyak sekali CMS di dunia open source saat ini, beberapa diantaranya yang cukup populer dan memiliki fitur yang lengkap adalah Drupal, Joomla dan Xoops. Masing-masing memiliki ke khasan dan kekayaan modul tersendiri.

Tentang Drupal
Drupal adalah nama salah satu CMS yang populer di dunia open source saat ini. Seperti kebanyakan CMS, dengan menggunakan Drupal akan jauh lebih memudahkan dalam mempublikasikan dan mengelola serta mengorganisasikan
situs kita (website) untuk berbagai tujuan. Sudah lebih dari sepuluh ribu orang dan organisasi telah menggunakan Drupal untuk berbagai keperluan.

Penggunaannya antara lain sebagai :
● Web Portal Komunikasi dan Situs diskusi
● Situs web perusahaan ataupun intranet portal
● Aplikasi-aplikasi Ecommerce
● Situs Web pribadi
● Direktori sumber daya
● Dan lain sebagainya

Drupal memiliki berbagai fitur yang dapat terhubung antara satu fitur dengan lainnya seperti :
● Blogs
● Lingkungan penulisan secara kolaborasi
● Sistem Pengelolaan Isi (Content Management System/CMS)
● Unggah (upload) dan unduh (download) File
● Forum
● Newsletter
● Galeri gambar
● dan sebagainya

Lisensi Drupal
Drupal adalah software yang berlisensi GPL (GNU Public License), dan terus dipeliharan hingga kini serta dikembangkan oleh komunitas yang terdiri dari ribuan pengguna dan pengembang. Drupal bebas diunduh dan digunakan.

Tentang Joomla
Pada tahun 2006, Joomla memenangkan contest software Content Management System. Karena itu tidak mengherankan kalau Joomla sangat populer. Joomla dikembangkan oleh para pengembang yang dulunya ikut membangun CMS Mambo. Mereka keluar dari tim pengembang Mambo pada Agustus 2005, dan akhirnya mengeluarkan rilis pertama Joomla yaitu rilis 1.0. Rilis ini sangat mirip dengan Mambo versi 4.5.2.

Tentang XOOPS
XOOPS adalah singkatan dari “eXtensible Object Oriented Portal System”. Dikembangkan dengan menggunakan PHP, XOOPS bertujuan agar siapapun
dapat mengadministrasi website dinamisnya dengan lebih mudah. XOOPS menjadi alat yang ideal bagi situs web komunitas, portal internal perusahaan, portal korporasi, weblogs dan sebagainya. XOOPS dapat dipasang dan Internet yang mendukung PHP, web server Apache dan database MySQL.


Customer Relationship Management (CRM)

Tentang SugarCRM
SugarCRM adalah pemimpin penyedia aplikasi komersial kelas dunia untuk aplikasi manajemen hubungan pelanggan (Customer Relationship Management/CRM) dan yang terbaik di lingkungan Open Source. SugarCRM dapat digunakan oleh berbagai ukuran perusahaan, dari perusahaan kecil hingga perusahaan besar. Dalam pengembangannya SugarCRM melibatkan banyak narasumber dari mulai operator pengguna aplikasi CRM, para pelanggan, pengembang, dan para Ahli yang menyatukan kebutuhannya, opini, serta pengalaman kedalam solusi SugarCRM. SugarCRM dapat dengan mudah beradaptasi pada berbagai lingkungan bisnis dengan menawarkan banyak fleksibilitas, alternatif biaya yang murah, hingga ke solusi propertiary atau berbayar. Arsitektur Open Source SugarCRM memungkinkan setiap perusahaan dengan mudah mengubah atau menyesuaikan dan mengintegrasikan bisnis proses pelanggan demi mencapai tujuan membangun dan memelihara hubungan pelanggan yang lebih menguntungkan.


Enterprise Resource Planning (ERP)

Tentang Compiere ERP
Compiere adalah software Enterprise Resource Planning (ERP) yang open source. Aplikasiaplikasi ERP biasanya akan memiliki modul-modul seperti Pemasaran dan Penjualan, Bidang Layanan, Produksi, Pendalian Inventori, Pengadaan, Distribusi, Pengelolaan Sumber Daya Manusia (SDM), Keuangan dan Akunting. Compiere memang tidak dirancang untuk perusahaan yang sangat besar, tetapi sangat cocok untuk perusahaan kecil dan menengah (UKM) dan yang penting adalah mudah untuk di pasang/install. Pada awalnya Compiere hanya menggunakan database Oracle, tetapi saat ini Anda sudah dapat menggunakan database selain Oracle seperti PostgreSQL. Pada dokumen ini, instalasi database difokuskan menggunakan Oracle 10g xe. Selain itu pula software Java seharusnya sudah terpasang di server Anda.

Instalasi dan Menjalankan Compiere meliputi langkah-langkah sebagai berikut :
1. Menginstall database
2. Menginstall JDK
3. Mengunduh dan mengekstrak Compiere
4. Persiapan instalasi Server
5. Pengaturan Database (import dan setup databae Oracle untuk Compiere)
6. Memulai Server
7. Mensetup klien
8. Memulai klien (nama user dan password)

ARTIKEL PHP/MYSQL

Artikel PHP/MySQL
Mengirim email dengan PHP, mulai dari email biasa, email HTML sampai email dengan attachment

Mengirim email dengan PHP bukan merupakan hal yang sulit, PHP telah menyediakan fungsi mail() untuk mengirim email dengan PHP. Anda dapat mengirim email teks biasa, email HTML bahkan email dengan attachment dengan mudah.
Fungsi mail()

Pertama-tama kita pelajari dulu fungsi mail(). Sintaksnya seperti ini:

mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])

Fungsi mail() memiliki 3 parameter wajib dan satu parameter opsional. Ke 3 parameter tersebut adalah email tujuan, judul email dan isi email, serta 1 parameter opsional yaitu header email.
Upload file ke server dengan menggunakan PHP

Kali ini saya akan membahas tentang upload file menggunakan PHP. Tentu menyenangkan jika pengguna website anda dapat melakukan upload gambar, dokumen atau video kedalam website anda. Artikel ini akan menerangkan cara mengupload file keserver anda dengan PHP.

PHP membuat semuanya menjadi lebih mudah dalam menangani upload file. Untuk membuat form upload pastikan kita menyertakan atribut enctype=”multipart/form-data” dan pastikan methodnya adlaha post. Oke langsung saja kita lihat kode HTML berikut ini:

” enctype=”multipart/form-data”>




Seperti yang kita lihat, kita me,mberi nama pada field upload kita “myfile”. Nama ini sangat penting, karena ketika file telah diupload maka file tersebut otomatis diberi nama yang unik dan disimpan di temporary direktori. Tentu saja url path ke filenya bisa diakses, karena otomatis akan muncul variabel global yang memiliki nama yang sama dengan field upload kita, dalam hal ini myfile. Akan ada 4 variabel baru yang semuanya diawali dengan myfile dan diikuti dengan garis bawah (underscore), yaitu:

* $myfile. Variabel ini berisi informasi lokasi file di server.
* $myfile_name. Nama file asli ketika masih dikomputer klien.
* $myfile_size. Ukuran dari file (dalam satuan bytes).
* $myfile_type. Tipe file.

Upload sederhana

Langsung saja kita coba contoh upload berikut ini, simpan dengan nama upload.php:



Upload file


if ( isset( $upload ) ) {
echo “Lokasi File: $myfile
”;
echo “Nama File: $myfile_name
”;
echo “Ukuran: $myfile_size bytes
”;
echo “Tipe File: $myfile_type
”;
copy ( $myfile, “$myfile_name”) or die (”Gagal mengupload”);
}
?>
” method=”post”>







Ketika tombol upload ditekan, maka url path file tersebut akan disimpan di variabel $myfile dan kita tampilkan dibrowser. Kita juga menampilkan nama file yang tersimpan pada variabel $myfile_name, ukuran file di variabel $myfile_size dan tipe file di variabel $myfile_type.

Kita menggunakan fungsi copy() untuk memindahkan file dari komputer kita direktori sementara di server kita. Fungsi copy() membutuhkan dua argumen yaitu lokasi awal file dan lokasi baru diserver. Jika kita ingin mengupload nya ke suatu folder diserver (katakanlah kita simpan difolder images) maka kita perlu mengubahnya menjadi: copy ( $myfile, “images/$myfile_name”)
Upload yang lebih kompleks

Sekarang mari kita coba membuat fungsi upload yang jauh lebih rumit. Misalkan kita ingin membuat fungsi upload dimana file yang diupload harus file jpg, dan ukurannya tidak boleh lebih besar dari 100Kb serta panjang dan lebar gambar tidak boleh lebih dari 100 piksel. Kelihatannya rumit kan? Mari kita coba kode berikut dan simpan dengan nama upload2.php:



Upload file


if ( isset( $upload ) ) {
echo “Lokasi File: $myfile
”;
echo “Nama File: $myfile_name
”;
echo “Ukuran: $myfile_size bytes
”;
echo “Tipe File: $myfile_type
”;
if ( $myfile_type == “image/pjpeg” ) {
if ($myfile_size <= 102400 ) {
list($width, $height) = @getimagesize(”$myfile”);
if ( $width <= 100 && $height <= 100 ) {
copy ( $myfile, “$myfile_name”) or die (”Couldn’t copy”);
echo “File anda telah sukses diupload”;
} else {
echo “Ukuran panjang dan lebar gambar terlalu besar”;
}
} else {
echo “Ukuran file tidak boleh lebih dari 100Kb”;
}
} else {
echo “File harus JPG!!”;
}
}
?>
” method=”post”>







PHP tidak memiliki kemampuan untuk membuat progress bar ketika file diupload. Karena PHP tidak dapat mengetahui berapa bagian yang telah diupload dan berapa yang belum. Kita perlu menggunakan CGI. Tetapi entah dengan PHP terbaru, siapa tau sudah memiliki class atau fungsi untuk membuat progress bar.

Pertama-tama yang kita lakukan adalah mengecek apakah file kita jpg dengan cara mengecek $myfile_type. Jika hasil dari variabel $myfile_type adalah “image/pjpeg”, maka bisa dipastikan bahwa file kita adalah jpg. Berikutnya kita melakukan pengecekan apakah ukuran filenya tidak lebih besar dari 100Kb dengan mengecek variabel $myfile_size. Ingat bahwa 100Kb = 102400Bytes(Rumusnya 1Kb=1024Bytes). Kemudian kita menggunakan fungsi getimagesize() untuk menemukan panjang dan lebar dari gambar yang kita simpan dengan array menggunakan fungsi list(). Kemudian kita cek panjang dan lebar dari gambar apakah tidak lebih dari 100 piksel. Jika semuanya terpenuhi maka filenya tinggal kita copy. Cukup mudah kan? gampang… anda pasti bisa.

Sumber : http://www.dhimasronggobramantyo.com/

TENTANG CMS, PHP DAN MYSQL

8 Hal Yang Harus Diketahui Programer Pemula Tentang MySQL

1. 1. Tabel MySQL bukanlah array
2. 2. Bahasa SQL dan Fungsi-Fungsi MySQL
3. 3. LIMIT, LIMIT, LIMIT
4. 4. Tipe Data
5. 5. Normalisasi dan Pemodelan
6. 6. Indeks
7. 7. Konkurensi, Locking, dan Transaksi
8. 8. Jenis Tabel
9. Penutup




Time and again I am amazed at how bad the successful software packages out there are. Apache is easily outperformed by fnord, MySQL isn't even a real database, PHP is so slow that Zend actually made a business model out of selling performance enhancing hacks for it.—diary Fefe

PHP+MySQL. Siapa yang tidak tahu bahwa duo sejoli ini adalah pasangan terpopular di dunia open source, bahkan di seluruh Internet. PHP telah menggeser Perl sebagai bahasa pilihan dalam membuat aplikasi Web, terutama bagi pemula. Dan PHP hampir selalu bersanding dengan MySQL; 90–95%+ skrip PHP di www.hotscripts.com mungkin bertuliskan “membutuhkan PHP dan MySQL”. Buku-buku PHP, termasuk untuk pemula, tidak akan dipandang afdol kalau belum membahas MySQL. Dan programer PHP, lambat atau cepat, mau atau tidak mau, pasti akan harus mengakrabi software database yang satu ini.

Sayangnya, banyak programer sudah bermain-main dan memakai MySQL secara live di situs produksi, padahal masih asing sama sekali dengan konsep database relasional. Bahkan sebetulnya MySQL juga banyak memiliki kekurangan dalam hal fitur SQL. Sehingga programer PHP tidak bisa memahami dan memanfaatkan kekuatan penuh database relasional + SQL.

Buat Anda para programer pemula yang memang masih awam dengan MySQL dan konsep database pada umumnya, tidak perlu minder atau khawatir. Di dunia IT yang bergerak serba cepat ini memang ada terlalu banyak hal yang harus dipelajari. Dan kebanyakan jadinya dipelajari sambil jalan, sambil dipraktikkan. Ketika mulai membangun CMS untuk satunet.com tahun 1999 pun, saya hanya punya skill terbatas tentang SQL: hanya tahu SELECT, UPDATE, DELETE, CREATE TABLE, dan DROP TABLE. Apa itu JOIN, bagaimana mengubah skema tabel, bagaimana mendesain database yang baik dan ternormalisasi, semuanya masih blank. Dan semua harus dipelajari sambil jalan. Tapi toh akhirnya semua baik-baik saja.

Lewat artikel ini kita akan membahas hal-hal dasar apa yang perlu diketahui agar bisa memakai MySQL dengan efektif dan efisien. Mari kita mulai dengan hal nomor satu:
1. Tabel MySQL bukanlah array

Programer PHP atau Perl tentu saja familiar dengan array dan hash, yang biasanya dipakai untuk menyimpan sekumpulan data terkait. Sebagian dari mereka yang tidak familiar dengan MySQL akan cenderung menganalogikan tabel database dengan array/hash (tepatnya, array of array atau array 2 dimensi). Tabel dipandang sama seperti sebuah array, hanya saja bisa berukuran besar sekali dan persisten (disimpan di disk).

Cara pandang ini tidak sepenuhnya salah, karena toh dalam mengambil record dari tabel biasanya ditampung ke dalam variabel array/hash. Hanya saja, cara pandang ini kadang-kadang membuat programer PHP melakukan sesuatu seperti:

$res = mysql_query("SELECT * FROM t1");
$rows = array();
while ($row = mysql_fetch_row($res)) $rows[] = $row;
echo "Jumlah record di tabel t1 = ", count($rows);

atau membuat tabel seperti:

CREATE TABLE t2 (
f0 INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
f1 INT UNSIGNED,
f2 VARCHAR(5),
f3 VARCHAR(200),
f4 VARCHAR(200),
f5 BLOB
);

Apa yang salah dengan kode PHP pertama di atas, yang bertujuan mencari jumlah record dalam sebuah tabel? Si programer, yang terlalu terobsesi menganggap tabel MySQL sebagai sebuah array, mencoba membangun dulu arraynya dengan mengisi satu-persatu elemen dari hasil query agar nantinya bisa menggunakan fungsi array count(). Masalahnya, bagaimana kalau jumlah record ada 100 ribu? 1 juta? 10 juta? Bukan itu saja, selesai di-count() variabel $rows langsung dibuang lagi! Padahal, ada cara yang jauh lebih efisien:

SELECT COUNT(*) FROM t1

Hasil querynya hanyalah sebuah record saja, tak peduli berapa pun ukuran tabel t1.

Lalu apa yang salah dengan kode SQL kedua? Si programer Perl, dalam hal ini, terobsesi ingin mengambil tiap record di tabel dengan fungsi DBI $sth->fetchrow_array()

@row = $sth->fetchrow_array();
print $row[0]; # f0
print $row[1]; # f1
print $row[2]; # f2
# ...

Enak bukan? Elemen ke-0 berisi nilai field f0, elemen ke-1 field f1, dst. Masalahnya, kemudahan ini mengorbankan nama field yang menjadi sangat tidak deskriptif. Belum lagi kalau tabel perlu diubah dengan menyisipkan field-field lain di antara field yang sudah ada. Atau field-field lama perlu dihapus. Semuanya akan menjadi mimpi buruk.

Sebagian pembaca mungkin geleng-geleng kepala. Apa benar ada programer PHP dan Perl yang melakukan kedua hal di atas? Percaya deh, ada. Saya pernah harus ketiban getah memaintain tabel dengan nama field kriptik seperti ini.
2. Bahasa SQL dan Fungsi-Fungsi MySQL

MySQL adalah database SQL bukan? Sayangnya, programer PHP pemula kadang terbatas sekali pengetahuan SQL-nya. Padahal, untuk menggunakan database MySQL dengan efektif, ia tidak boleh malas mempelajari bahasa kedua, yaitu SQL. Jika tidak belajar SQL, maka ada kemungkinan Anda akan melakukan hal-hal seperti:

$res = mysql_query("SELECT * FROM bigtable");
while ($row = mysql_fetch_assoc($res)) {
if ($row['age'] >= 40) {
echo "Ditemukan kustomer yang berusia lebih dari 40 tahun!\n";
break;
}
}

Apa salah kode di atas? Si programer PHP mencoba mensimulasikan klausa WHERE SQL dengan melakukan pengujian kondisi di kode PHP. Padahal, yang seharusnya dilakukan adalah:

SELECT * FROM bigtable WHERE age >= 40

Ini amat mengirit trafik client/server karena tidak semua record harus dikirimkan dari MySQL ke program PHP Anda.

Sebagian pembaca mungkin geleng-geleng kepala. Apa benar ada programer PHP yang seperti ini? Percaya deh, ada.

SQL sudah menyediakan cara untuk menyortir data, memformat tampilan, mengelompokkan dan memfilter record, dsb. MySQL juga terkenal banyak menyediakan fungsi-fungsi, mulai dari manipulasi tanggal, angka, string, dsb. Kenali SQL dan fungsi-fungsi MySQL; jangan duplikasikan ini semua di PHP sebab akan lebih efisien jika dilakukan di level MySQL.

Ini contoh lain programer PHP yang tidak memanfaatkan fasilitas dari MySQL:

$res = mysql_query("SELECT * FROM customers");
while ($row = mysql_fetch_assoc($res)) {
# format semula yyyy-mm-dd...
preg_match("/(\d\d\d\d)-(\d\d?)-(\d\d?)/", $row[date], $matches);
# ... dan ingin dijadikan dd/mm/yyyy
$tanggal = "$matches[3]/$matches[2]/$matches[1]";
echo "Nama=$row[name], Tanggal lahir=$tanggal
\n";
}

Padahal MySQL sudah menyediakan fungsi pemformatan dan manipulasi tanggal:

$res = mysql_query("SELECT name, DATE_FORMAT(date,'%d-%m-%Y') as tanggal ".
"FROM customers");
while ($row = mysql_fetch_assoc($res)) {
# tidak perlu capek-capek manipulasi string lagi...
echo "Nama=$row[name], Tanggal lahir=$row[tanggal]
\n";
}

Poin no. 2 ini kedengarannya klise, tapi, seperti nasihat Inggris bilang: know thy tools.
3. LIMIT, LIMIT, LIMIT

Salah satu alasan mengapa MySQL sangat cocok untuk aplikasi Web adalah mendukung klausa LIMIT. Dengan klausa ini, mudah sekali membatasi jumlah record hasil yang diinginkan dalam satu perintah SQL. Tidak perlu bermain kursor atau bersusah payah lewat cara lainnya. Belakangan database lain seperti PostgreSQL dan Firebird pun ikut mendukung fungsionalitas LIMIT (dengan sintaks yang tidak persis sama tentunya).

Sayangnya, programer PHP sendiri yang belum mengenal MySQL dengan baik tidak menggunakannya dengan semestinya.

$res = mysql_query("SELECT name FROM users ORDER BY date");
$rows = array();
for ($i=1; $i<=10; $i++) $rows[] = mysql_fetch_row($res);

Si programer hanya berniat mengambil 10 record, tapi menyuruh MySQL mengambil semua record yang ada dulu. Bagaimana kalau ada 100 ribu record? 1 juta record? 10 juta? Seharusnya, setiap kali Anda menginginkan hanya satu, sepuluh, lima belas record, Anda perlu memberitahu MySQL lewat klausa LIMIT.

SELECT name FROM users ORDER BY date LIMIT 10

Sehingga kita bisa mengirit trafik komunikasi client/server dan mengizinkan MySQL melakukan optimisasi terhadap query tersebut.
4. Tipe Data

Berbeda dengan PHP dan bahasa-bahasa skripting yang mengizinkan kita menaruh apa saja dalam sebuah $variable tanpa deklarasi tipe terlebih dahulu, di MySQL kita perlu mendeklarasikan tipe-tipe data semua field yang ada pada saat membuat sebuah tabel. Seorang programer PHP yang tidak kenal MySQL kadang-kadang cenderung memilih jenis data yang salah (umumnya: memilih VARCHAR() padahal ada tipe data yang lebih tepat) dikarenakan tidak mengenal jenis-jenis data yang tersedia.

Berikut beberapa contoh kurang tepatnya pemilihan tipe data: 1) memilih CHAR(8) atau VARCHAR(10) dan bukannya DATE untuk menyimpan tanggal; kerugiannya, lebih boros tempat dan tidak bisa memanfaatkan fungsi-fungsi khusus tanggal; 2) memilih CHAR(3) atau CHAR(6) ketimbang TINYINT UNSIGNED untuk menyimpan data boolean (“YES” dan “NO”; atau “TRUE” dan “FALSE”; padahal jauh lebih irit dinyatakan dengan 1 dan 0 yang hanya menempati 1 byte); 3) memilih FLOAT atau DOUBLE dan bukannya DECIMAL untuk menyimpan jumlah uang; kerugiannya, FLOAT dan DOUBLE adalah berbasis biner dan seringkali tidak eksak dalam menyimpan pecahan desimal.

Nomor 3 sering terjadi karena programer biasanya hanya mengenal single/double floating point number yang tersedia di bahasa pemrograman. Padahal database umumnya menyediakan angka pecahan berbasis desimal yang bisa eksak menyimpan pecahan desimal.

Manual MySQL amat membantu di sini; di subbab tentang Column Types dijelaskan dengan rinci jenis-jenis data yang ada, termasuk rentang nilai yang dapat ditampung, berapa byte yang ditempati tipe data tersebut, dsb.
5. Normalisasi dan Pemodelan

Normalisasi, skema, entiti-atribut, primary key (PK) dan foreign key (FK), tabel entiti, tabel relasi, OLTP & OLAP… semuanya adalah istilah-istilah yang umum dijumpai dalam pemodelan fisik database. Sayangnya, banyak programer pemula tidak memiliki kemampuan modeling. Sehingga jika disuruh mendesain skema database (sekumpulan tabel-tabel beserta nama field dan tipenya) hasilnya tidak optimal bahkan berantakan. Skema yang buruk berakibat terjadinya duplikasi data, tidak scalable, performance yang buruk, tidak memenuhi requirements, dsb.

Modeling tentunya tidak bisa diajarkan dalam 1–2 hari, apalagi dalam artikel yang singkat ini. Anda perlu membaca buku-buku mengenai pemodelan database dan belajar dari pengalaman maupun dari model-model yang sudah ada. Tapi beberapa nasihat yang mungkin bisa saya berikan di sini adalah sbb.

Satu, langkah pertama dalam pemodelan adalah menemukan entiti-entiti. Entiti bisa dibilang “objek” yang akan kita gelluti. Misalnya, customer, produk, dan transaksi. Setiap entiti umumnya ditaruh dalam satu tabel, tabel ini disebut tabel entiti. Langkah kedua adalah mencari atribut-atribut entiti tersebut. Misalnya tabel customers memiliki atribut sapaan, nama, alamat (jalan + kota + kodepos + propinsi + negara), tanggal record ini ditambahkan, dsb. Langkah ketiga adalah mencari relasi di antara entiti-entiti. Umumnya relasi adalah satu dari: 1-1, 1-many, many-many. Misalnya, relasi antara transaksi dan produk adalah many-many, artinya sebuah transaksi pembelian dapat berisi banyak produk dan sebuah produk tentu saja dapat dibeli dalam lebih dari satu transaksi. Setiap relasi juga akan ditempatkan pada tabel, yaitu tabel relasi.

Dua, dalam pemodelan tidak ada istilah model yang benar atau salah. Yang ada adalah model yang tepat dan tidak tepat untuk keperluan tertentu. Misalnya, untuk aplikasi sederhana modelnya sederhana. Semakin kompleks aplikasi, model pun semakin rumit (jumlah entiti, relasi, dan atribut akan bertambah). Pada umumnya, seiring kompleksitas bertambah, yang tadinya atribut akan berubah menjadi entiti dikarenakan adanya kenyataan hubungan 1-many/many-many antara atribut. Contohnya, tabel customers memiliki atribut alamat. Jika kita ingin mendukung banyak alamat untuk satu customers, maka alamat akan menjadi entiti dan menempati tabel sendiri. Lalu kita membuat tabel relasi customers-alamat.
6. Indeks

Indeks adalah sesuatu yang berkaitan erat dengan implementasi, bukan modeling. Kita seringkali perlu menambahkan indeks pada sebuah field atau banyak field dikarenakan jika tidak ditambahkan maka performance database tidak menjadi praktis. Serba-serbi indexing juga mungkin terlalu panjang untuk bisa dijelaskan dalam artikel pendek ini, tapi intinya setiap kolom yang: 1) memiliki rentang nilai cukup banyak; 2) terletak pada tabel yang berisi banyak record; 3) seringkali disebutkan di klausa WHERE dan/atau ORDER BY dan/atau GROUP BY; perlu diberi indeks. Ini dikarenakan indeks membantu mencari secara cepat sebuah nilai dari banyak nilai yang ada. Beberapa contoh:

* Setiap primary key umumnya otomatis diberi indeks oleh database server, meskipun tabelnya masih berisi sedikit record atau bahkan kosong. Ini dikarenakan database perlu selalu mengecek keberadaan sebuah nilai field ini manakala ada sebuah record yang ditambahkan (ingat, PK artinya tak boleh ada dua record yang mengandung nilai field ini yang sama). Tanpa indexing, pengecekan akan linear dan memakan waktu lama.

* Field tanggal lahir dalam tabel customers kemungkinan besar harus diindeks. Bahkan dayofyear() field ini juga mungkin perlu diindeks. Mengapa? Karena: 1) rentang nilai cukup besar (365 hari dalam setahun x +- 60 jumlah tahun); 2) tabel customers potensial ukurannya besar; 3) sering disebutkan di klausa WHERE (misalnya mencari customer yang ultah hari ini).

* Field memo/notes kemungkinan besar tidak perlu diindeks (secara biasa). Mengapa? Karena meskipun 1) rentang nilai cukup besar; dan 2) tabel customers bisa besar; tapi 3) field ini tidak pernah disebutkan di klausa WHERE secara langsung (mis: Anda tidak pernah menyebutkan: … WHERE notes='nilai catatan tertentu' atau WHERE notes > 'nilai tertentu'). [Catatan: ada indeks lain yang “tidak biasa” di MySQL, yaitu FULLTEXT. Tapi ini di luar cakupan artikel kita kali ini.]

* Field jenis kelamin mungkin tidak perlu diindeks, kecuali jika perbandingan pria:wanita amat drastis bedanya. Mengapa? Sebab: 1) rentang nilai yang ada hanyalah dua: L (lelaki) dan P (perempuan). Meskipun Anda beri indeks, tidak akan memperbaiki kinerja.
7. Konkurensi, Locking, dan Transaksi

Programer web pemula kadang-kadang tidak menyadari bahwa program/skrip yang dibuatnya tidaklah seperti program desktop yang dijalankan oleh satu user. Melainkan, dalam satu waktu bisa saja ada 10 atau 100 user yang “menembak” skrip Anda di Web. Karena itu, isu locking dan konkurensi penting sekali. Contohnya adalah seperti ini:

$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
$value++;
// do something else first...
$res = mysql_query("UPDATE counter SET value=$value WHERE name='counter1'");

Di antara baris pertama (saat kita mengambil nilai record) dan baris keempat (saat kita menaruh kembali nilai dalam record) mungkin saja telah terjadi beberapa kali perubahan terhadap si record. Misalnya, pada baris pertama klien1 memperoleh nilai $value = 100. Di baris 3 $value di-increment menjadi 101. Tapi apa yang terjadi jika selama selang waktu itu nilai record counter1 telah menjadi 103 (karena misalnya klien2, klien3, dan klien4 telah meng-incrementnya)? Oleh si klien1, counter1 direset kembali menjadi 101 dan akibatnya increment oleh klien2, klien3, dan klien4 hilang. Seharusnya nilai counter1 menjadi 104.

Untuk kasus di atas, pemecahannya cukup gampang. Lakukan increment secara atomik:

// tidak perlu ambil nilai counter dulu...
// do something else first...
$res = mysql_query("UPDATE counter SET value=value+1 WHERE name='counter1'");

Tapi dalam kasus lain, kadang-kadang kita harus melakukan locking terhadap tabel atau record untuk menjamin bahwa selama kita // do something else… klien2, klien3, dan klien4 tidak bisa seenaknya menaikkan nilai counter:

mysql_query("LOCK TABLES cuonters");
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
// do something else first... increase value or something...
$res = mysql_query("UPDATE counter SET value=$value WHERE name='counter1'");
mysql_query("UNLOCK TABLES");

atau (lebih baik karena kita tidak perlu melock keseluruhan tabel):

mysql_query("SELECT GET_LOCK('lock1')");
$res = mysql_query("SELECT value FROM counters WHERE name='counter1'");
list ($value) = mysql_fetch_row($res);
// do something else first... increase value or something...
$res = mysql_query("UPDATE counter SET value=$value WHERE name='counter1'");
mysql_query("SELECT RELEASE_LOCK('lock1')");

Ingat, locking dapat berakibat samping yaitu deadlock.

Transaksi. Transaksi pun sesuatu yang dipergunakan secara meluas di dunia database, tapi hampir tidak pernah kita jumpai di bahasa pemrograman (ini karena data di bahasa pemrograman ditaruh dalam variabel di memori semua; tidak ada isu disk yang crash/lambat/rusak/harus disinkronkan dengan data di memori). Karena itu Anda perlu memahami konsep ini dari buku-buku tentang database.
8. Jenis Tabel

Di MySQL dikenal istilah table handler dan jenis tabel. Saat ini ada 3 jenis tabel utama yang bisa dipakai di MySQL: MyISAM (default), BerkeleyDB, dan InnoDB. Yang perlu diketahui ada tiga hal: 1) tidak semua tabel mendukung transaksi (MyISAM tidak mendukung transaksi, jadi COMMIT dan ROLLBACK tidak melakukan sesuatu yang semestinya jika Anda menerapkan pada tabel MyISAM); 2) tidak semua tabel punya karakteristik performance yang sama (BerkeleyDB misalnya, lambat jika ukuran tabel besar) dan disimpan dengan cara yang sama (tabel MyISAM misalnya disimpan dalam 3 file: .MYI, .MYD, .frm sementara tabel-tabel dan database-database InnoDB disimpan bersama dalam daerah disk yang disebut tablespace; 3) distribusi MySQL yang bukan -Max tidak dikompile dengan dukungan terhadap BerkeleyDB dan InnoDB.

Nomor 3 penting Anda ketahui karena jika kita menginstruksikan MySQL untuk membuat database dengan jenis tertentu:

CREATE TABLE (...) TYPE=BDB;

Dan MySQL tidak dikompile untuk mendukung BerkeleyDB, maka MySQL tidak akan protes dengan error, melainkan membuatkan tabel tersebut untuk kita tapi dengan tipe default yaitu MyISAM. Jadi Anda perlu mengecek dulu menggunakan SHOW TABLE STATUS:

mysql> create table t4 (i int) type=innodb;
Query OK, 0 rows affected (0.00 sec)

mysql> show table status from mydb like 't4';
+------+--------+-...
| Name | Type | ...
+------+--------+-...
| t4 | MyISAM | ...
+------+--------+-...

Ternyata MyISAM!
Penutup

Sebetulnya untuk memakai MySQL dengan baik dan benar diperlukan skill-skill dasar lain seperti membackup, merestore, mengeset parameter-parameter server, memonitor server, dsb. Tapi itu semua lebih merupakan tugas seorang administrator (DBA).

Belajar lebih jauh tentang server Click Here!