'nama_server',
1 => 'start_time',
2 => 'nominal',
3 => 'user_create',
4 => 'status',
5 => 'update_time',
6 => 'id'
];
$orderColumn = $columns[$orderColumnIndex] ?? 'start_time';
// Filter server ID
$id_data_server = isset($_GET['i']) ? $_GET['i'] : 0; // bisa single atau multiple (1,2,3)
$jenis = isset($_GET['s']) ? $_GET['s'] : 0;
// echo $jenis;
$where = "WHERE 1=1 AND jenis = '$jenis'";
if ($id_data_server > 0) {
if ($id_data_server == 1) {
$where .= ""; // semua server
} else {
// pastikan hanya angka dan koma
$safe_ids = implode(',', array_map('intval', explode(',', $id_data_server)));
$where .= " AND id_data_server IN ($safe_ids) ";
}
}
// Query untuk hitung total
try {
$stmt = $pdo->query("SELECT COUNT(*) FROM v_transaksi_withdraw $where");
$recordsTotal = (int) $stmt->fetchColumn();
} catch (Exception $e) {
$recordsTotal = 0;
}
// Query untuk filter pencarian
$searchQuery = '';
if (!empty($search)) {
$searchQuery = " AND (user_create LIKE :search OR status LIKE :search OR nominal LIKE :search) ";
}
// Hitung total setelah filter
try {
$stmt = $pdo->prepare("SELECT COUNT(*) FROM v_transaksi_withdraw $where $searchQuery");
if (!empty($search)) $stmt->bindValue(':search', "%$search%", PDO::PARAM_STR);
$stmt->execute();
$recordsFiltered = (int) $stmt->fetchColumn();
} catch (Exception $e) {
$recordsFiltered = 0;
}
// Ambil data sesuai filter + order + limit
$data = [];
try {
$sql = "SELECT nama_server, start_time, nominal, user_create, status, update_time, id_data_server, id, bukti_success
FROM v_transaksi_withdraw
$where $searchQuery
ORDER BY $orderColumn $orderDir
LIMIT :start, :length";
$stmt = $pdo->prepare($sql);
if (!empty($search)) $stmt->bindValue(':search', "%$search%", PDO::PARAM_STR);
$stmt->bindValue(':start', $start, PDO::PARAM_INT);
$stmt->bindValue(':length', $length, PDO::PARAM_INT);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC) ?: [];
// foreach ($rows as $row) {
// // Format nominal ke number_format
// $row['nominal'] = number_format((float)$row['nominal'], 0, ',', '.');
// // $row['status'] = ($row['status'] == 'pending') ? '' . strtoupper($row['status']) . '' : '' . strtoupper($row['status']) . '';
// $row['id'] = ['id' => '']
// $data[] = array_values($row); // ubah ke numerik index biar sesuai DataTables
// }
foreach ($rows as $row) {
$data[] = [
$row['nama_server'],
$row['start_time'],
number_format((float)$row['nominal'], 0, ',', '.'),
$row['user_create'],
$row['status'],
$row['update_time'],
[ // kolom 6 → objek
"id" => $row['id'],
"bukti_success" => $row['bukti_success']
]
];
}
} catch (Exception $e) {
$data = [];
}
// Response ke DataTables
echo json_encode([
"draw" => $draw,
"recordsTotal" => $recordsTotal,
"recordsFiltered" => $recordsFiltered,
"data" => $data
]);