Está en la página 1de 70

PHP Crash Course Revisión: 2.

1 Fecha compilación:
Eduardo Saavedra A.

27 de noviembre de 2008

1

Índice
1. Introducción 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. Instalación Apache - PHP - MySQL 2.1. Windows . . . . . . . . . . . . . . . . . . 2.1.1. Probando la instalación de Apache . 2.1.2. Probando la instalación de MySQL 2.2. Linux . . . . . . . . . . . . . . . . . . . . 2.2.1. Probando la instalación 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. Inserción de Datos . . . . 4.3.3. Generación de consultas . 4.3.4. Creación de vistas . . . . 5. Utilizando PHP 5.1. Variables . . . . . . . . . . . . 5.2. Arreglos . . . . . . . . . . . . 5.2.1. Declaración “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 aplicación en PHP . . 5.6.1. Pasos . . . . . . . . . 5.6.2. Funcionamiento . . . . 5.7. Segunda Aplicación en PHP . 5.7.1. Pasos . . . . . . . . . 5.7.2. Funcionamiento . . . . 5.8. Tercera aplicación en PHP . . 5.8.1. Pasos . . . . . . . . . 5.9. Cuarta aplicación en PHP . . . 5.9.1. Pasos . . . . . . . . . 5.10. Quinta aplicación en PHP . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ÍNDICE

ÍNDICE

5.10.1. Base de datos . . . . . . . . . . 5.10.2. Pasos de programación . . . . . 5.11. Sexta aplicación en PHP (cont. Quinta) . 5.11.1. Base de datos . . . . . . . . . . 5.11.2. Pasos de programación . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

47 50 59 60 61

Manual PHP

3

Eduardo Saavedra A.

Actualmente existen muchas opciones para satisfacer necesidades de aplicaciones “online”. Las diferencias de las 2 versiones son mejoras en torno a su orientación a objetos. gran acoplamiento de código y su poca cohesión. uso de clases y métodos. PHP no es la herramienta absoluta ni la mejor para seguir buenas “prácticas” de la Ingeniería de Software.org PHP on Trax: http://www. XAMPP.phpontrax. PHP. etc. Por supuesto PHP no se queda atrás. 1..org CakePHP: http://www. Apache. esta da los conocimientos fundamentales para la comprensión general del Software del tipo Web. en su últimas versiones se trata de potenciar al máximo su orientación a objetos. Las versiones estables actuales de PHP en sus dos ramas son la 5 y 4. Introducción La creciente demanda de las aplicaciones Web requiere de la atención de todo profesional relacionado con las tecnologías de la información.cakephp. entre otras. siguen evolucionando para subyugar el problema que posee PHP inherentemente. ASP. mayor soporte para distintos SGBD. Todo el contenido del presente manual se fundamenta en herramientas de libre uso tales como. sin embargo. en base a la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador danés-canadiense Rasmus Lerdorf en el año 1994 para mostrar su Manual PHP 4 Eduardo Saavedra A. Existen además varios frameworks para PHP.1. SQL Server Express. MySQL. Un poco de Historia PHP fue originalmente diseñado en Perl.1 INTRODUCCIÓN 1. entre los más utilizados y cotizados por eliminar los problemas señalados están los frameworks de MVC. Su tendencia al desorden.com Con ellos se pueden mejorar tiempos de desarrollo para crear grandes aplicaciones pudiendo realizar integración rápida y eficiente. Ruby on Rails. Entre los mas conocidos se tienen: symphony: http://www. Algunas como JSP.. .symfony-project. Sin duda alguna. Web-Service (SOAP). etc.

1. Desarrollar un pequeño software de ejemplo. Bueno.1. El 8 de junio de 1995 fue publicado "Personal Home Page Tools"después de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI. en general a todos. Inclusive durante este tutorial se ocupará la metodología de programación que él me mostró.3. por supuesto. Objetivos El presente manual tiene como propósito: El dar a conocer la herramienta de programación Web PHP.2. como la cantidad de tráfico que su página web recibía. su sintaxis y metodología de programación. Hernán Roa R. A Pd. . Gracias a él pude conocer conceptos mas acabados sobre este entretenido y versátil lenguaje de programación.. Entregar información de instalación de los servicios para “Levantar” un servidor capaz de entender PHP.) Y. Agradecimientos Primero que todo. Mostrar la interconcetividad con distintos motores de base de datos. Manual PHP 5 Eduardo Saavedra A.. se agradecerá al que pueda aportar con más conocimiento para enriquecer el presente documento. Viva LTEX:). 1.2 Objetivos 1 INTRODUCCIÓN curriculum vitae y guardar ciertos datos. debo agradecer a mi mentor en el uso “formal” de PHP. . Dar a conocer herramientas de desarrollo.

1.4 Herramientas a Utilizar 1 INTRODUCCIÓN 1. .4. Herramientas a Utilizar XAMPP: Descargar XAMPP MySQL Adminstrator: Descargar MySQL Administrator Easy Eclipse: Descargar Easy Eclipse Manual PHP 6 Eduardo Saavedra A.

MYSQL 2.PHP .apachefriends. .2 INSTALACIÓN APACHE . no se tratará en el presente (por ahora). La versión extendida de la instalación de cada modulo por separado. Instalación Apache .6.PHP .8 Manual PHP 7 Eduardo Saavedra A.MySQL Esta sección tratará la instalación de un servidor capaz de interpretar lenguaje PHP y ser mostrado a los usuarios como página web. Versión utilizada: 1.org) llamado XAMPP. Así que para este paso se requerirá el pack que ofrece Apache Friends (www. Está para versiones Windows y Linux. Existen varios “Packs” para realizar una instalación mucho mas amigable y rápida.

1. donde se dará a elegir el idioma a utilizar: Otra pantalla de bienvenida. doble click en el ícono de instalación de XAMPP Figura 1: Icono Esta será la pantalla inicial..MYSQL 2. Windows Para comenzar. solo “next”: Manual PHP 8 Eduardo Saavedra A. .1 Windows 2 INSTALACIÓN APACHE .PHP ..2.

PHP .MYSQL Se escoge la ruta de instalación.) En el orden respectivo pregunta: Manual PHP 9 Eduardo Saavedra A.1 Windows 2 INSTALACIÓN APACHE .2. generalmente C:. pero puede ser cualquiera (ojalá un disco que no sea el de la instalación de windows. ..

para así. Comienza la instalación: Manual PHP 10 Eduardo Saavedra A. solo levantar los servicios cuando se requiere.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.2.PHP . .1 Windows 2 INSTALACIÓN APACHE .

PHP se encuentra incluido como módulo de PHP. aquí se pueden iniciar los servicios.2.MYSQL Finaliza la instalación: Seleccionar “Sí” para ver el panel: Este panel es el principal de XAMPP. . así que si se quiere utilizar PHP solo basta con iniciar Apache.1 Windows 2 INSTALACIÓN APACHE . detenerlos o reiniciarlos. Manual PHP 11 Eduardo Saavedra A.PHP .

inicie el servicio APACHE tal y como se muestra en la figura 8. Si se muestra lo siguiente: Figura 2: Panel de Control XAMPP y Servicios Manual PHP 12 Eduardo Saavedra A.2.1 Windows 2 INSTALACIÓN APACHE .1. .MYSQL 2. Probando la instalación de Apache Luego de haber instalado XAMPP.1.PHP .

. Probando la instalación de MySQL Análogamente para probar si MySQL esta efectivamente activo se debe hacer click sobre el botón “start” de MySQL en el panel de control de XAMPP. proceda a abrir su navegador web (como Mozilla.2.1 Windows 2 INSTALACIÓN APACHE . Manual PHP 13 Eduardo Saavedra A. Internet Explorer. Chrome.MYSQL Quiere decir que se inicio el servicio correctamente.2. por lo tanto ya está listo el servidor con PHP . Opera.). 2.1 Si todo ha ido correctamente se debería desplegar la siguiente página: Esta última página esta creada en PHP.0.1. etc) e ingrese la siguiente dirección: http://127.0. Y para corroborar esto.PHP .

1 Windows 2 INSTALACIÓN APACHE . ingresar a la siguiente url: http://127.0.0. se podrá ver el panel de control de la base de datos con el cliente phpmyadmin. Manual PHP 14 Eduardo Saavedra A. . en un momento debería aparecer en palabras marcadas con verde “Running”.MYSQL Si todo va bien. Si se ingresa correctamente.PHP . para probar si MySQL funciona completamente. igual que Apache: Ahora.2.1/phpmyadmin.

PHP . Con el archivo tar.8a.6. deben ejecutar el siguiente comando: tar xvfz <ruta tar.2.gz a su disposición. Linux Aunque no lo parezca la instalación de XAMPP en Linux es sumamente sencilla. de forma particular sería: sudo tar xvfz xampp-linux-1.gz><ruta destino> En general se instala bajo el directorio /opt. por lo tanto.gz -C /opt Manual PHP 15 Eduardo Saavedra A.MYSQL 2.2 Linux 2 INSTALACIÓN APACHE .tar. .2.

PHP .MYSQL Este comando “Descomprimirá” en la ruta dada los archivos binarios del XAMPP junto con sus directorios básicos.2. 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. (Ojo. . deben estar como usuario privilegiado root).2 Linux 2 INSTALACIÓN APACHE .

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.MYSQL Este comando debe ser ejecutado como root.2.PHP . pueden proceder a iniciar los servicios de apache y mysql.2 Linux 2 INSTALACIÓN APACHE . Con esto listo. .

2.2

Linux

2

INSTALACIÓN APACHE - PHP - MYSQL

2.2.1.

Probando la instalación 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

2

INSTALACIÓN APACHE - PHP - MYSQL

Este comando(nmap) permite ver que puertos están abiertos, y que servicios están 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

2

INSTALACIÓN APACHE - PHP - MYSQL

Con esto se concluye la instalación sobre Linux :).

Manual PHP

20

Eduardo Saavedra A.

Utilizando Apache Para utilizar Apache con PHP en la distribución de XAMPP definida anteriormente es necesario hacer uso de la carpeta htdocs del directorio raíz de XAMPP. Este Apache por defecto detecta los archivos index.3 UTILIZANDO APACHE 3. Luego la idea es que en el index. existan las referencias o links respectivos para visitar los demás fuentes de los directorios del sitio.0.1/aplicacion lo que el usuario verá será la fuente del archivo index. . inmediatamente se verá la estructura de directorios de la carpeta en cuestión.0. Esta carpeta es la que queda a publica vision de los clientes que se conecten al servicio. por defecto como propietarios de directorio. que si un usuario ingresa al sitio web http://127. Manual PHP 21 Eduardo Saavedra A. Si no existe un index. es decir.

Utilizar MySQL Administrator (Cliente Instalable). Clientes WEB La desventaja de los clientes Web es que utilizan recursos de los servidores para poder funcionar. es bastante poderosa para el manejo de bases de datos MySQL. Utilizando MySQL Para utilizar la instalación de MySQL de XAMPP. Utilizar Sql Lite (Cliente Web). Visión de modelos. Es recomendable para operaciones complejas utilizar los clientes de Escritorio. Manual PHP 22 Eduardo Saavedra A. De todas maneras. . Borrado de elementos. 4. Son un poco menos versátiles en cuanto a “usabilidad” 4.2. Generadores de BackUps. Por ejemplo entre las operaciones básicas podemos encontrar: Creación de bases de datos. existen varias alternativas mediante clientes: Utilizar phpMyAdmin (Cliente Web). Clientes de Escritorio MySQL Administrator es una aplicación diseñada por los mismos creadores de MySQL.1.4 UTILIZANDO MYSQL 4. y para operaciones mas sencillas y triviales los clientes WEB. Inserción de datos. las operaciones realizables en el SGBD mediante estos 2 tipos son deben ser idénticas.

4. y luego un modelo físico mediante una herramienta CASE como Power Designer. 4. .4. Para cargar este script con la estructura de la base da datos es necesario realizar los siguientes pasos: 1.3. utilizando el usuario y contraseña correspondiente. Después ingresar a la base de datos. se procede a exportar la base de datos a un script DDL de MySQL.3 Uso de MySQL Administrator 4 UTILIZANDO MYSQL Recomiendo esta aplicación para realizar gestiones sobre bases de datos mas complejas. Abrir MySQL Administrator: 2. 3.1.3. Luego seleccionar el item “Restore” Manual PHP 23 Eduardo Saavedra A. Uso de MySQL Administrator Creacion de base de datos Habiendo creado un modelo E-R.

(Opcional) Si se ve la pestaña de “Restore content” presionando el botón de analizar contenido. 4. basta con marcar la opción de “Ignore Errors” (Omitir Errores). . Manual PHP 24 Eduardo Saavedra A. Para evitar posibles errrores. esto es por que el DDL se generó con una aplicación externa y no con el mismo MySQL Adminstrator. Generalmente el archivo puede tener errores de comptabilidad de código. 5. Cargar el archivo DDL.3 Uso de MySQL Administrator 4 UTILIZANDO MYSQL Se puede ver que solo está habilitada la sección de abrir archivo.4. podran verse las tablas a generar de la base de datos.

3 Uso de MySQL Administrator 4 UTILIZANDO MYSQL 6. Manual PHP 25 Eduardo Saavedra A. (cabe destacar que un “Schema” es el equivalente a una base de datos en MySQL). . Al Presionar “Start Restore” debería aparecer una ventana de progreso del archivo: Figura 3: Bases de datos: Catálogos 7.4. Finalmente para ver si la base de datos fue creada se puede revisar en la sección de catálogos la existencia de ésta.

.3 Uso de MySQL Administrator 4 UTILIZANDO MYSQL 4.3. Inserción de Datos Para insertar datos sobre las tablas es bastante cómodo.2. Acceder a los catálogos (ver figura: 3) 2.4. Luego se puede escribir según los tipos de datos designados a las columnas por medio del botón “edit” en la parte inferior central de la pantalla de edición. 3. Esto se puede realizar mediante los siguientes pasos: 1. Manual PHP 26 Eduardo Saavedra A. Dentro del Esquema de la base de datos presionar ver las propiedades de una tabla con el botón derecho del mouse y acceder a la opción “Editar Tabla”.

Generación de consultas Para confeccionar consultas pueden dirigirse a la ventana de edición de datos. basta realizar un Query (que funcione!) y en la barra de menu superior acceder a Query→Create View From Select.3 Uso de MySQL Administrator 4 UTILIZANDO MYSQL 4. para ello. Creación de vistas Es posible hacer vistas mediante la misma ventana de edición de datos. . En el extremo inferior derecho hay comandos y funciones de ayuda de MySQL.3.4. Manual PHP 27 Eduardo Saavedra A. en ella se encuentra una ´´miniconsola” en la parte superior. 4.3.4.3.

3 Uso de MySQL Administrator 4 UTILIZANDO MYSQL Manual PHP 28 Eduardo Saavedra A.4. .

es necesario el manejo de arreglos. . como todo lenguaje. el compilador pensará que se trata de utilizar una función o procedimiento. pero a veces puede ser adverso cuando se es desordenado. En PHP existen variadas funciones asociados a ellos. arreglos. es decir que. esto es un elemento bueno. Para definir un String: $string=’Hola’. un arreglo puede contener. enteros. Por ejemplo si se desea definir una variable que contenga un numero basta con: $numero=9. Con esto podemos concluir que PHP detecta de forma “inteligente” los tipos de variable evitando así definiciones. 5. Si no se utiliza. además. Los arreglos pueden contener cualquier tipo de variable. flotantes. Manual PHP 29 Eduardo Saavedra A. Arreglos Por supuesto. Utilizando PHP PHP tiene una gran semejanza al lenguaje C y C++. Variables En PHP el uso de “Tipos” de variable es casi inexistente. su declaración inicial puede ser muy variada. Para definir un char: $char=a. Como se puede apreciar PHP es un lenguaje muy muy permisivo en cuanto al uso de los tipo de variable.1. repetitivas o innecesarias.5 UTILIZANDO PHP 5. El signo de peso($) es OBLIGATORIO para definir cualquier tipo de variable!.2. 5. etc. strings.

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. Funciones de arreglos Existen muchas funciones para el tratamiento de arreglos.1. dato3). Declaración “Formal” La declaración formal de un arreglo vacío en PHP es la siguiente: $nombreArreglo = array(). entre algunas podemos encontrar: array_push(arreglo. Por ejemplo si se necesita el tercer elemento del arreglo anterior: echo “El tercer elemento es!”. en otro caso False. . in_array(valor.2. valor_a_ingresar) : void Esta función ingresa un elemento al final del arreglo array_pop(arreglo) : elemento Esta función saca el primer elemento del arreglo y lo retorna.2 Arreglos 5 UTILIZANDO PHP 5.2.5. Si deseamos iniciarlo con datos: $nombreArreglo = array(dato1.2. shuffle(arreglo) : void Esta función desordena de forma aleatoria los elementos del arreglo Manual PHP 30 Eduardo Saavedra A. count(arreglo) : int Esta función retorna la cantidad de elementos del arreglo. (La palabra echo es para imprimir en “pantalla”) 5.$nombre[2]. dato2. arreglo) : boolean Esta función retorna True si se encuentra valor en arreglo.

}else{ Rutina a condicionar en otro caso a la condición.3 Sentencias de Control 5 UTILIZANDO PHP 5.5. case (Valor posible de variable de control): Tercera Rutina a condicionar break. .3. } ?> While <?PHP while(condición){ Rutina a iterar hasta que se roma pa condición inicial } ?> For Manual PHP 31 Eduardo Saavedra A. case (Valor posible de variable de control): Segunda Rutina a condicionar break. Sentencias de Control Como en todo lenguaje existen (entre otros): If y Else <?PHP if(condición){ Rutina a condicionar. } ?> Switch y Case <?PHP switch(variable de control){ case (Valor posible de variable de control): Primera Rutina a condicionar break.

} ?> 5.incremento variables){ Rutina a iterar hasta que se roma pa la(las) condición(es) inicial(es). ... simplemente se confeccionan de la siguiente forma: nombre_de_funcion($parametro1.5. condiciones..$parametroN){ } Si se utiliza la palabra clave return dentro de una función.) Manual PHP 32 Eduardo Saavedra A. esta se quiebra (break) y retorna lo que se necesite (idealmente una función debe retornar un solo tipo de variable. Funciones Las funciones se definen sin tipo. $parametro2.4...4 Funciones 5 UTILIZANDO PHP <?PHP for(inicio variables..

Esta sumamente integrada con PHP y con los servicios debases de datos y Apache.5 Entorno de desarrollo 5 UTILIZANDO PHP 5. se utilizará Eclipse.org Cada uno tiene sus cualidades. Manual PHP 33 Eduardo Saavedra A. La versión de Eclipse a usar es la “Easy Eclipse”. incluso programas tan básicos como notepad podrían ser útiles. Por lo tanto para programar en PHP se recomienda: DreamWeaver: http://www. . sin embargo por capricho del autor.netbeans.5.org Eclipse: http://www.5.com NetBeans: http://php. sin embargo la idea es agilizar y saber que es lo que efectivamente se esta haciendo.easyeclipse.adobe. No así Netbeans u otros. ésta es la misma versión que viene incorporada con la distribución Fedora Core de Linux. Entorno de desarrollo Existen variadas alternativas.

5. solamente se debe recordar donde se asignará el worskpase de eclipse. de que si se está trabajando con PHP. Figura 4: Easy Eclipse en detalle Manual PHP 34 Eduardo Saavedra A.5.5 Entorno de desarrollo 5 UTILIZANDO PHP 5. Es recomendable. dejar el directorio htdocs como la carpeta de trabajo de Eclipse. Easy Eclipse PHP La instalación es bastante sencilla. .1.

Hola Mundo! Bien.5.php Manual PHP 35 Eduardo Saavedra A. La idea.6. éste debe compilar e interpretar el código fuente de lo solicitado. 5. Dentro de este proyecto. (a) Nuevo proyecto (b) Asignación de nombre Figura 5: Creación de un proyecto 2. Pasos 1.1.. Primera aplicación en PHP Como es de esperar la primera aplicación será. mostrando al usuario el resultado final. la forma de trabajar de PHP es que cada vez que un cliente solicite una página al servidor.6.6 Primera aplicación en PHP 5 UTILIZANDO PHP 5. crear un nuevo fuente PHP llamado index. es que el usuario NUNCA deba ver el código fuente de una aplicación PHP.. . En Eclipse creamos un nuevo proyecto PHP con nombre primerApp.

Luego. hay que cerciorar de que Apache esté activo (ver figura: 2) 6.6 Primera aplicación en PHP 5 UTILIZANDO PHP (a) Nuevo archivo fuente (b) Asignación de nombre Figura 6: Creación de un archivo 3.1/primerApp 7.0. ir al navegador web e ingresar al sitio http://127. 5. además es posible realizar concatenaciones de string constantes (como la del ejemplo) y variable.0.5. En el archivo index. ?> Esto hará que se imprima. como salida en código HTML. el texto “Hola Mundo”.php. guardar el proyecto. La función echo es útil para estos fines. Para probar si funciona. 4. En caso de que Apache esté efectivamente “andando”. . Se debería ver una página con el siguiente contenido: Manual PHP 36 Eduardo Saavedra A. escribir las siguientes sentencias: 1 2 3 4 5 <?PHP echo ’Hola Mundo!’.

5. Funcionamiento Manual PHP 37 Eduardo Saavedra A.6. .2.6 Primera aplicación en PHP 5 UTILIZANDO PHP 5.

se utilizan alguna de las siguientes funciones: include(archivo) require(archivo) require_once(archivo) Cada uno con distintas características. En éste escribir el siguiente código: Manual PHP 38 Eduardo Saavedra A. Para llamar a estas funciones desde otro archivo fuente php. hemos creado dos funciones que hacen exactamente lo mismo (era para mostrar los 2 típicos formatos utilizados en condiciones). 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. } function es_dos2($numero){ return ($numero %2==0)?true:false. Segunda Aplicación en PHP La segunda aplicación a programar será una que utilice funciones para procesar ciertos datos: 5.php 6.7. 5.5. } ?> Con esto. Ahora.7. guardar el archivo. Pasos 1. crear un nuevo fuente PHP llamado funciones. Dentro de este proyecto. En Eclipse creamos un nuevo proyecto PHP con nombre secondApp. En el archivo funciones. Luego. else return false. 2.7 Segunda Aplicación en PHP 5 UTILIZANDO PHP 5. . los más utilizados son el requiere_once e include.php.1. 4. crear otro archivo llamado index.php 3.

1/secondApp 9.php’). . Finalmente según el valor que tome la variable “valor” de la línea 4 se imprimirá en pantalla “Es par” o “No es Par” 7.5.2. Para probar si funciona.0. En caso de que Apache esté efectivamente “andando”. Funcionamiento Manual PHP 39 Eduardo Saavedra A. Se debería ver una página con el siguiente contenido: 5. if(es_dos2($valor)){ echo ’Es par!’.7 Segunda Aplicación en PHP 5 UTILIZANDO PHP 1 2 3 4 5 6 7 8 9 10 11 12 <?PHP require_once(’funciones.0. } else { echo ’No es par :( !!)’.7. ir al navegador web e ingresar al sitio http://127. } ?> Notar que en la línea 3 se hizo referencia al archivo que contenía las funciones!. todo mediante un requiere_once. $valor=2. hay que cerciorar de que Apache esté activo (ver 2) 8.

Además se hará referencia al uso de headers y footers.php Figura 7: Estructura de archivos final 6. Pasos 1.php 4. Luego en el archivo header.php dejaremos el siguiente código: 1 2 3 4 5 6 7 8 <?PHP echo’ <html> <body>’ .8. Dentro de este proyecto. Tercera aplicación en PHP En la tercera aplicación se verá el uso de ciclos y arreglos.5. . uno llamado footer. En Eclipse creamos un nuevo proyecto PHP con nombre thirdApp. ?> Manual PHP 40 Eduardo Saavedra A. api y config respectivamente 3.8 Tercera aplicación en PHP 5 UTILIZANDO PHP 5. 5. Dentro de la carpeta api crear el archivo commonLib.php 5. algo sumamente básico en la creación de sitios Web dinámicos. creamos 2 carpetas.1. Crear en la raíz del proyecto el index. Dentro de la carpeta config crear 2 archivos php. 2.8.php y otro header.

$i++){ echo(’ <tr> <td> ’. for($i=0.php se escribirá: 1 2 3 4 5 6 7 8 9 10 <?PHP require_once(’api/commonLib. .’El 3’).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). Manual PHP 41 Eduardo Saavedra A. En el archivo commonLib. echo(’<table border="1">’). por lo tanto se ahorra la sobreescritura de código. $i<$cantidad. include(’config/header.php’). 7.8 Tercera aplicación en PHP 5 UTILIZANDO PHP Esto imprimirá en HTML los tags de inicio de un sitio Web.$data[$i].5. } ?> Con esto definiremos una función que creará una tabla HTML en que cada fila contendrá un elemento del arreglo pasado por parámetro. CREATE_TABLE($datos). En el archivo footer.’El 2’.’ </td> </tr> ’). 9.php’). $datos=array(’El 1’. Finalmente en el archivo index. } echo(’</table>’).php dejaremos el siguiente código: 1 2 3 4 5 6 7 8 <?PHP echo ’</body> </html>’. ?> Esto imprimirá en HTML los tags de fin de un sitio Web. 8. La idea de usar un footer y un header es que ellos serán llamados en todas las páginas diseñadas.

Manual PHP 42 Eduardo Saavedra A.8 Tercera aplicación en PHP 5 UTILIZANDO PHP 11 12 13 include(’config/footer. Note como se llaman a las funciones desde la commonLib y el código HTML del header y footer. y luego se llamará a la función CREATE_TABLE de la commonLib que fue referenciada en la linea 3. ?> Esto define un arreglo llamado datos (línea 7).5.php’). estos dos últimos en las líneas 4 y 11 respectivamente. .

9. al mas puro estilo Java.9. 1 2 3 4 5 6 7 <?PHP class USER{ private $userId. Cuarta aplicación en PHP La cuarta aplicación tendrá como propósito generar una aplicación un poco más compleja utilizando clases. footer y commonLib) de la aplicación 3 junto con sus directorios respectivos (api. métodos y usos de atributos. y dentro de este crear el archivo fuente userClass. . Pasos 1. El propósito será utilizar esta básica clase para mostrar su funcionamiento respectivo a los constructores.5. La estructura de directorios dene quedar de la siguiente forma. y 5 métodos incluyendo a su constructor. 3. config) 2.1. Manual PHP 43 Eduardo Saavedra A. En la clase “userClass” definiremos 3 variables. public $userPhone. Utilizar los archivos (header. 5.php. private $userName. Figura 8: Estructura de archivos final 4.9 Cuarta aplicación en PHP 5 UTILIZANDO PHP 5. Crear el directorio class en el proyecto.

21. 17. encontramos el constructor. $arreglo_de_users=array().php’). ellas se crearon solo a modo de ejemplo. El archivo index. $user1=new USER(1).5. 13. nótese que el constructor es una función que lleva EL MISMO NOMBRE que la identificadora de la clase.php’). las variables publicas. las variables públicas no requieren de forma obligatoria estas funciones. las variables privadas solo pueden ser accedidas desde el mismo objeto instanciado.9 Cuarta aplicación en PHP 5 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>". $user3=new USER(3). pueden ser utilizadas por cualquier objeto instanciado o rutina fuera del objeto original. Luego dentro de la clase se pueden crear variables públicas o privadas (líneas 4. $user2=new USER(2). 25) son simples getters y setters de las variables a utilizar. } function set_phone($phone){ $this->userPhone=$phone. 5. } function get_phone(){ return $this->userPhone. $this->userId = $userId. Seguido de las variables. 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 rápida y efectiva. array_push($arreglo_de_users. } function get_name(){ return $this->userName.php’). Las siguientes funciones (líneas 8. y por otro lado. Cabe destacar el uso del puntero “$this” su uso es idéntico a java. } function set_name($name){ $this->userName=$name.php contendrá el siguiente script: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?PHP require_once(’class/userClass. 5 y 6). Manual PHP 44 Eduardo Saavedra A. include(’config/header. (línea 8).$user1). } } ?> Siempre las clases en PHP se inician mediante la palabra clave “class” (línea 2) seguida del nombre identificador de la clase. require_once(’api/commonLib. por supuesto. . Como en todo lenguaje de programación de alto nivel.

php’). ?> Nuevamente en las primeras líneas se llaman a las inclusiones de los archivos fuentes externos con funciones. 9 y 10 se crean 3 objetos “USER”. ’Teléfono: ’. . Luego se comienzan a utilizar las funciones (métodos) de los objetos (set_name y set_phone respectivamente) En la línea 28 se realiza un for para llamar iterativamente a los métodos get de los objetos instanciados inicialmente. su parámetro de construcción es un número identificador. $arreglo_de_users[0]->set_name("Pedrito"). Manual PHP 45 Eduardo Saavedra A. array_push($arreglo_de_users. $i++){ echo ’Nombre:’. $arreglo_de_users[1]->set_name("Juanito"). $arreglo_de_users[0]->set_phone("111111"). $arreglo_de_users[1]->set_phone("222222"). (era posible hacerlo mediante un simple array($dato1. En la línea 3 se hace referencia al archivo de la clase userClass.$arreglo_de_users[$i]->get_name(). $dato2. $arreglo_de_users[2]->set_name("Miguelito"). $arreglo_de_users[2]->set_phone("333333"). En la línea 12 se crea un arreglo. } include(’config/footer. echo ’<BR><BR>’.$arreglo_de_users[$i]->get_phone(). De la línea 14 a 16 se realizan “push” de los objetos al arreglo. cuando se tienen clases en archivos distintos se deben llamar de esa forma.5.$user2). En las líneas 8. $dato3).’ ’ .9 Cuarta aplicación en PHP 5 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. $i<count($arreglo_de_users).’<BR>’. for ($i=0. Finalmente se cierra el archivo con la inclusión del footer y del script.$user3). sin embargo se quería mostrar el uso de la función “array_push”).

9 Cuarta aplicación en PHP 5 UTILIZANDO PHP El resultado que se debería mostrar es: Manual PHP 46 Eduardo Saavedra A.5. .

consistente en músicos y cuando ellos utilizan instrumentos. 1. .1. 5.10 Quinta aplicación en PHP 5 UTILIZANDO PHP 5. Quinta aplicación en PHP En esta aplicación se realizará un programa que se comunique con una base de datos MySQL. por medio de un Dump hecho con MySQL Administrator. por ello se pide por favor leer esto con calma y entender a cabalidad de lo que se esta exponiendo. La base de datos a utilizar se adjuntara al presente manual. EL modelo físico representativo de la situación: Manual PHP 47 Eduardo Saavedra A.10. Para ello se proveerá de una clase PHP que establece la comunicación con la base de datos previo a una configuración bastante rutinaria. Ésta aplicación será un poco mas compleja que las anteriores. Base de datos Se utilizará un ejemplo simple de 3 tablas.10.5. Nuestro modelo de datos es el siguiente: Figura 9: Modelo Conceptual BD 2.

3. Luego se ingresará a MySQL Administrator y se realizará un restore del script generado (ver sección 4. . Como el diseño fue hecho en Power Designer.2) Manual PHP 48 Eduardo Saavedra A.3.10 Quinta aplicación en PHP 5 UTILIZANDO PHP Figura 10: Modelo Físico BD 3.5.1 y 4. 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 sección del modelo físico! [diapositiva de Ayudantía 3]) 4.

Ahora se insertarán datos con el segundo script adjunto (insert_Musicos.10 Quinta aplicación en PHP 5 UTILIZANDO PHP 5. 6. Manual PHP 49 Eduardo Saavedra A. .).5.sql). Si todo está en orden. la base de datos debería estar creada y con algunos datos: Ya con todo preparado se puede comenzar a programar una aplicación .

php en la carpeta config commonLib. Pero lo único que se logra con esto.10 Quinta aplicación en PHP 5 UTILIZANDO PHP 5. 4. esta clase será la encargada de mediar entre la base de datos y los archivos fuentes de la página.php dentro de la carpeta config. Luego crear el archivo fuente configSystem. 6. 1. 5.. .php en la raíz del proyecto. es dejar un código inmantenible e inentendible. funciones.2. Pasos de programación Primero se debe dejar claro que lo que se presentará a continuación es una forma relativamente “ordenada” de programar en PHP. etc. incluyendo clases. SQL’s.php en la carpeta class. Es posible. dejar todo el código fuente en un solo archivo. éste contendrá todos los datos de configuración estática de nuestra aplicación.php en la carpeta config header. HTML. Ahora deje el archivo adjunto connectDbClass. cabeceras.10. por ejemplo.. La estructura de directorios y archivos quedará de la siguiente forma: Manual PHP 50 Eduardo Saavedra A. como servidor .php en la carpeta api 3.5. Finalmente crear el archivo index. Primero dejaremos la estructura de directorios de la siguiente forma: 2. Al igual que en los 2 ejercicios anteriores se usarán los archivos: footer.

0. ’UTF-8’.1 referenciará a la base de datos. ’H://xampp/htdocs/’.$CFG->pname. 5 : dbhost: es un string conteniendo la IP del servidor de base de datos. define(’TAB’. 4 : dbtype: es un string que contendrá el tipo de base de datos a utilizar.0.&nbsp. ’http://127. define(’DBLRTN’. en general este estará en su propio equipo. ’root’.5. para nuestro caso ella sera MUSICA.&nbsp.0.1/’.’<br />’). false. ?> Entonces línea a línea el código representa: 2 : Con el comando unset se “Resetean” los valores de la variable CFG.$CFG->pname. ’127.’&nbsp.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).0.0. $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’.’. la clase connectDbClass soporta: SQL Server 2000.’<hr />’). Ingresar el siguiente código en el archivo configSystem. por lo tanto la dirección 127. define(’LNRTN’. Manual PHP 51 Eduardo Saavedra A.0.’). . ’Eduardo Saavedra A.1’. MySQL y postgres. ’fifhtApp/’.0.’<br /><br />’). ’’. 6 : dbname: es un string que contiene el nombre de la base de datos a utilizar.0.10 Quinta aplicación en PHP 5 UTILIZANDO PHP 7. define(’RTN’.1’. ’MUSICA’. ’127.

5. 11 : host: contendrá la ip o DNS del servidor apache. 14 : dirroot: este string contendrá la ruta INTERNA del proyecto. pero de todas maneras cumplirá su cometido. 15 : owner: será la string contendrá del creador del proyecto. nuestro propio equipo 127. en nuestro caso.0. 13 : wwwroot: este string contendrá la ruta por medio de DNS o ip del proyecto. 8 : dbpass: es un string que contiene el password del usuario dado anteriormente. 16 : charSet: contendrá el tipo de caracteres a utilizar en el sitio web. en rigor es una mala práctica utilizarlo. Manual PHP 52 Eduardo Saavedra A.0. el usuario root es el principal administrador.10 Quinta aplicación en PHP 5 UTILIZANDO PHP 7 : dbuser: es un string que contiene el nombre de usuario de la base de datos. 18-21 : Estas definiciones podrán ser útiles para ahorrar código HTML.1 12 : pname: es un string que contiene el nombre del proyecto (para este caso fifthApp). .

la clase. una para los músicos y otra para los instrumentos. uno para cada método de la clase Musician: Manual PHP 53 Eduardo Saavedra A.php’). . b) Para mostrar un músico en particular. por medio de un SQL.php). Los archivos a crear quedarán en la carpeta class. Se crearán los 2 métodos: 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. En ella dejaremos TODOS los SQLs necesarios para trabajar con la base de datos.5.9).php dentro de la carpeta api. } } ?> Bien. 9. Para la clase musician crearemos 2 simples métodos: a) Para mostrar TODOS los músicos en la base de datos. $this->ConnectDB = new CONNECTDB. include($CFG->dirroot. } function getMusicianById(){ global $CFG.’api/musicianQueryLib.php y instrumentClass. return $this->ConnectDB->REC_SET($QUERY_INFO->SHOW_MUSICIAN). Cabe destacar.php’).php) referenciado por la variable $CFG.php y el método retornará el resultado de una query guardada en el archivo musicianQueryLib. Para seguir con la secuencia lógica crearemos el archivo musicianQueryLib.php. include($CFG->dirroot. return $this->ConnectDB->REC_SET($QUERY_INFO->SHOW_ALL_MUSICIANS). Luego en el método getAllMusicians. luego se incluirá el archivo musicianQueryLib.’api/musicianQueryLib. que los diagramas E-R son muy similares en notación y finalidad a los diagramas de clases. function Musician($ID = NULL){ $this->MusicianID = $ID. } function getAllMusicians(){ global $CFG. como constructor tomará un ID (Línea 7) y además tomará las características de conexión a base de datos (por medio de la clase connecDbClass. Crearemos ahora 2 clases. private $ConnectDB.php. entonces inicialmente tendremos 2.10 Quinta aplicación en PHP 5 UTILIZANDO PHP 8. Asumiendo que se tienen conocimientos de usos de clases en PHP (ver sección 5. 10. primero tomaremos los valores del archivo de configuración (configSystem. es retornar en forma de una matriz de arreglos el resultado. Línea 8). La instrucción REC_SET que se ve en la Línea 15 y 21 corresponde a un método de la clase CONNECTDB (del archivo connectDbClass. y serán musicianClass. este método lo que hace es.

Ahora en el archivo index. etc). require_once(’class/connectDbClass. } include(’config/footer. En la línea 9 llamamos al método para obtener los datos de los usuarios y los almacenamos en la variable $matriz_datos. include(’config/header. FROM. $matriz_datos=$Musico->getAllMusicians(). require_once(’class/musicianClass. Manual PHP 54 Eduardo Saavedra A. ?> Las 6 primeras líneas representan las inclusiones a realizar en de los archivos. $i++){ for($j=0. $j++){ echo $matriz_datos[$i][$j].php del directorio raíz dejaremos el siguiente código: 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. $Musico = new Musician(). El segundo Querie tiene como particularidad que contiene una variable llamada $this->MusicianID.10 Quinta aplicación en PHP 5 UTILIZANDO PHP a) SHOW_ALL_MUSICIANS b) SHOW_MUSICIANS Entonces.5. $i<count($matriz_datos). ?> Este archivo mantendrá las variables de la estructura $QUERY_INFO. Como han de notar.php’). Luego en la línea 8 instanciamos un objeto musician. esta variable es simplemente uno de los atributos que tiene la clase musician que se definió en su constructor. ellos son simples strings con los queries requeridos por la clase Musician." ". $j<count($matriz_datos[$i]). De la línea 11 a 18 utilizamos el clásico recorrido matricial de filas-columnas. son los típicos SQLs que podríamos encontrar en cualquier sistema WEB (para un orden visual. GROUP BY. " FROM Musico" . " WHERE idMusico=’". se dejaron separadas las líneas por medio de comillas y puntos. Con ella podremos condicionar la búsqueda a un músico en particular. lo típico es separar. for($i=0. INNER JOIN.php’). . " FROM Musico".php’)."’".php’). ORDER BY. Luego incluimos el footer. 11. el archivo quedará: 1 2 3 4 5 6 7 8 9 <?PHP $QUERY_INFO->SHOW_ALL_MUSICIANS = "SELECT * " . las sentencias SELECT.$this->MusicianID. } echo DBLRTN. no se olviden de incluir el configSystem! y las clases. $QUERY_INFO->SHOW_ALL_MUSICIANS = "SELECT * " .php’).

Manual PHP 55 Eduardo Saavedra A. Hasta el momento solo hemos editado la clase musician que tendrá métodos de retorno de datos de músicos. Para ir recapitulando las ultimas acciones veremos la estructura de archivos y directorios: La función de cada directorio sería: Api: Mantendrá todas las funciones y variables que pueden ser utilizadas por muchos archivos PHP. en esta carpeta están los archivos de configuración básicos para la interactividad entre bases de datos y Apache. Se tienen además los header y footer de los sitios.10 Quinta aplicación en PHP 5 UTILIZANDO PHP 12.5. además se dejarán los archivos de Queries hacia la base de datos. Config: Mantendrá los archivos que siempre se llamaran en casi todo archivo PHP. . para este caso tendremos la clase musician e instrument. Class: Mantendrá todas las clases que se utilizarán en el desarrollo de una aplicación.

Primero una foto de los datos de la base de datos en la tabla Músicos: Manual PHP 56 Eduardo Saavedra A. veamos los resultados que retorna el index.. NUNCA están en “contacto” directo con el servidor Apache para ser mostrado al usuario. Luego de este intermedio. la interacción de los archivos con la base de datos y el navegador WEB quedaría representada por lo siguiente: Como se han de dar cuenta. configuración y apis.. entre ellas están las de seguridad y estandarización de desarrollo de aplicaciones. Esto conlleva una serie de ventajas. los archivos de clases. 13. .5.php.10 Quinta aplicación en PHP 5 UTILIZANDO PHP Y a modo de diagramas.

0..1/fifthApp que se vé mediante Mozilla: Parece que funciona :) Ahora simplemente editaremos el index.10 Quinta aplicación en PHP 5 UTILIZANDO PHP Y el resultado de la dirección http://127.0.. . Manual PHP 57 Eduardo Saavedra A.5.php para mostrar un músico con un ID en particular.

entonces alteramos el index. $musico7 = array_pop($Musico->getMusicianById()). Los resultados son: Con esto se concluye la quinta aplicación! Manual PHP 58 Eduardo Saavedra A.5.RTN.10 Quinta aplicación en PHP 5 UTILIZANDO PHP Mostremos el músico con ID 7. se “sacará” ese elemento (fila) para manipularlo. $i++) echo $musico7[$i]. como esta matriz es de una fila. $j<count($musico7[$i]). con una constante (7).php agregando las siguientes líneas después de los encabezados y antes del instanciamiento de la clase musico: 1 2 3 4 5 6 $Musico = new Musician(7)." ". En la línea 1 se instancia la clase Musico. . esto es por que el método REC_SET llamado en la clase musician retorna una matriz. for($i=0. luego se llama al método getMusicianById que hace una consulta a la BD que retorna un usuario en particular (note que se utilizó una array_pop. Finalmente se recorren los datos por medio de un trivial for. echo "El Músico 7 es:". de tal forma de trabajar con un arreglo unidimensional.

Quinta) En esta sexta aplicación se mejorará la versión existente de la Quinta. Quinta) 5 UTILIZANDO PHP 5. Ingresar a la página con el formulario 2. Mostrar un aviso de éxito.1 de la aplicación anterior. Ingresar los datos al formulario 3.5. Procesar los datos enviados por medio de la variable POST 5. . Figura 11: Conceptualización de proceso Manual PHP 59 Eduardo Saavedra A. Pulsar el botón enviar 4. Sexta aplicación en PHP (cont. Ahora.11 Sexta aplicación en PHP (cont. se logrará insertar datos en la base de datos por medio de un formulario HTML siguiendo el esquema clásico de: 1. Digamos que sería una versión 1.11.

11.11 Sexta aplicación en PHP (cont.1. Es requerido (por cualquier lenguaje) los nombres de los atributos donde se dejarán los datos y los mismos datos. y sobre todo al insertar datos. El mismo modelo anterior: Figura 12: Modelo Conceptual BD Es sumamente importante saber la estructura de la base de datos al momento de programar.5. Quinta) 5 UTILIZANDO PHP 5. . Por esta razón muchas veces se ven estas situaciones en lugares de desarrollo: Figura 13: Modelo Relacional pegado en la pared Manual PHP 60 Eduardo Saavedra A. Base de datos Utilizaremos la misma base de datos anterior de músicos. Recordando el diagrama E-R: 1.

Se agregará a la carpeta class.php.php a consulta. . 1.php. basta con crear el proyecto sixthApp y pegar el contenido sobre ella. pero para el presente manual se considerará como un proyecto nuevo. Pasos de programación Inmediatamente se copiará todo el contenido de la aplicación 5 a la actual. 3.11. Quinta) 5 UTILIZANDO PHP 5. 2.php (b) Estructura del directorio Figura 14: Situación de archivos Manual PHP 61 Eduardo Saavedra A. Para hacerlo.5.2. Ella contiene la sintaxis de varios objetos HTML. la clase basicClass. Luego el archivo index se creará partir de 0. Es posible alterar también la aplicación 5 directamente. A partir de ahora se cambiará el nombre del archivo index.11 Sexta aplicación en PHP (cont. inmediatamente se debe cambiar en el archivo de configuración lo siguiente: De tal forma de concordar con la carpeta que se está utilizando desde el Sistema Operativo. Si se creó un nuevo proyecto. (a) Nuevo archivo index.

. diciendo: “Bienvenido.php’). include(’config/header.php y tiene 3 parámetros de entrada. 5 y 10 son las inclusiones de los archivos típicos. Dentro del archivo index.5. "Ver consultas!". en la línea 8 se llama a la función CREATE_LINK esta función está alojada en el archivo commonLib.php’). include(’api/commonLib. son las 00:00:00 del 31/02/1968” En éste caso se esta utilizando una función nativa de PHP llamada date. Y finalmente el tercer parámetro (no obligatorio) es de configuración (por ejemplo puede asignarse un elemento CSS aquí o algún parámetro conocido por el código HTML del tag “Anchor” (<a></a>).date("H:i:s"). " del ". ?> Las líneas 3.php’). Quinta) 5 UTILIZANDO PHP 4. En las línea 7 se envía por pantalla un saludo al usuario. Manual PHP 62 Eduardo Saavedra A. el segundo es para el texto que va a contener el link (Para este caso Ver Consultas!). 4.date("d-m-Y").DBLRTN. echo CREATE_LINK("consulta. "style= ’font-size:12px. el primero es el archivo al cual se hace referencia (en este caso se hizo para la consultas.php".11 Sexta aplicación en PHP (cont. ella puede entregar valores de fecha y hora formateados con caracteres como se muestra en el ejemplo. include(’config/footer. echo "Bienvenido.php deberá quedar el siguiente código: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?PHP include(’config/configSystem.php). de los cuales 2 son obligatorios.php’). son las: ". color:red’"). Luego.

e) Etiqueta (lo que acompaña al formulario) f ) Posición de la etiqueta. 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 (identificador único) c) Valor inicial del objeto. Manual PHP 63 Eduardo Saavedra A.php’).5.php’). desde tablas. include(’config/header.=$module->ADDINPUT(’text’. ’procesa. este objeto contiene gran parte de los objetos HTML más tipicos. $bdy. Finalmente en la línea 16 se llamo al método SET_FORM. En línea 12 se inicia la variable $bdy la cual contendrá inicialmente el resultado del método ADDINPUT de la clase MODULARTAB.RTN.php’).DBLRTN.’’. Quinta) 5 UTILIZANDO PHP 5.’’. echo $bdy. ’form1’.’Nombre:’). En nuestro caso de las lineas 12 a 14 Se crearon 3 objetos para ingreso de texto.php). se agregó ahora la basicClass. En la línea 15 se creó un boton de “Submit”.’Direccion:’).=$module->ADDINPUT(’text’. con este botón se podrán enviar los datos. En la línea 10 se creo un objeto MODULARTAB (del archivos basicClass.’Apellido:’). $module = new MODULARTAB(). $bdy=$module->ADDINPUT(’text’. Terminado lo anterior se creará un archivo nuevo llamado miFormulario.’direccion’.php. require_once(’class/musicianClass.’’. Éste método acepta 6 atributos.=$module->ADDINPUT(’submit’.’apellido’. . $bdy. hasta formularios.’Enviar’.php’).11 Sexta aplicación en PHP (cont.’’). como parámetros tiene: a) Cuerpo del formulario a crear.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’).RTN. require_once(’class/basicClass.php’). estilos. include(’api/commonLib.’POST’. $bdy=$module->SET_FORM($bdy.php’). b) Nombre único del formulario c) Método de envío de datos d) Archivo encargado de procesar los datos.’’.’apellido’.’’. etc).php’). ?> Las primeras líneas son las de inclusión de bibliotecas.’’. include(’config/footer.’’. require_once(’class/connectDbClass. $bdy.’nombre’. d) Atributos especiales (como CSS. Para nuestro caso usaremos el objeto formulario.

6.. Finalmente se imprime $bdy y el resultado es el siguiente: Un simple formulario :). El resultado debería ser algo así: Se presiona el botón. esto mostrara los valores pasados pro el formulario en un arreglo llamado $_POST. Quinta) 5 UTILIZANDO PHP Deben notar que la variable $bdy Se creó y luego fue concantenando su contenido anterior con el nuevo mediante el operador “.php Este archivo contendrá simplemente por ahora un var_dump($_POST). Finalmente se le asigna a la variable el valor del formulario con el contenido anterior de $bdy. así la variable $bdy se encargará de contener el código HTML bruto que los métodos del MODULARTAB retornarán. se creará el archivo procesa. Si probaramos el boton de envio del formulario.=”. tendriamos como resultado un error 404..11 Sexta aplicación en PHP (cont. .5. Por lo tanto ese es nuestro siguiente paso. Manual PHP 64 Eduardo Saavedra A. ya que la pagina a donde se va a procesar la informacion NO EXISTE.

’NOMBREMUSICO’.php dando ciertas condiciones. return $out. El orden del arreglo de columnas de la tabla y de datos debe ser IGUAL. estas llaves son los nombres identificadores del formulario! (el 2do parámetro del ADDINPUT). Métodos creados en musicianClass. Quinta) 5 UTILIZANDO PHP Han de darse cuenta que el arreglo POST contiene los valores del formulario asociado a un arreglo de llaves. Pero es harina de otro costal. Las líneas 7 y 8 están intimamente relacionadas.$dataCol[1]..’MUSICO’. es posible procesar los datos en el mismo archivo miFormulario.$dbCol. Los parámetros necesarios son: a) Tabla a la cual hacer la inserción.’api/musicianQueryLib.php’). Siguiendo la lógica de que los objetos establecen la comunicación con la base de datos. enviemos los datos al SGBD para que los ingrese a nuestra BD. Luego en las líneas 5 y 6 se hace lo de siempre. por lo tanto deberemos. Por cierto. Manual PHP 65 Eduardo Saavedra A. .php. es el que insertará los datos a la base de datos de forma “nativa”. include($CFG->dirroot. $dataCol = array($this->getMaxId()+1.’DIRECCIONMUSICO’). $dbCol = array(’IDMUSICO’. será la encargada de insertar los datos a través del formulario.’api/musicianQueryLib. Esté método INSERT_DB. } Vamos línea a línea: Aceptaremos como parámetro un arreglo de datos. Ahora hagamos algo interesante en el procesa. nuestra clase Musician. $out = $this->ConnectDB->INSERT_DB($CFG->prefix.5. b) Columnas de la BD a la cual insertar datos c) Datos que serán pasados a la tabla. si no. además. } function getMaxId(){ global $CFG.php’). se insertarán datos por cualquier lado de la tabla. crear un método que inserte datos en la BD. $dataCol[0]. estos serán los que por formulario lleguen a la página procesa.11 Sexta aplicación en PHP (cont. include($CFG->dirroot.php. estos 2 arreglos serán los que serán aceptados por el método INSERT_DB de la clase connectDB..$dataCol[2]).$dataCol). 7.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.’APELLIDOMUSICO’. return array_pop(array_pop($this->ConnectDB->REC_SET($QUERY_INFO->MAX_MUSICIAN_ID))).

Y se agregó un link al index. Agregaremos entonces el siguiente código: 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. "Ingresar Musico!". Quinta) 5 UTILIZANDO PHP Finalmente se retorna el resultado de INSERT_DB.php’). require_once(’class/basicClass. Manual PHP 66 Eduardo Saavedra A.$_POST["direccion"]).php. de tal forma de que 2 músicos no tengan el mismo ID. este método creado un poco mas abajo (línea 16) será el encargado de descubrir el mayor índice de la columna ID hasta el momento.DBLRTN.11 Sexta aplicación en PHP (cont. que referencia al formulario: 1 2 echo CREATE_LINK("miFormulario. "Ver consultas!". $musicoNuevo->addMusician($dataCol). color:red’"). $_POST["apellido"]. para ver las consultas al sistema. "style=’font-size:12px. Para ello será necesario crear un SQL en el archivo musicianQueryLib.php. este dirá true si la consulta fue realizada con exito y false si no.php". $dataCol = array($_POST["nombre"].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.5.php’). require_once(’class/connectDbClass.php’). $musicoNuevo = new Musician(). "style=’font-size:12px. También se creó el mismo link del index. ?> Como se han de dar cuenta. . require_once(’class/musicianClass. se instanció un objeto Musician (Línea 15) y luego se llamó al método de inserción con los datos del $_POST (Línea 16).php’). include(’config/footer.php’). include(’api/commonLib.php’). 8. color:red’").php’). echo CREATE_LINK("consulta. En la línea 8 se llamó al método getMaxID().php. Con los métodos listos volvamos a procesa.

Quinta) 5 UTILIZANDO PHP 9.11 Sexta aplicación en PHP (cont. Figura 15: Estructura de archivos final! Veamos el flujo: Figura 16: Se ingresa al sitio Manual PHP 67 Eduardo Saavedra A.5. Ahora solo queda probar la aplicación y a cruzar los dedos :P. .

.5.11 Sexta aplicación en PHP (cont. Quinta) 5 UTILIZANDO PHP Figura 17: Se presiona ver consultas Manual PHP 68 Eduardo Saavedra A.

11 Sexta aplicación en PHP (cont.5. Quinta) 5 UTILIZANDO PHP Figura 18: Se vuelve y presiona Ingresar músico Figura 19: Se llena el formulario Manual PHP 69 Eduardo Saavedra A. .

Quinta) 5 UTILIZANDO PHP Figura 20: Se presiona enviar Figura 21: Se revisa nuevamente Ver consultas! Tal y como se puede ver.5. la mini aplicación funciona. .11 Sexta aplicación en PHP (cont. Manual PHP 70 Eduardo Saavedra A.