From e8371028c2a9d641c53fa56f6dd1987bb5f408ec Mon Sep 17 00:00:00 2001 From: TiaraChontesa Date: Fri, 12 Jun 2026 01:00:25 +0000 Subject: [PATCH] Update fixdata.php --- fixdata.php | 106 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 89 insertions(+), 17 deletions(-) diff --git a/fixdata.php b/fixdata.php index f016667..21286c3 100644 --- a/fixdata.php +++ b/fixdata.php @@ -3,29 +3,101 @@ require_once 'koneksi.php'; echo "

Fix Kolom bantuan_tersalur

"; -$columns = [ - "status_konfirmasi" => "ALTER TABLE bantuan_tersalur ADD COLUMN status_konfirmasi ENUM('Menunggu','Dikonfirmasi','Ditolak') NOT NULL DEFAULT 'Menunggu' AFTER status", - "nama_penerima_konfirmasi" => "ALTER TABLE bantuan_tersalur ADD COLUMN nama_penerima_konfirmasi VARCHAR(150) DEFAULT NULL AFTER status_konfirmasi", - "catatan_konfirmasi" => "ALTER TABLE bantuan_tersalur ADD COLUMN catatan_konfirmasi TEXT DEFAULT NULL AFTER nama_penerima_konfirmasi", - "dikonfirmasi_oleh" => "ALTER TABLE bantuan_tersalur ADD COLUMN dikonfirmasi_oleh INT DEFAULT NULL AFTER catatan_konfirmasi", - "tgl_konfirmasi" => "ALTER TABLE bantuan_tersalur ADD COLUMN tgl_konfirmasi TIMESTAMP NULL DEFAULT NULL AFTER dikonfirmasi_oleh" -]; +function columnExists($conn, $table, $column) { + $table = $conn->real_escape_string($table); + $column = $conn->real_escape_string($column); -foreach ($columns as $column => $sql) { - $cek = $conn->query("SHOW COLUMNS FROM bantuan_tersalur LIKE '$column'"); + $result = $conn->query("SHOW COLUMNS FROM `$table` LIKE '$column'"); + return $result && $result->num_rows > 0; +} - if ($cek && $cek->num_rows > 0) { +function tableExists($conn, $table) { + $table = $conn->real_escape_string($table); + + $result = $conn->query("SHOW TABLES LIKE '$table'"); + return $result && $result->num_rows > 0; +} + +function addColumnIfMissing($conn, $table, $column, $definition, $afterColumn = null) { + if (columnExists($conn, $table, $column)) { echo "

Kolom $column sudah ada, dilewati.

"; + return; + } + + $afterSql = ""; + + if ($afterColumn && columnExists($conn, $table, $afterColumn)) { + $afterSql = " AFTER `$afterColumn`"; + } + + $sql = "ALTER TABLE `$table` ADD COLUMN `$column` $definition $afterSql"; + + if ($conn->query($sql)) { + echo "

Kolom $column berhasil ditambahkan.

"; } else { - if ($conn->query($sql)) { - echo "

Kolom $column berhasil ditambahkan.

"; - } else { - echo "

Gagal tambah kolom $column: " . htmlspecialchars($conn->error) . "

"; - } + echo "

Gagal tambah kolom $column: " . htmlspecialchars($conn->error) . "

"; } } +$table = "bantuan_tersalur"; + +if (!tableExists($conn, $table)) { + die("

Tabel bantuan_tersalur belum ada. Import database.sql dulu.

"); +} + +// Tambahkan kolom status dulu karena status_konfirmasi ingin diletakkan setelah status. +addColumnIfMissing( + $conn, + $table, + "status", + "ENUM('Pending','Tersalurkan') NOT NULL DEFAULT 'Tersalurkan'", + "created_at" +); + +addColumnIfMissing( + $conn, + $table, + "status_konfirmasi", + "ENUM('Menunggu','Dikonfirmasi','Ditolak') NOT NULL DEFAULT 'Menunggu'", + "status" +); + +addColumnIfMissing( + $conn, + $table, + "nama_penerima_konfirmasi", + "VARCHAR(150) DEFAULT NULL", + "status_konfirmasi" +); + +addColumnIfMissing( + $conn, + $table, + "catatan_konfirmasi", + "TEXT DEFAULT NULL", + "nama_penerima_konfirmasi" +); + +addColumnIfMissing( + $conn, + $table, + "dikonfirmasi_oleh", + "INT DEFAULT NULL", + "catatan_konfirmasi" +); + +addColumnIfMissing( + $conn, + $table, + "tgl_konfirmasi", + "TIMESTAMP NULL DEFAULT NULL", + "dikonfirmasi_oleh" +); + +$conn->query("UPDATE `$table` SET status = 'Tersalurkan' WHERE status IS NULL"); +$conn->query("UPDATE `$table` SET status_konfirmasi = 'Menunggu' WHERE status_konfirmasi IS NULL"); + echo "
"; -echo "

Selesai. Coba buka dashboard relawan lagi.

"; -echo "

Setelah berhasil, hapus file fix_kolom_bantuan.php dari repo.

"; +echo "

Selesai. Coba buka dashboard relawan lagi.

"; +echo "

Setelah berhasil, hapus file fixdata.php dari repo lalu redeploy.

"; ?> \ No newline at end of file