RSS

PDF (1 de 2): Texto dinámico con llamada a la BD

11 Nov

El problema central consta de incrustar en un texto, datos obtenidos de la base de datos. Con esto se tiene un texto dinámico que va cambiando según se obtengan diferentes entradas que el usuario elija.

Ejemplo de un texto:

El alumno Hugo Martínez con matrícula 2042123 de la carrera de ingeniería en Computación realizará su servicio social en esta dependencia de gobierno en el área de Recursos Humanos, en el periodo comprendido del 1-Sep-2013 al 1-Mar-2014

Las palabras subrayadas serán las obtenidas con una llamada a la base de datos y éstas serán las que cambien de acuerdo a la información de otro alumno que se seleccione.

Empezaré por explicar un ejemplo sencillo estático con un texto que se obtiene de un archivo de texto. La solución en un algoritmo sería el siguiente:

  1. Inicio
  2. Obtener un texto con ‘marcas’
  3. Buscar ‘marca’
  4. Reemplazar la ‘marca’ por la palabra deseada
  5. Regresar al punto 2. hasta que no haya ‘marcas’
  6. Fin

Todo este algoritmo está contenido en la función preg_replace( ) de PHP, que recibe un arreglo de ‘marcas’, un arreglo de palabras que serán sustituidas y el texto donde trabajará. Cabe resaltar, que estas ‘marcas’ son expresiones regulares.

En nuestro caso, la expresión regular que buscará es exacta, es decir, buscará #1 #2 etc. El texto con dichas marcas es el siguiente:

El alumno #1 #2 con matrícula #3 de la carrera de ingeniería en #4 realizará su servicio social en esta dependencia de gobierno en el área de #5, en el periodo comprendido del #6 al #7

Vamos al código 🙂 en tu carpeta de trabajo, agrega un sustituciones.php, index.php , style.css y machote.txt (donde habrá un texto con las ‘marcas’, como el anterior)

sustituciones.php

<?php
//Obtener en un variable el texto de un archivo
$cadena = file_get_contents('machote.txt');

//Arreglo de patrones a buscar
//expresión regular para encontrar un patrón específico, se coloca entre barras //
$patrones = array();
$patrones[0] = '/#1/';
$patrones[1] = '/#2/';
$patrones[2] = '/#3/';
$patrones[3] = '/#4/';
$patrones[4] = '/#5/';
$patrones[5] = '/#6/';
$patrones[6] = '/#7/';

//Arreglo de palabras a cambiar
$sustituciones = array();
$sustituciones[6] = 'HUGO';
$sustituciones[5] = 'MARTINEZ';
$sustituciones[4] = '201313';
$sustituciones[3] = 'COMPUTACION';
$sustituciones[2] = 'RECURSOS HUMANOS';
$sustituciones[1] = '1-Sep-2013';
$sustituciones[0] = '1-Mar-2014';

//función que hace los cambios
$sustitucionesHechas = preg_replace($patrones, $sustituciones, $cadena);
?>

index.php

<?php
include_once ('sustituciones.php');
?>
<!DOCTYPE html>
<html lang="es">
	<head>
		<title> Susticiones en cadenas </title>
		<link type="text/css" href="styles.css" rel="stylesheet"/>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	</head>

	<body>
		<div id="envoltura">
			<div id="contenedor">
				<div id="cuerpo">

					<p>
					<div id="antes">
						<span>Cadena antes de las sustituciones </span>
						 <br>
						 <?php echo utf8_encode($cadena) ?>
					</div>
					</p>

					<p>
					<div id="despues">
						<span>Cadena después de las sustituciones</span>
						  <br>
						  <!--Función que hace las sustituciones en el teto-->
						  <? echo utf8_encode($sustitucionesHechas);?>
					</div>
					</p>
				</div> <!--Fin cuerpo-->

				<!--Mostrar los valores de cada arreglo-->
				<div id="pie"> Marcas sustituidas <br>
					<?php
						foreach($patrones as $valor)
						{
							echo $valor."  ";
						}							?>
					<br>
					<?php
						foreach($sustituciones as $valor)
						{
							echo $valor."  ";
						}							?>
				</div> <!--Fin pie-->
			</div> <!--Fin contenedor-->
		</div> <!--Fin envoltura-->
	</body>
</html>

style.css

body{
	background:#cc9;
	/*background:#181907;*/
	font-family:Helvetica, sans-serif;
	font-size:15px;
	margin: 0;
}

#envoltura{
	position:absolute;
	/*left y top al 50% para que quede centrado en la pantalla*/
	left:50%;
	top:50%;
	margin-left:-380px;
	margin-top: -210px;
	width: 770px;

}

#antes, #despues{
	background:#999;

}

#contenedor{
	background-color:#ececec;
	box-shadow: 3px 3px 10px 5px rgba(0,0,0,.8);
	-webkit-border-radius:5px;
	-moz-border-radius:10px;
	border-radius:10px;
}

#cabecera{
	border-bottom: 5px solid #333;
	padding-top: 5px;
	height:70px;
	line-height:50px;
	text-align:center;
}

#cuerpo{
	background:#bf00ff;
	border:solid #ccc;
	/*aumentando el 2px 'aparece' un borde*/
	border-width: 2px 0;
	padding:15px 35px;
}

span{
	color: #fff;
	font-weight: bold
}

#pie{
	border-top: 5px solid #333;
	color: #000;
	font-size: 16px;
	height: auto;
	line-height: 24px;
	text-align: center;
}

p{
	padding-bottom: 5px;
}

La ejecución será la siguiente:

Uso de preg_replace( )

Uso de preg_replace( )

Pues bien, con esta idea es con la que se trabajará en la siguiente entrada para generar el PDF desde PHP.

Cabe mencionar que en este ejemplo no explicaré a detalle qué hace cada método de la clase FPDF, para ver paso a paso cómo generarlo y el detalle de los métodos visita Crear PDF desde PHP. Acá me enfocaré más a la parte de la llamada a la base de datos y la manipulación con preg_replace( )

Gracias 😉

Para ver la siguiente parte haz click aquí, se abrirá en una pestaña nueva: PDF (2 de 2): Texto dinámico con llamada a la BD

@huguidugui || ringhugos@gmail.com

 
4 comentarios

Publicado por en 11 noviembre, 2013 en FPDF, PHP

 

Etiquetas: , , ,

4 Respuestas a “PDF (1 de 2): Texto dinámico con llamada a la BD

  1. #AC ahora! (@KattyGaray)

    13 noviembre, 2013 at 18:22

    Gracias Hugo por tu tremendo aporte, logré emitir los certificados, ahora estoy usando el modelo para otro formato, gracias por el aporte

     
    • huguidugui

      13 noviembre, 2013 at 19:45

      Oh wow!! me parece estupendamente genial que tu equipo haya logrado el objetivo de los certificados :D! Enhorabuena 🙂
      Próximamente más tutos sobre diseño de tablas en PDF con esta librería tan genial FPDF

      Saludos

       
  2. Jess

    14 noviembre, 2013 at 22:34

    Hola hugo!! Te felicito eres muy bueno para esto de los tutoriales, agradezco la primicia jeje muy buena aplicacion del preg_replace() Aca recomendando tu blog por todos lados!!! Seguimos pendientes de tus aportes!!!

     
    • huguidugui

      15 noviembre, 2013 at 01:23

      Woow! De verdad, muchas gracias 🙂
      Por cierto, haré más cosas con FPDF sobre cuestión de diseño de documentos, tablas y extraer de datos de la BD.

       

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: