“Pak.. misalkan saya punya 10 record atau data yang memiliki ID katakanlah 1, 2, 3, …, 10. Kemudian saya ingin apabila saya menghapus salah satu data menggunakan script tertentu, misalkan data dengan ID 3 yang dihapus, maka secara otomatis ID nomor 4 menjadi ID nomor 3, ID nomor 5 menjadi 4, dst.. sehingga urutan keseluruhan ID datanya menjadi 1, 2, 3, 4, …, 9. Bagaimana cara untuk mewujudkan hal tsb? Dengan catatan field ID menggunakan AUTO INCREMENT”.Nah… mungkin ada diantara pengunjung dari blog ini yang menjumpai masalah serupa di atas, berikut ini artikel pembahasannya.
Untuk memudahkan pemahaman, kita misalkan memiliki tabel sederhana seperti di bawah ini:
1.
CREATE
TABLE
sample (
2.
id
int
(11) auto_increment,
3.
data
varchar
(5),
4.
PRIMARY
KEY
(id)
5.
);
1.
INSERT
INTO
sample
VALUES
(1,
'A'
);
2.
INSERT
INTO
sample
VALUES
(2,
'B'
);
3.
INSERT
INTO
sample
VALUES
(3,
'C'
);
4.
INSERT
INTO
sample
VALUES
(4,
'D'
);
5.
INSERT
INTO
sample
VALUES
(5,
'E'
);
Untuk skenario prosesnya, andaikan kita buat dahulu sebuah script untuk menampilkan semua data, sekaligus di dalamnya terdapat link untuk menghapus data yang diinginkan.
show.php
01.
<?php
02.
03.
// koneksi ke mysql
04.
mysql_connect(
'dbhost'
,
'dbuser'
,
'dbpass'
);
05.
mysql_select_db(
'dbname'
);
06.
07.
// membuat daftar (list)
08.
echo
"<ul>"
;
09.
10.
// query untuk menampilkan semua data dalam tabel
11.
$query
=
"SELECT * FROM sample"
;
12.
$hasil
= mysql_query(
$query
);
13.
while
(
$data
= mysql_fetch_array(
$hasil
))
14.
{
15.
// disertakan pula link untuk menghapus data berdasarkan ID nya
16.
echo
"<li>"
.
$data
[
'id'
].
" "
.
$data
[
'data'
].
" ( <a href='delete.php?id="
.
$data
['id
']."'
>Hapus</a> ) </li>";
17.
}
18.
19.
echo
"</ul>"
;
20.
21.
?>
OK… idenya adalah sebagai berikut:
Andaikan dari 5 data yang tersedia dalam tabel, kita telah hapus data dengan ID 3. Dengan demikian dalam tabel sekarang terdapat 4 buah data dengan urutan IDnya 1, 2, 4, 5.
OK… trus bagaimana dengan pengurutan kembali IDnya menjadi 1, 2, 3, 4? Ya.. idenya adalah kita buat sebuah variabel katakanlah $no. Nilai awal variabel ini adalah 1. Kemudian lakukan update ID pada record dengan ID = 1
1.
UPDATE
sample
SET
id = $
no
WHERE
id = 1;
1.
UPDATE
sample
SET
id = $
no
WHERE
id = 2;
1.
UPDATE
sample
SET
id = $
no
WHERE
id = 4;
1.
UPDATE
sample
SET
id = $
no
WHERE
id = 5;
Nah… untuk mewujudkan hal tersebut, kita perlu ubah value AUTO INCREMENT nya menjadi 5 (yaitu nilai $no terakhir ditambah 1), dengan maksud supaya bila data baru dimasukkan ke dalam tabel, nilai ID nya akan dimulai dari 5.
OK… ide dah dapat, selanjutnya kita bisa buat script untuk hapus sekaligus pengurutan kembali ID nya.
delete.php
01.
<?php
02.
03.
// koneksi ke mysql
04.
mysql_connect(
'dbhost'
,
'dbuser'
,
'dbpass'
);
05.
mysql_select_db(
'dbname'
);
06.
07.
// membaca ID dari data yang akan dihapus
08.
$id
=
$_GET
[
'id'
];
09.
10.
// query hapus data berdasarkan ID
11.
$query
=
"DELETE FROM sample WHERE id = $id"
;
12.
$hasil
= mysql_query(
$query
);
13.
14.
// konfirmasi penghapusan
15.
if
(
$hasil
)
echo
"Data sudah terhapus"
;
16.
17.
// query untuk membaca semua data dengan sorting berdasarkan ID secara descending
18.
// sorting descending ini untuk mengantisipasi record yang urutan ID nya tidak urut dalam setiap barisnya
19.
// misal 1, 4, 2, 5, 3
20.
$query
=
"SELECT * FROM sample ORDER BY id"
;
21.
$hasil
= mysql_query(
$query
);
22.
23.
// nilai awal increment
24.
$no
= 1;
25.
26.
while
(
$data
= mysql_fetch_array(
$hasil
))
27.
{
28.
// membaca id dari record yang tersisa dalam tabel
29.
$id
=
$data
[
'id'
];
30.
31.
// proses updating id dengan nilai $no
32.
$query2
=
"UPDATE sample SET id = $no WHERE id = $id"
;
33.
mysql_query(
$query2
);
34.
35.
// increment $no
36.
$no
++;
37.
}
38.
39.
// mengubah nilai auto increment menjadi $no terakhir ditambah 1
40.
$query
=
"ALTER TABLE sample AUTO_INCREMENT = $no"
;
41.
mysql_query(
$query
);
42.
43.
?>
Pak....saya punya tabel yang sudah diisi dan ID nya sesuai nomor urut. tapi saya mau menghapus semua recordnya dan mau memulai lagi nomor urut ID nya kembali ke angka 1. Bagaimana caranya pak. karena kalau saya input datanya nomor ID tidak mau mulai dari angka 1 lagi, melainkan terus bertambah.
BalasHapus