You are on page 1of 70

PHP Crash Course Revisin: 2.

1 Fecha compilacin:
Eduardo Saavedra A.

27 de noviembre de 2008

ndice
1. Introduccin 1.1. Un poco de Historia . . 1.2. Objetivos . . . . . . . 1.3. Agradecimientos . . . 1.4. Herramientas a Utilizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 5 6 7 8 12 13 15 18 21 22 22 22 23 23 26 27 27 29 29 29 30 30 31 32 33 34 35 35 37 38 38 39 40 40 43 43 47

2. Instalacin Apache - PHP - MySQL 2.1. Windows . . . . . . . . . . . . . . . . . . 2.1.1. Probando la instalacin de Apache . 2.1.2. Probando la instalacin de MySQL 2.2. Linux . . . . . . . . . . . . . . . . . . . . 2.2.1. Probando la instalacin de Apache . 3. Utilizando Apache 4. Utilizando MySQL 4.1. Clientes WEB . . . . . . . . . . . 4.2. Clientes de Escritorio . . . . . . . 4.3. Uso de MySQL Administrator . . 4.3.1. Creacion de base de datos 4.3.2. Insercin de Datos . . . . 4.3.3. Generacin de consultas . 4.3.4. Creacin de vistas . . . . 5. Utilizando PHP 5.1. Variables . . . . . . . . . . . . 5.2. Arreglos . . . . . . . . . . . . 5.2.1. Declaracin Formal 5.2.2. Funciones de arreglos . 5.3. Sentencias de Control . . . . . 5.4. Funciones . . . . . . . . . . . 5.5. Entorno de desarrollo . . . . . 5.5.1. Easy Eclipse PHP . . . 5.6. Primera aplicacin en PHP . . 5.6.1. Pasos . . . . . . . . . 5.6.2. Funcionamiento . . . . 5.7. Segunda Aplicacin en PHP . 5.7.1. Pasos . . . . . . . . . 5.7.2. Funcionamiento . . . . 5.8. Tercera aplicacin en PHP . . 5.8.1. Pasos . . . . . . . . . 5.9. Cuarta aplicacin en PHP . . . 5.9.1. Pasos . . . . . . . . . 5.10. Quinta aplicacin en PHP . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . 2

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

NDICE

NDICE

5.10.1. Base de datos . . . . . . . . . . 5.10.2. Pasos de programacin . . . . . 5.11. Sexta aplicacin en PHP (cont. Quinta) . 5.11.1. Base de datos . . . . . . . . . . 5.11.2. Pasos de programacin . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

47 50 59 60 61

Manual PHP

Eduardo Saavedra A.

INTRODUCCIN

1.

Introduccin

La creciente demanda de las aplicaciones Web requiere de la atencin de todo profesional relacionado con las tecnologas de la informacin. Sin duda alguna, PHP no es la herramienta absoluta ni la mejor para seguir buenas prcticas de la Ingeniera de Software, sin embargo, esta da los conocimientos fundamentales para la comprensin general del Software del tipo Web. Actualmente existen muchas opciones para satisfacer necesidades de aplicaciones online. Algunas como JSP, Ruby on Rails, ASP, etc, siguen evolucionando para subyugar el problema que posee PHP inherentemente... Su tendencia al desorden, gran acoplamiento de cdigo y su poca cohesin. Por supuesto PHP no se queda atrs, en su ltimas versiones se trata de potenciar al mximo su orientacin a objetos, uso de clases y mtodos. Las versiones estables actuales de PHP en sus dos ramas son la 5 y 4. Las diferencias de las 2 versiones son mejoras en torno a su orientacin a objetos, Web-Service (SOAP), mayor soporte para distintos SGBD, etc. Existen adems varios frameworks para PHP, entre los ms utilizados y cotizados por eliminar los problemas sealados estn los frameworks de MVC. Entre los mas conocidos se tienen:

symphony: http://www.symfony-project.org CakePHP: http://www.cakephp.org PHP on Trax: http://www.phpontrax.com

Con ellos se pueden mejorar tiempos de desarrollo para crear grandes aplicaciones pudiendo realizar integracin rpida y eciente. Todo el contenido del presente manual se fundamenta en herramientas de libre uso tales como, Apache, XAMPP, PHP, MySQL, SQL Server Express, entre otras.

1.1.

Un poco de Historia

PHP fue originalmente diseado en Perl, en base a la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador dans-canadiense Rasmus Lerdorf en el ao 1994 para mostrar su Manual PHP 4 Eduardo Saavedra A.

1.2

Objetivos

INTRODUCCIN

curriculum vitae y guardar ciertos datos, como la cantidad de trco que su pgina web reciba. El 8 de junio de 1995 fue publicado "Personal Home Page Tools"despus de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI.

1.2.

Objetivos
El presente manual tiene como propsito:

El dar a conocer la herramienta de programacin Web PHP, su sintaxis y metodologa de programacin. Dar a conocer herramientas de desarrollo. Entregar informacin de instalacin de los servicios para Levantar un servidor capaz de entender PHP. Mostrar la interconcetividad con distintos motores de base de datos. Desarrollar un pequeo software de ejemplo.

1.3.

Agradecimientos

Primero que todo, debo agradecer a mi mentor en el uso formal de PHP, Hernn Roa R. Gracias a l pude conocer conceptos mas acabados sobre este entretenido y verstil lenguaje de programacin. Inclusive durante este tutorial se ocupar la metodologa de programacin que l me mostr. Bueno, en general a todos... ;) Y, por supuesto, se agradecer al que pueda aportar con ms conocimiento para enriquecer el presente documento.
A Pd. Viva LTEX:).

Manual PHP

Eduardo Saavedra A.

1.4

Herramientas a Utilizar

INTRODUCCIN

1.4.

Herramientas a Utilizar
XAMPP: Descargar XAMPP MySQL Adminstrator: Descargar MySQL Administrator Easy Eclipse: Descargar Easy Eclipse

Manual PHP

Eduardo Saavedra A.

INSTALACIN APACHE - PHP - MYSQL

2.

Instalacin Apache - PHP - MySQL

Esta seccin tratar la instalacin de un servidor capaz de interpretar lenguaje PHP y ser mostrado a los usuarios como pgina web. Existen varios Packs para realizar una instalacin mucho mas amigable y rpida. La versin extendida de la instalacin de cada modulo por separado, no se tratar en el presente (por ahora). As que para este paso se requerir el pack que ofrece Apache Friends (www.apachefriends.org) llamado XAMPP. Est para versiones Windows y Linux. Versin utilizada: 1.6.8

Manual PHP

Eduardo Saavedra A.

2.1

Windows

INSTALACIN APACHE - PHP - MYSQL

2.1.

Windows
Para comenzar... doble click en el cono de instalacin de XAMPP

Figura 1: Icono

Esta ser la pantalla inicial, donde se dar a elegir el idioma a utilizar:

Otra pantalla de bienvenida, solo next:

Manual PHP

Eduardo Saavedra A.

2.1

Windows

INSTALACIN APACHE - PHP - MYSQL

Se escoge la ruta de instalacin, generalmente C:, pero puede ser cualquiera (ojal un disco que no sea el de la instalacin de windows..)

En el orden respectivo pregunta:

Manual PHP

Eduardo Saavedra A.

2.1

Windows

INSTALACIN APACHE - PHP - MYSQL

Crear acceso directo en escritorio y luego en el menu de inicio Instalar como servicio Apache Instalar como servicio MySQL Instalar como servicio FileZilla Se recomienda no dejarlos habilitados, para as, solo levantar los servicios cuando se requiere.

Comienza la instalacin:

Manual PHP

10

Eduardo Saavedra A.

2.1

Windows

INSTALACIN APACHE - PHP - MYSQL

Finaliza la instalacin:

Seleccionar S para ver el panel:

Este panel es el principal de XAMPP, aqu se pueden iniciar los servicios, detenerlos o reiniciarlos. PHP se encuentra incluido como mdulo de PHP, as que si se quiere utilizar PHP solo basta con iniciar Apache.

Manual PHP

11

Eduardo Saavedra A.

2.1

Windows

INSTALACIN APACHE - PHP - MYSQL

2.1.1.

Probando la instalacin de Apache

Luego de haber instalado XAMPP, inicie el servicio APACHE tal y como se muestra en la gura 8. Si se muestra lo siguiente:

Figura 2: Panel de Control XAMPP y Servicios

Manual PHP

12

Eduardo Saavedra A.

2.1

Windows

INSTALACIN APACHE - PHP - MYSQL

Quiere decir que se inicio el servicio correctamente. Y para corroborar esto, proceda a abrir su navegador web (como Mozilla, Internet Explorer, Chrome, Opera, etc) e ingrese la siguiente direccin: http://127.0.0.1

Si todo ha ido correctamente se debera desplegar la siguiente pgina:

Esta ltima pgina esta creada en PHP, por lo tanto ya est listo el servidor con PHP ;).

2.1.2.

Probando la instalacin de MySQL

Anlogamente para probar si MySQL esta efectivamente activo se debe hacer click sobre el botn start de MySQL en el panel de control de XAMPP. Manual PHP 13 Eduardo Saavedra A.

2.1

Windows

INSTALACIN APACHE - PHP - MYSQL

Si todo va bien, en un momento debera aparecer en palabras marcadas con verde Running, igual que Apache:

Ahora, para probar si MySQL funciona completamente, ingresar a la siguiente url: http://127.0.0.1/phpmyadmin. Si se ingresa correctamente, se podr ver el panel de control de la base de datos con el cliente phpmyadmin.

Manual PHP

14

Eduardo Saavedra A.

2.2

Linux

INSTALACIN APACHE - PHP - MYSQL

2.2.

Linux
Aunque no lo parezca la instalacin de XAMPP en Linux es sumamente sencilla. Con el archivo tar.gz a su disposicin, deben ejecutar el siguiente comando:

tar xvfz <ruta tar.gz><ruta destino>

En general se instala bajo el directorio /opt, por lo tanto, de forma particular sera:

sudo tar xvfz xampp-linux-1.6.8a.tar.gz -C /opt

Manual PHP

15

Eduardo Saavedra A.

2.2

Linux

INSTALACIN APACHE - PHP - MYSQL

Este comando Descomprimir en la ruta dada los archivos binarios del XAMPP junto con sus directorios bsicos. (Ojo, deben estar como usuario privilegiado root). Luego deben dar permisos sobre el directorio al usuario que esten utilizando en unix:

sudo chown usuario -R /opt/lampp

Manual PHP

16

Eduardo Saavedra A.

2.2

Linux

INSTALACIN APACHE - PHP - MYSQL

Este comando debe ser ejecutado como root. Con esto listo, pueden proceder a iniciar los servicios de apache y mysql. Para esto ejecuten el comando:

sudo /opt/lampp/lampp start

Esto levantar los servicios de XAMPP (debe ser como root).

Manual PHP

17

Eduardo Saavedra A.

2.2

Linux

INSTALACIN APACHE - PHP - MYSQL

2.2.1.

Probando la instalacin de Apache

Para corroborar de que todo est funcionando, visiten con su navegador la direccion 127.0.0.1 o bien ejecuten el comando:

nmap localhost

Manual PHP

18

Eduardo Saavedra A.

2.2

Linux

INSTALACIN APACHE - PHP - MYSQL

Este comando(nmap) permite ver que puertos estn abiertos, y que servicios estn corriendo sobre l. Si no tienen el programa nmap, es 100 % recomendado bajarlo

Para versiones de linux derivadas de debian: apt-get install nmap Para versiones de linux derivadas de Red Hat: yum install nmap

Al igual que en windows, el directorio de trabajo de Apache es el htdocs (/opt/lampp/htdocs).

Manual PHP

19

Eduardo Saavedra A.

2.2

Linux

INSTALACIN APACHE - PHP - MYSQL

Con esto se concluye la instalacin sobre Linux :).

Manual PHP

20

Eduardo Saavedra A.

UTILIZANDO APACHE

3.

Utilizando Apache

Para utilizar Apache con PHP en la distribucin de XAMPP denida anteriormente es necesario hacer uso de la carpeta htdocs del directorio raz de XAMPP. Esta carpeta es la que queda a publica vision de los clientes que se conecten al servicio. Este Apache por defecto detecta los archivos index. por defecto como propietarios de directorio, es decir, que si un usuario ingresa al sitio web http://127.0.0.1/aplicacion lo que el usuario ver ser la fuente del archivo index. Si no existe un index, inmediatamente se ver la estructura de directorios de la carpeta en cuestin. Luego la idea es que en el index, existan las referencias o links respectivos para visitar los dems fuentes de los directorios del sitio.

Manual PHP

21

Eduardo Saavedra A.

UTILIZANDO MYSQL

4.

Utilizando MySQL
Para utilizar la instalacin de MySQL de XAMPP, existen varias alternativas mediante clientes:

Utilizar phpMyAdmin (Cliente Web). Utilizar MySQL Administrator (Cliente Instalable). Utilizar Sql Lite (Cliente Web).

Es recomendable para operaciones complejas utilizar los clientes de Escritorio, y para operaciones mas sencillas y triviales los clientes WEB. De todas maneras, las operaciones realizables en el SGBD mediante estos 2 tipos son deben ser idnticas. Por ejemplo entre las operaciones bsicas podemos encontrar:

Creacin de bases de datos. Insercin de datos. Borrado de elementos. Generadores de BackUps. Visin de modelos.

4.1.

Clientes WEB
La desventaja de los clientes Web es que utilizan recursos de los servidores para poder funcionar. Son un poco menos verstiles en cuanto a usabilidad

4.2.

Clientes de Escritorio

MySQL Administrator es una aplicacin diseada por los mismos creadores de MySQL, es bastante poderosa para el manejo de bases de datos MySQL. Manual PHP 22 Eduardo Saavedra A.

4.3

Uso de MySQL Administrator

UTILIZANDO MYSQL

Recomiendo esta aplicacin para realizar gestiones sobre bases de datos mas complejas.

4.3.
4.3.1.

Uso de MySQL Administrator


Creacion de base de datos

Habiendo creado un modelo E-R, y luego un modelo fsico mediante una herramienta CASE como Power Designer, se procede a exportar la base de datos a un script DDL de MySQL. Para cargar este script con la estructura de la base da datos es necesario realizar los siguientes pasos:

1. Abrir MySQL Administrator:

2. Despus ingresar a la base de datos, utilizando el usuario y contrasea correspondiente.

3. Luego seleccionar el item Restore

Manual PHP

23

Eduardo Saavedra A.

4.3

Uso de MySQL Administrator

UTILIZANDO MYSQL

Se puede ver que solo est habilitada la seccin de abrir archivo. Generalmente el archivo puede tener errores de comptabilidad de cdigo, esto es por que el DDL se gener con una aplicacin externa y no con el mismo MySQL Adminstrator. Para evitar posibles errrores, basta con marcar la opcin de Ignore Errors (Omitir Errores). 4. Cargar el archivo DDL.

5. (Opcional) Si se ve la pestaa de Restore content presionando el botn de analizar contenido, podran verse las tablas a generar de la base de datos.

Manual PHP

24

Eduardo Saavedra A.

4.3

Uso de MySQL Administrator

UTILIZANDO MYSQL

6. Al Presionar Start Restore debera aparecer una ventana de progreso del archivo:

Figura 3: Bases de datos: Catlogos

7. Finalmente para ver si la base de datos fue creada se puede revisar en la seccin de catlogos la existencia de sta. (cabe destacar que un Schema es el equivalente a una base de datos en MySQL).

Manual PHP

25

Eduardo Saavedra A.

4.3

Uso de MySQL Administrator

UTILIZANDO MYSQL

4.3.2.

Insercin de Datos

Para insertar datos sobre las tablas es bastante cmodo. Esto se puede realizar mediante los siguientes pasos:

1. Acceder a los catlogos (ver gura: 3) 2. Dentro del Esquema de la base de datos presionar ver las propiedades de una tabla con el botn derecho del mouse y acceder a la opcin Editar Tabla.

3. Luego se puede escribir segn los tipos de datos designados a las columnas por medio del botn edit en la parte inferior central de la pantalla de edicin.

Manual PHP

26

Eduardo Saavedra A.

4.3

Uso de MySQL Administrator

UTILIZANDO MYSQL

4.3.3.

Generacin de consultas

Para confeccionar consultas pueden dirigirse a la ventana de edicin de datos, en ella se encuentra una miniconsola en la parte superior. En el extremo inferior derecho hay comandos y funciones de ayuda de MySQL.

4.3.4.

Creacin de vistas

Es posible hacer vistas mediante la misma ventana de edicin de datos, para ello, basta realizar un Query (que funcione!) y en la barra de menu superior acceder a QueryCreate View From Select. Manual PHP 27 Eduardo Saavedra A.

4.3

Uso de MySQL Administrator

UTILIZANDO MYSQL

Manual PHP

28

Eduardo Saavedra A.

UTILIZANDO PHP

5.

Utilizando PHP
PHP tiene una gran semejanza al lenguaje C y C++.

5.1.

Variables

En PHP el uso de Tipos de variable es casi inexistente. Por ejemplo si se desea denir una variable que contenga un numero basta con: $numero=9; Para denir un String: $string=Hola; Para denir un char: $char=a; Con esto podemos concluir que PHP detecta de forma inteligente los tipos de variable evitando as deniciones. repetitivas o innecesarias. El signo de peso($) es OBLIGATORIO para denir cualquier tipo de variable!. Si no se utiliza, el compilador pensar que se trata de utilizar una funcin o procedimiento.

5.2.

Arreglos

Por supuesto, como todo lenguaje, es necesario el manejo de arreglos. En PHP existen variadas funciones asociados a ellos, adems, su declaracin inicial puede ser muy variada. Los arreglos pueden contener cualquier tipo de variable, es decir que, un arreglo puede contener, arreglos, strings, enteros, otantes, etc. Como se puede apreciar PHP es un lenguaje muy muy permisivo en cuanto al uso de los tipo de variable, esto es un elemento bueno, pero a veces puede ser adverso cuando se es desordenado.

Manual PHP

29

Eduardo Saavedra A.

5.2

Arreglos

UTILIZANDO PHP

5.2.1.

Declaracin Formal

La declaracin formal de un arreglo vaco en PHP es la siguiente: $nombreArreglo = array(); Si deseamos iniciarlo con datos: $nombreArreglo = array(dato1, dato2, dato3); Para recorrer un arreglo se puede hacer mediante una sentencia de control (como for o while) y el uso de una variable auxiliar de indice. Por ejemplo si se necesita el tercer elemento del arreglo anterior: echo El tercer elemento es!.$nombre[2]; (La palabra echo es para imprimir en pantalla)

5.2.2.

Funciones de arreglos

Existen muchas funciones para el tratamiento de arreglos, entre algunas podemos encontrar:

array_push(arreglo, valor_a_ingresar) : void Esta funcin ingresa un elemento al nal del arreglo array_pop(arreglo) : elemento Esta funcin saca el primer elemento del arreglo y lo retorna. in_array(valor, arreglo) : boolean Esta funcin retorna True si se encuentra valor en arreglo, en otro caso False. count(arreglo) : int Esta funcin retorna la cantidad de elementos del arreglo. shufe(arreglo) : void Esta funcin desordena de forma aleatoria los elementos del arreglo

Manual PHP

30

Eduardo Saavedra A.

5.3

Sentencias de Control

UTILIZANDO PHP

5.3.

Sentencias de Control
Como en todo lenguaje existen (entre otros):

If y Else
<?PHP if(condicin){ Rutina a condicionar. }else{ Rutina a condicionar en otro caso a la condicin. } ?>

Switch y Case
<?PHP switch(variable de control){ case (Valor posible de variable de control): Primera Rutina a condicionar break; case (Valor posible de variable de control): Segunda Rutina a condicionar break; case (Valor posible de variable de control): Tercera Rutina a condicionar break; } ?>

While
<?PHP while(condicin){ Rutina a iterar hasta que se roma pa condicin inicial } ?>

For

Manual PHP

31

Eduardo Saavedra A.

5.4

Funciones

UTILIZANDO PHP

<?PHP for(inicio variables; condiciones;incremento variables){ Rutina a iterar hasta que se roma pa la(las) condicin(es) inicial(es). } ?>

5.4.

Funciones
Las funciones se denen sin tipo, simplemente se confeccionan de la siguiente forma: nombre_de_funcion($parametro1, $parametro2,...,$parametroN){ }

Si se utiliza la palabra clave return dentro de una funcin, esta se quiebra (break) y retorna lo que se necesite (idealmente una funcin debe retornar un solo tipo de variable...)

Manual PHP

32

Eduardo Saavedra A.

5.5

Entorno de desarrollo

UTILIZANDO PHP

5.5.

Entorno de desarrollo

Existen variadas alternativas, incluso programas tan bsicos como notepad podran ser tiles, sin embargo la idea es agilizar y saber que es lo que efectivamente se esta haciendo. Por lo tanto para programar en PHP se recomienda:

DreamWeaver: http://www.adobe.com NetBeans: http://php.netbeans.org Eclipse: http://www.easyeclipse.org

Cada uno tiene sus cualidades, sin embargo por capricho del autor, se utilizar Eclipse. La versin de Eclipse a usar es la Easy Eclipse, sta es la misma versin que viene incorporada con la distribucin Fedora Core de Linux. Esta sumamente integrada con PHP y con los servicios debases de datos y Apache. No as Netbeans u otros.

Manual PHP

33

Eduardo Saavedra A.

5.5

Entorno de desarrollo

UTILIZANDO PHP

5.5.1.

Easy Eclipse PHP

La instalacin es bastante sencilla, solamente se debe recordar donde se asignar el worskpase de eclipse. Es recomendable, de que si se est trabajando con PHP, dejar el directorio htdocs como la carpeta de trabajo de Eclipse.

Figura 4: Easy Eclipse en detalle

Manual PHP

34

Eduardo Saavedra A.

5.6

Primera aplicacin en PHP

UTILIZANDO PHP

5.6.

Primera aplicacin en PHP


Como es de esperar la primera aplicacin ser... Hola Mundo!

Bien, la forma de trabajar de PHP es que cada vez que un cliente solicite una pgina al servidor, ste debe compilar e interpretar el cdigo fuente de lo solicitado, mostrando al usuario el resultado nal. La idea, es que el usuario NUNCA deba ver el cdigo fuente de una aplicacin PHP.

5.6.1.

Pasos

1. En Eclipse creamos un nuevo proyecto PHP con nombre primerApp.

(a) Nuevo proyecto

(b) Asignacin de nombre

Figura 5: Creacin de un proyecto 2. Dentro de este proyecto, crear un nuevo fuente PHP llamado index.php

Manual PHP

35

Eduardo Saavedra A.

5.6

Primera aplicacin en PHP

UTILIZANDO PHP

(a) Nuevo archivo fuente

(b) Asignacin de nombre

Figura 6: Creacin de un archivo 3. En el archivo index.php, escribir las siguientes sentencias:


1 2 3 4 5

<?PHP echo Hola Mundo!; ?>

Esto har que se imprima, como salida en cdigo HTML, el texto Hola Mundo. La funcin echo es til para estos nes, adems es posible realizar concatenaciones de string constantes (como la del ejemplo) y variable. 4. Luego, guardar el proyecto. 5. Para probar si funciona, hay que cerciorar de que Apache est activo (ver gura: 2) 6. En caso de que Apache est efectivamente andando, ir al navegador web e ingresar al sitio http://127.0.0.1/primerApp 7. Se debera ver una pgina con el siguiente contenido:

Manual PHP

36

Eduardo Saavedra A.

5.6

Primera aplicacin en PHP

UTILIZANDO PHP

5.6.2.

Funcionamiento

Manual PHP

37

Eduardo Saavedra A.

5.7

Segunda Aplicacin en PHP

UTILIZANDO PHP

5.7.

Segunda Aplicacin en PHP


La segunda aplicacin a programar ser una que utilice funciones para procesar ciertos datos:

5.7.1.

Pasos

1. En Eclipse creamos un nuevo proyecto PHP con nombre secondApp. 2. Dentro de este proyecto, crear un nuevo fuente PHP llamado funciones.php 3. En el archivo funciones.php, escribir las siguientes sentencias:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

<?PHP function es_dos($numero){ if($numero %2==0) return true; else return false; }

function es_dos2($numero){ return ($numero %2==0)?true:false; }

?>

Con esto, hemos creado dos funciones que hacen exactamente lo mismo (era para mostrar los 2 tpicos formatos utilizados en condiciones). Para llamar a estas funciones desde otro archivo fuente php, se utilizan alguna de las siguientes funciones: include(archivo) require(archivo) require_once(archivo) Cada uno con distintas caractersticas, los ms utilizados son el requiere_once e include. 4. Luego, guardar el archivo. 5. Ahora, crear otro archivo llamado index.php 6. En ste escribir el siguiente cdigo:

Manual PHP

38

Eduardo Saavedra A.

5.7

Segunda Aplicacin en PHP

UTILIZANDO PHP

1 2 3 4 5 6 7 8 9 10 11 12

<?PHP require_once(funciones.php); $valor=2; if(es_dos2($valor)){ echo Es par!; } else { echo No es par :( !!); } ?>

Notar que en la lnea 3 se hizo referencia al archivo que contena las funciones!, todo mediante un requiere_once. Finalmente segn el valor que tome la variable valor de la lnea 4 se imprimir en pantalla Es par o No es Par 7. Para probar si funciona, hay que cerciorar de que Apache est activo (ver 2) 8. En caso de que Apache est efectivamente andando, ir al navegador web e ingresar al sitio http://127.0.0.1/secondApp 9. Se debera ver una pgina con el siguiente contenido:

5.7.2.

Funcionamiento

Manual PHP

39

Eduardo Saavedra A.

5.8

Tercera aplicacin en PHP

UTILIZANDO PHP

5.8.

Tercera aplicacin en PHP


En la tercera aplicacin se ver el uso de ciclos y arreglos.

Adems se har referencia al uso de headers y footers, algo sumamente bsico en la creacin de sitios Web dinmicos.

5.8.1.

Pasos

1. En Eclipse creamos un nuevo proyecto PHP con nombre thirdApp. 2. Dentro de este proyecto, creamos 2 carpetas, api y cong respectivamente 3. Dentro de la carpeta cong crear 2 archivos php, uno llamado footer.php y otro header.php 4. Dentro de la carpeta api crear el archivo commonLib.php 5. Crear en la raz del proyecto el index.php

Figura 7: Estructura de archivos nal

6. Luego en el archivo header.php dejaremos el siguiente cdigo:


1 2 3 4 5 6 7 8

<?PHP echo <html> <body> ;

?>

Manual PHP

40

Eduardo Saavedra A.

5.8

Tercera aplicacin en PHP

UTILIZANDO PHP

Esto imprimir en HTML los tags de inicio de un sitio Web. 7. En el archivo footer.php dejaremos el siguiente cdigo:
1 2 3 4 5 6 7 8

<?PHP

echo </body> </html>; ?>

Esto imprimir en HTML los tags de n de un sitio Web. La idea de usar un footer y un header es que ellos sern llamados en todas las pginas diseadas, por lo tanto se ahorra la sobreescritura de cdigo. 8. En el archivo commonLib.php se dejar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

<?PHP function CREATE_TABLE($data){ $cantidad = count($data); echo(<table border="1">);

for($i=0; $i<$cantidad; $i++){ echo( <tr> <td> .$data[$i]. </td> </tr> ); }

echo(</table>); }

?>

Con esto deniremos una funcin que crear una tabla HTML en que cada la contendr un elemento del arreglo pasado por parmetro. 9. Finalmente en el archivo index.php se escribir:
1 2 3 4 5 6 7 8 9 10

<?PHP require_once(api/commonLib.php); include(config/header.php);

$datos=array(El 1,El 2,El 3); CREATE_TABLE($datos);

Manual PHP

41

Eduardo Saavedra A.

5.8

Tercera aplicacin en PHP

UTILIZANDO PHP

11 12 13

include(config/footer.php); ?>

Esto dene un arreglo llamado datos (lnea 7), y luego se llamar a la funcin CREATE_TABLE de la commonLib que fue referenciada en la linea 3. Note como se llaman a las funciones desde la commonLib y el cdigo HTML del header y footer, estos dos ltimos en las lneas 4 y 11 respectivamente.

Manual PHP

42

Eduardo Saavedra A.

5.9

Cuarta aplicacin en PHP

UTILIZANDO PHP

5.9.

Cuarta aplicacin en PHP

La cuarta aplicacin tendr como propsito generar una aplicacin un poco ms compleja utilizando clases, al mas puro estilo Java. El propsito ser utilizar esta bsica clase para mostrar su funcionamiento respectivo a los constructores, mtodos y usos de atributos.

5.9.1.

Pasos

1. Utilizar los archivos (header, footer y commonLib) de la aplicacin 3 junto con sus directorios respectivos (api, cong) 2. Crear el directorio class en el proyecto, y dentro de este crear el archivo fuente userClass.php. 3. La estructura de directorios dene quedar de la siguiente forma.

Figura 8: Estructura de archivos nal

4. En la clase userClass deniremos 3 variables, y 5 mtodos incluyendo a su constructor.


1 2 3 4 5 6 7

<?PHP class USER{ private $userId; private $userName; public $userPhone;

Manual PHP

43

Eduardo Saavedra A.

5.9

Cuarta aplicacin en PHP

UTILIZANDO PHP

8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

function USER($userId){ echo "Usuario creado! :D<BR>"; $this->userId = $userId; } function set_name($name){ $this->userName=$name; } function set_phone($phone){ $this->userPhone=$phone; } function get_name(){ return $this->userName; } function get_phone(){ return $this->userPhone; } } ?>

Siempre las clases en PHP se inician mediante la palabra clave class (lnea 2) seguida del nombre identicador de la clase. Luego dentro de la clase se pueden crear variables pblicas o privadas (lneas 4, 5 y 6). Como en todo lenguaje de programacin de alto nivel, las variables privadas solo pueden ser accedidas desde el mismo objeto instanciado, y por otro lado, las variables publicas, pueden ser utilizadas por cualquier objeto instanciado o rutina fuera del objeto original. Seguido de las variables, encontramos el constructor, ntese que el constructor es una funcin que lleva EL MISMO NOMBRE que la identicadora de la clase. (lnea 8). Las siguientes funciones (lneas 8, 13, 17, 21, 25) son simples getters y setters de las variables a utilizar, por supuesto, las variables pblicas no requieren de forma obligatoria estas funciones, ellas se crearon solo a modo de ejemplo. Cabe destacar el uso del puntero $this su uso es idntico a java. La idea es siempre llamar a las variables de la clase mediante este puntero para evitar inconsistencias y saber que es lo que esta ocurriendo de forma rpida y efectiva. 5. El archivo index.php contendr el siguiente script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14

<?PHP require_once(class/userClass.php); require_once(api/commonLib.php); include(config/header.php); $user1=new USER(1); $user2=new USER(2); $user3=new USER(3); $arreglo_de_users=array(); array_push($arreglo_de_users,$user1);

Manual PHP

44

Eduardo Saavedra A.

5.9

Cuarta aplicacin en PHP

UTILIZANDO PHP

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

array_push($arreglo_de_users,$user2); array_push($arreglo_de_users,$user3); $arreglo_de_users[0]->set_name("Pedrito"); $arreglo_de_users[1]->set_name("Juanito"); $arreglo_de_users[2]->set_name("Miguelito"); $arreglo_de_users[0]->set_phone("111111"); $arreglo_de_users[1]->set_phone("222222"); $arreglo_de_users[2]->set_phone("333333"); echo <BR><BR>;

for ($i=0; $i<count($arreglo_de_users); $i++){ echo Nombre:.$arreglo_de_users[$i]->get_name(). . Telfono: .$arreglo_de_users[$i]->get_phone().<BR>;

} include(config/footer.php);

?>

Nuevamente en las primeras lneas se llaman a las inclusiones de los archivos fuentes externos con funciones. En la lnea 3 se hace referencia al archivo de la clase userClass, cuando se tienen clases en archivos distintos se deben llamar de esa forma. En las lneas 8, 9 y 10 se crean 3 objetos USER, su parmetro de construccin es un nmero identicador. En la lnea 12 se crea un arreglo. De la lnea 14 a 16 se realizan push de los objetos al arreglo. (era posible hacerlo mediante un simple array($dato1, $dato2, $dato3), sin embargo se quera mostrar el uso de la funcin array_push). Luego se comienzan a utilizar las funciones (mtodos) de los objetos (set_name y set_phone respectivamente) En la lnea 28 se realiza un for para llamar iterativamente a los mtodos get de los objetos instanciados inicialmente. Finalmente se cierra el archivo con la inclusin del footer y del script.

Manual PHP

45

Eduardo Saavedra A.

5.9

Cuarta aplicacin en PHP

UTILIZANDO PHP

El resultado que se debera mostrar es:

Manual PHP

46

Eduardo Saavedra A.

5.10

Quinta aplicacin en PHP

UTILIZANDO PHP

5.10.

Quinta aplicacin en PHP

En esta aplicacin se realizar un programa que se comunique con una base de datos MySQL. Para ello se proveer de una clase PHP que establece la comunicacin con la base de datos previo a una conguracin bastante rutinaria. La base de datos a utilizar se adjuntara al presente manual, por medio de un Dump hecho con MySQL Administrator. sta aplicacin ser un poco mas compleja que las anteriores, por ello se pide por favor leer esto con calma y entender a cabalidad de lo que se esta exponiendo.

5.10.1.

Base de datos

Se utilizar un ejemplo simple de 3 tablas, consistente en msicos y cuando ellos utilizan instrumentos.

1. Nuestro modelo de datos es el siguiente:

Figura 9: Modelo Conceptual BD

2. EL modelo fsico representativo de la situacin:

Manual PHP

47

Eduardo Saavedra A.

5.10

Quinta aplicacin en PHP

UTILIZANDO PHP

Figura 10: Modelo Fsico BD

3. Como el diseo fue hecho en Power Designer, basta con generar la base de datos por medio del men Generate Database (recordar que antes se debe dar el nombre a la base de datos en la seccin del modelo fsico! [diapositiva de Ayudanta 3]) 4. Luego se ingresar a MySQL Administrator y se realizar un restore del script generado (ver seccin 4.3.1 y 4.3.2)

Manual PHP

48

Eduardo Saavedra A.

5.10

Quinta aplicacin en PHP

UTILIZANDO PHP

5. Ahora se insertarn datos con el segundo script adjunto (insert_Musicos.sql). 6. Si todo est en orden, la base de datos debera estar creada y con algunos datos:

Ya con todo preparado se puede comenzar a programar una aplicacin ;).

Manual PHP

49

Eduardo Saavedra A.

5.10

Quinta aplicacin en PHP

UTILIZANDO PHP

5.10.2.

Pasos de programacin

Primero se debe dejar claro que lo que se presentar a continuacin es una forma relativamente ordenada de programar en PHP. Es posible, por ejemplo, dejar todo el cdigo fuente en un solo archivo, incluyendo clases, HTML, funciones, cabeceras, SQLs, etc. Pero lo nico que se logra con esto, es dejar un cdigo inmantenible e inentendible...

1. Primero dejaremos la estructura de directorios de la siguiente forma:

2. Al igual que en los 2 ejercicios anteriores se usarn los archivos: footer.php en la carpeta cong header.php en la carpeta cong commonLib.php en la carpeta api 3. Luego crear el archivo fuente congSystem.php dentro de la carpeta cong, ste contendr todos los datos de conguracin esttica de nuestra aplicacin, como servidor . 4. Ahora deje el archivo adjunto connectDbClass.php en la carpeta class, esta clase ser la encargada de mediar entre la base de datos y los archivos fuentes de la pgina. 5. Finalmente crear el archivo index.php en la raz del proyecto. 6. La estructura de directorios y archivos quedar de la siguiente forma:

Manual PHP

50

Eduardo Saavedra A.

5.10

Quinta aplicacin en PHP

UTILIZANDO PHP

7. Ingresar el siguiente cdigo en el archivo congSystem.php:


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

<?PHP unset($CFG); $CFG->dbtype $CFG->dbhost $CFG->dbname $CFG->dbuser $CFG->dbpass $CFG->dbpersist $CFG->host $CFG->pname $CFG->wwwroot $CFG->dirroot $CFG->owner $CFG->charSet = = = = = = = = = = = = mysql; 127.0.0.1; MUSICA; root; ; false; 127.0.0.1; fifhtApp/; http://127.0.0.1/.$CFG->pname; H://xampp/htdocs/.$CFG->pname; Eduardo Saavedra A.; UTF-8;

define(TAB,&nbsp;&nbsp;&nbsp;); define(RTN,<br />); define(DBLRTN,<br /><br />); define(LNRTN,<hr />);

?>

Entonces lnea a lnea el cdigo representa: 2 : Con el comando unset se Resetean los valores de la variable CFG. 4 : dbtype: es un string que contendr el tipo de base de datos a utilizar, la clase connectDbClass soporta: SQL Server 2000, MySQL y postgres. 5 : dbhost: es un string conteniendo la IP del servidor de base de datos, en general este estar en su propio equipo, por lo tanto la direccin 127.0.0.1 referenciar a la base de datos. 6 : dbname: es un string que contiene el nombre de la base de datos a utilizar, para nuestro caso ella sera MUSICA.

Manual PHP

51

Eduardo Saavedra A.

5.10

Quinta aplicacin en PHP

UTILIZANDO PHP

7 : dbuser: es un string que contiene el nombre de usuario de la base de datos, el usuario root es el principal administrador, en rigor es una mala prctica utilizarlo, pero de todas maneras cumplir su cometido. 8 : dbpass: es un string que contiene el password del usuario dado anteriormente. 11 : host: contendr la ip o DNS del servidor apache, en nuestro caso, nuestro propio equipo 127.0.0.1 12 : pname: es un string que contiene el nombre del proyecto (para este caso fthApp). 13 : wwwroot: este string contendr la ruta por medio de DNS o ip del proyecto. 14 : dirroot: este string contendr la ruta INTERNA del proyecto. 15 : owner: ser la string contendr del creador del proyecto. 16 : charSet: contendr el tipo de caracteres a utilizar en el sitio web. 18-21 : Estas deniciones podrn ser tiles para ahorrar cdigo HTML.

Manual PHP

52

Eduardo Saavedra A.

5.10

Quinta aplicacin en PHP

UTILIZANDO PHP

8. Crearemos ahora 2 clases, una para los msicos y otra para los instrumentos. Cabe destacar, que los diagramas E-R son muy similares en notacin y nalidad a los diagramas de clases. Los archivos a crear quedarn en la carpeta class, y sern musicianClass.php y instrumentClass.php. 9. Para la clase musician crearemos 2 simples mtodos: a) Para mostrar TODOS los msicos en la base de datos. b) Para mostrar un msico en particular. Asumiendo que se tienen conocimientos de usos de clases en PHP (ver seccin 5.9). Se crearn los 2 mtodos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

<?PHP class Musician{ private $MusicianID; private $ConnectDB; function Musician($ID = NULL){ $this->MusicianID = $ID; $this->ConnectDB = new CONNECTDB; }

function getAllMusicians(){ global $CFG; include($CFG->dirroot.api/musicianQueryLib.php); return $this->ConnectDB->REC_SET($QUERY_INFO->SHOW_ALL_MUSICIANS); } function getMusicianById(){ global $CFG; include($CFG->dirroot.api/musicianQueryLib.php); return $this->ConnectDB->REC_SET($QUERY_INFO->SHOW_MUSICIAN); }

} ?>

Bien, la clase, como constructor tomar un ID (Lnea 7) y adems tomar las caractersticas de conexin a base de datos (por medio de la clase connecDbClass, Lnea 8). Luego en el mtodo getAllMusicians, primero tomaremos los valores del archivo de conguracin (congSystem.php) referenciado por la variable $CFG, luego se incluir el archivo musicianQueryLib.php y el mtodo retornar el resultado de una query guardada en el archivo musicianQueryLib.php. La instruccin REC_SET que se ve en la Lnea 15 y 21 corresponde a un mtodo de la clase CONNECTDB (del archivo connectDbClass.php), este mtodo lo que hace es, por medio de un SQL, es retornar en forma de una matriz de arreglos el resultado. 10. Para seguir con la secuencia lgica crearemos el archivo musicianQueryLib.php dentro de la carpeta api. En ella dejaremos TODOS los SQLs necesarios para trabajar con la base de datos, entonces inicialmente tendremos 2, uno para cada mtodo de la clase Musician: Manual PHP 53 Eduardo Saavedra A.

5.10

Quinta aplicacin en PHP

UTILIZANDO PHP

a) SHOW_ALL_MUSICIANS b) SHOW_MUSICIANS Entonces, el archivo quedar:


1 2 3 4 5 6 7 8 9

<?PHP $QUERY_INFO->SHOW_ALL_MUSICIANS = "SELECT * " . " FROM Musico"; $QUERY_INFO->SHOW_ALL_MUSICIANS = "SELECT * " . " FROM Musico" . " WHERE idMusico=".$this->MusicianID.""; ?>

Este archivo mantendr las variables de la estructura $QUERY_INFO, ellos son simples strings con los queries requeridos por la clase Musician. Como han de notar, son los tpicos SQLs que podramos encontrar en cualquier sistema WEB (para un orden visual, se dejaron separadas las lneas por medio de comillas y puntos, lo tpico es separar, las sentencias SELECT, FROM, INNER JOIN, ORDER BY, GROUP BY, etc). El segundo Querie tiene como particularidad que contiene una variable llamada $this->MusicianID, esta variable es simplemente uno de los atributos que tiene la clase musician que se deni en su constructor. Con ella podremos condicionar la bsqueda a un msico en particular. 11. Ahora en el archivo index.php del directorio raz dejaremos el siguiente cdigo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

<?PHP include(config/configSystem.php); include(config/header.php); require_once(class/musicianClass.php); require_once(class/connectDbClass.php); $Musico = new Musician(); $matriz_datos=$Musico->getAllMusicians(); for($i=0; $i<count($matriz_datos); $i++){ for($j=0; $j<count($matriz_datos[$i]); $j++){ echo $matriz_datos[$i][$j]." "; } echo DBLRTN; } include(config/footer.php); ?>

Las 6 primeras lneas representan las inclusiones a realizar en de los archivos, no se olviden de incluir el congSystem! y las clases. Luego en la lnea 8 instanciamos un objeto musician. En la lnea 9 llamamos al mtodo para obtener los datos de los usuarios y los almacenamos en la variable $matriz_datos. De la lnea 11 a 18 utilizamos el clsico recorrido matricial de las-columnas. Luego incluimos el footer. Manual PHP 54 Eduardo Saavedra A.

5.10

Quinta aplicacin en PHP

UTILIZANDO PHP

12. Para ir recapitulando las ultimas acciones veremos la estructura de archivos y directorios:

La funcin de cada directorio sera: Api: Mantendr todas las funciones y variables que pueden ser utilizadas por muchos archivos PHP, adems se dejarn los archivos de Queries hacia la base de datos. Class: Mantendr todas las clases que se utilizarn en el desarrollo de una aplicacin, para este caso tendremos la clase musician e instrument. Hasta el momento solo hemos editado la clase musician que tendr mtodos de retorno de datos de msicos. Cong: Mantendr los archivos que siempre se llamaran en casi todo archivo PHP, en esta carpeta estn los archivos de conguracin bsicos para la interactividad entre bases de datos y Apache. Se tienen adems los header y footer de los sitios.

Manual PHP

55

Eduardo Saavedra A.

5.10

Quinta aplicacin en PHP

UTILIZANDO PHP

Y a modo de diagramas, la interaccin de los archivos con la base de datos y el navegador WEB quedara representada por lo siguiente:

Como se han de dar cuenta, los archivos de clases, conguracin y apis, NUNCA estn en contacto directo con el servidor Apache para ser mostrado al usuario. Esto conlleva una serie de ventajas, entre ellas estn las de seguridad y estandarizacin de desarrollo de aplicaciones. 13. Luego de este intermedio, veamos los resultados que retorna el index.php... Primero una foto de los datos de la base de datos en la tabla Msicos:

Manual PHP

56

Eduardo Saavedra A.

5.10

Quinta aplicacin en PHP

UTILIZANDO PHP

Y el resultado de la direccin http://127.0.0.1/fthApp que se v mediante Mozilla:

Parece que funciona :) Ahora simplemente editaremos el index.php para mostrar un msico con un ID en particular... Manual PHP 57 Eduardo Saavedra A.

5.10

Quinta aplicacin en PHP

UTILIZANDO PHP

Mostremos el msico con ID 7, entonces alteramos el index.php agregando las siguientes lneas despus de los encabezados y antes del instanciamiento de la clase musico:
1 2 3 4 5 6

$Musico = new Musician(7); $musico7 = array_pop($Musico->getMusicianById()); echo "El Msico 7 es:".RTN; for($i=0; $j<count($musico7[$i]); $i++) echo $musico7[$i]." ";

En la lnea 1 se instancia la clase Musico, con una constante (7), luego se llama al mtodo getMusicianById que hace una consulta a la BD que retorna un usuario en particular (note que se utiliz una array_pop, esto es por que el mtodo REC_SET llamado en la clase musician retorna una matriz, como esta matriz es de una la, se sacar ese elemento (la) para manipularlo, de tal forma de trabajar con un arreglo unidimensional. Finalmente se recorren los datos por medio de un trivial for. Los resultados son:

Con esto se concluye la quinta aplicacin!

Manual PHP

58

Eduardo Saavedra A.

5.11

Sexta aplicacin en PHP (cont. Quinta)

UTILIZANDO PHP

5.11.

Sexta aplicacin en PHP (cont. Quinta)

En esta sexta aplicacin se mejorar la versin existente de la Quinta. Digamos que sera una versin 1.1 de la aplicacin anterior. Ahora, se lograr insertar datos en la base de datos por medio de un formulario HTML siguiendo el esquema clsico de:

1. Ingresar a la pgina con el formulario 2. Ingresar los datos al formulario 3. Pulsar el botn enviar 4. Procesar los datos enviados por medio de la variable POST 5. Mostrar un aviso de xito.

Figura 11: Conceptualizacin de proceso

Manual PHP

59

Eduardo Saavedra A.

5.11

Sexta aplicacin en PHP (cont. Quinta)

UTILIZANDO PHP

5.11.1.

Base de datos

Utilizaremos la misma base de datos anterior de msicos. Recordando el diagrama E-R:

1. El mismo modelo anterior:

Figura 12: Modelo Conceptual BD

Es sumamente importante saber la estructura de la base de datos al momento de programar, y sobre todo al insertar datos. Es requerido (por cualquier lenguaje) los nombres de los atributos donde se dejarn los datos y los mismos datos. Por esta razn muchas veces se ven estas situaciones en lugares de desarrollo:

Figura 13: Modelo Relacional pegado en la pared

Manual PHP

60

Eduardo Saavedra A.

5.11

Sexta aplicacin en PHP (cont. Quinta)

UTILIZANDO PHP

5.11.2.

Pasos de programacin

Inmediatamente se copiar todo el contenido de la aplicacin 5 a la actual. Para hacerlo, basta con crear el proyecto sixthApp y pegar el contenido sobre ella. Es posible alterar tambin la aplicacin 5 directamente, pero para el presente manual se considerar como un proyecto nuevo. Se agregar a la carpeta class, la clase basicClass.php. Ella contiene la sintaxis de varios objetos HTML.

1. Si se cre un nuevo proyecto, inmediatamente se debe cambiar en el archivo de conguracin lo siguiente:

De tal forma de concordar con la carpeta que se est utilizando desde el Sistema Operativo. 2. A partir de ahora se cambiar el nombre del archivo index.php a consulta.php. 3. Luego el archivo index se crear partir de 0.

(a) Nuevo archivo index.php

(b) Estructura del directorio

Figura 14: Situacin de archivos Manual PHP 61 Eduardo Saavedra A.

5.11

Sexta aplicacin en PHP (cont. Quinta)

UTILIZANDO PHP

4. Dentro del archivo index.php deber quedar el siguiente cdigo:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

<?PHP include(config/configSystem.php); include(config/header.php); include(api/commonLib.php); echo "Bienvenido, son las: ".date("H:i:s"). " del ".date("d-m-Y").DBLRTN; echo CREATE_LINK("consulta.php", "Ver consultas!", "style= font-size:12px; color:red"); include(config/footer.php); ?>

Las lneas 3, 4, 5 y 10 son las inclusiones de los archivos tpicos. En las lnea 7 se enva por pantalla un saludo al usuario, diciendo: Bienvenido, son las 00:00:00 del 31/02/1968 En ste caso se esta utilizando una funcin nativa de PHP llamada date, ella puede entregar valores de fecha y hora formateados con caracteres como se muestra en el ejemplo. Luego, en la lnea 8 se llama a la funcin CREATE_LINK esta funcin est alojada en el archivo commonLib.php y tiene 3 parmetros de entrada, de los cuales 2 son obligatorios, el primero es el archivo al cual se hace referencia (en este caso se hizo para la consultas.php), el segundo es para el texto que va a contener el link (Para este caso Ver Consultas!). Y nalmente el tercer parmetro (no obligatorio) es de conguracin (por ejemplo puede asignarse un elemento CSS aqu o algn parmetro conocido por el cdigo HTML del tag Anchor (<a></a>).

Manual PHP

62

Eduardo Saavedra A.

5.11

Sexta aplicacin en PHP (cont. Quinta)

UTILIZANDO PHP

5. Terminado lo anterior se crear un archivo nuevo llamado miFormulario.php


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

<?PHP include(config/configSystem.php); include(config/header.php); include(api/commonLib.php); require_once(class/musicianClass.php); require_once(class/connectDbClass.php); require_once(class/basicClass.php); $module = new MODULARTAB(); $bdy=$module->ADDINPUT(text,nombre,,,Nombre:).RTN; $bdy.=$module->ADDINPUT(text,apellido,,,Apellido:).RTN; $bdy.=$module->ADDINPUT(text,direccion,,,Direccion:).DBLRTN; $bdy.=$module->ADDINPUT(submit,apellido,Enviar,,); $bdy=$module->SET_FORM($bdy, form1,POST, procesa.php); echo $bdy; include(config/footer.php); ?>

Las primeras lneas son las de inclusin de bibliotecas, se agreg ahora la basicClass.php. En la lnea 10 se creo un objeto MODULARTAB (del archivos basicClass.php), este objeto contiene gran parte de los objetos HTML ms tipicos, desde tablas, hasta formularios. Para nuestro caso usaremos el objeto formulario. En lnea 12 se inicia la variable $bdy la cual contendr inicialmente el resultado del mtodo ADDINPUT de la clase MODULARTAB. ste mtodo acepta 6 atributos, de los cuales los 5 primeros son obligatorios: a) Es el tipo de objeto HTML a crear b) El nombre e ID del objeto a crear (identicador nico) c) Valor inicial del objeto. d) Atributos especiales (como CSS, estilos, etc). e) Etiqueta (lo que acompaa al formulario) f ) Posicin de la etiqueta. En nuestro caso de las lineas 12 a 14 Se crearon 3 objetos para ingreso de texto. En la lnea 15 se cre un boton de Submit, con este botn se podrn enviar los datos. Finalmente en la lnea 16 se llamo al mtodo SET_FORM, como parmetros tiene: a) Cuerpo del formulario a crear. b) Nombre nico del formulario c) Mtodo de envo de datos d) Archivo encargado de procesar los datos.

Manual PHP

63

Eduardo Saavedra A.

5.11

Sexta aplicacin en PHP (cont. Quinta)

UTILIZANDO PHP

Deben notar que la variable $bdy Se cre y luego fue concantenando su contenido anterior con el nuevo mediante el operador .=, as la variable $bdy se encargar de contener el cdigo HTML bruto que los mtodos del MODULARTAB retornarn. Finalmente se le asigna a la variable el valor del formulario con el contenido anterior de $bdy. Finalmente se imprime $bdy y el resultado es el siguiente:

Un simple formulario :). 6. Si probaramos el boton de envio del formulario, tendriamos como resultado un error 404, ya que la pagina a donde se va a procesar la informacion NO EXISTE. Por lo tanto ese es nuestro siguiente paso, se crear el archivo procesa.php Este archivo contendr simplemente por ahora un var_dump($_POST), esto mostrara los valores pasados pro el formulario en un arreglo llamado $_POST. El resultado debera ser algo as:

Se presiona el botn...

Manual PHP

64

Eduardo Saavedra A.

5.11

Sexta aplicacin en PHP (cont. Quinta)

UTILIZANDO PHP

Han de darse cuenta que el arreglo POST contiene los valores del formulario asociado a un arreglo de llaves, estas llaves son los nombres identicadores del formulario! (el 2do parmetro del ADDINPUT). Ahora hagamos algo interesante en el procesa.php, enviemos los datos al SGBD para que los ingrese a nuestra BD. Por cierto, es posible procesar los datos en el mismo archivo miFormulario.php dando ciertas condiciones... Pero es harina de otro costal. 7. Siguiendo la lgica de que los objetos establecen la comunicacin con la base de datos, nuestra clase Musician, ser la encargada de insertar los datos a travs del formulario, por lo tanto deberemos, adems, crear un mtodo que inserte datos en la BD. Mtodos creados en musicianClass.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

function addMusician($dataCol){ global $CFG; include($CFG->dirroot.api/musicianQueryLib.php); $dbCol = array(IDMUSICO,NOMBREMUSICO,APELLIDOMUSICO,DIRECCIONMUSICO); $dataCol = array($this->getMaxId()+1, $dataCol[0],$dataCol[1],$dataCol[2]); $out = $this->ConnectDB->INSERT_DB($CFG->prefix.MUSICO,$dbCol,$dataCol); return $out; }

function getMaxId(){ global $CFG; include($CFG->dirroot.api/musicianQueryLib.php); return array_pop(array_pop($this->ConnectDB->REC_SET($QUERY_INFO->MAX_MUSICIAN_ID))); }

Vamos lnea a lnea: Aceptaremos como parmetro un arreglo de datos, estos sern los que por formulario lleguen a la pgina procesa.php. Luego en las lneas 5 y 6 se hace lo de siempre. Las lneas 7 y 8 estn intimamente relacionadas, estos 2 arreglos sern los que sern aceptados por el mtodo INSERT_DB de la clase connectDB. Est mtodo INSERT_DB, es el que insertar los datos a la base de datos de forma nativa. Los parmetros necesarios son: a) Tabla a la cual hacer la insercin. b) Columnas de la BD a la cual insertar datos c) Datos que sern pasados a la tabla. El orden del arreglo de columnas de la tabla y de datos debe ser IGUAL, si no, se insertarn datos por cualquier lado de la tabla.

Manual PHP

65

Eduardo Saavedra A.

5.11

Sexta aplicacin en PHP (cont. Quinta)

UTILIZANDO PHP

Finalmente se retorna el resultado de INSERT_DB, este dir true si la consulta fue realizada con exito y false si no. En la lnea 8 se llam al mtodo getMaxID(), este mtodo creado un poco mas abajo (lnea 16) ser el encargado de descubrir el mayor ndice de la columna ID hasta el momento, de tal forma de que 2 msicos no tengan el mismo ID. Para ello ser necesario crear un SQL en el archivo musicianQueryLib.php del siguiente tipo:
1

SELECT MAX(IDMUSICO) FROM Musico

Se le deben realizar 2 array_pop debido a que el retorno es un valor introducido en una matriz. 8. Con los mtodos listos volvamos a procesa.php. Agregaremos entonces el siguiente cdigo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

<?PHP include(config/configSystem.php); include(config/header.php); include(api/commonLib.php); require_once(class/musicianClass.php); require_once(class/connectDbClass.php); require_once(class/basicClass.php);

echo CREATE_LINK("consulta.php", "Ver consultas!", "style=font-size:12px; color:red").DBLRTN;

$musicoNuevo = new Musician(); $dataCol = array($_POST["nombre"], $_POST["apellido"],$_POST["direccion"]); $musicoNuevo->addMusician($dataCol); include(config/footer.php); ?>

Como se han de dar cuenta, se instanci un objeto Musician (Lnea 15) y luego se llam al mtodo de insercin con los datos del $_POST (Lnea 16). Tambin se cre el mismo link del index.php, para ver las consultas al sistema. Y se agreg un link al index.php, que referencia al formulario:
1 2

echo CREATE_LINK("miFormulario.php", "Ingresar Musico!", "style=font-size:12px; color:red");

Manual PHP

66

Eduardo Saavedra A.

5.11

Sexta aplicacin en PHP (cont. Quinta)

UTILIZANDO PHP

9. Ahora solo queda probar la aplicacin y a cruzar los dedos :P.

Figura 15: Estructura de archivos nal!

Veamos el ujo:

Figura 16: Se ingresa al sitio

Manual PHP

67

Eduardo Saavedra A.

5.11

Sexta aplicacin en PHP (cont. Quinta)

UTILIZANDO PHP

Figura 17: Se presiona ver consultas

Manual PHP

68

Eduardo Saavedra A.

5.11

Sexta aplicacin en PHP (cont. Quinta)

UTILIZANDO PHP

Figura 18: Se vuelve y presiona Ingresar msico

Figura 19: Se llena el formulario

Manual PHP

69

Eduardo Saavedra A.

5.11

Sexta aplicacin en PHP (cont. Quinta)

UTILIZANDO PHP

Figura 20: Se presiona enviar

Figura 21: Se revisa nuevamente Ver consultas!

Tal y como se puede ver, la mini aplicacin funciona.

Manual PHP

70

Eduardo Saavedra A.

You might also like