Php Mysql - Reporteador

En este tutorial aprendermos a crear reportes de datos de nuestra base de datos MySQL en PDF, con la libreria TCPDF, y P

Views 179 Downloads 1 File size 464KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

En este tutorial aprendermos a crear reportes de datos de nuestra base de datos MySQL en PDF, con la libreria TCPDF, y PHP. Conexion: Sera nuestro archivo conexion.php que nos conectará a la base de datos, en este caso la llamaré personas, que contiene la tabla usuarios con los campos: codigo, nombres, apellidos, telefono y ciudad. Modelo:

Es donde se encuentran nuestra clase consulta con su funciones: registrarUsuario y reportePdfUsuarios, la primera funcion, nos registrará los datos que ingresemos en el formulario a nuestra base de datos y el segundo, consultará esos datos, ya con la libreria TCPDF, podremos visualizarlos pero en formato pdf, en nuestro navegador. Control:

En esta carpeta se encuentra el archivo controlador.php, que recibirá los datos que ingresemos en el formulario para registrar un usuario, aqui invocamos al la funcion registrarUsuario(), de la clase consulta del archivo consulta.php, y le pasamos como parametro los datos recibidos del formulario. Vista: Sera el archivo que visualizaremos en nuestro navegador, el cual contiene el formulario de regisytro y desde donde podremos generar el reporte. tcpdf: En esta carpeta estan todos los archivos necesarios para poder generar el reporte, creado por tcpdf.org, es una libreria util y muy completa. data_base: Aqui tenemos el script de nuestra tabla usuarios. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Generar reportes en PDF con PHP y MySql PHP tiene funciones especificar para trabajar con pdf, pero son muy difíciles de usar. Luego de googlear un poco encontré R&OS Pdf class, una clase para PHP que tiene una serie de funciones muy sencillas de usar y muy potentes. La instalación es muy fácil, solo hay que bajar los archivos desde la web de R&OS y descomprimirlos en nuestro web server.

En esta clase vienen 2 archivos: class.ezpdf.php y class.pdf.php los cuales contienen todas las propiedades y métodos necesarios para crear documentos PDF. También vamos a encontrar una carpeta fonts, en la cual vienen varias fuentes para utilizar con esta clase. El primer paso para comenzar a generar un archivo pdf es incluir la clase con esta línea: 1. include ('class.ezpdf.php');

Luego debemos crear una instancia de la clase Cezpdf, con la cual vamos a manejar la creación del archivo pdf. Para esto creamos un archivo llamado mipdf.php donde vamos a escribir el siguiente código php: 2. $pdf =& new Cezpdf('a4'); 3. $pdf->selectFont('../fonts/courier.afm'); 4. $pdf->ezSetCmMargins(1,1,1.5,1.5);

En la línea 2 seleccionamos el tamaño de hoja a utilizar, en la 3 seleccionamos el tipo de fuente que vamos a usar en el archivo pdf y en la línea 4 definimos los márgenes de las páginas generadas en el pdf. OBTENER LOS DATOS DE MYSQL PARA GENERAR UNA TABLA Ahora vamos a obtener los datos a mostrar desde una base de datos. En este ejemplo estoy utilizando MySql para obtener los datos de los productos: 5. $conexion = mysql_connect("localhost", "usuario", "clave"); 6. mysql_select_db("demo", $conexion); 7. $result=mysql_query("SELECT idProducto,descrip,desc_tec FROM Productos",$conexion)or die(mysql_error());

CREANDO EL TITULO, ARRAY DE DATOS Y OPCIONES: Una vez que tenemos los datos de la base de datos tenemos que generar el título, el arreglo de datos y las opciones de la tabla a generar. Para esto vamos a usar 3 matrices: una para los títulos de los campos, otra para los datos y otra para las opciones de la tabla: 8. while($datatmp = mysql_fetch_assoc($result)) { 9. $data[] = $datatmp; 10. } 11. $titles = array( 12. 'idProducto'=>'ID', 13. 'descrip'=>'Descripcion', 14. 'desc_tec'=>'Desc. Tecnica' 15. ); 16. $options = array( 17. 'showHeadings'=>1, 18. 'shadeCol'=>array(0.9,0.9,0.9), 19. 'xOrientation'=>'center', 20. 'width'=>500 21. );

La matriz “data” no requiere mucha explicación, solamente acumulamos los datos uno por uno en esa matriz. En la matriz “titles” asignamos los nombres de cada columna de datos. En cuanto a la matriz “options” solo voy a explicar las opciones más comunes, ya que esta clase es muy completa y tiene varias opciones más: „showHeadings‟=> permite mostrar los nombres de las columnas (encabezados) 1 muestra, 0 oculta. „shadeCol‟=> color de celdas, se ingresa el color en formato RGB. „xOrientation‟=> orientación del texto dentro de las celdas de la tabla. „width‟=> asigna el ancho de la tabla.

IMPRIMIR LOS RESULTADOS: Una vez que tenemos los nombres de las columnas, los datos y la configuración de la tabla debemos generar el pdf con toda la información que necesitamos. Vamos a incluir un titulo para el archivo y datos de fecha y hora para acompañar a la tabla: 22. 23. 24. 25. 26. 27. 28.

$txttitle = "LISTADO DE PRODUCTOS "."\n\n\n"; $pdf->ezText($txttitle, 12); $pdf->ezTable($data,$titles, '', $options); $pdf->ezText("\n\n\n", 10); $pdf->ezText("Fecha: ".date("d/m/Y")."\n", 10); $pdf->ezText("Hora: ".date("H:i:s")."\n\n", 10); $pdf->ezStream();

La función exTable es la que va a generar la tabla de datos. Lleva como parámetros: Datos,Encabezados,Titulo y Opciones (en el ejemplo no le indico un titulo a la tabla). La función exText permite ingresar un texto al archivo pdf con su respectivo tamaño de letra. Por último la función ezStream es la que genera el archivo pdf y lo muestra en el navegador.

//////////////////////////////////////////////////////////////////////////////////////////////

Para realizar esto utilizaremos: el lenguaje de programación PHP, el gestor de base de datos MySQL y la librería FPDF. Lo primero es realizar nuestra base de datos la cual llamaremos clínica, en donde contendrá las siguientes tablas y la siguiente estructura. Tabla pacientes

1 2 3 4 5 6 7 8 9 10

CREATE TABLE IF NOT EXISTS `pacientes` ( `id_paciente` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `clave` varchar(10) NOT NULL, `nombre` varchar(80) NOT NULL, `apellido_paterno` varchar(80) NOT NULL, `apellido_materno` varchar(80) NOT NULL, `sexo` varchar(2) NOT NULL, `domicilio` text NOT NULL, PRIMARY KEY (`id_paciente`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Tabla médicos

1 2 3 4 5 6

CREATE TABLE IF NOT EXISTS `medicos` ( `id_medico` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `cedula` varchar(10) NOT NULL, `nombre_medico` varchar(200) NOT NULL, PRIMARY KEY (`id_medico`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Tabla consultas_medicas

1 2 3 4 5 6 7 8 9

CREATE TABLE IF NOT EXISTS `consultas_medicas` ( `id_consulta` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `fecha_consulta` date NOT NULL, `id_paciente` int(5) NOT NULL, `id_medico` int(5) NOT NULL, `consultorio` varchar(20) NOT NULL, `diagnostico` text NOT NULL, PRIMARY KEY (`id_consulta`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Des pues creamos los siguientes archivos: conexion.php Contiene los parámetros para conectarse a la base de datos y realiza las conexiones.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Servidor = "localhost"; $this->Usuario = "clinic"; $this->Clave = "clinica123"; }

var $Servidor;

var $Usuario;

v

function conectar() { if(!($con=@mysql_connect($this->Servidor,$this->Usuario,$this->Clave))){ echo"Error al conectar a la base de datos"; exit(); } if (!@mysql_select_db($this->BaseDatos,$con)){ echo "Error al seleccionar la base de datos"; exit(); } $this->conect=$con; return true; } } ?>

index.php Realiza el listado de los pacientes en la base de datos y envía la orden de generar el archivo PDF, para ello manda el identificador del paciente por medio de la url y lo recibe el archivo reporte_historial.php por $_GET.

1 2 3 4 5