problema al generar un archivo csv

Iniciado por Oddinx, 21 Mayo 2017, 21:17 PM

0 Miembros y 1 Visitante están viendo este tema.

Oddinx

Hola, lo que pasa es que quiero generar un archivo csv a partir de una consulta. Pero cuando voy a generarlo me aparece lo siguiente :

query("SELECT * FROM item where fechaCreacion BETWEEN '$fecha1' AND '$fecha2' ORDER BY numero"); while($filaR= $reporteCsv->fetch_assoc()) fputcsv($salida, array($filaR['numero'], $filaR['fechaCreacion'], $filaR['fechaVencimiento'], $filaR['condiciones'], $filaR['subtotal'])); } ?>


El codigo que genera el archivo es este:


include('conexion.php');//CONEXION A LA BD

$fecha1=$_POST['fecha1'];
$fecha2=$_POST['fecha2'];

if(isset($_POST['generar_reporte']))
{
// NOMBRE DEL ARCHIVO Y CHARSET
header('Content-Type:text/csv; charset=latin1');
header('Content-Disposition: attachment; filename="Reporte_Fechas_Ingreso.csv"');

// SALIDA DEL ARCHIVO
$salida=fopen('php://output', 'w');
// ENCABEZADOS
fputcsv($salida, array('numero', 'fechaCreacion', 'fechaVencimiento', 'condiciones', 'subtotal'));
// QUERY PARA CREAR EL REPORTE
$reporteCsv=$conexion->query("SELECT *  FROM item where fechaCreacion BETWEEN '$fecha1' AND '$fecha2' ORDER BY numero");
while($filaR= $reporteCsv->fetch_assoc())
fputcsv($salida, array($filaR['numero'],
$filaR['fechaCreacion'],
$filaR['fechaVencimiento'],
$filaR['condiciones'],
$filaR['subtotal']));

}




Y el codigo de la página donde se descarga el archivo es este:

<?php

include('conexion.php');

$pedido="SELECT * FROM pedido order by numero";
$respedido $conexion->query($pedido);
?>


<html lang="es">
<head>
         <h1><img src="img/logo.jpg" alt="" class="logo"></h1>


 
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
       
<link href="estilos.css" rel="stylesheet">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">

</head>
<body>
<header>
<div class="alert alert-info">
<h2> Reportes</h2>
</div>
</header>
<section>
<table class="table">
<tr class="bg-primary">
<th>numero</th>
<th>fechaCreacion</th>
<th>fechaVencimiento</th>
<th>condiciones</th>
<th>subtotal</th>

</tr>
<?php
while ($registropedido$respedido->fetch_array(MYSQLI_BOTH))
{
echo'<tr>
 <td>'
.$registropedido['idItem'].'</td>
 <td>'
.$registropedido['codigo'].'</td>
 <td>'
.$registropedido['nombre'].'</td>
 <td>'
.$registropedido['presentacion'].'</td>
 <td>'
.$registropedido['valorCosto'].'</td>
 </tr>'
;
}
?>

</table>
</section>

<form method="post" class="form" action="generarconsult.php">
<input type="date" name="fecha1">
<input type="date" name="fecha2">
<input type="submit" name="generar_reporte">
</form>
</body>
</html>




Espero que puedan ayudarme


mchojrin

No veo por qué haces esto:

// SALIDA DEL ARCHIVO
$salida=fopen('php://output', 'w');
// ENCABEZADOS
fputcsv($salida, array('numero', 'fechaCreacion', 'fechaVencimiento', 'condiciones', 'subtotal'));


Si ya indicaste que la salida va a ser csv mediante la función header... ¿por qué no hacer simplemente echo de lo que quieres que salga en el archivo?
Ayudo a desarrolladores PHP a acceder a puestos mejor remunerados