Generalmente cuando paginamos resultados bajo PHP / MySQL, primero generamos la consulta a la BBDD con el Where y unos “LIMIT” para mostrar solo el “rango” de registros que nos interesa para la página solicitada.
Justo después de esta tipica consulta viene el COUNT (*) pero sin apliar LIMITS ni nada para saber cuantos registros tenemos en total en la BBDD y “pintar” el sistema de paginación, es decir, la navegación de las páginas.
Pues bien, MySQL tiene un par de funciones que básicamente hacen una especie de COUNT(*) pero mucho más veloz y que vale la pena aplicar en esta situación:
Por ejemplo, vamos a obtener de la tabla noticias, los 5 registros de la página 2 con el sistema sin count (*):
$sql = "select SQL_CALC_FOUND_ROW id, titulo, contenido from noticias where publicado = 1 LIMIT 5,5"; $sqlCount = "select FOUND_ROWS() as total ";
El sistema no te libra de ejecutar 2 consultas SQL contra la BBDD pero sí que este par de funciones tienen un menor impacto sobre el sistema haciendo mucho más rápida la consulta de obtener el número de registros.
NOTA: En nuestro php.ini el valor mysql.trace_mode debe estar en Off.
Gracias al sistema de componentes rehutilizables en PHP llamado PEAR (sitio web oficial).
El proyecto PEAR tiene como metas:
Podemos añadir a los desarrollos nuevas funcionalidades sin necesidad de reinventar la rueda. Generalmente los componentes de PEAR son conjuntos de librerias y clases que hacen que el trabajo sea muy fácil. En este caso nos referimos a la generación de archivos Excel (.xls) con PHP.
El componente Spreadsheet Excel Writer de PEAR permite aplicar estilos a las celdas, aplicar formulas dentro de las hojas, generar hojas dentro del archivo entre otras muchas más cosas.
Para comprender su funcionamiento, veamos un ejemplo:
<?php
require_once('Writer.php');
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
// sending HTTP headers
$workbook->send("archivo.xls");
// Creating a worksheet
$worksheet =& $workbook->addWorksheet('');
//Styles
$titulo = &$workbook->addFormat();
$titulo->setBold();
$titulo->setSize(25);
$worksheet->setColumn(0,0,75);
$worksheet->setRow(14, 30);
$worksheet->writeString(14,1,'titulo',$titulo);
$worksheet->write(17,0,'17/12/2008');
$worksheet->writeString(20,0,'texto');
$array = array('0' => 'elem1', '1' => 'elem2');
$worksheet->writeCol(17,5,$array,$normal);
$workbook->close();
?>
Como véis es bastante simple generar un Excel, si queremos poner bordes y colores, se complica algo más, pero al tratar la hoja como una gran matriz, sólo es laborioso. En la extensa documentación del componente encontráreis mucha más información sobre los métodos y propiedades, que no son pocas.
eyeOS es una plataforma libre y de código abierto pensada para disponer de aplicaciones Web. Es un nuevo concepto de sistema operativo, en este caso, completamente, on-line.
La idea es disponer de un sistema centralizado, un servidor que hace funcionar eyeOS, y los clientes se conectan y pueden trabajar con las aplicaciones disponibles en la plataforma eyeOS. Es fácil imaginar las posibilidades que puede tener implementar un sistema centralizado como este en una empresa.
Un servidor con eyeOS y los usuarios accediendo a él, trabajando desde los navegadores Web de sus equipos. Todo queda centralizado y la sincronización de documentos y el trabajo en equipo se vuelve todo más fácil.
eyeOS esta escrito en PHP, así que solo basta disponer de un servidor Web y ya tenemos nuestro eyeOS funcionando.
eyeOS incorpora muchas aplicaciones en su paquete básico, soporte para hojas de cálculo, procesador de textos, un navegador Web, gestor de FTP, calculadora, correo electrónico, visor de imágenes y una infinidad más de aplicaciones y servicios nada envidiable a otro sistema operativo “real”. Existe mucha documentación en el sitio web de eyeOS para desarrollar sobre sus librerías y adaptar programas o escribir nuevas funcionalidades.
Quizás eyeOS esté iluminando el camino al futuro sobre los sistemas centralizados y en entornos productivos, instituciones y centros de enseñanza. Disponer de un conjunto de herramientas especializadas y que funcione con pocos recursos, a parte de un fácil acceso desde cualquier dispositivo que disponga de un navegador Web.
El 27 de Septiembre de 2008 asistiremos a la Conferencia Internacional de PHP que tendrá lugar en Barcelona.
Ponentes: Marcus Bointon, Jordi Roura, Arno Schneider, Jens Bierkandt, Zoë Slattery, Pau Garcia-Milà, Scott MacVicar, Helgi Þormar and Derick Rethans
Charlas:
Lugar: Citilab Cornellà
En muchas ocasiones resulta necesario que un usuario pueda incorporar un PDF a una aplicación desarrollada en Flash, a través de un CMS o Gestor de contenidos. Esta herramienta debería poder exportar el archivo fuente PDF a un SWF automáticamente para alimentar la aplicación multimedia programada en Flash con la que se visualiza el contenido resultante.
Es posible convertir un PDF a un SWF directamente a través de la función PDF2SWF que viene integrada en la librería SWFTOOLS. El PDF2SWF genera automáticamente un SWF. Este SWF generado es de la versión del Flash Player 8 AVM1.
La librería SWFTOOLS se instala en servidor, para luego invocar la función PDF2SWF a través de una secuencia “exec” en el script de PHP. La siguiente es la línea de comandos base para generar un PDF:
pdf2swf [-opciones] archivo.pdf -o archivo.swf
Sin embargo, resulta imposible de integrar el archivo.swf en Flex directamente. Dado que Flex solo tiene un soporte bastante limitado para AVM1, ya que trabaja completamente con AVM2. Así que para poder exportar un PDF a un SWF en Flex, sería necesario contar con el SWF (archivo.swf) resultante del paso anterior y proseguir con los siguientes pasos:
La experiencia de las exportaciones a SWF pueden convertirse en algo traumático, cuando hablamos de PDF de muchas páginas o cuando resultan de exportaciones que salen del Ilsutrator o Quark Express. Por eso en muchas ocasiones es preferible, en lugar de generar un SWF, exportar el PDF a un JPG.