Menyimpan data dalam file biasa memiliki banyak keterbatasan. Semakin besar ukuran file, pencarian data menjadi lebih sulit. File biasa juga tidak memiliki kemampuan untuk mengolah data, misalnya menghitung total nilai, rata-rata, dan lain sebagainya.
Dan yang lebih penting, adanya keterbatasan untuk mengendalikan akses terhadap data. Kita tidak dapat menentukan siapa yang boleh dan siapa yang tidak boleh mengakses data. Siapa yang boleh membaca dan tidak boleh menulis, dan sebagainya.
Karena itu, sekarang kita akan menggunakan media penyimpanan data yang lebih mutakhir, yaitu database. Operasi data dalam database umumnya mengikuti pola yang sama, yaitu melalui rangkaian langkah sebagai berikut :
- Membuka sambungan dengan database server.
- Memilih dan membuka database yang diinginkan
- Mengirim perintah untuk mengambil/mengubah/menghapus data.
- Mengakses hasil pengambilan data.
- Mengakhiri sambungan.
Kita akan membahas masing-masing langkah tersebut satu per satu.
Sebagai contoh, kita akan mengaktifkan fasilitas login pada aplikasi Contact Manager. User akan diminta untuk memasukkan username dan password. Bila data yang dimasukkan sama dengan yang ada dalam database, user akan diteruskan ke halaman welcome. Kalau salah, akan muncul pesan error.
Sebagai tambahan, kita akan membuat halaman yang memungkinkan user untuk mengganti password.
User yang belum terdaftar dapat melakukan registrasi di halaman yang akan disediakan. Berikut screenshot halaman web yang dibutuhkan :
login.html

register.htm

A. Sekilas SQL Query
SQL (Structured Query Language) adalah bahasa yang khusus digunakan untuk mengoperasikan database. Untuk memudahkan pelajaran, SQL query akan dikelompokkan menjadi tiga:
- Query untuk mengelola database
- Query untuk mengakses data dalam satu tabel
- Query yang melibatkan lebih dari satu tabel.
Query pengelolaan database. Yang termasuk ke dalam kelompok ini adalah query yang bertujuan untuk :
- Membuat database
- Menghapus database
- Membuat tabel
- Memodifikasi tabel
- Menghapus tabel
- Menambah user
- Mengatur permission
- Menghapus user.
Membuat database dilakukan dengan perintah sebagai berikut :
CREATE DATABASE
Contohnya : untuk aplikasi Content Management, kita akan membuat database ContentManager dengan query sebagai berikut :
CREATE DATABASE ContactManager
Menghapus database dilakukan dengan perintah :
DROP DATABASE
Contoh :
DROP DATABASE ContactManager
Membuat tabel dilakukan dengan memberikan perintah sebagai berikut:
CREATE TABLE <nama tabel> (
<nama kolom> <tipe data>,
<nama kolom> <tipe data>,
... ,
<nama kolom> <tipe data>
);
contohnya:
CREATE TABLE userTable(
UserId INT (3),
UserName VARCHAR (50),
Password VARCHAR (50),
NamaLengkap VARCHAR (50)
);
Menghapus tabel dilakukan dengan menggunakan query
DROP TABLE;
Contoh :
DROP TABLE userTable;
Query satu tabel
Query satu tabel digunakan untuk mengelola data dalam satu tabel.
Beberapa hal yang dapat dilakukan pada satu tabel adalah :
|Tujuan |Query |
|-----------------------------|--------|
| Memasukkan data | INSERT |
| Memodifikasi data | UPDATE |
| Mengambil data | SELECT |
| Menghapus data | DELETE |
| Menghitung banyaknya data | COUNT |
| Menghitung penjumlahan data | SUM |
| Menghitung nilai minimal | MIN |
| Menghitung nilai maksimal | MAX |
| Menghitung nilai rata-rata | AVG |
Untuk memasukkan data ke dalam database, kita menggunakan perintah INSERT. Aturan penulisannya adalah :
INSERT INTO <nama tabel> (<nama kolom 1>, < nama kolom
1>, ..)
VALUES (<isi kolom 1>, <isi kolom 2>, ..);
Contoh :
INSERT INTO userTable VALUES (
1,
'endy',
'inipaswod',
'Endy Muhardin'
);
Untuk mengubah data dalam database, digunakan perintah UPDATE, dengan aturan penulisan sebagai berikut :
UPDATE <nama tabel>
SET <nama kolom>=<isi kolom> WHERE <kriteria>
Contoh :
UPDATE userTable
SET password='test'
WHERE UserName='endy'
Untuk menampilkan data dalam tabel, gunakan perintah SELECT. Aturan penulisannya adalah sebagai berikut:
SELECT <nama kolom>
FROM <nama tabel> WHERE <kriteria>
Contoh :
SELECT *
FROM UserTable
WHERE UserId=1
Untuk menghapus data dari dalam tabel, gunakan perintah DELETE. Aturan penulisannya adalah :
DELETE FROM <nama tabel> WHERE <kriteria>
Contoh :
DELETE FROM UserTable
WHERE NamaLengkap='Endy Muhardin'
Query banyak tabel
Query banyak tabel digunakan untuk menghubungkan data di lebih dari satu database. Pembahasan tentang join berada di luar materi PHP Programming dan ada di pembahasan tentang relational database.
B. Membuat koneksi ke database
Sebelum mulai, kita terlebih dahulu akan membuat database. Kita membutuhkan tabel user untuk menyimpan data sebagai berikut :
| Nama Field | Tipe Data |
|-------------|-------------|
| UserId | int(3) |
| UserName | varchar(50) |
| Password | varchar(50) |
| NamaLengkap | varchar(50) |
Tabel dibuat dengan memberikan query sebagai berikut:
CREATE TABLE userTable(
UserId INT (3) AUTO_INCREMENT PRIMARY KEY,
UserName VARCHAR (50),
Password VARCHAR (50),
NamaLengkap VARCHAR (50) );
tabel siap digunakan. Kita akan mulai dengan halaman daftar, karena kita belum punya user. File register.php akan menangani pendaftaran user baru. Tugasnya adalah memasukkan data yang diisi dalam form ke dalam database. Selanjutnya, kita akan melakukan langkah-langkah seperti yang disebutkan di atas.
Membuka sambungan dengan database server
Untuk membuka sambungan, kita membutuhkan alamat server serta username dan password untuk database. Setelah itu, kita membuka sambungan dengan perintah sebagai berikut :
$dbServer = "localhost";
$dbUser = "endy";
$dbPass = "test";
$dbConn = mysql_pconnect($dbServer, $dbUser, $dbPass);
sambungan dengan database disimpan dalam variabel $dbConn untuk digunakan pada langkah-langkah selanjutnya.
Memilih dan membuka database yang diinginkan
Selanjutnya, kita akan menggunakan database tutorial, yang sebelumnya telah dibuat dengan menggunakan PHPMyAdmin. Gunakan kode berikut untuk memilih dan membuka database phpTutorial.
$dbName = "phpTutorial"; mysql_select_db($dbName);
sekarang database telah siap untuk digunakan. Kita dapat melangkah ke tahap selanjutnya, yaitu memasukkan data.
Mengirim perintah untuk mengambil/mengubah/menghapus data.
Perintah untuk memasukkan data dibuat dengan menggunakan aturan SQL, dijelaskan lebih lengkap pada bagian selanjutnya. Query (perintah) untuk memasukkan data adalah :
INSERT INTO userTable VALUES (
1,
'endy',
'inipaswod',
'Endy Muhardin'
);
perintah tersebut dieksekusi di dalam script PHP sebagai berikut :
$query = "
INSERT INTO userTable VALUES (
1,
'endy',
'inipaswod',
'Endy Muhardin'
);
";
$hasil = mysql_query($query); if($hasil){
echo(mysql_affected_rows()." orang ditambahkan ke dalam sistem");
}
Script kita harus mengambil data dari HTML Form (register.htm) dan memasukkannya ke dalam database. Untuk itu, kita akan membuat file register.php yang berisi kode sebagai berikut :
<?
$dbServer = "localhost";
$dbUser = "endy";
$dbPass = "test";
$dbConn = mysql_pconnect($dbServer, $dbUser, $dbPass);
$dbName = "phpTutorial"; mysql_select_db($dbName);
$query = "
INSERT INTO userTable
(UserName, Password, NamaLengkap)
VALUES (
'$user',
'$pass',
'$namaLengkap'
);
";
$hasil = mysql_query($query); if($hasil){
echo(mysql_affected_rows()." orang ditambahkan ke dalam sistem");
}
?>
C. Mengakses hasil query
Setelah register.htm dieksekusi dengan sukses, kita telah memiliki satu user dalam database. Dengan demikian, kita dapat menguji halaman login yang telah kita buat. Untuk itu, kita perlu mengakses data dalam database dan mencocokkannya dengan input yang diberikan user.
Langkah-langkah untuk mengakses data dalam database adalah :
- Membuat sambungan database
- Memilih database
- Membuat query
- Menjalankan query
- Mengambil hasilnya
- Memproses hasil.
Query yang akan digunakan adalah :
SELECT * FROM UserTable WHERE userName='input dari user'
Query ini akan dimasukkan ke dalam script menjadi :
$query = SELECT * FROM UserTable WHERE userName='$login'
Dan dieksekusi dengan kode :
$hasil = mysql_query($query);
Bila userName yang diinputkan user tidak ada dalam database, query akan mengembalikan 0 (nol) baris hasil. Bila ada, query akan menghasilkan array yang berisi data pada masing-masing kolom dalam database.
Untuk mengetahui jumlah hasil yang didapat dari query, digunakan kode sebagai berikut:
$jumlahHasil = mysql_num_rows($hasil);
Apabila hasilnya tidak nol (berarti username telah terdaftar dalam sistem), kita akan mengambil data password. Untuk itu, kita gunakan perintah:
$data = mysql_fetch_array($hasil);
data password ada dalam array, diakses dengan cara :
$passDb = $data["Password"];
Dengan demikian, keseluruhan script login.php akan menjadi :
<?
// variabel yang diperlukan untuk akses database
$user = "endy";
$pass = "test";
$db = "ContentManager";
$server = "localhost";
// membuat koneksi
$koneksi = mysql_connect($server, $user, $pass);
// memeriksa koneksi if(!$koneksi){
echo("Koneksi ke database gagal"); exit;
}
// membuka database mysql_select_db($db);
// membuat query
$query = "SELECT * FROM userTable WHERE userName='".$login."'";
// mengeksekusi query
$hasil = mysql_query($query);
// mengakses hasil
$jumlahHasil = mysql_num_rows($hasil); if($jumlahHasil < 1){
echo("User $login tidak ada dalam database <br>");
}else{
echo("User $login ada dalam database<br>");
$data = mysql_fetch_array($hasil);
$passwordAsli = $data["password"];
if($password == $passwordAsli){
echo("Password untuk user $login benar<br>");
}else{
echo("Password untuk user $login salah<br>");
}
}
?>