Reportes en excel ocn php

Hola y saludos, trato de mostrar mi consulta en pantalla y de allí dar clic en un botón para que me haga un reporte en excel pero que me mande solo esos datos que están en pantalla y a mi me manda todos los de la tabla de mi base de datos, hago esto para para mandar a excel:
<?php
$Reporte= $_REQUEST['Reporte'];
if (isset($Reporte))
{
    header("Content-Type: application/force-download");
    header("Content-Disposition: attachment; filename=miarchivo.xls");
    header("Content-Transfer-Encoding: binary");
    header("Cache-Control: private");    
    echo $tabla;
}
?>
En el echo esto metiendo los datos de mi tabla para que los amnde a excel al momento de presionar el botón de reporte y aquí esta mi consulta:
if(isset($_POST["textfield2"]) && isset($_POST["textfield22"])){
//hace la consulta como está ahora
$consulta = mysql_query("SELECT * FROM perfil_prueba WHERE CARRERA_EGRESO LIKE '%$CARRERA_EGRESO%' and ESPECIALIDAD LIKE '%$ESPECIALIDAD%' and SEMESTRE_EGRESO LIKE '%$SEMESTRE%' and ANO_EGRESO >= $ANO_EGRESO_INI and ANO_EGRESO <= $ANO_EGRESO_FIN and TITULADO LIKE '%$TITULADO%'", $enlace);
}
else{
$consulta = mysql_query("SELECT * FROM perfil_prueba WHERE CARRERA_EGRESO LIKE '%$CARRERA_EGRESO%' and ESPECIALIDAD LIKE '%$ESPECIALIDAD%' and SEMESTRE_EGRESO LIKE '%$SEMESTRE%'  and TITULADO LIKE '%$TITULADO%'",$enlace);
}
while($row = mysql_fetch_array($consulta))
//$row= mysql_fetch_array($consulta) or die( "Error en query: $consulta, el error  es: " . Mysql_error() );
//while($row)
{
$NUMERO_CONTROL= $row["NUMERO_CONTROL"];
$APELLIDO_PATERNO= $row["APELLIDO_PATERNO"];
$APELLIDO_MATERNO= $row["APELLIDO_MATERNO"];
$NOMBRE_S= $row["NOMBRE_S"];
$CARRERA_EGRESO= $row["CARRERA_EGRESO"];
$ESPECIALIDAD= $row["ESPECIALIDAD"];
$SEMESTRE_EGRESO= $row["SEMESTRE_EGRESO"];
$ANO_EGRESO_INI= $row["ANO_EGRESO"];
$ANO_EGRESO_FIN= $row["ANO_EGRESO"];
$TITULADO= $row["TITULADO"];
$tabla.="
<table width='100%' border='7' cellspacing='1' callpadding='1'>
\n";
$tabla.="
<tr>
\n";
$tabla.="
<td width='10%'>$NUMERO_CONTROL</a></td>
\n";
$tabla.="
<td width='15%'>$APELLIDO_PATERNO</a></td>
\n";
$tabla.="
<td width='15%'>$APELLIDO_MATERNO</a></td>
\n";
$tabla.="
<td width='20%'>$NOMBRE_S</a></td>
\n";
$tabla.="
<td width='30%'>$CARRERA_EGRESO</a></td>
\n";
$tabla.="
<td width='30%'>$ESPECIALIDAD</a></td>
\n";
$tabla.="
<td width='20%'>$SEMESTRE_EGRESO</a></td>
\n";
$tabla.="
<td width='8%'>$ANO_EGRESO</a></td>
\n";
$tabla.="
<td width='5%'>$TITULADO</a></td>
\n";
$tabla.="
</tr>
\n";
$tabla.="
</table>
\n";
$tabla.="
<hr size = 2color =ffffff width = 100% align = left>
";
}
?>
<form action="buscasemestre.php" method="post">
<input type=submit name="Reporte" value="Reporte">
</form>
A la variable $tabla le asigno el valor de cada uno de los datos el problema es que si busco no me manda nada no muestra nada en pantalla por lo mismo creo yo que no le pongo el echo y si le doy reporte pues en excel no me manda nada igual que en pantalla pero si debería mandarme datos en la pantalla y no muestra nada, si pongo echo antes de la variable $tabla me manda muchas veces los datos pero si le doy clic en el botón reporte si me manda los datos tal cual esta en pantalla pero esta mal la consulta como le hago para acomodar todo esto espero me puedas ayudar
Saludos

1 Respuesta

Respuesta
1
Por lo que veo estás haciendo un echo de la variable $tabla antes de haberla calculado!
Yo el bloque de isset($Reporte)... justo encima de la declaración del FORM, el archivo quedaría así:
// -----------------------------------
if(isset($_POST["textfield2"]) && isset($_POST["textfield22"])){
//hace la consulta como está ahora
$consulta = mysql_query("SELECT * FROM perfil_prueba WHERE CARRERA_EGRESO LIKE '%$CARRERA_EGRESO%' and ESPECIALIDAD LIKE '%$ESPECIALIDAD%' and SEMESTRE_EGRESO LIKE '%$SEMESTRE%' and ANO_EGRESO >= $ANO_EGRESO_INI and ANO_EGRESO <= $ANO_EGRESO_FIN and TITULADO LIKE '%$TITULADO%'", $enlace);
}
else{
$consulta = mysql_query("SELECT * FROM perfil_prueba WHERE CARRERA_EGRESO LIKE '%$CARRERA_EGRESO%' and ESPECIALIDAD LIKE '%$ESPECIALIDAD%' and SEMESTRE_EGRESO LIKE '%$SEMESTRE%'  and TITULADO LIKE '%$TITULADO%'",$enlace);
}
while($row = mysql_fetch_array($consulta))
//$row= mysql_fetch_array($consulta) or die( "Error en query: $consulta, el error  es: " . mysql_error() );
//while($row)
{
$NUMERO_CONTROL= $row["NUMERO_CONTROL"];
$APELLIDO_PATERNO= $row["APELLIDO_PATERNO"];
$APELLIDO_MATERNO= $row["APELLIDO_MATERNO"];
$NOMBRE_S= $row["NOMBRE_S"];
$CARRERA_EGRESO= $row["CARRERA_EGRESO"];
$ESPECIALIDAD= $row["ESPECIALIDAD"];
$SEMESTRE_EGRESO= $row["SEMESTRE_EGRESO"];
$ANO_EGRESO_INI= $row["ANO_EGRESO"];
$ANO_EGRESO_FIN= $row["ANO_EGRESO"];
$TITULADO= $row["TITULADO"];
$tabla.="
<table width='100%' border='7' cellspacing='1' callpadding='1'>
\n";
$tabla.="
<tr>
\n";
$tabla.="
<td width='10%'>$NUMERO_CONTROL</a></td>
\n";
$tabla.="
<td width='15%'>$APELLIDO_PATERNO</a></td>
\n";
$tabla.="
<td width='15%'>$APELLIDO_MATERNO</a></td>
\n";
$tabla.="
<td width='20%'>$NOMBRE_S</a></td>
\n";
$tabla.="
<td width='30%'>$CARRERA_EGRESO</a></td>
\n";
$tabla.="
<td width='30%'>$ESPECIALIDAD</a></td>
\n";
$tabla.="
<td width='20%'>$SEMESTRE_EGRESO</a></td>
\n";
$tabla.="
<td width='8%'>$ANO_EGRESO</a></td>
\n";
$tabla.="
<td width='5%'>$TITULADO</a></td>
\n";
$tabla.="
</tr>
\n";
$tabla.="
</table>
\n";
$tabla.="
<hr size = 2color =ffffff width = 100% align = left>
";
}
?>
<?php
$Reporte= $_REQUEST['Reporte'];
if (isset($Reporte))
{
    header("Content-Type: application/force-download");
    header("Content-Disposition: attachment; filename=miarchivo.xls");
    header("Content-Transfer-Encoding: binary");
    header("Cache-Control: private");    
    echo $tabla;
}
?>
<form action="buscasemestre.php" method="post">
<input type=submit name="Reporte" value="Reporte">
</form>
// ------------- // ----------
Además al form buscasemestre.php le tienes que añadir INPUTs de tipo HIDDEN con todos los campos que se pasan a la función buscasemestre.php para hacer la consulta, como por ejemplo:
Textfield2
Textfield22
Y todos los que uses desde $_POST

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas