Lebih Lanjut dengan PHP dan MySQL
8.1 Mengirim
Nilai Ke Sebuah Skript
Pada
contoh-contoh sejauh ini, semua data yang diterima di dalam skript PHP berasal
dari apa yang dimasukkan user di dalam suatu form. Namun, ada dua cara yang
berbeda yang bisa Anda pakai untuk melewatkan variabel dan nilai kepada sebuah
skript PHP.
Metode pertama
adalah menggunakan tipe masukan tersembunyi dari HTML:
<input type="hidden" name="lakukan" value="ini"
/>
Sepanjang kode
ini ditempatkan di antara tag-tag form,
variabel $_POST[‘lakukan’] akan menerima nilai ini di dalam skript PHP yang menangani form. Anda telah menggunakan
teknik ini dengan sebuah masukan tersembunyi dengan nama disubmit, yang digunakan untuk menguji ketika sebuah form
ditangani.
Metode kedua
untuk mengirim nilai kepada sebuah skript PHP adalah dengan menempelkan nilai
tersebut pada URL:
www.contoh.com/halaman.php?lakukan=ini
Teknik ini
memanfaatkan metode GET dari sebuah form HTML. Pada contoh ini, halaman.php
menerima sebuah variabel, $_GET[‘lakukan’] dengan nilai ini.
Mengirim nilai secara manual kepada skript PHP
1. Buka lihat_user.php pada editor teks atau IDE Anda.
2. Ubah query SQL (Skript 8.1).
// Melakukan query:
$q = "SELECT
nama_belakang, nama_depan,
DATE_FORMAT(tanggal_registrasi,
'%M %d, %Y') AS dr, id_user
FROM pengguna ORDER BY
tanggal_registrasi ASC";
Nama depan dan nama belakang
diseleksi secara terpisah, tidak disambung. Nilai id_user juga sekarang
diseleksi, karena diperlukan untuk menciptakan link-link.
3. Tambahkan tiga lagi kolom pada tabel utama.
// Kepala tabel.
echo '<table align="center"
cellspacing="3" cellpadding="3" width="75%">
<tr>
<td
align="left"><b>Edit</b></td>
<td
align="left"><b>Hapus</b></td>
<td
align="left"><b>Nama Belakang</b></td>
<td
align="left"><b>Nama Depan</b></td>
<td
align="left"><b>Tanggal Registrasi</b></td>
</tr>';
4. Ubah statemen echo di dalam loop while untuk menyesuaikan dengan
struktur baru dari tabel.
echo '<tr>
<td align="left"><a
href="edit_user.php?id=' . $baris['id_user'] .
'">Edit</a></td>
<td align="left"><a
href="hapus_user.php?id=' . $baris['id_user'] .
'">Hapus</a></td>
<td align="left">' .
$baris['nama_belakang']. '</td>
<td align="left">' .
$baris['nama_depan'] . '</td>
<td align="left">' .
$baris['dr'] . '</td>
</tr>';
5. Simpan sebagai lihat_user.php, tempatkan pada direktori Web, dan
jalankan dengan browser Web Anda (Gambar 8.1).
SKRIPT 8.1
|
|
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
51
52
53
|
<?php # Skript 8.1 - lihat_user.php
// Skript ini membaca semua rekaman dari tabel pengguna.
$judul_hal = 'Melihat Semua User';
include ('kepala.html');
// Header halaman:
echo '<h1>Daftar User Yang Terdaftar</h1>';
require_once ('mysqli_connect.php'); // Koneksi ke db.
// Melakukan query:
$q = "SELECT nama_belakang, nama_depan,
DATE_FORMAT(tanggal_registrasi, '%M %d, %Y')
AS dr, id_user
FROM pengguna
ORDER BY tanggal_registrasi ASC";
$r = @mysqli_query ($dbc, $q); // Menjalankan query.
// Menghitung banyak baris yang dihasilkan query:
$jum = mysqli_num_rows($r);
if ($jum > 0) { // Jika OK, tampilkan semua rekaman.
// Menampilkan
berapa banyak user:
echo
"<p>Ada sebanyak $jum user yang telah
terdaftar.</p>\n";
// Kepala tabel.
echo '<table
align="center" cellspacing="3" cellpadding="3"
width="75%">
<tr>
<td
align="left"><b>Edit</b></td>
<td
align="left"><b>Hapus</b></td>
<td
align="left"><b>Nama Belakang</b></td>
<td
align="left"><b>Nama Depan</b></td>
<td
align="left"><b>Tanggal Registrasi</b></td>
</tr>';
// Menampilkan
semua rekaman:
while ($baris =
mysqli_fetch_array($r, MYSQLI_ASSOC)) {
echo
'<tr>
<td
align="left"><a href="edit_user.php?id='
. $baris['id_user'] . '">Edit</a></td>
<td
align="left"><a
href="hapus_user.php?id=' . $baris['id_user'] . '">Hapus</a></td>
<td
align="left">' . $baris['nama_belakang']. '</td>
<td
align="left">' . $baris['nama_depan'] . '</td>
<td
align="left">' . $baris['dr'] . '</td>
</tr>';
}
echo
'</table>'; // Tutup tabel.
mysqli_free_result ($r); // Membebaskan resource
} else { // Jika tidak ada rekaman yang dihasilkan.
echo '<p
class="error">Tidak ada user yang telah terdaftar.</p>';
} // Akhir dari if ($r) IF.
mysqli_close($dbc); // Tutup koneksi database
include ('kaki.html');
?>
|
Gambar 8.1 Versi revisi
dari halaman lihat_user.php, dengan kolom-kolom dan link-link baru.
6. Jika diinginkan, Anda bisa melihat kode sumber HTML untuk melihat setiap
link yang dibangkitkan secara dinamis (Gambar 8.2).
Gambar 8.2 Kode sumber
HTML menunjukkan ID user ditambahkan pada URL setiap link.
8.2
Menggunakan Masukan Form Tersembunyi
Pada contoh
sebelumnya, versi revisi dari skript lihat_user.php telah ditulis. Versi ini
mencakup link ke halaman edit_user.php dan ke halaman hapus_user.php, yang
melewatkan setiap ID user melalui URL. Pada contoh selanjutnya, hapus_user.php
akan mengambil ID user yang dilewatkan dan mengijinkan administrator untuk
menghapus user tersebut. Meskipun Anda hanya akan mengeksekusi sebuah query
DELETE pada halaman ini, untuk kepentingan keamanan, ada beberapa tahap yang
perlu dilakukan:
1. Halaman harus memeriksa bahwa ia hanya menerima ID user numerik.
2. Sebuah pesan diberikan untuk memastikan bahwa user telah dihapus.
3. ID user akan disimpan di dalam sebuah form masukan tersembunyi.
4. Setelah mengirim form, user terkait akan dihapus dari database.
Menggunakan masukan form tersembunyi
1. Ciptakan sebuah dokumen PHP baru pada editor teks atau IDE Anda (Skript
8.2).
<?php
# Skript 8.2 - hapus_user.php
2. Cantumkan kepala halaman.
$judul_hal
= 'Hapus User';
include
('kepala.html');
echo
'<h1>Hapus User</h1>';
3. Periksa validitas nilai ID user.
//
Memeriksa ID user yang valid, melalui metode GET atau POST:
if
( (isset($_GET['id'])) && (is_numeric($_GET['id'])) ) { // Dari
lihat_user.php
$id = $_GET['id'];
}
elseif ( (isset($_POST['id'])) && (is_numeric($_POST['id'])) ) { //
Submisi form.
$id = $_POST['id'];
}
else { // ID tak-valid, hentikan skript.
echo '<p
class="error">Halaman ini diakses dengan error.</p>';
include ('kaki.html');
exit();
}
4. Cantumkan skript untuk melakukan koneksi dengan MySQL.
require_once
('mysqli_connect.php');
5. Awali kondisional submit utama.
if
(isset($_POST['disubmit'])) {
6. Hapus user.
if
($_POST['yakin'] == 'Ya') { // Hapus rekaman.
// Membuat query:
$q = "DELETE FROM pengguna
WHERE
id_user=$id LIMIT 1";
$r = @mysqli_query ($dbc, $q);
7. Periksa apakah penghapusan berhasil dilakukan.
if
(mysqli_affected_rows($dbc) == 1) { // Jika OK.
// Tampilkan pesan:
echo '<p>User telah
dihapus.</p>';
}
else { // Jika query tidak berhasil dijalankan.
echo '<p class="error">User
tidak dihapus karena error.</p>';
echo '<p>' . mysqli_error($dbc) .
'<br/>Query: ' . $q . '</p>';
}
8. Sempurnakan kondisional $_POST[‘yakin’].
}
else {
echo '<p>User TIDAK berhasil
dihapus.</p>';
}
9. Baca informasi untuk user yang akan dihapus.
$q
= "SELECT CONCAT(nama_belakang, ', ', nama_depan)
FROM pengguna
WHERE id_user=$id";
$r
= @mysqli_query ($dbc, $q);
10. Tampilkan form.
//
Membaca informasi user:
$baris
= mysqli_fetch_array ($r, MYSQLI_NUM);
//
Menciptakan form:
echo
'<form action="hapus_user.php" method="post">
<h3>Nama: ' . $baris[0] .
'</h3>
<p>Apakah Anda yakin ingin
menghapus user ini?<br />
<input type="radio"
name="yakin" value="Ya" /> Ya
<input type="radio"
name="yakin" value="Tidak" checked="checked"
/> Tidak</p>
<p><input
type="submit" name="submit" value="Submit"
/></p>
<input type="hidden"
name="disubmit" value="TRUE" />
<input type="hidden"
name="id" value="'. $id . '" />
</form>';
11. Tutup halaman PHP.
}
// Akhir dari kondisional utama.
mysqli_close($dbc);
include
('kaki.html');
?>
SKRIPT 8.2
|
|
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
<?php # Skript 8.2 - hapus_user.php
// Halaman ini untuk menghapus sebuah rekaman user.
// Halaman ini diakses melalui lihat_user.php.
$judul_hal = 'Hapus User';
include ('kepala.html');
echo '<h1>Hapus User</h1>';
// Memeriksa ID user yang valid, melalui metode GET atau
POST:
if ( (isset($_GET['id'])) &&
(is_numeric($_GET['id'])) ) { // Dari lihat_user.php
$id =
$_GET['id'];
} elseif ( (isset($_POST['id'])) &&
(is_numeric($_POST['id'])) ) { // Submisi form.
$id =
$_POST['id'];
} else { // ID tak-valid, hentikan skript.
echo '<p
class="error">Halaman ini diakses dengan error.</p>';
include
('kaki.html');
exit();
}
require_once ('mysqli_connect.php');
// Memeriksa apakah form telah dikirim:
if (isset($_POST['disubmit'])) {
if
($_POST['yakin'] == 'Ya') { // Hapus rekaman.
// Membuat
query:
$q =
"DELETE FROM pengguna
WHERE id_user=$id LIMIT 1";
$r =
@mysqli_query ($dbc, $q);
if
(mysqli_affected_rows($dbc) == 1) { // Jika OK.
//
Tampilkan pesan:
echo
'<p>User telah dihapus.</p>';
} else { //
Jika query tidak berhasil dijalankan.
echo '<p
class="error">User tidak dihapus karena error.</p>';
echo
'<p>' . mysqli_error($dbc) . '<br/>Query: ' . $q . '</p>';
}
} else {
echo
'<p>User TIDAK berhasil dihapus.</p>';
}
} else { // Menampilkan form.
// Membaca
informasi user:
$q = "SELECT
CONCAT(nama_belakang, ', ', nama_depan)
FROM pengguna
WHERE
id_user=$id";
$r =
@mysqli_query ($dbc, $q);
if
(mysqli_num_rows($r) == 1) { // Jika ID user valid, tampilkan form.
// Membaca
informasi user:
$baris =
mysqli_fetch_array ($r, MYSQLI_NUM);
// Menciptakan
form:
echo '<form
action="hapus_user.php" method="post">
<h3>Nama: ' . $baris[0] . '</h3>
<p>Apakah Anda yakin ingin menghapus user ini?<br />
<input
type="radio" name="yakin" value="Ya" /> Ya
<input
type="radio" name="yakin" value="Tidak"
checked="checked" /> Tidak</p>
<p><input type="submit" name="submit"
value="Submit" /></p>
<input
type="hidden" name="disubmit" value="TRUE"
/>
<input
type="hidden" name="id" value="'. $id . '"
/>
</form>';
} else { // ID
user tak-valid.
echo '<p
class="error">Halaman ini diakses dengan error.</p>';
}
} // Akhir dari kondisional utama.
mysqli_close($dbc);
include ('kaki.html');
?>
|
Gambar 8.3 Halaman
konfirmasi untuk mamastikan apakah user terkait akan dihapus atau tidak.
Gambar 8.4 Halaman
konfirmasi untuk memastikan user terkait telah dihapus dari database.
Gambar 8.5 Halaman
lihat_user.php untuk melihat user telah dihapus dari database.
8.3
Mengedit Rekaman
Di sini, Anda
akan mengedit rekaman-rekaman yang tersimpan di dalam database. Konsep ini
cukup menakutkan bagi banyak programer, tetapi proses yang akan ditunjukkan
cukup sederhana. Proses ini melibatkan:
·
Pembuatan
sticky form.
·
Penggunaan
masukan tersembunyi.
·
Validasi data
registrasi.
·
Pengeksekusian
query.
Mengedit rekaman di dalam database
1. Ciptakan sebuah dokumen PHP yang baru pada editor teks atau IDE Anda (Skript
8.3).
//
Halaman ini untuk mengedit rekaman user.
//
Halaman ini diakses melalui lihat_user.php.
$judul_hal
= 'Edit User';
include
('kepala.html');
echo
'<h1>Edit User</h1>';
2. Periksa validitas dari nilai ID user.
//
Memeriksa validitas ID user melalui GET atau POST:
if
( (isset($_GET['id'])) && (is_numeric($_GET['id'])) ) { // Dari
lihat_user.php
$id = $_GET['id'];
}
elseif ( (isset($_POST['id'])) && (is_numeric($_POST['id'])) ) {
$id = $_POST['id'];
}
else { // Jika ID tidak valid, hentikan skript.
echo '<p
class="error">Halaman ini diakses dengan error.</p>';
include ('kaki.html');
exit();
}
3. Cantumkan skript koneksi MySQL dan mulai kondisional submit utama.
require_once
('mysqli_connect.php');
//
Memeriksa apakah form telah disubmit:
if
(isset($_POST['disubmit'])) {
$arrayError = array();
4. Validasi nama depan.
//
Memeriksa nama depan:
if
(empty($_POST['nama_depan'])) {
$arrayError[] = 'Anda lupa memasukkan nama
depan.';
}
else {
$fn = mysqli_real_escape_string($dbc,
trim($_POST['nama_depan']));
}
5. Validasi nama belakang dan alamat email.
//
Memeriksa nama belakang:
if
(empty($_POST['nama_belakang'])) {
$arrayError[] = 'Anda lupa memasukkan nama
belakang.';
}
else {
$ln = mysqli_real_escape_string($dbc, trim($_POST['nama_belakang']));
}
//
Memeriksa alamat email:
if
(empty($_POST['email'])) {
$arrayError[] = 'Anda lupa memasukkan alamat
email.';
}
else {
$e = mysqli_real_escape_string($dbc,
trim($_POST['email']));
}
6. Jika tidak ada error, periksa bahwa alamat email yang disubmit tidak
lagi dapat digunakan.
if
(empty($arrayError)) { // Jika semuanya OK.
// Uji keunikan alamat email:
$q = "SELECT id_user FROM pengguna
WHERE email='$e' AND id_user != $id";
$r = @mysqli_query($dbc, $q);
7. Perbarui database.
//
Membuat query:
$q
= "UPDATE pengguna
SET nama_depan = '$fn', nama_belakang
='$ln', email='$e'
WHERE id_user=$id LIMIT 1";
$r
= @mysqli_query ($dbc, $q);
8. Laporkan hasil pembaruan database.
if
(mysqli_affected_rows($dbc) == 1) { // Jika OK.
// Tampilkan pesan:
echo '<p>User berhasil
diedit.</p>';
}
else { // If it did not run OK.
echo '<p class="error">User
tidak dapat diedit karena error sistem.</p>';
echo '<p>' . mysqli_error($dbc) .
'<br/>Query: ' . $q . '</p>';
}
9. Sempurnakan kondisional email.
}
else { // Telah terdaftar.
echo '<p
class="error">Alamat email telah terdaftar.</p>';
}
10. Sempurnakan kondisional $arrayError dan kondisional submisi.
} else { // Melaporkan arrayError.
echo '<p
class="error">Berikut setiap error yang terjadi:<br />';
foreach ($arrayError as $psn) { //
Tampilkan error.
echo " - $psn<br
/>\n";
}
echo '</p><p>Silahkan coba
lagi.</p>';
} // Akhir dari if (empty($arrayError)) IF.
}
// Akhir dari kondisional submit utama.
11. Baca informasi dari user yang sedang diedit.
//
Membaca informasi user:
$q
= "SELECT nama_depan, nama_belakang, email
FROM
pengguna WHERE id_user=$id";
$r
= @mysqli_query ($dbc, $q);
12. Menampilkan form.
//
Membaca informasi user:
$baris
= mysqli_fetch_array ($r, MYSQLI_NUM);
//
Meciptakan form:
echo
'<form action="edit_user.php" method="post">
<p>Nama Depan: <input
type="text" name="nama_depan" size="15"
maxlength="15"
value="' . $baris[0] . '"
/></p>
<p>Nama Belakang: <input
type="text" name="nama_belakang" size="15"
maxlength="30"
value="' . $baris[1] . '"
/></p>
<p>Alamat Email: <input
type="text" name="email" size="20"
maxlength="40"
value="' . $baris[2] . '"
/> </p>
<p><input
type="submit" name="submit" value="Submit"
/></p>
<input type="hidden"
name="disubmit" value="TRUE" />
<input type="hidden"
name="id" value="' . $id . '" />
</form>';
13. Sempurnakan kondisional mysqli_num_rows().
}
else { // ID user tak valid.
echo '<p
class="error">Halaman ini mengalami error.</p>';
}
14. Sempurnakan halaman PHP.
mysqli_close($dbc);
include
('kaki.html');
?>
15. Simpan file dengan nama edit_user.php dan jalankan dengan browser Web.
SKRIPT 8.3
|
|
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
<?php # Skript 8.3 - edit_user.php
// Halaman ini untuk mengedit rekaman user.
// Halaman ini diakses melalui lihat_user.php.
$judul_hal = 'Edit User';
include ('kepala.html');
echo '<h1>Edit User</h1>';
// Memeriksa validitas ID user melalui GET atau POST:
if ( (isset($_GET['id'])) &&
(is_numeric($_GET['id'])) ) { // Dari lihat_user.php
$id =
$_GET['id'];
} elseif ( (isset($_POST['id'])) &&
(is_numeric($_POST['id'])) ) {
$id =
$_POST['id'];
} else { // Jika ID tidak valid, hentikan skript.
echo '<p
class="error">Halaman ini diakses dengan error.</p>';
include
('kaki.html');
exit();
}
require_once ('mysqli_connect.php');
// Memeriksa apakah form telah disubmit:
if (isset($_POST['disubmit'])) {
$arrayError =
array();
// Memeriksa nama
depan:
if
(empty($_POST['nama_depan'])) {
$arrayError[]
= 'Anda lupa memasukkan nama depan.';
} else {
$fn =
mysqli_real_escape_string($dbc, trim($_POST['nama_depan']));
}
// Memeriksa nama
belakang:
if
(empty($_POST['nama_belakang'])) {
$arrayError[]
= 'Anda lupa memasukkan nama belakang.';
} else {
$ln =
mysqli_real_escape_string($dbc, trim($_POST['nama_belakang']));
}
// Memeriksa
alamat email:
if
(empty($_POST['email'])) {
$arrayError[]
= 'Anda lupa memasukkan alamat email.';
} else {
$e =
mysqli_real_escape_string($dbc, trim($_POST['email']));
}
if
(empty($arrayError)) { // Jika semuanya OK.
// Uji
keunikan alamat email:
$q =
"SELECT id_user FROM pengguna
WHERE
email='$e' AND id_user != $id";
$r = @mysqli_query($dbc,
$q);
if
(mysqli_num_rows($r) == 0) {
// Membuat
query:
$q =
"UPDATE pengguna
SET nama_depan = '$fn', nama_belakang
='$ln', email='$e'
WHERE
id_user=$id LIMIT 1";
$r =
@mysqli_query ($dbc, $q);
if
(mysqli_affected_rows($dbc) == 1) { // Jika OK.
//
Tampilkan pesan:
echo
'<p>User berhasil diedit.</p>';
} else { //
If it did not run OK.
echo
'<p class="error">User tidak dapat diedit karena error
sistem.</p>';
echo
'<p>' . mysqli_error($dbc) . '<br/>Query: ' . $q . '</p>';
}
} else { //
Telah terdaftar.
echo '<p
class="error">Alamat email telah terdaftar.</p>';
}
} else { //
Melaporkan arrayError.
echo '<p
class="error">Berikut setiap error yang terjadi:<br />';
foreach
($arrayError as $psn) { // Tampilkan error.
echo "
- $psn<br />\n";
}
echo
'</p><p>Silahkan coba lagi.</p>';
} // Akhir dari
if (empty($arrayError)) IF.
} // Akhir dari kondisional submit utama.
// Selalu menampilkan form...
// Membaca informasi user:
$q = "SELECT nama_depan, nama_belakang, email
FROM pengguna WHERE id_user=$id";
$r = @mysqli_query ($dbc, $q);
if (mysqli_num_rows($r) == 1) { // Jika ID user valid,
tampilkan form.
// Membaca
informasi user:
$baris =
mysqli_fetch_array ($r, MYSQLI_NUM);
// Meciptakan
form:
echo '<form
action="edit_user.php" method="post">
<p>Nama
Depan: <input type="text" name="nama_depan"
size="15" maxlength="15"
value="' . $baris[0] . '" /></p>
<p>Nama Belakang: <input type="text"
name="nama_belakang" size="15" maxlength="30"
value="' . $baris[1] . '" /></p>
<p>Alamat Email: <input type="text"
name="email" size="20" maxlength="40"
value="' . $baris[2] . '" /> </p>
<p><input type="submit" name="submit"
value="Submit" /></p>
<input
type="hidden" name="disubmit" value="TRUE"
/>
<input
type="hidden" name="id" value="' . $id . '"
/>
</form>';
} else { // ID user tak valid.
echo '<p
class="error">Halaman ini mengalami error.</p>';
}
mysqli_close($dbc);
include ('kaki.html');
?>
|
Gambar 8.6 Halaman untuk
mengedit informasi user.
Gambar 8.7 Email dari
user berhasil diedit.
8.4 Mempaginasi
Hasil Query
1. Buka dokumen PHP yang baru pada editor teks atau IDE Anda (Skript 9.4).
<?php
# Skript 8.4 - lihat_user.php
//
Skript ini membaca semua rekaman dari tabel pengguna.
$judul_hal
= 'Melihat Semua User';
include
('kepala.html');
//
Header halaman:
echo
'<h1>Daftar User Yang Terdaftar</h1>';
require_once
('mysqli_connect.php'); // Koneksi ke db.
2. Tetapkan banyak rekaman yang akan ditampilkan.
//
Banyak rekaman per halaman:
$tampil
= 10;
3. Periksa apakah banyak halaman yang diperlukan telah ditetapkan.
//
Menentukan banyak halaman...
if
(isset($_GET['p']) && is_numeric($_GET['p'])) { // Sudah ditentukan
$hal = $_GET['p'];
}
else { // Perlu ditentukan.
4. Hitung jumlah rekaman di dalam database.
//
Menghitung banyak rekaman:
$q
= "SELECT COUNT(id_user) FROM pengguna";
$r
= @mysqli_query ($dbc, $q);
$baris
= @mysqli_fetch_array ($r, MYSQLI_NUM);
$rekaman
= $baris[0];
5. Secara matematik, hitung berapa banyak halaman yang diperlukan.
//
Menghitung banyak halaman...
if
($rekaman > $tampil) { // Lebih dari 1 halaman.
$hal = ceil ($rekaman/$tampil);
}
else {
$hal = 1;
}
6. Tentukan titik awal di dalam database.
//
Menentukan di mana di dalam database untuk mulai memberikan hasil...
if
(isset($_GET['s']) && is_numeric($_GET['s'])) {
$mulai = $_GET['s'];
}
else {
$mulai = 0;
}
7. Tuliskan query dengan sebuah klausa LIMIT.
//
Melakukan query:
$q
= "SELECT nama_belakang, nama_depan,
DATE_FORMAT(tanggal_registrasi, '%M %d,
%Y') AS dr, id_user
FROM
pengguna
ORDER
BY tanggal_registrasi ASC LIMIT $mulai, $tampil";
$r
= @mysqli_query ($dbc, $q); // Menjalankan query.
8. Ciptakan kepala tabel HTML.
//
Kepala tabel.
echo
'<table align="center" cellspacing="3"
cellpadding="3" width="75%">
<tr>
<td
align="left"><b>Edit</b></td>
<td
align="left"><b>Hapus</b></td>
<td
align="left"><b>Nama Belakang</b></td>
<td
align="left"><b>Nama Depan</b></td>
<td
align="left"><b>Tanggal Registrasi</b></td>
</tr>';
9. Inisialisasi variabel warna latar.
$bg
= '#eeeeee'; // Menetapkan warna latar awal.
10. Awali loop while yang membaca setiap rekaman.
while
($baris = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
$bg = ($bg=='#eeeeee' ? '#ffffff'
:'#eeeeee'); // Tukar warna latar.
11. Tampilkan semua rekaman.
echo
'<tr bgcolor="' . $bg . '">
<td align="left"><a
href="edit_user.php?id=' . $baris['id_user'] .
'">Edit</a></td>
<td align="left"><a
href="hapus_user.php?id=' . $baris['id_user'] .
'">Hapus</a></td>
<td align="left">' .
$baris['nama_belakang']. '</td>
<td align="left">' .
$baris['nama_depan'] . '</td>
<td align="left">' .
$baris['dr'] . '</td>
</tr>';
12. Sempurnakan loop while dan tabel, bebaskan resource hasil, dan tutup
koneksi database.
}
echo
'</table>'; // Tutup tabel.
mysqli_free_result
($r); // Membebaskan resource
mysqli_close($dbc);
13. Awali bagian untuk menampilkan link-link ke halaman-halaman lain, jika
diperlukan.
//
Membuat link-link ke halaman lain, jika diperlukan.
if
($hal > 1) {
// Tambahkan spasi dan mulai paragraf:
echo '<br /><p>';
// Menentukan halaman apa skript dimulai:
$hal_sekarang = ($mulai/$tampil) + 1;
// Jika tidak pada halaman pertama, ciptakan
tombol Sebelumnya:
if ($hal_sekarang != 1) {
echo '<a href="lihat_user.php?s=' . ($mulai
- $tampil) . '&p=' . $hal . '">Sebelumnya</a>
';
}
14. Ciptakan link-link numerik.
//
Membuat halaman-halaman bernomor:
for ($i = 1; $i <= $hal; $i++) {
if ($i != $hal_sekarang) {
echo '<a href="lihat_user.php?s=' . (($tampil *
($i - 1))) . '&p=' . $hal . '">' . $i . '</a> ';
} else {
echo $i . ' ';
}
} // Akhir loop FOR.
15. Ciptakan link Selanjutnya.
//
Jika tidak pada halaman terakhir, ciptakan tombol Selanjutnya:
if
($hal_sekarang != $hal) {
echo '<a href="lihat_user.php?s=' . ($mulai + $tampil) . '&p=' .
$hal . '">Selanjutnya</a>';
}
16. Sempurnakan halaman.
echo '</p>'; // Tutup paragraf.
}
// Akhir bagian link.
include
('kaki.html');
?>
17. Simpan file dengan nama lihat_user.php, tempatkan pada direktori Web,
dan jalankan dengan browser Web Anda.
SKRIPT 8.4
|
|
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
<?php # Skript 8.4 - lihat_user.php
// Skript ini membaca semua rekaman dari tabel pengguna.
$judul_hal = 'Melihat Semua User';
include ('kepala.html');
// Header halaman:
echo '<h1>Daftar User Yang Terdaftar</h1>';
require_once ('mysqli_connect.php'); // Koneksi ke db.
// Banyak rekaman per halaman:
$tampil = 10;
// Menentukan banyak halaman...
if (isset($_GET['p'])
&& is_numeric($_GET['p'])) { // Sudah ditentukan
$hal = $_GET['p'];
} else { // Perlu
ditentukan.
// Menghitung
banyak rekaman:
$q = "SELECT COUNT(id_user) FROM
pengguna";
$r = @mysqli_query ($dbc, $q);
$baris = @mysqli_fetch_array ($r,
MYSQLI_NUM);
$rekaman = $baris[0];
// Menghitung
banyak halaman...
if
($rekaman > $tampil) { // Lebih dari 1 halaman.
$hal = ceil ($rekaman/$tampil);
} else {
$hal = 1;
}
} // Akhir dari IF p.
// Menentukan di mana di dalam database untuk mulai
memberikan hasil...
if (isset($_GET['s'])
&& is_numeric($_GET['s'])) {
$mulai = $_GET['s'];
} else {
$mulai = 0;
}
// Melakukan query:
$q = "SELECT
nama_belakang, nama_depan,
DATE_FORMAT(tanggal_registrasi, '%M %d,
%Y') AS dr, id_user
FROM pengguna
ORDER BY tanggal_registrasi ASC LIMIT
$mulai, $tampil";
$r = @mysqli_query
($dbc, $q); // Menjalankan query.
// Kepala tabel.
echo '<table align="center"
cellspacing="3" cellpadding="3" width="75%">
<tr>
<td
align="left"><b>Edit</b></td>
<td
align="left"><b>Hapus</b></td>
<td
align="left"><b>Nama Belakang</b></td>
<td
align="left"><b>Nama Depan</b></td>
<td
align="left"><b>Tanggal Registrasi</b></td>
</tr>';
// Menampilkan semua rekaman:
$bg = '#eeeeee'; //
Menetapkan warna latar awal.
while ($baris = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
$bg = ($bg=='#eeeeee' ? '#ffffff'
:'#eeeeee'); // Tukar warna latar.
echo '<tr bgcolor="' . $bg .
'">
<td
align="left"><a href="edit_user.php?id='
. $baris['id_user'] . '">Edit</a></td>
<td align="left"><a
href="hapus_user.php?id=' . $baris['id_user'] .
'">Hapus</a></td>
<td
align="left">' . $baris['nama_belakang']. '</td>
<td
align="left">' . $baris['nama_depan'] . '</td>
<td align="left">'
. $baris['dr'] . '</td>
</tr>';
}
echo '</table>'; // Tutup tabel.
mysqli_free_result ($r); // Membebaskan resource
mysqli_close($dbc);
// Membuat link-link ke halaman lain, jika diperlukan.
if ($hal > 1) {
// Tambahkan
spasi dan mulai paragraf:
echo '<br /><p>';
// Menentukan
halaman apa skript dimulai:
$hal_sekarang = ($mulai/$tampil) + 1;
// Jika tidak
pada halaman pertama, ciptakan tombol Sebelumnya:
if ($hal_sekarang != 1) {
echo '<a href="lihat_user.php?s='
. ($mulai - $tampil) . '&p=' . $hal . '">Sebelumnya</a> ';
}
// Membuat
halaman-halaman bernomor:
for ($i = 1; $i <= $hal; $i++) {
if ($i != $hal_sekarang) {
echo '<a
href="lihat_user.php?s=' . (($tampil * ($i - 1))) . '&p=' . $hal .
'">' . $i . '</a> ';
} else {
echo $i . ' ';
}
} // Akhir loop FOR.
// Jika tidak
pada halaman terakhir, ciptakan tombol Selanjutnya:
if ($hal_sekarang != $hal) {
echo '<a href="lihat_user.php?s='
. ($mulai + $tampil) . '&p=' . $hal . '">Selanjutnya</a>';
}
echo '</p>'; // Tutup paragraf.
} // Akhir bagian link.
include ('kaki.html');
?>
|
Gambar 8.8 Hasil query
yang telah dipaginasi.
8.5
Mengurutkan Hasil Query
Untuk mengakhiri
bab ini, ada satu fitur akhir yang dapat ditambahkan pada lihat_user.php. Pada
kondisinya sekarang, daftar user ditampilkan secara berurutan berdasarkan
tanggal registrasi. Akan lebih baik jika Anda dapat mengurutkannya berdasarkan
nama juga.
1. Buka lihat_user.php pada editor teks atau IDE Anda.
2. Tepat setelah menentukan titik awal, definisikan variabel $urut (Skript
8.5).
//
Defaultnya berdasarkan tanggal registrasi.
$urut
= (isset($_GET['urut'])) ? $_GET['urut'] : 'rd';
3. Tentukan bagaimana hasil diurutkan.
//
Menentukan pengurutan:
switch
($urut) {
case 'nb':
$berdasarkan = 'nama_belakang ASC';
break;
case 'nd':
$berdasarkan = 'nama_depan ASC';
break;
case 'tr':
$berdasarkan = 'tanggal_registrasi ASC';
break;
default:
$berdasarkan = 'tanggal_registrasi ASC';
$urut = 'tr';
break;
}
4. Modifikasi query agar menggunakan variabel $berdasarkan yang baru.
//
Melakukan query:
$q
= "SELECT nama_belakang, nama_depan,
DATE_FORMAT(tanggal_registrasi, '%M %d,
%Y') AS dr, id_user
FROM
pengguna
ORDER
BY $berdasarkan LIMIT $mulai, $tampil";
5. Modifikasi statemen echo() untuk kepala tabel agar menciptakan link-link
dari tiap kepala kolom.
//
Kepala tabel.
echo
'<table align="center" cellspacing="3"
cellpadding="3" width="75%">
<tr>
<td
align="left"><b>Edit</b></td>
<td
align="left"><b>Hapus</b></td>
<td
align="left"><b><a
href="lihat_user.php?urut=nb">Nama
Belakang</a></b></td>
<td
align="left"><b><a
href="lihat_user.php?urut=nd">Nama
Depan</a></b></td>
<td
align="left"><b><a
href="lihat_user.php?urut=tr">Tanggal
Registrasi</a></b></td>
</tr>';
6. Modifikasi statemen echo() yang menciptakan link Sebelumnya sehingga nilai urut juga dilewatkan.
echo
'<a href="lihat_user.php?s=' . ($mulai - $tampil) .
'&p=' . $hal . '&urut=' . $urut .
'">Sebelumnya</a> ';
7. Ulangi langkah 6 untuk link Selanjutnya.
//
Membuat halaman-halaman bernomor:
for
($i = 1; $i <= $hal; $i++) {
if ($i
!= $hal_sekarang) {
echo '<a href="lihat_user.php?s=' .
(($tampil * ($i - 1))) .
'&p=' . $hal . '&urut=' . $urut .
'">' . $i . '</a> ';
} else {
echo $i . ' ';
}
}
// Akhir loop FOR.
//
Jika tidak pada halaman terakhir, ciptakan tombol Selanjutnya:
if
($hal_sekarang != $hal) {
echo '<a href="lihat_user.php?s=' .
($mulai + $tampil) .
'&p=' . $hal . '&urut=' . $urut
. '">Selanjutnya</a>';
}
8. Simpan file dengan nama lihat_user.php, tempatkan pada direktori Web
Anda, dan jalankan dengan browser Web Anda. Lihat Gambar 8.9 dan Gambar 8.10.
Gambar 8.9 Tabel
diurutkan berdasarkan nama belakang.
Gambar 8.10 Tabel
diurutkan berdasarkan nama depan.
SKRIPT 8.4
|
|
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
<?php # Skript 8.4 - lihat_user.php
// Skript ini membaca semua rekaman dari tabel pengguna.
$judul_hal = 'Melihat Semua User';
include ('kepala.html');
// Header halaman:
echo '<h1>Daftar User Yang Terdaftar</h1>';
require_once ('mysqli_connect.php'); // Koneksi ke db.
// Banyak rekaman per halaman:
$tampil = 10;
// Menentukan banyak halaman...
if (isset($_GET['p']) && is_numeric($_GET['p'])) {
// Sudah ditentukan
$hal =
$_GET['p'];
} else { // Perlu ditentukan.
// Menghitung
banyak rekaman:
$q = "SELECT
COUNT(id_user) FROM pengguna";
$r =
@mysqli_query ($dbc, $q);
$baris =
@mysqli_fetch_array ($r, MYSQLI_NUM);
$rekaman =
$baris[0];
// Menghitung
banyak halaman...
if ($rekaman >
$tampil) { // Lebih dari 1 halaman.
$hal = ceil
($rekaman/$tampil);
} else {
$hal = 1;
}
} // Akhir dari IF p.
// Menentukan di mana di dalam database untuk mulai
memberikan hasil...
if (isset($_GET['s']) && is_numeric($_GET['s'])) {
$mulai =
$_GET['s'];
} else {
$mulai = 0;
}
// Menentukan pengurutan...
// Defaultnya berdasarkan tanggal registrasi.
$urut =
(isset($_GET['urut'])) ? $_GET['urut'] : 'rd';
// Menentukan pengurutan:
switch ($urut) {
case 'nb':
$berdasarkan = 'nama_belakang ASC';
break;
case 'nd':
$berdasarkan = 'nama_depan ASC';
break;
case 'tr':
$berdasarkan = 'tanggal_registrasi
ASC';
break;
default:
$berdasarkan = 'tanggal_registrasi
ASC';
$urut = 'tr';
break;
}
// Melakukan query:
$q = "SELECT
nama_belakang, nama_depan,
DATE_FORMAT(tanggal_registrasi, '%M %d,
%Y') AS dr, id_user
FROM pengguna
ORDER
BY $berdasarkan LIMIT $mulai, $tampil";
$r = @mysqli_query ($dbc, $q); // Menjalankan query.
// Kepala tabel.
echo '<table align="center"
cellspacing="3" cellpadding="3" width="75%">
<tr>
<td
align="left"><b>Edit</b></td>
<td align="left"><b>Hapus</b></td>
<td
align="left"><b><a
href="lihat_user.php?urut=nb">Nama
Belakang</a></b></td>
<td
align="left"><b><a
href="lihat_user.php?urut=nd">Nama
Depan</a></b></td>
<td
align="left"><b><a href="lihat_user.php?urut=tr">Tanggal
Registrasi</a></b></td>
</tr>';
// Menampilkan semua rekaman:
$bg = '#eeeeee'; // Menetapkan warna latar awal.
while ($baris = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
$bg =
($bg=='#eeeeee' ? '#ffffff' :'#eeeeee'); // Tukar warna latar.
echo '<tr
bgcolor="' . $bg . '">
<td align="left"><a
href="edit_user.php?id=' . $baris['id_user'] .
'">Edit</a></td>
<td align="left"><a
href="hapus_user.php?id=' . $baris['id_user'] .
'">Hapus</a></td>
<td
align="left">' . $baris['nama_belakang']. '</td>
<td
align="left">' . $baris['nama_depan'] . '</td>
<td
align="left">' . $baris['dr'] . '</td>
</tr>';
}
echo '</table>'; // Tutup tabel.
mysqli_free_result ($r); // Membebaskan resource
mysqli_close($dbc);
// Membuat link-link ke halaman lain, jika diperlukan.
if ($hal > 1) {
// Tambahkan
spasi dan mulai paragraf:
echo '<br
/><p>';
// Menentukan
halaman apa skript dimulai:
$hal_sekarang =
($mulai/$tampil) + 1;
// Jika tidak
pada halaman pertama, ciptakan tombol Sebelumnya:
if ($hal_sekarang
!= 1) {
echo '<a href="lihat_user.php?s='
. ($mulai - $tampil) .
'&p=' . $hal . '&urut=' .
$urut . '">Sebelumnya</a> ';
}
// Membuat
halaman-halaman bernomor:
for ($i = 1; $i
<= $hal; $i++) {
if ($i !=
$hal_sekarang) {
echo '<a href="lihat_user.php?s='
. (($tampil * ($i - 1))) .
'&p=' . $hal . '&urut='
. $urut . '">' . $i . '</a> ';
} else {
echo $i . '
';
}
} // Akhir loop
FOR.
// Jika tidak
pada halaman terakhir, ciptakan tombol Selanjutnya:
if ($hal_sekarang
!= $hal) {
echo '<a href="lihat_user.php?s='
. ($mulai + $tampil) .
'&p=' . $hal . '&urut=' .
$urut . '">Selanjutnya</a>';
}
echo
'</p>'; // Tutup paragraf.
} // Akhir bagian link.
include ('kaki.html');
?>
|
No comments:
Post a Comment