43 lines
1.2 KiB
PHP
43 lines
1.2 KiB
PHP
<?php
|
|
// --- DATABASE CONNECTION ---
|
|
require_once __DIR__ . '/db/config.php';
|
|
|
|
try {
|
|
$pdo = db();
|
|
$stmt = $pdo->query("SELECT * FROM roster ORDER BY fullNameEn");
|
|
$roster_data = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
} catch (PDOException $e) {
|
|
die("Database error: " . $e->getMessage());
|
|
}
|
|
|
|
// --- CSV EXPORT ---
|
|
$filename = "roster_export_" . date('Y-m-d') . ".csv";
|
|
|
|
header('Content-Type: text/csv; charset=utf-8');
|
|
header('Content-Disposition: attachment; filename="' . $filename . '"');
|
|
|
|
$output = fopen('php://output', 'w');
|
|
|
|
// Add headers
|
|
if (!empty($roster_data)) {
|
|
$roster_data_with_daily_cost = [];
|
|
foreach ($roster_data as $row) {
|
|
$row['dailyCost'] = $row['totalMonthlyCost'] / 20;
|
|
$roster_data_with_daily_cost[] = $row;
|
|
}
|
|
fputcsv($output, array_keys($roster_data_with_daily_cost[0]));
|
|
foreach ($roster_data_with_daily_cost as $row) {
|
|
fputcsv($output, $row);
|
|
}
|
|
} else {
|
|
// Add headers even if there is no data
|
|
$stmt = $pdo->query("SHOW COLUMNS FROM roster");
|
|
$columns = $stmt->fetchAll(PDO::FETCH_COLUMN);
|
|
$columns[] = 'dailyCost';
|
|
fputcsv($output, $columns);
|
|
}
|
|
|
|
fclose($output);
|
|
exit();
|