'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 ]);