Para
los que no están familiarizados con el PHP, pueden usar el siguiente enlace:
http://php.net/manual/es/index.php
Y hay
muchos más manuales en la Web
Instalación
del PHP:
Para
ello, instalamos el PHP, en mi caso, uso el paquete de AppServ:
Que al
instalarlo, configura el Servidor Apache con el PHP, también viene con el MySQL
como Base de Datos, pero se le puede quitar esta opción para solo quedarnos con
el Postgresql.
Luego
configuramos el PHP.ini para que reconozca el Postgresql
Configuración
del PHP.ini (inicio/AppServ/Configuration Server/ PHP Edit the php.ini
Configuration File)
Para el
Postgresql:
Buscar
en el PHP.ini:;extension=php_pgsql.dll y quitarle (descomentamos) el punto y coma y quedara
extension=php_pgsql.dll
Luego
reiniciar el Apache (inicio/AppServ/ Control Server by Service/ Apache Restart) y ya estará
configurado el Postgresql con el PHP.
Para el
PHPExcel:
Adicionalmente
instalaremos la librería de PHPExcel que permite crear un archivo Excel de la información
que queramos exportarla
Para configurarlo, en el PHI.ini (mencionado y explicado
líneas atrás), buscamos la línea:
zlib.output_compression
= off y la cambiamos por zlib.output_compression = on
Luego buscamos estas dos extensiones
;extension=php_xsl.dll
;extension=php_zip.dll
;extension=php_zip.dll
Quitamos
(descomentamos) los puntos y comas y debe quedar de esta forma:
extension=php_xsl.dll
extension=php_zip.dll
extension=php_zip.dll
Reiniciamos
el servidor Apache (mencionado como hacerlo líneas atrás) y ya está listo.
Ejemplo de Uso:
Tenemos una Tabla con las Capitales del Perú en nuestra Base
de Datos y queremos solo mostrar (y luego exportar a Excel) los que pertenezcan
al departamento del Cusco. En este ejemplo se ve el uso tanto del PHP como del
HTML para la creación de la Tabla y del Formulario que se mostrara (una buena
web que explica sobre HTML es http://www.w3schools.com/html/).La Tabla tiene la siguiente estructura:
NOMBDPTO: de tipo VARCHAR y contiene el nombre de los departamentos del Perú.
NOMBPROV: de tipo VARCHAR y contiene el nombre de las provincias del Perú.
NOMBDIST: de tipo VARCHAR y contiene el nombre de los distritos del Perú.
Pueden bajar el Shapefile de esta tabla para que lo puedan guardarlo en su Base de Datos desde ACA
Código PHP con Explicación (descárgala desde este ENLACE) Por problemas del Blogger, no se puede colocar bien el código en el Post, pero lo descargan en el ENLACE mencionado.
'; /*SALTO DE LINEA*/ } /*DEFINICION DE LA CONSULTA*/ $DEPARTAMENTO = 'CUSCO'; $SQL = 'SELECT nombdist, ST_AREA(ST_TRANSFORM(the_geom,32719)) / 1000000 FROM "DISTRITOS_PERU" WHERE nombdpto = '.chr(39).$DEPARTAMENTO.chr(39). ' ORDER BY nombdist'; $RESULTADO_SQL = pg_query($SQL); /*EJECUCION DE LA CONSULTA*/ /*IMPRESION DE LA CANTIDAD DE FILAS SEGUN LA CONSULTA*/ echo 'EL DEPARTAMENTO DE '.$DEPARTAMENTO . ' TIENE '.pg_num_rows($RESULTADO_SQL) .' DISTRITOS'; ?>
ID | DISTRITO | ÁREA (km2) |
setActiveSheetIndex(0)->setCellValue("A1" , "ID" ); $MI_EXCEL->setActiveSheetIndex(0)->setCellValue("B1" , "DISTRITO" ); $MI_EXCEL->setActiveSheetIndex(0)->setCellValue("C1" , "AREA (km2)" ); /*LLENADO DEL ARCHIVO EXCEL CON LOS DATOS DEL RESULTADO DE LA CONSULTA*/ For($i=0; $isetActiveSheetIndex(0)->setCellValue( $CELL , $i + 1 ); }Else{ $MI_EXCEL->setActiveSheetIndex(0)->setCellValue($CELL , $DATO_DISTRITO[$j - 1]); } } } $ARCHIVO = 'MI_EXCEL';/*NOMBRE DEL ARCHIVO EXCEL*/ $RUTA = $_SERVER['DOCUMENT_ROOT'].'/';/*RUTA DEL SERVIDOR LOCAL*/ /*CREACION DEL ARCHIVO EXCEL*/ $objWriter = PHPExcel_IOFactory::createWriter($MI_EXCEL, 'Excel2007'); $objWriter->save($RUTA.$ARCHIVO.'.xlsx' ); }
Function ConectaBD()/*FUNCION QUE CONECTA A LA BASE DE DATOS*/ { $host = 'localhost';/*NOMBRE DEL SERVIDOR / HOST */ $port = 5432; /*PUESTO*/ $database = 'MI_BASE_DE_DATOS'; /*NOMBRE BASE DE DATOS*/ $user = 'postgres'; /*USUARIO*/ $password = 'MI_PASSWORD'; /*PASSWORD*/ /*ESTABLECIMIENTO DE LA CONECCION*/ $coneccion = 'host=' . $host . ' port=' . $port . ' dbname=' . $database . ' user=' . $user . ' password=' . $password; $estado_coneccion = @pg_connect ($coneccion); /*EL ARROBA (@) EVITA MENSAJES DE ERRORES*/ Return $estado_coneccion; /*DEVUELVE LA CONECCION*/ } ?>La mayor parte del código esta con comentarios explicando su funcionamiento, pero haremos énfasis en:
$SQL = 'SELECT nombdist, ST_AREA(ST_TRANSFORM(the_geom,32719)) / 1000000 FROM "DISTRITOS_PERU" WHERE nombdpto = '.chr(39).$DEPARTAMENTO.chr(39). ' ORDER BY nombdist';
Esta sentencia es lo mismo que si escribimos en el Query
del Postgresql
SELECT nombdist, ST_AREA(ST_TRANSFORM(the_geom,32719)) / 1000000 FROM "DISTRITOS_PERU" WHERE nombdpto = 'CUSCO' ORDER BY nombdist;
Se nota entonces que en la variable $SQL esta toda la
sentencia SQL. Notese también el que la variable $DEPARTAMENTO esta donde
debería estar la palabra CUSCO y que el chr(39) representa la comilla simple de
‘CUSCO’. En otras palabras:
chr(39).$DEPARTAMENTO.chr(39) = 'CUSCO'
Este es el resultado:
Esperando que sea útil este Post, será hasta el otro mes.