Editar formularios PDF con PHP (I)

A veces nos encontramos con con documentos PDF que contienen campos de formulario que deben ser cumplimentados por un usuario. Esto, por ejemplo, es muy habitual en documentos de las Administraciones públicas, aunque muchas corporaciones privadas también los emplean. En ocasiones debemos incluir estos formularios en nuestro sitio con algunos de esos campos precumplimentados, con valores estándar, para facilitarles la tarea a los usuarios. Aunque pueda parecer que un documento PDF es un formato cerrado, que es como te lo dan, y es poco lo que se puede hacer con él, con los recursos adecuados es fácil “trabajarlo” del modo que necesitemos.

Editar formularios PDF con PHP (II)

En el artículo anterior preparamos el escenario para poder editar, por programación, el contenido de campos de formulario en archivos PDF. En este artículo vamos a ver, ahora que ya tenemos preparado lo básico, conceptos fundamentales de la edición de campos en formularios PDF. Explicaremos cómo funciona la utilidad PDFTK para esta finalidad. En el próximo artículo veremos el funcionamiento del ejemplo práctico que vamos a usar, que podrás descargar para experimentar, y veremos como está estructurado, y como lleva a cabo el proceso deseado, hasta obtener el resultado buscado.

Editar formularios PDF con PHP (y III)

Ahora sí. Ya tenemos el conocimiento básico acerca de qué queremos hacer, qué herramientas vamos a usar, y cómo está constituido, internamente, un formulario PDF con campos editables. Ha llegado el momento de poner los dedos sobre el teclado, y empezar a programar. En este artículo vamos a ver como actúa todo el proceso PHP necesario.

Emplear use() en funciones anónimas

En algunos casos vemos, sobre todo en códigos PHP recientes, que la declaración “anónima” de una función se acompaña del empleo de use() para pasarle variables a la función. Un ejemplo sería el siguiente: $miFuncion = function() use ($nombre) {     echo “Hola, “.$nombre; } Esta sintaxis puede resultar un poco confuso si no estás familiarizado con él. Y, si te estás iniciando en el mundillo de los frameworks PHP lo vas a ver muy a menudo. Vamos a ver que es lo que hace, y cómo hay que usarla. En realidad, esto sería equivalente a lo siguiente: $miFuncion = function($nombre) {     echo “Hola, “.$nombre; } O, también a lo que aparece a continuación: $miFuncion = function() {     global $nombre;     echo “Hola, “.$nombre; } Lo único con lo que hay que tener cuidado es que, cuando emplees la primera sintaxis (la que recurre a use()) la variable o variables que emplees deberán estar declaradas, y asignadas, ANTES DE DECLARAR LA FUNCIÓN. Con las otras dos sintaxis (las de siempre, para entendernos), basta con que las variables empleadas estén declaradas antes de invocar la función. Por lo tanto, podemos decir que la sintaxis con use() …

Seguir leyendo

Poniendo MySQL en UTF-8

La codificación de contenidos cuando se desarrolla una aplicación que requiere el uso de bases de datos puede llegar a convertirse en una de las peores pesadillas de un desarrollador, sobre todo si es algo en lo que no has pensado desde las primeras fases iniciales previas al inicio del desarrollo. Motores de bases de datos tan populares y difundidos como MySQL pueden dar muchísimos problemas a la hora de grabar datos, de recuperarlos y de renderizarlos en vistas, si no tenemos en cuenta la codificación. La codificación de datos más adecuada en la mayor parte de los casos es UTF-8, ya que implementa todos los caracteres que se puedan usar en cualquier idioma, así como gran cantidad de guarismos que, sin pertenecer a un idioma específico, son de uso relativamente común, como signos matemáticos u otros. Para implementar otros caracteres extremadamente especiales hay otras codificaciones adecuadas, pero eso es tan poco habitual que ni lo vamos a comentar. El problema es que, cuando se crea una base de datos, tabla o campo, el motor de MySQL (dependiendo de la versión, y del entorno de desarrollo) tiende a emplear alguna codificación de tipo latin-n-xxxxxxxx o similar. De momento, parece irrelevante, …

Seguir leyendo

Uniendo tablas MySQL (I). Introducción.

Iniciamos aquí una pequeña serie de artículos dedicados a las consultas MySQL que afectan a dos o más tablas. Cuando, en una consulta, necesitamos recurrir a dos tablas, significa que ambas están relacionadas entre sí, en una relación de 1-m o de m-1. Cuando se recurre a consultas que implican más de dos tablas, puede tratarse de que alguna de ellas esté relacionada con las demás en relaciones del tipo mencionado, o bien que dos tablas estén relacionadas entre sí, en una relación de tipo m-n, a través de una tercera tabla intermedia. Además, podemos encontrarnos con la necesidad de construir consultas que impliquen relaciones “especiales”, bajo determinadas circunstancias, como veremos en esta serie. Procuraremos analizar las sintaxis adecuadas en los casos que se nos presenten, de modo que, cuando tengas necesidad de consultas de este tipo, puedas hacerlas del modo más óptimo posible. En estos artículos presentaremos la sintaxis MySQL. Esto significa que podría haber algunas diferencias si tu motor de base de datos SQL es otro (SQL Server, SQLite, etc). Optar por MySQL ha sido una decisión lógica, teniendo en cuenta que es el motor de bases de datos relacionales más empleado en Internet, con mucha diferencia y, …

Seguir leyendo

Uniendo tablas MySQL (II). Uniones externas.

En el artículo anterior aprendimos a relacionar entre sí tablas a través de un campo que implicaba una relación lógica. De este modo, aquellos registros de la primera tabla que no tenían correspondencia con un registro de la segunda eran, automáticamente, omitidos. En la mayor parte de los casos esto será lo que necesitemos. Sin embargo, no siempre es así. Hay ocasiones en que necesitamos obtener TODOS los registros de una tabla que cumplan determinada condición, tengan o no correspondencia con algún registro de otra tabla. De esto nos vamos a ocupar en este artículo sobre uniones “externas” (OUTER JOIN).

Uniendo tablas MySQL (III). Autocombinaciones.

Siguiendo con el tema de uniones de tablas, en este artículo vamos a ver un tema que, en el día a día del desarrollo de aplicaciones, se da con más frecuencia de la que parece: las autocombinaciones. En los artículos anteriores hemos conocido distintas formas de combinar datos de dos tablas, para obtener el resultado deseado. Aquí vamos a aprender como combinar datos de una tabla con datos procedentes de la misma tabla, que mantienen una relación estructural. Cómo siempre, lo veremos desarrollando un ejemplo, que podremos extrapolar a cualquier otra necesidad que nos surja en este terreno.

Uniendo tablas MySQL (y IV). Uniones con más de dos tablas.

Para finalizar con esta serie de artículos vamos a ver una situación muy habitual, que se da en muchísimos desarrollos. Se trata de relacionar datos de dos tablas, a través de una tercera tabla intermedia, que contiene las referencias a los elementos de cada una de las tablas principales, en la típica relación de “muchos a muchos”, también llamada de m-n. Es el caso en que cada elemento de la tabla A puede estar relacionado con uno o más elementos de la tabla B, y recíprocamente. De hecho, este es el caso más habitual cuando dos tablas se relacionan entre sí. También puede ser, conceptualmente, el más complejo de entender cuando uno se inicia en SQL. Este artículo nos enseñará cómo efectuar estas consultas.

Vistas en MySQL

En este artículo vamos a conocer qué son las vistas en MySQL y como pueden ayudarnos a hacer que nuestra aplicación web con base de datos funcione más rápido, mejorando la experiencia del usuario. Por decirlo brevemente, las vistas constituyen una herramienta muy apta para acelerar las consultas de selección (SELECT), es decir, aquellas que recuperan datos de una o más tablas. Están disponibles, con ligeras variaciones de sintaxis, en todas las implementaciones de SQL, aunque nosotros, por razones obvias, vamos a analizar su funcionamiento en MySQL.