PHP
Desde hace meses atrás quería compartir con ustedes un código PHP de paginación de consultas MySQL, como renovando este viejo script. Pero acabo de leer un reciente artículo publicado en sitepoint y me ha fascinado, así que he decidido traducirlo, a mi manera por supuesto. Espero les agrade, ya que publico estos tutoriales después de tiempo. El artículo se titula en inglés Perfect PHP Pagination.

La paginación es un tema que ha sido tratado hasta el cansancio. Docenas de artículos y documentos se pueden encontrar sobre ello; pero (y ustedes saben que hay un “pero”) no estamos completamente satisfechos con las soluciones que tenemos... Hasta ahora. En este artículo les mostraremos nuestra propuesta, una mejor alternativa.
Algunas clases de paginación requieren parámetros tales como acceso a una base de datos y una o dos cadenas SQL, que luego son pasadas al constructor. Las clases que utilizan este enfoque carecen de utilidad y flexibilidad, ¿Y si queremos cambiar el formato de los números en la parte superior o inferior, por ejemplo? ¿Habrá que modificar la función de salida, o la subclase de la clase principal, sólo para anular un método? Estas potenciales soluciones son muy restrictivas y no propician la reutilización del código.
Este tutorial es un intento para crear una clase más abstracta para el manejo de la paginación de resultados. Eliminando su dependencia a las conexiones a la BD y los strings SQL. El enfoque que trataremos le proveerá una mayor flexibilidad, lo que permitirá luego a cada desarrollador, darle el diseño propio a la paginación, bastando solamente la utilización de la clase a través del patrón de diseño orientado a objetos, conocido como Estrategia Patrón de diseño...
Realmente me ha gustado el listado que han publicado en el foro de webdigity, en un hilo han hecho un top 10 de scripts PHP funcionales y con cierta historia, que todos deberíamos de conocer.
- PHPMailer, para enviar emails. Una de clases más completas y fáciles de configurar para crear potentes aplicaciones relacionadas con los emails. Desde simples formularios de contacto, hasta listas de correo y más.
- Php User Class, para el manejo de usuarios. Es un script que nos ofrece todas las herramientas para crear sistemas de login, sesiones, registros, manejo en base de datos, etc.
- Magpie RSS, debe ser actualmente una de las mejores clases para el parseo de Feeds RSS y es la base de varios agregadores y buscadores de blogs. Por ejemplo, aquí mostramos como utilizarlo para crear una bonita galería de fotos con flickr.
- Maxmind, es un script muy sencillo que te permite conocer de donde provienen tus visitantes.
- htmlSQL class. Si una web no ofrece feeds RSS y necesitamos parsear su contenido, esta clase puede ser la solución. Ella captura el contenido html de una página y la inserta en la base de datos.
- PHP Trackback. El envío y recibo de trackbacs es actualmente algo que se cree implicito en una web. Con la clase PHP Trackback, crear un sistema que realice estas funciones es muy sencillo.
- Smarty, el más conocido sistema de plantillas PHP que existe.
- StringParser_BBcode class, es una clase, que como su propio nombre lo dice, parsea un texto BBcode, reemplazando tags html. Utilizado en formularios externos de foros y blogs, para mayor seguridad.
- Paypal IPN integration class, una clase php que, a través de de la API de Paypal, nos permite realizar pagos desde nuestro sitio web.
- tinyMCE, un editor WYSIWYG muy bueno y, sobretodo, rápido. Actualmente, viene por defecto en softwares como Wordpress u otros sistemas. (Conoce más)
Hace unos días vimos cómo crear un buscador interno con Google Custom Search Engine, herramienta recomendada por dos motivos:
- Conocer los intereses de nuestros visitantes, y
- Ahorrar recursos del servidor.
Pero, si lo que uno busca es conocer a fondo todas las búsquedas que se realizan en nuestro sitio web, la mejor opción es almacenar los datos en nuestra propia BD y luego reaizar análisis a nuestro gusto.

Los datos que proporciona Google Coop son demasiado estrechos. Coop sólo muestran un listado con las principales búsquedas, más no toda la información al detalle. Sin embargo, si nosotros decidimos almacenar los datos de las búsquedas, estaremos utilizaremos muchos más recursos, pero a su vez, nos beneficiaremos con mejores análisis.
Ahora vamos a crear nuestro ranking de búsquedas con PHP y MySQL, similar a lo que es Google Zeitgeist, para nuestro sitio (script incluido)...
Hace unos días se ha lanzado un servicio web muy interesante para evitar hacer hotlinking (mostrar imágenes alojadas en web ajenas). La forma de aplicarlo es muy sencilla, y aunque he visto que el sistema tiene algunos fallos, la herramienta es nueva, veo que ya lo han corregido.
ImgRed es un servicio web que te permite hacer hotlinking sin robarle el ancho de banda a otro sitio web (Redirecciona las imágenes). ¿Cómo utilizar ImgRed? Muy simple. Basta con añadir la url de imgred antes de la url de la imagen a mostrar. Por ejemplo:
<img src="http://imgred.com/http://www.mozilla.com/img/firefox/main-feature2.jpg" />
Además, el sistema también nos permite mostrar thumbnails, el path para estos sería:
<img src="http://imgred.com/tn/http://www.mozilla.com/img/firefox/main-feature2.jpg" />
Sin embargo, aún no lo recomiendo, pues he visto que muchas veces no muestra la imagen correctamente. Espero que pronto lo solucionen.
Ahora bien, ya hemos visto que a la hora de publicar podemos evitar el hotlink simplemente añadiendo http://imgred.com/ a nuestros artículos. Sin embargo, quien nos asegura que el servicio funcione correctamente por mucho tiempo.
Se imaginan que después de 6 meses publicando artículos, el sitio caiga ó lo vuelvan Premium. ¿Qué haríamos? ¿Cambiar las urls? Una buena alternativa, es utilizar una pequeña función PHP que he creado para utilizar ImgRed automáticamente...
Hace tiempo usaba una aplicación, como la que vamos a comentar ahora, para conocer cual era nuestra posición en google para determinada palabra clave.
Sin embargo, en esos momentos realizaba la consulta al buscador utilizando la api de google, la cual, si mal no recuerdo, limitaba los pedidos a un máximo de 100 por api key.
Pues bien, ahora haciendo uso de un script php distribuido en Seomoz podemos conocer si nuestra web esta dentro de los primeros 100 resultados de google para determinada búsqueda.
Lo recomendable es utilizar este código en el localhost, como herramienta privada. Pero si desean utilizarlo abierto en Internet como servicio web, hay que tener reparo con el script por razones de seguridad, ya que le he dado una mirada y veo que utiliza fopen(), y aunque es para google, hay que saber usarlo.
Podemos ver un ejemplo online ó descargarlo desde este enlace.
Sea por el incremento de visitantes ó por el uso de scripts complejos, la ejecución de constantes consultas a la Base de Datos MySQL suele volver lento un servidor, con el consiguiente retraso a la hora de mostrar una página web.
Una de las mejores alternativas para solucionar este problema, es implementar un sistema de Cache con PHP. Con éste, en vez de realizar todas las consultas a la base datos para servir una página, simplemente se requerirá un archivo de texto. El resultado, es un enorme ahorro de recursos y una más rápida respuesta del servidor.
Este es el primero de una serie de artículos donde comentaremos como implementar una Cache a nuestros scripts PHP. En este mini tutorial veremos la creación de una sencillísima clase PHP, pero lo suficientemente flexible cómo para poder adaptarla a nuestros proyectos y personalizarla conforme a nuestras necesidades...




