Cara mengurutkan id di phpmyadmin

"Tn. misalkan saya memiliki 10 record atau data yang memiliki ID katakanlah 1, 2, 3, ..., 10. Lalu saya ingin ketika salah satu data saya hapus menggunakan script tertentu, misal data dengan id 3 yang dihapus, maka secara otomatis id no 4 menjadi id no 3, id no 5 menjadi 4, dst. hingga urutan keseluruhan ID data menjadi 1, 2, 3, 4, ..., 9. Bagaimana cara mewujudkannya?

Nah.. mungkin sebagian dari pengunjung blog ini pernah mengalami masalah yang mirip dengan yang dialami Pak Baiquni di atas, berikut artikel pembahasannya

Agar lebih mudah dipahami, misalkan kita memiliki tabel sederhana seperti di bawah ini

CREATE TABLE sample (
  id int(11) auto_increment,
  data varchar(5),
  PRIMARY KEY  (id)
);

di mana ada field 'ID' yang menggunakan AUTO INCREMENT. Selanjutnya misalkan kita juga memiliki 5 record sebagai berikut

INSERT INTO sample VALUES (1, 'A');
INSERT INTO sample VALUES (2, 'B');
INSERT INTO sample VALUES (3, 'C');
INSERT INTO sample VALUES (4, 'D');
INSERT INTO sample VALUES (5, 'E');
_

Saat kita melihat contoh record pada tabel di atas, ID masih terurut dengan baik dari 1 hingga 5

Untuk skenario prosesnya, misalkan dulu kita membuat script untuk menampilkan semua data, sekaligus ada link didalamnya untuk menghapus data yang diinginkan

menunjukkan. php

<?php

// koneksi ke mysql
mysql_connect('dbhost', 'dbuser', 'dbpass');
mysql_select_db('dbname');

// membuat daftar (list)
echo "<ul>";

// query untuk menampilkan semua data dalam tabel
$query = "SELECT * FROM sample";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
   // disertakan pula link untuk menghapus data berdasarkan ID nya
   echo "<li>".$data['id']." ".$data['data']." ( <a href='delete.php?id=".$data['id']."'>Hapus</a> ) </li>";
}

echo "</ul>";

?>

Sebelum kita mulai membuat script untuk proses penghapusan yang didalamnya terdapat mekanisme untuk menyusun ulang urutan ID, kita cari solusinya terlebih dahulu.

Oke… idenya adalah sebagai berikut

Asumsikan bahwa dari 5 data yang tersedia dalam tabel, kita telah menghapus data dengan ID 3. Dengan demikian pada tabel sekarang terdapat 4 buah data dengan urutan ID 1, 2, 4, 5

Oke… lalu bagaimana dengan menyusun ulang ID menjadi 1, 2, 3, 4? . idenya adalah kita membuat variabel katakanlah $no. Nilai awal variabel ini adalah 1. Kemudian perbarui ID pada catatan dengan ID = 1

UPDATE sample SET id = $no WHERE id = 1;

Selanjutnya, kita menaikkan $no menjadi 2, dan sekali lagi memperbarui record dengan ID = 2

UPDATE sample SET id = $no WHERE id = 2;
_

Kami meningkatkan nilai $no menjadi 3, dan memperbarui catatan dengan ID = 4

UPDATE sample SET id = $no WHERE id = 4;

Tingkatkan nilai $no satu lagi menjadi 4 dan perbarui catatan dengan ID = 5

UPDATE sample SET id = $no WHERE id = 5;
_

Setelah proses update ID semua record selesai, pertanyaannya bagaimana kita membuat mekanisme agar ketika record baru dimasukkan ke dalam tabel, nilai ID menjadi 5 (melanjutkan ID terakhir setelah update)?

Nah.. untuk mewujudkannya, kita perlu mengubah nilai AUTO INCREMENT menjadi 5 (yaitu nilai $no terakhir ditambah 1), artinya ketika data baru dimasukkan ke dalam tabel, nilai ID akan dimulai dari 5

Oke.. saya dapat ide, lalu kita bisa membuat skrip untuk menghapus dan menyusun ulang ID

menghapus. php

<?php

// koneksi ke mysql
mysql_connect('dbhost', 'dbuser', 'dbpass');
mysql_select_db('dbname');

// membaca ID dari data yang akan dihapus
$id = $_GET['id'];

// query hapus data berdasarkan ID
$query = "DELETE FROM sample WHERE id = $id";
$hasil = mysql_query($query);

// konfirmasi penghapusan
if ($hasil) echo "Data sudah terhapus";

// query untuk membaca semua data dengan sorting berdasarkan ID secara descending
// sorting descending ini untuk mengantisipasi record yang urutan ID nya tidak urut dalam setiap barisnya
// misal 1, 4, 2, 5, 3 
$query = "SELECT * FROM sample ORDER BY id";
$hasil = mysql_query($query);

// nilai awal increment
$no = 1;

while ($data  = mysql_fetch_array($hasil))
{
   // membaca id dari record yang tersisa dalam tabel
   $id = $data['id'];
  
   // proses updating id dengan nilai $no
   $query2 = "UPDATE sample SET id = $no WHERE id = $id";
   mysql_query($query2);

   // increment $no
   $no++;   
}

// mengubah nilai auto increment menjadi $no terakhir ditambah 1
$query = "ALTER TABLE sample  AUTO_INCREMENT = $no";
mysql_query($query); 

?>

Sehat. mudah bukan membuatnya. Begitu mudah. simple banget.. 🙂 Semoga artikel ini bermanfaat buat kalian khususnya Baiquni

Apa itu ORDER BY di MySQL?

Order ORDER BY digunakan untuk mengurutkan hasil kumpulan data secara berurutan dari "kecil" ke "besar" atau dari "A " ke "Z ”, atau urutkan data dari "besar" ke "kecil" atau dari "Z" ke "A".

Apa itu ORDER BY di sql?

ORDER BY biasanya adalah item terakhir dalam pernyataan SQL . Anda dapat menyertakan bidang tambahan dalam klausa ORDER BY. Catatan diurutkan terlebih dahulu berdasarkan bidang pertama yang dicantumkan setelah pesanan.

Bagaimana cara mengatur ulang auto_increment di tabel?

Cara Mereset Penambahan Otomatis pada Database MySQL .
Hapus bidang id dengan menggunakan perintah berikut. ALTER TABLE table_name DROP field_name
Data id akan dihapus hanya menyisakan field nama
Buat perintah seperti ini dan jalankan. .
Sekarang data diurutkan dari 1-6

Apa yang dimaksud dengan atribut kenaikan otomatis?

Atribut AUTO_INCREMENT digunakan untuk tipe data numerik (biasanya tipe data INT), dimana jika kita mengatur kolom dengan atribut AUTO_INCREMENT , maka setiap kali kita menginput data, nilai pada kolom ini akan bertambah 1. Nilai pada kolom juga akan bertambah jika kita input dengan NULL atau value.