Imprimiendo resultados de una web

En una aplicación que estoy haciendo, el cliente me ha solicitado que dentro de una serie de listados por cursos, donde hay alumnos, notas, documentos… (todo presentado en tablas), pueda tener la opción no solo de ver los resultados, también quiere tener la opción de imprimirlos.

Esto me hizo comenzar a investigar un poco, ya que el cliente es un poco voluble, cambiando de opiniones cada dos días, decidí buscar una solución que fuera lo más amplia posible, y pese a encontrar librerías de php para convertir a pdf… decidí que la mejor opción sería poner un botón, nada mucho más allá de un enlace, que abriera una pestaña nueva en el navegador con la tabla en formato imprimible, es decir, hacerla sin colores ni estilos muy elaborados, simplemente la lista, y al final un script de javascript, tan simple que insulta…


<script type="text/javascript">
window.print();
</script>

Esto no abrirá la ventana para impresión del navegador y nos permitirá escoger la impresora (si lo quieren en pdf solo tendrán que escoger la que tengan instalada para tal fin como adobe, pdfcreator…)

imprimir

Aquí podemos ver el ejemplo con el que he trabajado para hacer las pruebas antes de implementarlo en el programa, donde se ve como se realiza la consulta a la base de datos, se crea la tabla y se imprime el resultado…


<?php
require("conexion.php");

$query = "SELECT * FROM preguntas ORDER BY id DESC";
$result = mysql_query($query) or die ('no se han encontrado encuestas ' . mysql_error());
?>
<table border='1' width="1000">
<thead >
<td>Pregunta</td><td>Fecha fin</td><td>respuestas</td><td>Acciones</td>
</thead>
<tbody>
<?php
while($row = mysql_fetch_array($result)){
$query2 = "SELECT * FROM respuestas WHERE pregunta='$row[0]'";
$result2 = mysql_query($query2);
$registros = mysql_num_rows($result2);
echo "<tr><td>$row[1]</td><td>$row[2]</td><td>$registros</td><td><a href='encuestaeditar.php'>Editar</a> <a href='encuestaestadistica.php?id=$row[0]'>estadisticas</a></td></tr>";
}
?>
</tbody>
</table>

<script type="text/javascript">
window.print();
</script>