Mysql adodb pdf_php

39
Programación en PHP MySQL, ADODB, PDF Ing. Felipe de Jesús Niño de la Cruz Noviembre del 2011

Transcript of Mysql adodb pdf_php

Page 1: Mysql adodb pdf_php

Programación en PHP

MySQL, ADODB, PDF Ing. Felipe de Jesús Niño de la Cruz

Noviembre del 2011

Page 2: Mysql adodb pdf_php

Conceptos Básicos e

Introducción

PHP está especialmente diseñado para la

creación de sitios webs dinámicos.

Para crear estos sitios normalmente se utiliza

algún tipo de base de datos desde donde

obtenemos la información que queremos

mostrar, ya sean noticias, preguntas y

respuestas de un foro u otro tipo de

información dinámica.

Page 3: Mysql adodb pdf_php

Conceptos Básicos e

Introducción

Desafortunadamente el acceso en PHP cada

base de datos es muy diferente.

Para conectarnos a mysql, debemos usar

mysql_connect(); cuando decida cambiar a

Oracle o Microsoft SQL Server, debe usar

ocilogon() o mssql_connect() respectivamente.

Lo peor es que también los parámetros de

cada función son diferentes.

Page 4: Mysql adodb pdf_php

Conceptos Básicos e

Introducción

Una librería de abstracción de los datos

como ADODB es lo que se necesita si

desea asegurar en gran medida la

portabilidad de su aplicación.

Provee una serie de funciones comunes

para comunicarse con las distintas bases

de datos.

Page 5: Mysql adodb pdf_php

Conceptos Básicos e

Introducción

ADODB viene de “Active Data Objects DataBase” ADODB actualmente soporta MySQL, PostgreSQL, Oracle, Interbase, Microsoft SQL Server, Access, FoxPro, Sybase, ODBC y ADO.

Puede obtener ADODB en http://adodb.sourceforge.net/#download.

Page 6: Mysql adodb pdf_php

Conectando a la Base de

Datos

Ejemplo MySQL

La base de datos usada con más frecuencia en PHP es MySQL, entonces es posible que le resulte familiar el siguiente código.

Conectamos al server MySQL en localhost, a la base de datos – HR -, y ejecutamos una sentencia SQL.

El resultado es impreso en pantalla, una línea por cada fila obtenida.

Page 7: Mysql adodb pdf_php

Conectando a la Base de

Datos

Con las funciones nativas de PHP para MySQL<p> <?php //Nos conectamos al Servidor de Bases de Datos MySQL $db = mysql_connect("localhost", “root", “”); //Seleccionamos la Base de Datos HR mysql_select_db("hr",$db); //Ejecutamos la Consulta SQL $result = mysql_query("SELECT * FROM jobs",$db); //Verificamos si se pudo realizar la consulta if ($result === false) die("failed"); //Obtenemos los datos y los mostramos en pantalla while ($fields = mysql_fetch_row($result)) { for ($i=0, $max=sizeof($fields); $i < $max; $i++) { print $fields[$i].' '; } print "<br>"; } ?>

Page 8: Mysql adodb pdf_php

Conectando a la Base de

Datos

Page 9: Mysql adodb pdf_php

Conectando a la Base de

Datos

//paso a paso con Adodb

//ruta relativa al adodb

include("../../../adodb/adodb.inc.php");

$db = NewADOConnection('mysql');

$db->Connect("localhost", "root", "", "hr");

Page 10: Mysql adodb pdf_php

Conectando a la Base de

Datos

La conexión puede parecer algo más

complicada que en MySQL pero se

explica en que ADODB es totalmente

orientado a objetos.

Page 11: Mysql adodb pdf_php

Conectando a la Base de

Datos

Para ahorrar memoria solo se carga las funciones específicas de la base de datos que vamos a utilizar.

Cada driver tiene un archivo distinto que se carga mediante un include automáticamente.

Una vez cargado el driver que vamos a utilizar mediante la función NewADOConnection() nos conectamos a la base de datos usando $db->Connect().

Page 12: Mysql adodb pdf_php

Ejecutando SQL

$result = $db->Execute("SELECT *

FROM jobs");

if ($result === false)

die("failed");

Para enviar una sentencia sql al motor de base de

datos se utiliza la función Execute().

Esta función devuelve un objeto “recordset” si la

ejecución fue correcta o un “false” si hubo algún error

Page 13: Mysql adodb pdf_php

Ejecutando SQL

El objeto connection ($db) es responsable de la conexión a la base de datos, formateo de las SQL y las consultas al servidor.

El objeto recordset ($result) es responsable de la obtención de los resultados y el formateo de los resultados.

Page 14: Mysql adodb pdf_php

Obteniendo Datos

while (!$result->EOF)

{

for ($i=0, $max=$result->FieldCount(); $i < $max; $i++)

print $result->fields[$i].' '; $result->MoveNext();

print "<br>";

}

Page 15: Mysql adodb pdf_php

Obteniendo Datos

El proceso para obtener datos es como el

proceso para leer desde un archivo.

Para cada línea observamos si hemos

llegado al final del archivo (EOF).

Mientras no lleguemos al final del fichero

seguimos leyendo y moviéndonos a la

siguiente línea (MoveNext).

Page 16: Mysql adodb pdf_php

Obteniendo Datos

El array $result->fields[] es generado por

ADODB ante cada petición de

MoveNext().

Podemos obtener array asociativos o

indexados por el número del campo.

Page 17: Mysql adodb pdf_php

Otras Funciones

Especiales

$recordset->RecordCount() retorna el total de filas obtenidas en el recordset.

Algunas bases de datos no soportan esto y se devuelven un -1.

$recordset->GetArray() coloca el resultado del recordset en un array.

Para mas documentacion:

http://adodb.sourceforge.net/#docs

Page 18: Mysql adodb pdf_php

Adodb Ejemplo

<?php

// Ruta relativa al include del adodb

include("../../../adodb/adodb.inc.php");

// Se crea un objeto conexiòn para MySQL

$db = NewADOConnection('mysql');

// Conexión al Servidor MySQL

$db->Connect("localhost", "root", "", "hr");

// Se ejecuta la consulta en la Base de Datos

$result = $db->Execute("SELECT * FROM jobs");

// Se verifica que se ejecuto bien la consulta

if ($result === false)

die("failed");

// Se visualizan los resultados obtenidos de la consulta

while (!$result->EOF)

{

for ($i=0, $max=$result->FieldCount(); $i < $max; $i++)

print $result->fields[$i].' '; $result->MoveNext();

print "<br>";

}

?>

Page 19: Mysql adodb pdf_php

Adodb Ejemplo

Page 20: Mysql adodb pdf_php

¿Qué es FPDF?

FPDF es una clase que permite generar documentos en PDF solo con PHP , es decir sin utilizar la librería PDFlib.

La F de FPDF significa free: es decir, se puede utilizar y modificar sin ningún problema de costo.

FPDF tiene otras ventajas: funciones de alto nivel, como las que siguen:

Page 21: Mysql adodb pdf_php

¿Qué es FPDF?

Elección de unidad de medida, formato de página y márgenes

Manejo de encabezados y pies de página

Salto de página automático Salto de línea automático y justificación

de texto Soporte de imágenes (JPEG, PNG y GIF)

Page 22: Mysql adodb pdf_php

¿Qué es FPDF?

Colores Links Soporte para codificación, TrueType,

Type1 Compresión de página PHP4 y PHP5. FPDF no requiere extensión (excepto zlib

para activar la compresión y GD para soporte GIF) y trabaja con PHP4 y PHP5.

Page 23: Mysql adodb pdf_php

Ejemplo Básico

<?php

// Ruta relativa a la clase FPDF

require(„../../fpdf/fpdf.php');

// Creación de una documento PDF

$pdf=new FPDF();

// Se agrega una página al documento PDF

$pdf->AddPage();

// Configuración del tipo de letra a utilizar

$pdf->SetFont('Arial','B',16);

// Se agrega una celda al documento PDF

$pdf->Cell(40,10,'Hello World!');

// Se genera el documento PDF

$pdf->Output();

?>

Page 24: Mysql adodb pdf_php

Ejemplo Básico

Page 25: Mysql adodb pdf_php

Generación de

Documentos Excel

Es posible generar archivos en formato

Excel utilizando PHP.

Esto es muy interesante pues nos puede

servir para generar reportes de nuestra

base de datos a un archivo .xls el cual es

un formato ampliamente utilizado.

Page 26: Mysql adodb pdf_php

Generación de

Documentos Excel

Que necesitamos?

Lo primero que necesitamos es una clase llamada MS-Excel Stream Handler la cual contiene las funciones necesarias para crear archivos Excel.

Ahora bien, esta librería permite la creación de los archivos pero no de manera intuitiva, basados en la documentación de esta clase me he tomado la libertad de crear un archivo llamado excel-ext.php que contiene una función que nos facilitará este proceso.

Page 27: Mysql adodb pdf_php

Generación de

Documentos Excel

Para ello utilizaremos la función

createExcel que recibe dos parámetros,

el primero el nombre del archivo que

deseas crear y el segundo un array

asociativo con los datos a mostrar en el

archivo generado.

PHP: createExcel("excelname.xls",

array);

Page 28: Mysql adodb pdf_php

Generación de

Documentos Excel

Creando nuestro primer Ejemplo

Entonces el primer paso es incluir el

archivo excel.php y excel-ext.php en

nuestro script php de la siguiente forma:

PHP:

require_once("excel.php");

require_once("excel-ext.php");

Page 29: Mysql adodb pdf_php

Generación de

Documentos Excel

Lo siguiente es crear un array asociativo que contiene

los datos a mostrar, para nuestro ejemplo creamos un

array que contiene una lista de nombre y su IQ.

PHP:

$assoc = array(

array("Nombre"=>"Mattias", "IQ"=>250),

array("Nombre"=>"Tony", "IQ"=>100),

array("Nombre"=>"Peter", "IQ"=>100),

array("Nombre"=>"Edvard", "IQ"=>100)

);

Page 30: Mysql adodb pdf_php

Generación de

Documentos Excel

Luego el tercer y ultimo paso es crear el archivo Excel, para ello utilizamos la función createExcel, uniendo todo tendríamos:

PHP:

require_once("excel.php");

require_once("excel-ext.php");

$assoc = array(

array("Nombre"=>"Mattias", "IQ"=>250),

array("Nombre"=>"Tony", "IQ"=>100),

array("Nombre"=>"Peter", "IQ"=>100),

array("Nombre"=>"Edvard", "IQ"=>100)

);

createExcel("excel-array.xls", $assoc);

exit;

Page 31: Mysql adodb pdf_php

Generación de

Documentos Excel

Page 32: Mysql adodb pdf_php

Generación de

Documentos Excel

Page 33: Mysql adodb pdf_php

Generación de

Documentos Excel

Crear Excel desde una Base de Datos

El siguiente ejemplo obtiene datos desde una

base de datos MySQL y generará un archivo

Excel como reporte.

Para ello primero creamos una conexión a

nuestra base de datos y consultamos la tabla

empresa y luego colocamos los resultados en

una matriz asociativa llamada $recordset.

Page 34: Mysql adodb pdf_php

Generación de

Documentos Excel

<?php

require(“../../../adodb/adodb.inc.php");

require_once("excel.php");

require_once("excel-ext.php");

$conectar = NewADOConnection(„mysql');

$conectar->Connect(„localhost‟,‟root‟,„‟,‟hr‟) or die("Error al conectar");

$consulta="select * from jobs";

$recordset = $conectar->GetAssoc($consulta) or die(“error!!");

createExcel("excel-mysql.xls", $recordset);

exit;

?>

Page 35: Mysql adodb pdf_php

Generación de

Documentos Excel

Page 36: Mysql adodb pdf_php

Generación de

Documentos Excel

Page 37: Mysql adodb pdf_php

Práctica

1. Construya una función para realizar

una conexión a una base de datos en

mysql, postgres o sybase.

2. Incluya esta función para cada

conexión que realice a la bd.

3. Realice una consulta a la bd

seccionada y despliegue su resultado

en el navegador.

Page 38: Mysql adodb pdf_php

Práctica

4. De igual forma, realice, inserciones,

actualizaciones y borrado en la bd

seleccionada

5. Generar un reporte en Excel de los

datos ingresados.

6. Generar un reporte en PDF de los

mismos

Page 39: Mysql adodb pdf_php

¡Gracias por su atención…!

Noviembre del 2011