34849-vm/download_report.php
2026-02-03 01:43:03 +00:00

81 lines
2.5 KiB
PHP

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header('Location: login.php');
exit;
}
require_once 'db/config.php';
try {
$pdo = db();
$query = "
SELECT
p.dni_cliente,
p.nombre_completo,
p.sede_envio,
p.celular,
p.producto,
p.cantidad
FROM pedidos p
WHERE p.estado = 'ROTULADO 📦'
ORDER BY p.id DESC
";
$stmt = $pdo->prepare($query);
$stmt->execute();
$pedidos = $stmt->fetchAll(PDO::FETCH_ASSOC);
header('Content-Type: application/vnd.ms-excel; charset=utf-8');
header('Content-Disposition: attachment; filename="rotulados.xls"');
header('Pragma: no-cache');
header('Expires: 0');
$output = '<html><head><meta charset="utf-8"></head><body>';
$output .= '<table border="1">';
$output .= '<thead>';
$output .= '<tr>';
$output .= '<th>DNI</th>';
$output .= '<th>Cliente</th>';
$output .= '<th>Sede de Envío</th>';
$output .= '<th>Numero</th>';
$output .= '<th>Producto</th>';
$output .= '<th>Cantidad</th>';
$output .= '<th>Numero de Orden</th>';
$output .= '</tr>';
$output .= '</thead>';
$output .= '<tbody>';
$numero_orden = 1;
foreach ($pedidos as $pedido) {
$output .= '<tr>';
$output .= '<td>' . htmlspecialchars($pedido['dni_cliente'] ?? '') . '</td>';
$output .= '<td>' . htmlspecialchars($pedido['nombre_completo'] ?? '') . '</td>';
$output .= '<td>' . htmlspecialchars($pedido['sede_envio'] ?? '') . '</td>';
$output .= '<td>' . htmlspecialchars($pedido['celular'] ?? '') . '</td>';
$output .= '<td>' . htmlspecialchars($pedido['producto'] ?? '') . '</td>';
$output .= '<td>' . htmlspecialchars($pedido['cantidad'] ?? '') . '</td>';
$output .= '<td>' . $numero_orden . '</td>';
$output .= '</tr>';
$numero_orden++;
}
$output .= '</tbody>';
$output .= '</table>';
$output .= '</body></html>';
echo $output;
} catch (Exception $e) {
// Log error if possible, but don't output it to the user here
// as it would corrupt the Excel file.
// For debugging, you could write to a log file:
// file_put_contents('error_log.txt', $e->getMessage());
// Restore friendly error message
header('HTTP/1.1 500 Internal Server Error');
// Using a script to show the message and prevent file corruption.
echo '<script>alert("Ocurrió un error al generar el reporte."); window.history.back();</script>';
}
?>