Update Banyak
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
include '../config/connect.php';
|
||||
|
||||
// Ambil parameter DataTables
|
||||
$draw = isset($_POST['draw']) ? intval($_POST['draw']) : 0;
|
||||
$start = isset($_POST['start']) ? intval($_POST['start']) : 0;
|
||||
$length = isset($_POST['length']) ? intval($_POST['length']) : 10;
|
||||
$search = isset($_POST['search']['value']) ? $_POST['search']['value'] : '';
|
||||
$orderColumnIndex = $_POST['order'][0]['column'] ?? 1;
|
||||
$orderDir = $_POST['order'][0]['dir'] ?? 'desc';
|
||||
$status = isset($_GET['s']) ? $_GET['s'] : 'SUCCESS';
|
||||
// Mapping kolom sesuai urutan table DataTable
|
||||
$columns = [
|
||||
0 => '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
|
||||
]);
|
||||
Reference in New Issue
Block a user