'order_id', 1 => 'keterangan', 2 => 'nama', 3 => 'jumlah', 4 => 'saldo', 5 => 'biaya', 6 => 'status', 7 => 'jenis', 8 => 'input_time', 9 => 'update_time', ]; $orderColumn = $columns[$orderColumnIndex] ?? 'update_time'; // Filter server ID $id_data_server = isset($_GET['i']) ? $_GET['i'] : 0; // bisa single atau multiple (1,2,3) $where = "WHERE 1=1 "; 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) AND status = '$status'"; } } // Query untuk hitung total try { $stmt = $pdo->query("SELECT COUNT(*) FROM client_payment $where"); $recordsTotal = (int) $stmt->fetchColumn(); } catch (Exception $e) { $recordsTotal = 0; } // Query untuk filter pencarian $searchQuery = ''; if (!empty($search)) { $searchQuery = " AND (update_time LIKE :search OR keterangan) "; } // Hitung total setelah filter try { $stmt = $pdo->prepare("SELECT COUNT(*) FROM client_payment $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 order_id, keterangan, nama, jumlah, saldo, biaya, status, jenis, input_time, update_time FROM client_payment $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) { $data[] = [ "#PGPDN" . $row['order_id'], $row['keterangan'], $row['nama'], number_format((float)$row['jumlah'], 0, ',', '.'), number_format((float)$row['saldo'], 0, ',', '.'), number_format((float)$row['biaya'], 0, ',', '.'), $row['status'], $row['jenis'], $row['input_time'], $row['update_time'], ]; } } catch (Exception $e) { $data = []; } // Response ke DataTables echo json_encode([ "draw" => $draw, "recordsTotal" => $recordsTotal, "recordsFiltered" => $recordsFiltered, "data" => $data ]);