93 lines
2.9 KiB
PHP
93 lines
2.9 KiB
PHP
<?php
|
|
require '../vendor/autoload.php'; // Pastikan path ini sesuai dengan autoload.php Anda
|
|
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
|
|
// Koneksi ke database
|
|
include '../config/connect.php';
|
|
|
|
// Ambil parameter dari request
|
|
$search = isset($_GET['search']) ? $_GET['search'] : '';
|
|
$startDate = isset($_GET['start_date']) ? $_GET['start_date']. ' 00:00:00' : '';
|
|
$endDate = isset($_GET['end_date']) ? $_GET['end_date']. ' 23:59:59' : '';
|
|
$id_data_server = isset($_GET['ids']) ? $_GET['ids'] : '';
|
|
|
|
// Siapkan query SQL
|
|
$query = "SELECT nama_server, start_time, keterangan, pemasukan, pengeluaran, status, metode_pembayaran, nama_user, nama FROM v_transaksi WHERE 1=1 AND id_data_server IN ($id_data_server)";
|
|
|
|
// Tambahkan kondisi pencarian
|
|
if (!empty($search)) {
|
|
$query .= " AND (nama_server LIKE :search OR keterangan LIKE :search OR metode_pembayaran LIKE :search OR status LIKE :search)";
|
|
}
|
|
|
|
// Tambahkan kondisi untuk filter tanggal
|
|
if (!empty($startDate)) {
|
|
$query .= " AND start_time >= :startDate";
|
|
}
|
|
if (!empty($endDate)) {
|
|
$query .= " AND start_time <= :endDate";
|
|
}
|
|
|
|
// Siapkan pernyataan
|
|
$stmt = $pdo->prepare($query);
|
|
|
|
// Bind parameter pencarian
|
|
if (!empty($search)) {
|
|
$stmt->bindValue(':search', '%' . $search . '%', PDO::PARAM_STR);
|
|
}
|
|
|
|
// Bind parameter filter tanggal
|
|
if (!empty($startDate)) {
|
|
$stmt->bindValue(':startDate', $startDate, PDO::PARAM_STR);
|
|
}
|
|
if (!empty($endDate)) {
|
|
$stmt->bindValue(':endDate', $endDate, PDO::PARAM_STR);
|
|
}
|
|
|
|
$stmt->execute();
|
|
|
|
// Ambil data
|
|
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// Buat Spreadsheet
|
|
$spreadsheet = new Spreadsheet();
|
|
$sheet = $spreadsheet->getActiveSheet();
|
|
|
|
// Set header
|
|
$sheet->setCellValue('A1', 'Nama Server')
|
|
->setCellValue('B1', 'User_Input')
|
|
->setCellValue('C1', 'Start Time')
|
|
->setCellValue('D1', 'Keterangan')
|
|
->setCellValue('E1', 'Pelanggan')
|
|
->setCellValue('F1', 'Kas Masuk')
|
|
->setCellValue('G1', 'Kas Keluar')
|
|
->setCellValue('H1', 'Status')
|
|
->setCellValue('I1', 'Metode Pembayaran');
|
|
|
|
// Isi data
|
|
$row = 2; // Mulai dari baris kedua
|
|
foreach ($data as $item) {
|
|
$sheet->setCellValue('A' . $row, $item['nama_server'])
|
|
->setCellValue('B' . $row, $item['nama_user'])
|
|
->setCellValue('C' . $row, $item['start_time'])
|
|
->setCellValue('D' . $row, $item['keterangan'])
|
|
->setCellValue('E' . $row, $item['nama'])
|
|
->setCellValue('F' . $row, $item['pemasukan'])
|
|
->setCellValue('G' . $row, $item['pengeluaran'])
|
|
->setCellValue('H' . $row, $item['status'])
|
|
->setCellValue('I' . $row, $item['metode_pembayaran']);
|
|
$row++;
|
|
}
|
|
|
|
// Set header untuk download
|
|
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
|
header('Content-Disposition: attachment;filename="data_export.xlsx"');
|
|
header('Cache-Control: max-age=0');
|
|
|
|
// Tulis file
|
|
$writer = new Xlsx($spreadsheet);
|
|
$writer->save('php://output');
|
|
exit;
|
|
?>
|