Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Oddinx en 21 Mayo 2017, 21:17 pm



Título: problema al generar un archivo csv
Publicado por: Oddinx en 21 Mayo 2017, 21:17 pm
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:
Código:

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:
Código:
<?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



Título: Re: problema al generar un archivo csv
Publicado por: mchojrin en 2 Junio 2017, 03:44 am
No veo por qué haces esto:

Código:
// 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?