Holas, aka pongo el codigo pa poder enviar la descarga del archivo exel directamente al usuario, sin pasar por un archivo en el disco. El código forma parte de un sistema de ordenes de compra, en particular el archivo se llama descarga.php (y es al que yo le pido al usuaario que pinche). Supongo que no tiene sentido que explique el codigo pues es para fines generales, en todo caso para hacer mas facil la comprension les digo que, el archivo exel, que se genera contiene una planilla con todas las órdenes de compra y detalle de productos para los clientes que han comprado en mi sitio. Esas variables "flag" que aparecen ahi lo q hacen es justamente eso identificar cuando un usuario ha comprado (flag=0) y al cambiar el valor (flag=1) se escriben todos los productos de esa orden de compra, luego se reinician las variables para la siguiente orden de compra en la BD. Cualquier duda, vuelvan a preguntar aki mismo, lamentablemente no puedo darles una URL para que vean esto funcionando porque es para niveles administrativos pero creo que se puede entender.
saludos
Heraldex
Código PHP:
session_start();
if ($_SESSION['admin']==1)
{
require("../scripts/connect.inc.php");
include ("../scripts/funciones.inc.php");
$exel="<table width='100%' border='1' cellspacing='0' cellpadding='0'>
<tr>
<td align='center'>Orden de compra</td>
<td align='center'>Cliente</td>
<td align='center'>Fecha de Compra</td>
<td align='center'>Producto</td>
<td align='center'>Cantidad</td>
<td align='center'>Sub-Total</td>
</tr>";
$sql="select * from compra";
$qry=mysql_query($sql);
$num_r=mysql_num_rows($qry);
$flag=0;
while ($fila=mysql_fetch_array($qry))
{
$sql_nombre_cliente="select nombre_cliente, apellido from cliente where id_cliente=".$fila['id_cliente']."";
$qry_nombre_cliente=mysql_query($sql_nombre_cliente);
$nom_cliente=mysql_fetch_array($qry_nombre_cliente);
$exel.="<tr><td align='center'>".$fila['codigo_compra']."</td>";
$exel.="<td align='center'>".$nom_cliente['nombre_cliente']." ".$nom_cliente['apellido']."</td>";
$exel.=" <td align='center'>".muestra_fecha($fila['fecha_compra'])."</td>";
$sql_orden="select id_articulo, cantidad_articulo, precio_compra from articulos_en_compra where codigo_compra=".$fila['codigo_compra']."";
$qry_orden=mysql_query($sql_orden);
while ($row=mysql_fetch_array($qry_orden))
{
$sql_prod="select traduc_nombre from articulo_en_idioma where id_articulo=".$row['id_articulo']." and cod_idioma=1";
$qry_prod=mysql_query($sql_prod);
$nom_prod=mysql_fetch_array($qry_prod);
if ($flag)
{
$exel.="<tr><td align='center'>".$fila['codigo_compra']."</td><td align='center'>".$nom_cliente['nombre_cliente']." ".$nom_cliente['apellido']."</td><td align='center'>".muestra_fecha($fila['fecha_compra'])."</td>";
$exel.="<td>".$nom_prod['traduc_nombre']."</td>";
$exel.="<td align='center'>".$row['cantidad_articulo']."</td>";
$exel.="<td align='right'>".precio_articulo($row['precio_compra']*$row['cantidad_articulo'],$fila['cod_moneda'])."</td>";
$exel.="</tr>";
}
if (!$flag)
{
$exel.="<td>".$nom_prod['traduc_nombre']."</td>";
$exel.="<td align='center'>".$row['cantidad_articulo']."</td>";
$exel.="<td align='right'>".precio_articulo($row['precio_compra']*$row['cantidad_articulo'],$fila['cod_moneda'])."</td>";
$exel.="</tr>";
$flag=1;
}
}
$flag=0;
}
$exel.="</table>";
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=reporte.xls");
header("Pragma: no-cache");
header("Expires: 0");
echo $exel;
}
else
require("error.inc.php");