Sei sulla pagina 1di 211

INTERNET Y LA

PROGRAMACIÓN DE
ORDENADORES

1.1. INTRODUCCIÓN
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

La aparición a principios de los noventa del servicio web supuso una verdadera
revolución en el campo de la informática y las telecomunicaciones. Con la irrupción de
este nuevo servicio, Internet inició una rápida transición hacia el ámbito empresarial y
supuso un enorme impulso al crecimiento de la red. Lo que había surgido en plena
guerra fría como un proyecto militar y que posteriormente fue dirigiéndose hacia el
ámbito científico y académico, se empezó a convertir en un perfecto “escaparate virtual”
en el que las empresas pudieran ofrecer sus productos y servicios rompiendo barreras
geográficas y de comunicaciones. En la actualidad las empresas no ven únicamente el
servicio web como un mero escaparate o medio publicitario de enorme difusión. Internet,
y en particular el servicio web, abre a las empresas enormes posibilidades. La utilización
de tecnologías web permite agilizar los procesos, mejorar la productividad y aumentar la
eficacia, además de abrir las puertas a nuevas formas de negocio en el mercado global
que facilita Internet (e-business).

1
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Por supuesto, no han sido las empresas las únicas beneficiadas con el desarrollo de
Internet y del servicio web. Las instituciones públicas tienen también nuevas
formas de ofrecer servicios a los ciudadanos (e-governement), los usuarios
individuales tienen nuevas formas de adquirir productos (e-commerce) o nuevas
formas de formarse e instruirse (e-learning),...

Para poder realmente obtener todos estos beneficios ha sido preciso desarrollar
nuevas tecnologías que consigan hacer del servicio web un servicio dinámico e
interactivo. En sus orígenes el servicio World Wide Web fue concebido como un
sistema flexible de compartir información multimedia entre equipos heterogéneos a
través de redes informáticas. Para ello fue desarrollado un sistema de generación de
documentos a través de un lenguaje estándar: el lenguaje HTML. Los documentos
generados de esta forma podían incorporar texto y elementos gráficos, pero eran
documentos totalmente estáticos. Posteriormente fueron desarrollándose diferentes
tecnologías que, trabajando en conjunción con el lenguaje HTML, pudieran paliar
estas carencias. Así por ejemplo, Netscape incorporó en la versión 2.0 de su célebre
navegador un intérprete de un nuevo lenguaje que podía ser intercalado entre el
código HTML y que permitía realizar operaciones no disponibles en un lenguaje
puramente descriptivo como es HTML; dicho lenguaje, llamado en sus orígenes
LiveScript, adquirió posteriormente el nombre de JavaScript. Unos años más tarde
la empresa Sun Microsystems lanzó un revolucionario lenguaje de programación,
el lenguaje Java, que permitía incrustar en las páginas web programas con las
prestaciones propias de cualquier lenguaje de programación. Microsoft por su parte
también se unió a esta evolución primero con sus lenguajes de script: VBScript
basado en Visual Basic y JScript, versión Microsoft de JavaScript, y, más
recientemente, con las tecnologías .NET. Igualmente se han venido desarrollando
diferentes extensiones del propio lenguaje HTML con objeto de aumentar su
dinamismo; en este contexto se podría citar el HTML dinámico (DHTML) y el
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

lenguaje XML.

Internet ha jugado un papel esencial en la expansión de la denominada corriente


open source. Los defensores de esta corriente defienden el desarrollo de
aplicaciones informáticas y su distribución libre, de forma gratuita; pero no solo
eso sino que también ponen a disposición de los usuarios el código fuente de los
programas desarrollados. Se trata, en definitiva, de que los usuarios puedan utilizar
los programas sin ninguna restricción y puedan conocer si lo desean su
funcionamiento interno. El ejemplo más emblemático de esta corriente open source
lo constituye el sistema operativo Linux. En los últimos años está corriente se ha
desarrollado enormemente y ya se pueden obtener en la propia red Internet todo
tipo de programas basados en esta filosofía: servidores y navegadores web,
entornos de programación, editores, herramientas ofimáticas,... Grandes empresas
como IBM o Yahoo, por ejemplo, han apostado muy fuerte por las soluciones open

2
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTERNET Y LA PROGRAMACIÓN DE ORDENADORES

source y, sin lugar a dudas, el impacto de este tipo de soluciones parece destinado a
incrementarse en el futuro debido a sus altas prestaciones y calidad, su menor coste
y su alta difusión.

Las dos herramientas que se analizarán en este libro surgen de esta corriente. Por
un lado el lenguaje PHP, que nació como un lenguaje para realizar un seguimiento
de visitas de páginas personales, se ha convertido en uno de los referentes actuales
en los denominados lenguajes de script. Por otro lado, el sistema gestor de bases de
datos MySQL se presenta como una herramienta con altas prestaciones para el
desarrollo de bases de datos, especialmente apropiado para ser usada por pequeñas
organizaciones o empresas. La utilización conjunta de ambos: PHP y MySQL
permite llegar a desarrollar interesantes aplicaciones web que puedan cubrir las
necesidades de pequeñas empresas que quieran fortalecer su presencia en Internet o
usuarios individuales que quieran generar verdaderas páginas dinámicas. Como
complemento a ambas herramientas, en Internet se pueden encontrar igualmente
gestores de contenidos, aplicaciones basadas en PHP que permiten a los usuarios
finales aprovechar las ventajas de estas tecnologías sin necesidad de tener grandes
conocimientos sobre su funcionamiento y sintaxis de los lenguajes. En el presente
libro se darán referencias de algunas de estas herramientas de gestión de contenidos
y otras herramientas para la creación de aplicaciones web que han sido
desarrolladas igualmente haciendo uso de las dos tecnologías que se analizarán en
este libro: el lenguaje PHP y el gestor de bases de datos MySQL. El Capítulo 18
presentará algunas de estas herramientas.

1.2. INTERNET
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

El objeto de esta sección no es tanto definir lo que es Internet como el poner de


manifiesto algunas de las características más destacadas de la misma que influyen
decisivamente en las tecnologías de desarrollo vinculadas al servicio web, como es
el caso del lenguaje PHP. Se asume que cualquier lector interesado en este libro es
usuario de Internet y conoce los diferentes servicios que la red ofrece,
posiblemente también su interés en el desarrollo de aplicaciones web es el que le ha
impulsado a adquirir este libro.

Internet (INTERconected NETwork) es una red de redes de ordenadores de todo


tipo que se comunican mediante un lenguaje común: el conocido como protocolo
TCP/IP. Esa primera característica de la heterogeneidad de los equipos conectados
es clave para entender el funcionamiento de todos los servicios de la red y para
comprender la necesidad de la portabilidad en cualquier desarrollo que se quiera
hacer en el ámbito de Internet. A nivel de programadores de aplicaciones web, que

3
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

es en el que se sitúa el presente libro, no es necesario disponer de conocimientos


técnicos sobre los protocolos de comunicación en los que se basa Internet.

Los desarrollos de aplicaciones realizados en Internet tienen también un campo de


aplicación en aquellas redes privadas que usan los mismos sistemas y protocolos
que Internet: las denominadas Intranets.

Otro de los aspectos a tener en cuenta es el carácter distribuido de la red. Ese


carácter totalmente distribuido se concreta a todos los niveles: en el aspecto
geográfico no existe ningún nodo central de la red, de hecho, los orígenes de
Internet se sitúan en un proyecto militar del Gobierno de los Estados Unidos para
crear una red que no fuera vulnerable ante el ataque a alguno de sus nodos. En el
aspecto económico, tampoco existe ningún gobierno o institución que mantenga la
red sino que son las propias subredes que la componen las encargadas de su propio
mantenimiento. El carácter distribuido también se manifiesta en el aspecto político
ante la ausencia de un gobierno central de la red; lo que sí existen son diversas
organizaciones o asociaciones que tratan de establecer diferentes estándares para el
desarrollo de la red.

Aunque el servicio web es actualmente el servicio más conocido y utilizado de la


red Internet, conviene recordar que no es el único. Los tres servicios originarios de
la red: correo electrónico (e-mail), transferencia de fichero (FTP) y acceso remoto
(Telnet), siguen estando presentes y siguen siendo ampliamente utilizados. Pero
podrían citarse otros servicios, algunos muy conocidos y otros en cierta decadencia
al haber absorbido el propio servicio web sus funciones: servicios de noticias
(news), gopher, servicios de búsqueda de archivos (Archie), Verónica, servicios de
localización,... En los últimos años también están teniendo mucho auge las
aplicaciones P2P.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

1.2.1. EL SERVICIO WEB


El servicio WWW, o simplemente Web, se podría definir como un amplio sistema
multimedia de acceso a información heterogénea distribuida por toda la red en
forma de documentos hipertextuales (hipertextos). Como ya fue comentado en la
introducción de este capítulo, este servicio surgió en 1990 en el CERN (Centre
Européen de Recherche Nucléaire) con el objetivo de facilitar la distribución de
información entre equipos investigadores geográficamente dispersos. Se buscaba
que los recursos disponibles en formato electrónico fuesen accesibles para cada
investigador desde su propia terminal de forma clara y simple, posibilitando el
salto entre elementos de información conexos. En definitiva, se trataba de integrar
todos los recursos existentes en una red hipertextual. Aunque el nacimiento del

4
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTERNET Y LA PROGRAMACIÓN DE ORDENADORES

servicio se sitúa en 1990, es en 1991 cuando el sistema desarrollado en el CERN se


abre a Internet, apareciendo en 1992 el primer navegador web: Mosaic.

El término hipertexto que empezó a hacerse popular a partir de la aparición de este


servicio tiene, sin embargo, su definición en un trabajo de Ted Nelson en 1965, la
definición original del término es:

"Un cuerpo de material escrito o gráfico interconectado de un modo


complejo que no se puede representar convenientemente sobre el papel;
puede contener anotaciones, adiciones y notas de los estudiosos que lo
examinan".

En una definición más moderna y aplicable al concepto de hipertexto en Internet,


se podría decir que un hipertexto es un documento multimedia, es decir, integrando
bajo una plataforma informática todas las tecnologías de la información, y que
incorpora relaciones estructurales que enlazan el documento con otros documentos
o recursos.

Algunas de las características destacadas de los hipertextos son:

— Almacenamiento de un gran volumen de información.


— Facilidad de acceso y consulta.
— Presentación de una forma más agradable.
— Uso de todas las tecnologías de la información.
— Permiten una “navegación” individualizada.
— Estructuración multidimensional.
— Multiplataforma.
— Dinamismo e interactividad.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

1.2.2. RELACIÓN CLIENTE/SERVIDOR


Todos los servicios que ofrece Internet, y por supuesto entre ellos el servicio web,
se basan en la denominada relación cliente/servidor. El comprender bien esta
relación es esencial para entender el funcionamiento posterior de lenguajes como
PHP. En Internet se pueden encontrar dos tipos de equipos conectados:

— Servidores: ordenadores que ofrecen sus servicios al resto de equipos


conectados. Suelen tener una presencia estable en la red, lo que se concreta en
tener asignadas direcciones IP permanentes. En ellos es donde están alojadas,
por ejemplo, las páginas web.

5
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

— Clientes: equipos que los usuarios individuales utilizan para conectarse a la red y
solicitar servicios a los servidores. Durante el tiempo de conexión tienen presencia
física en la red. Normalmente los proveedores de acceso a Internet asignan a estos
equipos una dirección IP durante su conexión, pero esa dirección es variable, es
decir, cambia de unas conexiones a otras (IP dinámica).
Los conceptos de cliente y servidor se suelen utilizar con dos significados
diferentes, en referencia al hardware el sentido es el indicado anteriormente, el
servidor hace referencia al equipo remoto al que se realiza la conexión y el cliente
sería el equipo local utilizado para efectuar dicha conexión. Pero también se
utilizan esos conceptos en referencia al software:

— Programa servidor es el programa que debe estar ejecutándose en el equipo


servidor para que este pueda ofrecer su servicio. Un documento HTML sin más
almacenado en el equipo remoto no basta para que sea accesible como página
web por el resto de usuarios de Internet, en ese equipo debe estar ejecutándose
una aplicación servidor web. Uno de los programas servidores web más
conocido y utilizado es Apache, programa que también pertenece a la corriente
open source. Existen otros servidores web como el Personal Web Server
(PWS) o el IIS disponibles en los equipos Windows. En el caso de otros
servicios como el correo electrónico o la transferencia de ficheros se
necesitarían igualmente los correspondientes programas en el servidor.

— Programa cliente es en este caso el software necesario en el equipo cliente para


tener acceso al correspondiente servicio. Así por ejemplo, los navegadores como el
Internet Explorer o Mozilla son ejemplos de clientes web; un programa como
Outlook es un ejemplo de cliente de correo electrónico y programas como
WS_FTP o CuteFTP son ejemplos de clientes FTP.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Figura 1.1 Relación cliente/servidor. Los clientes realizan peticiones de servicio


a los servidores
6
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTERNET Y LA PROGRAMACIÓN DE ORDENADORES

1.2.3. PROCESO DE CREACIÓN Y PUBLICACIÓN DE


PÁGINAS WEB
El proceso de creación y publicación de una página web debe pasar por una serie
de fases:

— Definición de la página: toda página web tiene detrás un código fuente que la
define. Cuando se accede a una página web, aunque en el monitor se puedan
visualizar documentos con imágenes y texto de diferentes tamaños, colores y
formatos, debe tenerse presente que detrás de eso hay un documento de texto
sin ningún tipo de formato y que incorpora una serie de instrucciones o
comandos que son los que realmente generan la página que se visualiza. Ese
documento fuente está definido en un lenguaje especial: el conocido HTML
(HyperText Markup Language). Se trata de un lenguaje puramente descriptivo
que incorpara una serie de comandos o etiquetas (tags) que permiten definir la
estructura lógica del documento, dar formato al texto, añadir elementos no
textuales,... Se asume que los lectores interesados en este libro tienen un cierto
conocimiento de este lenguaje de definición de hipertextos, no obstante, se ha
considerado oportuno incluir un capítulo introductorio en el que se presenten
los comandos básicos de HTML (Capítulo 3). Para aquellos lectores sin
conocimientos de HTML, una comprensión rápida de los comandos expuestos
en dicho capítulo es más que suficiente para poder entender el resto del libro.

— Publicación del documento: una vez creado el documento HTML que define la
página web, el siguiente paso es evidentemente publicarla para que esté
disponible para el resto de usuarios de Internet. La publicación implica la
transferencia del documento a un equipo servidor que disponga de un programa
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

de servidor web. Puede optarse por utilizar algún servidor de alojamiento


gratuito de páginas o utilizar los espacios que los proveedores de acceso a
Internet suelen ofrecer a sus clientes. Otra posibilidad sería configurar un
equipo propio para que actúe de servidor, para ello sería preciso contratar con
algún proveedor una dirección IP fija y registrar el dominio que se quiera
utilizar.

— Acceso a las páginas web: en el momento en que una página es publicada en el


servidor, cualquier usuario de Internet podría acceder a ella. Para ello es
preciso, por un lado que el usuario utilice un programa adecuado (el
navegador, explorador o cliente web), y que el código que define la página sea
transferido por la red utilizando el protocolo http (hypertext transfer protocol).
Sobre este último aspecto, en principio la mayoría de usuarios no deberían
preocuparse. El navegador web es el que se encarga de interpretar los

7
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

comandos HTML que se reciben y producir a partir de ellos la página web.


Existen diferentes navegadores web que se pueden utilizar, por ejemplo,
Internet Explorer, Netscape Navigator, HotJava, Mozilla,... este último sigue la
corriente open source.

1.2.4. DINAMISMO E INTERACTIVIDAD EN LAS


PÁGINAS WEB
HTML es un lenguaje puramente descriptivo que permite definir las páginas web pero que
en modo alguno se puede considerar un lenguaje de programación. Con HTML no se
pueden generar estructuras iterativas o condicionales, no se pueden definir funciones que
sean utilizadas en distintos puntos del documento, no se pueden declarar variables, no se
pueden realizar cálculos matemáticos,... Las páginas creadas únicamente con HTML son
básicamente estáticas, es decir, siempre muestran la misma información y no ofrecen
ningún grado de interactividad con el usuario. Los únicos elementos de HTML que podrían
de alguna forma considerarse interactivos son los formularios a través de los cuales se
solicita información al usuario.

Si se requiere aumentar el dinamismo e interactividad de las páginas se hace por tanto


obligado el recurrir a otros lenguajes y tecnologías como las que se abordan en este libro.
Esas dos características: dinamismo e interactividad son los dos elementos clave que se
deben tratar de potenciar para desarrollar verdaderas aplicaciones web.

Pero, ¿qué es una página dinámica? Piénsese, por ejemplo, en un multicine que quiere
publicar en Internet la información actualizada sobre horarios y películas que se proyectan
en cada una de sus salas. Evidentemente, sería muy sencillo generar una simple página en
HTML con una tabla en la que se muestre esa información; incluso sin necesidad de tener
ningún tipo de conocimiento sobre HTML, por ejemplo, se podría escribir en Word y usar
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

la opción de “Guardar como página web...”. Hasta aquí sencillo, pero la información en sí
es un elemento dinámico, las películas que se proyectan en cada sala cambian y por tanto la
página web debería ser actualizada. ¿Tiene sentido tener que modificar el documento
HTML cada vez que se produzca un cambio en la cartelera?, ¿no sería muchísimo más
rentable disponer de un sistema que modifique de forma automática la información que
muestra la página web? Esto es dinamismo, y esto no se puede conseguir solo con HTML.
A lo largo de los diferentes capítulos de este libro el usuario aprenderá cómo resulta
muy sencillo generar una base de datos con MySQL con toda la información de las
películas a proyectar y una página web con un programa PHP que se encargue, cada
vez que un usuario solicita la página, de hacer una consulta a la base de datos para
obtener la cartelera actualizada y generar con ella de forma automática el código
HTML que se envía al usuario. Este mismo ejemplo se irá desarrollando paso a paso en
los próximos capítulos y servirá de hilo conductor del resto del libro.

8
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTERNET Y LA PROGRAMACIÓN DE ORDENADORES

Otro ejemplo de dinamismo puede ser el preprocesamiento de datos introducidos


en formularios, comprobando por ejemplo la validez sintáctica de direcciones de
correo electrónico o la pertenencia a determinados rangos de valores numéricos.

En lo referente a interactividad, se trata de permitir que entre el usuario que acceda


a la página y la propia página exista un cierto grado de comunicación que no se
limite a que la página muestre la información al usuario. El usuario, por ejemplo, le
podría solicitar a la página que realice algún cálculo. Volviendo al ejemplo de los
multicines, supongamos que se desea que el usuario pueda hacer un cálculo de
forma automática de los importes de las entradas; mediante un formulario el
usuario puede introducir el número de entradas a adquirir, la sesión para la que se
desean y determinados parámetros que puedan afectar al precio (ser estudiante,
disponer de un vale de descuento,...) y la página debe calcular de forma automática
el importe total a pagar. Esto es interactividad.

1.3. PROGRAMACIÓN DE ORDENADORES


La programación de ordenadores se podría definir como el conjunto de técnicas,
métodos y reglas para poder construir programas de ordenador legibles, correctos y
eficientes. Un programa de ordenador no es más que una secuencia de
instrucciones en las que se le indican a la máquina las órdenes o acciones a
realizar; se podría entender por tanto la programación como el arte de decir a una
máquina lo que queremos que haga de una manera que pueda entenderlo.

Como todos los campos de la informática, la programación de ordenadores ha


sufrido una importante evolución en las últimas décadas. Los orígenes se sitúan en
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

la década de los 50 con la aparición de los primeros lenguajes de programación:


Fortran (1954), Cobol (1954) y Algol (1957). Estos primeros lenguajes estaban
muy orientados hacia aplicaciones concretas; así por ejemplo, Fortran es un
lenguaje orientado hacia el cálculo científico mientras que Algol lo es hacia
aplicaciones de gestión. Los años 60 vienen marcados por el nacimiento de la
programación estructurada y la aparición de lenguajes como PL/1 de IBM (1960) o
el BASIC (1963).

Es en los años 70 cuando aparecen dos de los lenguajes estructurados de mayor


difusión: el Pascal (1970) y el C (1972); este último evolucionaría posteriormente
hacia el C++ y hoy en día es el lenguaje más utilizado en el desarrollo de
aplicaciones. La programación estructurada se basa en el desarrollo de módulos o
funciones independientes que puedan ser utilizadas en cualquier momento. Es
destacable también en esta década de los 70 el desarrollo del modelo relacional de

9
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

bases de datos, modelo en el que se basan la mayoría de los sistemas gestores de


bases de datos actuales, entre ellos MySQL.

Los 80 vienen marcados por la aparición del ordenador personal y el nacimiento de


la microinformática. La informática deja de ser algo exclusivo de las grandes
empresas e instituciones y se acerca al público en general. En esta época aparecen
también los primeros sistemas operativos con interfaces de usuario gráficas: el
célebre “Mac” de Apple Macintosh. Años más tarde Microsoft seguiría esos pasos
con su sistema operativo Windows. La aparición de este tipo de interfaces también
afectaría notablemente a la evolución de los lenguajes de programación, en
concreto surge la necesidad de desarrollo de técnicas de programación basadas en
eventos. En los años 80 aparece también una nueva forma de entender la
programación: la programación orientada a objetos, así surgen los lenguajes ADA
(1980) y C++ (1985). La base en la que se apoya este estilo de programación es el
entender los objetos como entidades compuestas de acciones y datos y, por tanto, a
la hora de programar las funciones (acciones) y las variables (datos) deben
entenderse como componentes de una misma unidad.

La década de los 90 se inicia con la aparición del revolucionario servicio web y


la necesidad cada vez más patente de orientar los desarrollos hacia la
integración de aplicaciones. El servicio web, como ya se comentó, rápidamente
crea la necesidad de nuevas formas de programación y así en 1995 nace el
lenguaje Java, primer lenguaje pensado para integrar directamente programas
en las páginas web. Los programas Java que se integran en esas páginas se
denominan applets.

En la actualidad, la evolución en los diferentes sistemas operativos, de los nuevos


servicios de Internet y del propio hardware influyen en las prestaciones
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

recomendadas que debe tener un lenguaje de programación, algunas de las que se


podrían citar son:

— Programación estructurada: en la actualidad todos los lenguajes de


programación soportan este tipo de programación, en la que las instrucciones
se agrupan en bloques constituyendo módulos que se llaman unos a otros.

— Programación orientada a objetos: los lenguajes de programación de mayor éxito


se basan en la construcción de clases de objetos. Cada clase engloba, por un lado
las acciones que pueden ser realizadas con esos objetos y, por otro, los datos o
características asociadas a los mismos. Algunos lenguajes actuales, aunque no
pueden ser considerados orientados a objetos, sí que incorporan algunas
características propias de estos lenguajes, trabajando también con objetos.

10
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTERNET Y LA PROGRAMACIÓN DE ORDENADORES

— Programación guiada por eventos: los programas deben ser capaces de dar
respuesta a las diferentes acciones que el usuario efectúa sobre la interfaze del
programa. Por ejemplo, cuando un usuario elige una opción de menú o pulsa
un botón se genera un evento que debe ser detectado, identificado y tratado por
el programa.

— Programación concurrente: la aparición cada vez con más frecuencia de


equipos con más de un procesador plantea nuevas formas de programación; un
programa podría ser susceptible de dividir en varias tareas que puedan estar
realizándose de forma simultánea, cada tarea puede ser ejecutada por un
procesador diferente o bien utilizar mecanismos de reparto del tiempo de
procesador. Esta es la base de la programación paralela o concurrente.

— Prestaciones multimedia: los programas deben ser capaces de manejar todo


tipo de información y recursos; deben de estar preparados para trabajar con
elementos gráficos en diferentes formatos, animaciones o vídeo, sonido,...

— Portabilidad: evidentemente los programas son desarrollados para que


puedan ser utilizados por diferentes usuarios y no siempre está garantizado
que los usuarios tengan equipos similares. La portabilidad de los programas
permite que estos puedan ser ejecutados sobre diferentes plataforma
informáticas. Sin embargo, la portabilidad puede entenderse a dos niveles: a
nivel de código fuente la portabilidad implica que el código puede ser
compilado sobre las dos plataformas para obtener dos versiones diferentes del
programa. En algunos casos, la portabilidad se consigue a nivel no de código
fuente sino del código resultado del proceso de compilación; esto es lo que
ocurre por ejemplo con el lenguaje Java. En Internet, la portabilidad es un
concepto clave por cuanto a la red están conectados todo tipo de equipos.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

— Integración de aplicaciones: cada vez es más necesario que los lenguajes de


programación incorporen mecanismos sencillos para conectarse con otras
aplicaciones. Quizás el caso más claro de ello sea la conectividad a bases de
datos; los programas deben ser capaces de establecer esa conexión y realizar
consultas sobre los datos almacenados.

1.3.1. TIPOS DE LENGUAJES DE PROGRAMACIÓN


Los lenguajes de programación pueden ser clasificados de acuerdo a varios
criterios. Una de las primeras clasificaciones que se suele efectuar es la distinción
entre lenguajes de bajo nivel y de alto nivel. La programación en los primeros
resulta más dificultosa puesto que las instrucciones están muy próximas al

11
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

hardware del equipo y resultan difíciles de entender por un programador no


especialista. El ejemplo clásico de lenguaje de bajo nivel es el lenguaje
ensamblador.

La mayor parte de los programadores optan por utilizar lenguajes cuyo código
resulta más fácil de entender, por cuanto sus reglas sintácticas se asemejan más a la
forma de comunicarse las personas; son lenguajes que están “más cerca” del
programador pero más lejos de la máquina a la que van dirigidos. Estos lenguajes
son los denominados "lenguajes de alto nivel" y a ellos pertenecen los lenguajes de
programación más conocidos.

Cuando se está desarrollando un programa usando un lenguaje de programación se


genera un código (código fuente) que es comprensible para todo aquel usuario que
tenga los conocimientos suficientes sobre el correspondiente lenguaje, pero que en
ningún caso es comprensible directamente para la máquina. Los ordenadores
trabajan internamente mediante circuitos electrónicos que admiten dos posiciones:
abierto o cerrado (1 ó 0) y por tanto, toda orden a dar a la máquina debe ser
planteada en última instancia como secuencias de ceros y unos (código binario).
Parece claro por tanto que se necesita un proceso de “traducción” del código fuente
que nosotros entendemos a instrucciones entendibles por la máquina. Ese proceso
de traducción se puede realizar de dos maneras, y eso da pie a establecer una nueva
clasificación de los lenguajes de programación:

— Lenguajes compilados: en un lenguaje compilado el código fuente pasa por un


proceso denominado "compilación" en el que se genera un código denominado
"objeto", que una vez enlazado con otros posibles módulos de código objeto
necesarios, genera el fichero ejecutable con el programa. Ese fichero ejecutable
es lo único necesario para poder utilizar el programa y contiene todas las
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

instrucciones del mismo pero en el formato entendible por la máquina. El


aspecto más importante a destacar es que el proceso de compilación se realiza
con anterioridad a cualquier ejecución o uso del programa; en ese proceso se
comprueba la validez sintáctica del programa y si todo es correcto se genera el
ejecutable. Si se produce un error en la compilación el programa no podrá ser
utilizado.

— Lenguajes interpretados: en los lenguajes interpretados, la traducción de las


instrucciones se va realizando de forma secuencial por una aplicación,
denominada "intérprete", al mismo tiempo que se ejecuta el programa. De
esta forma, si llegado un punto del programa el intérprete se encuentra
con una instrucción errónea, el programa no continúa pero sí que habrá
podido ejecutar todas las sentencias previas. A diferencia de los lenguajes

12
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTERNET Y LA PROGRAMACIÓN DE ORDENADORES

compilados, la verificación de la corrección sintáctica del programa no se


realiza antes de la ejecución sino al mismo tiempo.

Por poner un símil que sirva para clarificar la diferencia entre ambos tipos de
programas, supóngase que una persona recibe una lista con una serie de tareas a
realizar. Podría optar por utilizar dos estrategias:

— Antes de comenzar la persona pierde unos minutos leyendo toda la lista y


analizando la coherencia o factibilidad de las tareas que se le están
encomendando. Si todas las tareas son coherentes realiza un proceso de
planificación para determinar la forma de realizarlas todas. Pero si detecta
alguna tarea que no entiende o le resulta incoherente, informa a la persona que
le ha encargado las tareas y opta por no iniciar sus labores a la espera de una
posible rectificación en el listado de tareas (enfoque de un programa
compilado)

— Nada más recibir la lista de tareas, la persona lee la primera labor


encomendada y la realiza. A continuación pasa a la segunda, la lee y la realiza,
y así sucesivamente. Si todo ha ido bien, habrá realizado todas las tareas, pero
si al llegar a un punto de la lista se encuentra con una tarea errónea o no
coherente, opta por abandonar el resto del trabajo e informar a la persona que
le encargó las tareas de tal extremo (enfoque de un programa interpretado)

Traducción
if(x<0) 01101101110
return 1; 10111101000
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

else ... 111....

Figura 1.2 Necesidad de un proceso de traducción del código fuente para que el
ordenador pueda entenderlo. Dicha traducción puede realizarse mediante un
proceso de complicación o mediante el uso de un intérprete

13
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

A primera vista, se podría pensar que un lenguaje compilado es más seguro en el


sentido de no producir errores a la hora de ejecutar el programa. En principio, si se
producen errores sintácticos en el programa, estos son detectados en la compilación
y por tanto el programa nunca se ejecutaría hasta que estos errores fuesen
corregidos. Efectivamente, esto es así, pero tampoco se puede descartar que, a
pesar de no haber errores sintácticos en el código fuente, se produzcan errores a la
hora de ejecutar el programa. Piénsese en un programa que tiene una instrucción en
la que se deben dividir dos números almacenados en dos variables y guardar el
resultado en una tercera variable; la instrucción puede ser sintácticamente correcta,
pero ¿qué pasa si a la hora de ejecutar el programa el segundo de los números es
cero?, se producirá un error de tipo aritmético debido a la división por cero y si el
programa no está preparado para ello, se abortará bruscamente su ejecución. Este
tipo de errores son los que se denominan errores en tiempo de ejecución.

En un lenguaje interpretado, todos los errores son detectados en tiempo de


ejecución, tanto los debidos a errores sintácticos como los debidos a condiciones
singulares producidas a la hora de ejecutar el programa.

Desde un punto de vista práctico los lenguajes compilados resultan más poderosos
pero los interpretados resultan más flexibles. El proceso de compilación genera
códigos ejecutables fuertemente dependientes de la máquina a la que van dirigidos,
con lo que se pierde la portabilidad del programa final aunque sí que se puede en
algunos casos tener portabilidad del código fuente. Por ejemplo, si se ha
desarrollado un programa en lenguaje C siguiendo el estándar ANSI, ese código
puede ser compilado por un compilador de C en Windows para generar la versión
ejecutable en Windows del programa, y posteriormente repetir la compilación en
Unix con un compilador diferente para obtener la versión Unix. Por supuesto, la
portabilidad del código solo es posible si no se hace uso en el programa de aspectos
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

particulares de una plataforma concreta.

Con un lenguaje interpretado se facilita la portabilidad, ya que lo único necesario


es disponer en cada plataforma del intérprete adecuado. Esta es la razón por la cual
muchos de los lenguajes para el desarrollo de aplicaciones web son interpretados,
ya que en Internet la portabilidad es imprescindible. Ejemplos de lenguajes
interpretados son JavaScript, VBScript y el propio PHP.

Otra de las ventajas de los lenguajes interpretados puede ser la mayor facilidad
para su aprendizaje y la simplificación en el proceso de desarrollo de las
aplicaciones. En el caso de los lenguajes interpretados para el desarrollo de
aplicaciones web, no se requiere además ningún tipo de herramienta de desarrollo
como puedan ser compiladores; los intérpretes van integrados en los navegadores
web en un caso y en los servidores web en otro. El código fuente además se

14
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTERNET Y LA PROGRAMACIÓN DE ORDENADORES

incrusta dentro del código HTML con lo que incluso no sería necesario ningún tipo
de editor específico.

Mención especial merece el lenguaje Java: se dice de él que es un lenguaje que


combina el poder de los lenguajes compilados y la flexibilidad de los interpretados.
Cuando se quiere integrar en una página web un programa Java (applet Java), se
necesita un proceso de compilación que genera un código binario a partir del
código fuente, pero este código no es ejecutable directamente sino que se ejecuta
por un intérprete que incorpora el navegador web que el usuario utilice al acceder a
la página. Este pequeño artificio es el que permite conseguir la portabilidad del
código compilado Java.

Los lenguajes interpretados que se utilizan en Internet para aumentar las


prestaciones de las páginas web se suelen denominar lenguajes de script y a los
programas con ellos desarrollados se les denomina scripts o guiones. Como ya se
ha comentado, el lenguaje PHP pertenece a esta categoría al igual que los otros dos
lenguajes de script más conocidos: JavaScript y VBScript.

1.4. PROGRAMACIÓN EN INTERNET


Como ya ha quedado de manifiesto, para poder hacer uso de toda la potencialidad del
servicio web cada vez más se requiere la utilización de lenguajes de programación que
complementen al lenguaje HTML. A la hora de decidir qué tecnología o lenguaje
concreto se puede utilizar para el desarrollo de una aplicación web deben plantearse
algunas preguntas cuya respuesta puede condicionar la elección final:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

— ¿Cuándo se realizarán las acciones? Por ejemplo, se puede querer que el


programa sea ejecutado al cargar la página que lo integra o, por el contrario, no
ejecutar el programa hasta que se produzca determinado evento sobre la página
(mover el ratón, pulsar un botón, situar el curso sobre algún elemento de la
página,...). En este segundo caso se requiere un lenguaje que admita
programación guiada por eventos, y la elección de un lenguaje como
JavaScript, por ejemplo, sería más adecuada que la elección de PHP.

— ¿Cuál será el formato del conjunto de ordenes? Se puede optar por generar
programas de forma independiente que se integren en la página después de un
proceso de compilación, tal como ocurre en el caso de Java, o por el contrario
se puede desarrollar la aplicación en base a scripts o guiones que, sin
necesidad de compilación, sean incrustados directamente entre el código
HTML, tal como se hace en PHP, JavaScript o VBScript.

15
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

— ¿Quién ejecutará o interpretará las ordenes? Como se ha comentado, en el servicio


web intervienen dos equipos, el servidor en el que está alojada la página y el cliente
que recibe el código HTML y genera la página en sí. Cuando existe también un
programa o script integrado en la página, la duda es cuál de los dos equipos es el
encargado de ejecutar las órdenes. En PHP, los programas son ejecutados por el
servidor mientras que en JavaScript es el cliente el que los ejecuta.

1.4.1. PROGRAMACIÓN DEL LADO DEL CLIENTE VS


PROGRAMACIÓN DEL LADO DEL SERVIDOR
La respuesta a la última pregunta planteada en la sección anterior da pie a la
clasificación de las tecnologías de programación en Internet en dos categorías:

— Programación del lado del cliente: los programas residen junto a la página web
en el servidor pero son transferidos al cliente para que este los ejecute. Java,
JavaScript, VBScript son lenguajes de programación del lado del cliente.

— Programación del lado del servidor: los programas son ejecutados por el
servidor y lo que se envía al cliente es la respuesta o resultado de dicha
ejecución. Lenguajes como PHP o Perl pertenecen a esta categoría.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Figura 1.3 Diferencia entre la programación del lado del servidor y la del lado del cliente

16
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTERNET Y LA PROGRAMACIÓN DE ORDENADORES

Cada una de estas estrategias tiene evidentemente sus ventajas y sus


inconvenientes, en cualquier caso no son excluyentes, ya que en una misma página
pueden incorporarse por ejemplo scripts en PHP para ser ejecutados por el servidor
y scripts en JavaScript para ser ejecutados por el cliente. En definitiva, se trata de
aprovechar las ventajas de cada tecnología en el desarrollo de las aplicaciones web.

Programación del lado del cliente Programación del lado del servidor
— Los programas residen en el servidor — Los programas residen y son ejecutados
pero se ejecutan en el cliente por el servidor

— Se descarga de trabajo a los servidores — El trabajo recae sobre los servidores


pudiendo llegar a sobrecargarse

— La ejecución del programa requiere una — Al cliente solo se les transfiere el


transmisión por la red del código resultado de la ejecución del programa
necesario para ello

— Las respuestas a las acciones de los — Una vez enviada al usuario la respuesta
usuarios sobre el programa pueden ser del programa, cualquier petición
invocadas sin necesidad de realizar adicional del cliente requiere una nueva
transmisiones por la red conexión con el servidor y la ejecución
en él de un nuevo programa

— Para la correcta ejecución del — En los equipos de los clientes no se


programa se requiere que el cliente necesita ningún software especial, todo
tenga instalados programas o plug-ins lo necesario debe estar instalado en el
adecuados servidor

— Si en un cliente no está instalado alguno — Todos los clientes podrán visualizar


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

de los programas intérpretes o plug-ins, correctamente la página


la página no se ejecutará correctamente

— Al transferirse el código, el cliente tiene — El código fuente permanece en el


acceso a dicho código y puede obtener servidor, se conserva su privacidad y
a partir de él información que pueda los clientes no tienen acceso a él
resultar comprometida

— Se pueden integrar los programas en — La mayoría de los servicios de


las páginas alojadas en cualquier alojamiento gratuito de páginas no
servidor web admiten este tipo de programación

Tabla 1.1 Diferencias entre la programación del lado del cliente y del lado del servidor

17
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

1.4.2. TECNOLOGÍAS DE PROGRAMACIÓN DEL


LADO DEL CLIENTE
En esta sección se presentan algunas de las tecnologías de programación del lado
del cliente más conocidas y utilizadas. Se trata únicamente de conocer sus
principales características para compararlas posteriormente con las del lenguaje
PHP.

JavaScript
JavaScript es un lenguaje interpretado basado en guiones que son integrados
directamente en el código HTML. El código es transferido al cliente para que este
lo interprete al cargar la página. Con JavaScript no pueden crearse programas
independientes.

La primera versión de este lenguaje apareció con el navegador Netscape 2.0 en


1995, con el nombre original de LiveScript y soportando gran cantidad de las
instrucciones que tiene en la actualidad. La versión JavaScript 1.1 se diseñó con la
llegada de las versiones 3.0 de los navegadores e incorporó algunas
funcionalidades nuevas como el tratamiento dinámico de imágenes y la creación de
arrays. Es esta versión la primera que se incorpora al explorador de Microsoft. En
los navegadores 4.0 de Microsoft y Netscape se incorporó ya un intérprete para una
nueva versión del lenguaje, el JavaScript 1.2. Con esta versión se inicia un proceso
de diferenciación en algunos aspectos de la implementación en los dos
navegadores, proceso que culminaría con el nacimiento de JScript, nombre con el
que Microsoft denomina a su versión de JavaScript. En la actualidad Microsoft ha
desarrollado su JScript.net.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Las principales características de este lenguaje son:

— Es un lenguaje interpretado.
— No necesita compilación.
— Multiplataforma.
— Lenguaje de alto nivel.
— Admite programación estructurada.
— Basado en objetos.
— Maneja la mayoría de los eventos que se pueden producir sobre la página
web.
— No se necesita ningún kit o entorno de desarrollo.

18
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTERNET Y LA PROGRAMACIÓN DE ORDENADORES

A diferencia de Java, JavaScript no dispone de elementos para crear interfaces


de usuario propias para los programas y tiene que utilizar para ello los
formularios de HTML a través de los denominados manejadores de eventos.

Java
Java es un lenguaje de programación clásico en cuanto a que requieren un proceso
de compilación. El código compilado puede ser integrado en la página web para
que sea ejecutado por el cliente.

El nacimiento formal del lenguaje se sitúa en enero de 1996 con el lanzamiento por
parte de la empresa creadora, Sun Microsystems, del JDK 1.0 (Java Development
Kit). Este entorno de desarrollo Java puede obtenerse de forma totalmente gratuita
a través de Internet (http://www.javasoft.com) e incorpora los elementos básicos
necesarios para el desarrollo de aplicaciones Java.

Con Java se pueden crear dos tipos de programas:

— Applets: programas que se integran en las páginas web y que, residiendo en el


servidor, son ejecutados por el cliente. La ejecución necesita de la
interpretación del código compilado por el software cliente.

— Aplicaciones: programas autónomos que se pueden ejecutar en cualquier


equipo. En este último caso puede optarse por generar código compilado
similar al de los applets y que para su ejecución necesita de un intérprete o
código compilado ejecutable directamente como en cualquier otro lenguaje de
programación.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

En el caso de los applets, el código fuente no se incrusta directamente en el


documento HTML, sino que lo que se añade es un código binario resultado de la
compilación, el denominado JBC (Java Byte Code). Esto permite proteger el
código fuente, aunque hasta cierto punto, ya que las particularidades de este código
compilado hacen que sea factible el proceso inverso, es decir, la decompilación,
recuperar el código fuente a partir del compilado. En la propia Internet pueden
encontrarse programas capaces de hacerlo. La razón de todo esto está en el hecho
de que para conseguir la portabilidad de los programas el código compilado es un
código que se encuentra a mitad de camino entre un código fuente y un código
objeto fuertemente dependiente de una plataforma. Es por ello que se suele decir de
Java que es un lenguaje que combina la flexibilidad de los lenguajes interpretados
y el poder de los compilados.

19
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Por supuesto, Java es un lenguaje con unas altas prestaciones, mucho mayores que
las de lenguajes interpretados. Algunas de sus características son:

— Es un lenguaje orientado a objeto.


— Admite programación concurrente.
— Dispone de clases de objetos para la generación de interfaces gráficas de
usuario.
— Tiene prestaciones multimedia.
— Resulta un lenguaje familiar, al tener una sintaxis similar al C++, aunque
eliminando algunos de los problemas más engorrosos del lenguaje C: el uso de
punteros, la gestión de la memoria y el control de accesos a los elementos de
arrays.
— Es un lenguaje simple, robusto y seguro.
— A través de Internet se puede acceder a todo lo necesario para desarrollar
applets Java.

VBScript
VBScript es, al igual que JavaScript, un lenguaje basado en guiones que permite
integrar programas directamente en el código HTML. Admite un doble uso, por un
lado como lenguaje del lado del cliente, pero también como lenguaje del lado del
servidor para la generación de páginas ASP.

Es un lenguaje desarrollado por Microsoft tomando como referente de sintaxis el


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

VBA, Visual Basic para Aplicaciones. Por supuesto, no ofrece todas las
funcionalidades de un entorno de desarrollo visual como Visual Basic, pero si se
presenta como un herramienta poderosa y de fácil uso para generar páginas web
interactivas.

1.4.3. TECNOLOGÍAS DE PROGRAMACIÓN DEL


LADO DEL SERVIDOR
Al igual que se hizo en la sección anterior, se presentan a continuación algunas de
las tecnologías de programación del lado del servidor más conocidas. Dentro de
esta categoría es en la que se sitúa el lenguaje PHP, que se estudiará con detalle en
los próximos capítulos.

20
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTERNET Y LA PROGRAMACIÓN DE ORDENADORES

Programación CGI
CGI son las siglas de Common Gateway Interface (Interfaz de Pasarela Común) y
lo que define es un estándar para establecer la comunicación entre un servidor web
y un programa. Esta interfaz define una forma cómoda y simple de ejecutar
programas que se encuentran en la máquina en la que se aloja el servidor, a través
de la definición de una serie de reglas que deben cumplir tanto las aplicaciones
como los servidores para hacer posible la ejecución de los programas.
Al tratarse de una interfaz, no existe ningún tipo de dependencia con el lenguaje de
programación empleado. Para desarrollar programas CGI se puede utilizar
cualquier lenguaje. Los más habituales son: C, C++, Fortran, Perl, Tcl, Visual
Basic, AppleScript. Los lenguajes interpretados como Tcl y Perl, tienen mayor
facilidad de mantenimiento y depuración, presentan ventajas de seguridad, pero
resultan más lentos. Los lenguajes compilados (C, C++,...), por su parte, son
mucho más rápidos. En el caso de CGI la velocidad de ejecución es importante, ya
que habrá que sumar el tiempo de ejecución al tiempo de espera de red y a la
velocidad de transmisión.

ASP: Páginas de Servidor Activas


ASP (Active Server Pages) es la tecnología diseñada por Microsoft para facilitar la
creación de sitios web con una mayor sencillez que la empleada en la
programación CGI. El principal inconveniente es la fuerte dependencia del entorno
Microsoft, ya que requiere un servidor web de Microsoft, como puede ser el
Internet Information Server (IIS) o el Personal Web Server (PWS).

Para utilizar la tecnología ASP sobre otros servidores, por ejemplo servidores
Unix, se necesita un software intérprete (Chilisoft, Instant ASP).
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

El núcleo de funcionamiento de ASP es una aplicación ISAPI (Internet Server


API). Una aplicación ISAPI es una DLL de Windows que se ejecuta en el mismo
espacio de direcciones que el servidor web y que puede soportar varias peticiones
simultáneas.

ASP no es realmente un lenguaje como tal, el lenguaje usado en realidad para


programar ASP es Visual Basic Script o Jscript (versión Microsoft de JavaScript).

Servlets y JSP: Páginas de Servidor Java


Los servlets y Java Server Pages (JSPs) son dos métodos de creación de páginas
web dinámicas en servidor usando el lenguaje Java. Se trata de tecnologías
desarrolladas por la empresa Sun Microsystems.

21
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Las JSP se diferencian de otras tecnologías del lado del servidor como los CGI
o las ASP en dos aspectos principalmente: por un lado, los JSP y servlets se
ejecutan en una máquina virtual Java, lo cual permite que, en principio, se
puedan usar en cualquier tipo de ordenador, siempre que tenga instalado esa
máquina virtual. Por otro lado, un programa JSP se compila a un programa en
Java la primera vez que se invoca, y del programa en Java se crea una clase que
se empieza a ejecutar en el servidor como un servlet. De esta manera los
servlets no se ejecutan cada vez que se recibe una petición, sino que persisten
de una petición a la siguiente, lo que permite realizar operaciones como la
conexión a bases de datos o manejo de sesiones de una manera más eficiente.

Un JSP es una página web con etiquetas especiales y código Java incrustado,
mientras que un servlet es un programa que recibe peticiones y genera a partir de
ellas una página web. En ambos casos se necesita un programa servidor que se
encargue de recibir las peticiones, distribuirlas entre los servlets y realizar las
tareas de gestión propias de un servidor web. Estos programas suelen llamarse
contenedores de servlets o servlet engines, y, entre otros, podrían citarse como
ejemplos Resin, BEA Weblogic, JRun de Macromedia, Lutris Hendirá, o, quizás el
más popular y conocido: Toncat.

ColdFusion
ColdFusion es una tecnología desarrollada inicialmente por Allarie, que en la
actualidad pertenece a Macromedia. Es una herramienta sencilla de aprender y
bastante potente que funciona sobre la mayoría de servidores web. Los scripts se
desarrollan por medio de etiquetas al estilo HTML (ColdFusion en realidad se
denomina Cold Fusion Markup Language -CFML-). Estas etiquetas se sitúan
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

dentro del documento HTML y son ejecutadas por el servidor, de forma que el
cliente solo ve el resultado, no el código.

Básicamente ColdFusion está formado por tres componentes: una aplicación


servidor, un lenguaje de marcación (ColdFusion Markup Language, CFML) y un
programa administrador. La aplicación servidor es la encargada de leer e interpretar
las instrucciones que le son pasadas a través de páginas ColdFusion. Estas páginas
se identifican por tener la extensión .cfm o .cfc y contienen etiquetas HTML y
etiquetas específicas del lenguaje propio de ColdFusion: CFML.

Las etiquetas del lenguaje CFML tienen una sintaxis similar a las de HTML y se
distinguen del resto por tener nombres que siempre comienzan con cf. Además de
las etiquetas predefinidas, el programador puede crear nuevas etiquetas e incluso
puede integrar código en otros lenguajes como C, C++ o Java.

22
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTERNET Y LA PROGRAMACIÓN DE ORDENADORES

Las aplicaciones ColdFusion pueden interactuar con cualquier base de datos que
soporte ODBC o JDBC.

PHP
PHP es un lenguaje interpretado del lado del servidor que surge dentro de la
corriente denominada código abierto (open source). Se caracteriza por su potencia,
versatilidad, robustez y modularidad. Al igual que ocurre con tecnologías similares,
los programas son integrados directamente dentro del código HTML. En este libro
se explicará en detalle la sintaxis y el funcionamiento de este lenguaje, de momento
se realiza a continuación una breve comparativa con las otras tecnologías del lado
del servidor descritas previamente.

Comparado con ASP, la principal ventaja de PHP es su carácter multiplataforma.


Por otro lado, los programas en ASP resultan más lentos y pesados, y también
menos estables. En los entornos Microsoft la ventaja de ASP es que los servidores
web de Microsoft soportan directamente ASP sin necesidad de ninguna instalación
adicional

Señalar también la existencia de herramientas que permiten convertir programas


desarrollados en ASP al lenguaje PHP, una de las más conocidas es asp2php.

Comparando el lenguaje PHP con el lenguaje Perl, utilizado habitualmente en la


programación CGI, puede decirse que PHP fue diseñado para desarrollo de scripts
orientados a web, mientras que Perl fue diseñado para hacer muchas más cosas y
debido a esto, se hace muy complicado. La sintaxis de PHP es menos confusa y
más estricta, pero sin perder la flexibilidad.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

En comparación con ColdFusion, PHP es más rápido y eficiente para tareas


complejas de programación, además PHP resulta más estable y usa una menor
cantidad de recursos. Por el contrario, ColdFusion posee un mejor gestor de
errores, un buen motor de búsquedas, abstracciones de bases de datos y un gran
número de funcionalidades para el procesamiento de fechas. Finalmente,
ColdFusion no está disponible para todas las plataformas.

En definitiva, PHP es uno de los lenguajes más utilizados actualmente en el


desarrollo de aplicaciones web y viene experimentado un constante crecimiento en
su nivel de utilización en Internet. Este libro trata de humildemente contribuir a
continuar con el proceso de difusión de esta tecnología.

23
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y
SOFTWARE LIBRE

2.1. INTRODUCCIÓN
El actual entorno mundial está claramente caracterizado por el fenómeno de la
globalización1, que puede entenderse como un efecto acción reacción que ocurre a gran
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

velocidad, casi de forma simultánea, por el cual los acontecimientos significativos que
ocurren en una parte del planeta repercuten o hacen reaccionar casi inmediatamente al
resto. Como rasgos característicos de este entorno globalizante podemos destacar, por un
lado, la tendencia a la estandarización económica, social, cultural y, como no, tecnológica,
siguiendo como modelo los patrones del bloque económico más fuerte, Estados Unidos. Y,
por otro, el uso intensivo de las tecnologías de la información y las comunicaciones (TIC).
En este sentido, el constante crecimiento del numero de actividades sociales y
empresariales, que necesitan de las computadoras, y la incorporación y presencia masiva de
dispositivos digitales en cualquier actividad humana han aumentado la cantidad y

1
Las definiciones de globalización son múltiples, aquí interesa más comprender su
significado general que entrar en los matices de las distintas definiciones. No obstante, para
una mayor profundidad sobre el concepto se recomienda consultar las siguientes obras
Globalización: oportunidades y desafíos. (Maesso Corral, 2003) y Los limites a la
globalización (Noam Chomsky, 2002).

25
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

complejidad de los sistemas software, haciendo crecer por tanto la inversión y dependencia
de dichos sistemas y en definitiva de sus creadores.

Segmentos 2003 2004 % Cto Previsión


Diciembre Noviembre 03/04 2005
Hardware 140.129 142.032 1.35 147.351
Software 61.017 63.758 4.5 67.854
Servicios TI 114.938 117.301 2.05 122.272
Telecomunicaciones 292.287 303.507 3.83 316.941
Total 608.371 626.598 2.99 654.418

Tabla 2.1 Facturación del mercado de las TIC (en millones de euros) en Europa por
segmentos. Elaboración propia a partir de los datos de noviembre obtenidos en el Centro
de Predicción Económica de la Universidad Autónoma de Madrid (CEPREDE) y el
Observatorio de Tecnologías de la Información Europeo (EITO)

En el ámbito informático, que es el que interesa en este libro, este proceso


de homogenización y dependencia queda claramente reflejado en el software
y en especial en los sistemas operativos, donde las posibilidades de elección
del tipo de sistema para el usuario no técnico son muy reducidas, e incluso
son los propios fabricantes y no las necesidades del usuario los que obligan
a cambiar de una versión a otra en una aplicación. Como ejemplo de lo
anterior basta con preguntarse cuántos sistemas operativos conocemos, por
qué tenemos instalado y utilizamos ese sistema operativo y no otro, y si fue
esta nuestra la elección.

Inicialmente la estandarización de aplicaciones informáticas se ha visto


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

propiciada por los avances en las TIC, especialmente por la red Internet y sus
protocolos y servicios, que han eliminado las barreras físicas y geográficas
permitiendo una sociedad global comunicada de forma colectiva e interactiva.
Pero Internet, que crece y madura conforme aumenta su número de usuarios2,
se acerca de forma pausada, a su filosofía inicial, convirtiéndose en un medio
de comunicación de información, conocimiento y experiencias plural y
diverso, que se aleja de la estandarización y busca una mayor libertad
favoreciendo el desarrollo de importantes avances. Uno de los acontecimientos
más fascinantes se ha producido en el ámbito informático y de desarrollo de

2
Las últimas cifras registradas en agosto del 2004 por el Centro de Predicción Económica
de la Universidad Autónoma de Madrid (CEPERDE) revelan que en el mundo existen más
de 797millones de internautas, lo que supone un incremento del 121% respecto al año 2000,
de los que más de 14 millones de usuarios están en España, aproximadamente el 36 % de la
población del país.

26
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

aplicaciones con la aparición de la corriente denominada free software u open


source, que merece, como se verá a continuación, una especial atención por cuanto
supone una ruptura con los planteamientos tradicionales de la industria del
software, dominados por el principio de beneficio económico.

2.1.1. ¿QUÉ ES OPEN SOURCE?

A modo de aproximación inicial se puede decir que el término open source hace
referencia a la libre disponibilidad por parte del usuario de un software y de su código
fuente. El código fuente está formado por líneas de instrucciones escritas en un
determinado lenguaje de programación que permiten desarrollar una aplicación o
software y que este ejecute las tareas para las que ha sido creado. Para los que se acercan
al mundo de la informática por primera vez o no dominan aspectos más técnicos
podemos utilizar como símil del código fuente la formula de elaboración de un
medicamento. La importancia de conocer el código fuente no es trivial, pues quien
conozca el código, o fórmula siguiendo con el ejemplo, y disponga de los elementos
técnicos y conocimientos necesarios podrá generar por sí mismo el producto final
software o modificarlo según sus necesidades. Evidentemente, toda organización
empresarial con ánimo de lucro dedicada al desarrollo de aplicaciones guarda y protege
el código fuente de los programas que desarrollan como el mayor de sus tesoros.

Es importante aclarar que open source hace referencia a la libre disponibilidad en


cuanto a utilizar, modificar y distribuir el software y su código fuente y no al coste
o precio de adquisición. Por tanto, es posible encontrar software open source y
software libre que no sea gratis, que presente un precio de adquisición, que de
haberlo es generalmente muy reducido.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Conceptos muy diferentes son los términos free software y Shareware. El primero,
designa un software sin precio de adquisición, gratuito, que el usuario en algunos
casos, y según lo que exprese la licencia del producto, podrá copiar y distribuir,
incluso acceder a su código fuente o modificarlo. El segundo, Shareware, hace
referencia a software o versiones de software que es posible utilizar de forma
gratuita durante un periodo de tiempo, y una vez expirado este, para seguir
utilizando el programa con todas sus funcionalidades es necesario abonar un precio
y aceptar una licencia de uso. En realidad el software Shareware no constituye un
tipo de software, más bien responde a una estrategia promocional del tipo “periodo
de prueba gratuito” y, en ningún caso permite acceso al código fuente ni durante el
periodo promocional ni después del pago.

Con este primer acercamiento al significado de open source, que obviamente no


recoge de forma completa los planteamientos de la citada corriente, se pretende dar

27
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

un punto de partida para poder comprender los siguientes epígrafes en los que se
analizará la evolución cronológica de este movimiento, su filosofía y características
y la expansión espectacular que está teniendo en la actualidad.

2.2. BREVE RESEÑA CRONOLÓGICA


Para entender un fenómeno en su toda su magnitud no basta con tener una
definición del mismo (Yin, 20003), sino que es necesario tener en consideración
cómo y por qué se produce ese fenómeno, así como su evolución en el tiempo. En
este sentido, con la intención de lograr una mayor comprensión de lo que
representa la corriente open source, antes de dar una definición y mostrar sus
principales características, se realizará un breve repaso sobre su desarrollo
cronológico.

2.2.1. PRIMERA ETAPA, ANTECEDENTES

El precedente del open source está en los inicios de la informática moderna.


Entorno a los años sesenta y primeras décadas de los setenta, época en la que la
disponibilidad de equipos informáticos era muy limitada, casi exclusiva de
universidades y centros de investigación financiados generalmente por los
gobiernos. Además, en este periodo las computadoras no disponían de un entorno
tan amigable para el usuario como en la actualidad. No había distinción entre
desarrolladores de aplicaciones o informáticos y usuarios pues eran en realidad la
misma cosa, formando una comunidad reducida.

En este periodo la mayoría del software existente era compartido libremente entre
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

los usuarios, desarrolladores, con el fin de mejorarlo y avanzar en el desarrollo y


creación de nuevos programas.

2.2.2. SEGUNDA ETAPA, DESARROLLO


A partir de los años ochenta los avances en hardware con equipos más potentes,
pequeños y a menor coste que en periodos anteriores favorece la expansión
intensiva de las computadoras a los puestos de trabajo y hogares. Todo esto
produce un gran aumento de usuarios, cada vez menos técnicos, que favorece el
emergente negocio del desarrollo de aplicaciones, cada vez más fáciles de utilizar.

3
Yin R. (2000). “Case study evaluations: a decade of progress?” En: Evaluation models.
Viewpoints on educational and human services evaluation. Boston. Kluwer Academic
Publishers, 2000.

28
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

Ante esta situación solo era cuestión de tiempo que el software libre desapareciera
y se implantara el software comercial o Closed Source (código fuente cerrado), que
supone para el usuario adquirir únicamente el derecho a la utilización de las
aplicaciones.

Es este contexto el que en 1984 inspiró a Richard Stallman, miembro del staff del
laboratorio de inteligencia artificial del Instituto de Tecnología de Massachusetts (MIT), a
renunciar a su puesto y dar inicio al proyecto GNU, acrónimo del inglés GNU is not Unix,
con el propósito de crear una comunidad para compartir software de forma libre. Libre en
cuanto a la posibilidad de ver su código fuente, modificarlo y poder distribuirlo con o sin
coste, pero siguiendo la distribución esos mismos principios. Para conseguir ese objetivo, la
primera tarea que se propuso fue desarrollar un sistema operativo completo tipo Unix4 que
siguiera esos criterios de libertad.

En 1985 los componentes del proyecto GNU crearon la Fundación para el Software
Libre, free software Fundation (FSF), organización sin ánimo de lucro creada para
el fomento del software libre que pasa a ocuparse de tareas organizativas y de
distribución de este tipo de software tanto procedente del proyecto GNU como
ajeno. Esta asociación establece la definición de free software, software libre,
indicando que un software para tener esta calificación debe cumplir con cuatro
condiciones, denominadas las cuatro libertades:

1. Libertad para ejecutar el programa con cualquier propósito.


2. Libertad de acceso al código fuente, permitiendo la modificación del
programa según las necesidades del usuario.
3. Libertad para redistribuir copias, tanto gratis como por un canon.
4. Libertad para distribuir versiones modificadas del programa.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

2.2.3. TERCERA ETAPA, EXPANSIÓN


La principal dificultad del proyecto GNU para el desarrollo de su sistema operativo
completo era disponer de un núcleo o kernel libre, no comercial. Esto se soluciona
cuando en 1991 Linus Trovalds desarrolló un núcleo libre compatible con Unix que
denominó Linux. Al combinar el sistema GNU con Linux se obtuvo un sistema
operativo libre completo, GNU/LINUX.

4
La intención de hacer el nuevo sistema compatible con Unix fue debida a que “...ese era
el sistema operativo más utilizado y por tanto el ser compatible con dicho sistema
facilitaría el trasvase de usuarios de uno a otro.....”. Stallman, 1999.

29
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

En 1993 Ian Murdock da lugar al proyecto Debian como una asociación de


personas, cerca de un millar de desarrolladores voluntarios dispersos por todo el
mundo, que trabajan a través de la Red y hacen causa común para el desarrollo y
distribución de software de forma abierta en la línea de Linux y GNU, dando lugar
al sistema operativo que han denominado Debian GNU/Linux5.

Un hecho crucial para toda la corriente es la creación por parte de esta asociación
del denominado “Contrato social de Debian con la comunidad de software libre”.
El primer borrador de este documento fue elaborado por Bruce Parens en 1997 y en
él se recogen las llamadas directrices de software libre de Debian, formadas por
diez puntos en los que se recoge la filosofía a seguir por el proyecto Debian y que
servirán de base a la futura definición de open source. Esta definición se produce
en febrero de 1998 cuando dentro de la comunidad de software libre un grupo,
formado entre otros por Raymond, E; Parens, B; Peterson, C, crea la open source
Initiative (OSI) que elabora y promueve el uso de la nomenclatura open source. La
OSI, tomando como base las directrices del software libre de Debian y eliminando
las referencias específicas a dicha asociación, establece la definición de open
source que se rige por los siguientes puntos que a continuación se muestran de
forma resumida:

1. Libre redistribución.
2. Acceso al código fuente.
3. Trabajos derivados.
4. Integridad del código fuente del autor.
5. No discriminación contra personas y grupos.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

6. No discriminación contra campos de trabajo.


7. Distribución de licencia.
8. La licencia no debe ser específica a un producto.
9. La licencia no debe restringir otro tipo de software.
10. La licencia debe ser tecnológicamente neutral.

Como conclusión a este epígrafe se recoge en la Tabla 2.2 un resumen de los


acontecimientos más importantes dentro del movimiento software libre y open
source.
5
Si bien en la mayoría de ocasiones la utilización de este sistema operativo suele
designarse solo como Linux, la expresión correcta sería GNU/Linux. Linux por si solo es
un núcleo y no un sistema operativo completo.

30
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

1984 Richard Stallman crea el proyecto GNU.


1985 Los componentes del proyecto GNU crean la FSF (free software
Foundation).
1991 Linux Trovalds desarrolla el Kernel Linux.
1991 Primer sistema operativo libre Linux, combinación de
GNU/LINUX.
1993 Ian Murdock crea el proyecto Debian.
1997 Debian establece el “Contrato social Debian con la comunidad
del Software libre”.
1998 Un grupo de la comunidad Software Libre crea la OSI (open
source Initiative).
1998 Bruce Parents miembro de OSI establece la definición de open
source.
Tabla 2.2 Acontecimientos más importantes dentro del movimiento software libre y open
source

2.3. LA CORRIENTE OPEN SOURCE Y


SOFTWARE LIBRE FILOSOFÍA Y
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

CARACTERISTICAS
Antes de seguir avanzando en el significado de la denominada corriente open
source es necesario, tanto desde el punto de vista académico o científico como del
educativo, hacer una distinción entre dos vocablos que en la escasa literatura
existente aparecen confusos, unas veces utilizados como sinónimos y otras como
términos distintos para hacer referencia a una misma realidad.

Los términos free software, que en castellano puede traducirse por “software libre”,
donde libre no se refiere al precio sino a la libertad de uso y disponibilidad de una
aplicación y de su código fuente, y open source que tiene por expresión homónima
“código fuente abierto”, son dos formas distintas utilizadas para designar no solo
un tipo particular de software y licencia sino un modo de pensar, una filosofía
distinta en lo referido a producción, distribución y venta de software.

31
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Si bien es cierto que estos términos no son exactamente idénticos ya que cada uno
de ellos tiene su origen en una corriente distinta de un mismo movimiento
(Stallman, 19996), no es menos cierto que son más las coincidencias que los unen
que las diferencias, siendo las propias tendencias las que intentan hacer prevalecer
los matices de su concepto sobre el otro.

GNU y open source dos corrientes de un mismo movimiento

Son numerosos los artículos que circulan por la Red hablando de enfrentamiento
entre las dos corrientes, pero en honor a la verdad y acudiendo a la información que
las propias organizaciones FSF y OSI ofrecen, dicho enfrentamiento no existe, más
bien todo lo contrario, colaboran y participan en distintos proyectos y eventos,
aunque siempre dejando claro que no son organizaciones idénticas.

Sin entrar en profundidades filosóficas, las dos corrientes tienen en común un


aspecto fundamental, la obligación de que su software permita acceso al código
fuente, es decir, que sus aplicaciones sean de código abierto. Su punto clave de
distensión se encuentra en la posición diferente que mantienen respecto de la
distribución del código fuente y de los programas que de él pueden derivarse,
puesto que la FSF establece como condición obligatoria para considerar un
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

software como libre que dicha aplicación, su código fuente y las aplicaciones que
de él se deriven permanezcan siempre libres, utilizando para ello unas licencias de
software especiales que se estudiarán en el epígrafe siguiente. Por el contrario, la
OSI no establece restricciones y permite que un software con código abierto sea
modificado y posteriormente cerrado. De hecho, a tenor de lo anterior, todo
software libre admitido por la FSF estaría admitido por la OSI como software open
source, sin embargo, no todo el software open source de la OSI es considerado
libre por la FSF.

No se entrará a juzgar cuál de los dos vocablos es el más idóneo para designar en
sentido amplio a todo el movimiento. Pero por ser necesario en aras de la claridad
utilizar uno de los dos, se usará el término open source puesto que, como se ha

6
Stallman, R; Raymond, E. S; Bruce. P; O'Reilly.T et al.: open sources: Voices from the
open source Revolution. Edited by Chris DiBona, Sam Ockman, Mark Stone. (1999).

32
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

visto, engloba tanto al software open source como al software libre de la FSF y su
uso es más extendido y reconocido en los foros internacionales. Como ejemplo de
la utilización y reconocimiento del termino open source se pueden citar los
siguientes acontecimientos recientes:

— La Unión Europea ha puesto en funcionamiento el 15 de diciembre del año


2003 el open source Observatory dedicado al estudio del fenómeno open
source en el ámbito de la Unión Europea.

— Bajo el título “open source World Conference” se ha celebrado en Málaga


los días 18, 19 y 20 de febrero del año 2004 un congreso7 internacional
para el análisis de la situación mundial del software considerado open
source.

Open source no es solo una definición de un tipo de software sino que representa
todo un movimiento, con una filosofía y formas de trabajar distintas que implican
unas repercusiones tecnológicas, sociales y económicas que requieren de un
análisis detallado que se realizará a continuación.

Open source busca dar la libertad total a los usuarios en la utilización del software,
lo que implica la necesidad de poner a total disposición de estos el código fuente
que en la mayoría de las ocasiones además de ser accesible puede ser copiado,
modificado y redistribuido sin restricciones. Esta filosofía cargada de libertad y
apertura no puede crecer en los tradicionales entornos cerrados y requiere la
búsqueda y definición de nuevos espacios abiertos y colaborativos, que dan lugar a
las denominadas comunidades. Una comunidad es una agrupación de personas que
con independencia de su perfil económico, social, cultural y geográfico presentan
un interés común y de forma voluntaria se incorporan a un grupo, inicialmente
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

pequeño, que crece en torno a un mismo interés hasta crear una comunidad
organizada. Este fenómeno social de agrupación voluntaria de personas,
generalmente de forma virtual, en torno al desarrollo de software open source
constituye el motor de todo el movimiento. Motor social que se ha visto favorecido
en su desarrollo por la aparición y uso intensivo de Internet, que actúa como
espacio físico en el que estas comunidades se instalan y comunican y como
catalizador del movimiento open source. Es por ello que se reconoce la existencia
de una estrecha vinculación entre Internet y el open source, pues sin una red libre
del tipo de Internet sería imposible el desarrollo de esta tendencia, y sin esta no se
habrían desarrollado numerosos elementos que contribuyen al mantenimiento y
crecimiento de la Red.

7
Congreso que pese al título “open source” contó con la presencia de prestigiosos
representantes de ambas corrientes, free software y open source.

33
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

El movimiento open source tiene importantes consecuencias económicas,


relacionadas con las sociales, que repercuten favorablemente en los usuarios. En
primer lugar, altera la forma tradicional de producción de software, puesto que no
hay una organización empresarial con finalidad lucrativa propietaria del software
que se desarrolle, ni se paga una contraprestación económica a los desarrolladores.
El modelo de producción del movimiento open source se basa en la comunidad,
formada por desarrolladores y usuarios cuya finalidad principal es generar y
disponer de un software de calidad, ocupando el lucro una posición marginal, lo
que permite que el precio del software generado sea bajo o nulo.

Un segundo punto a considerar es que el open source supone una anomalía en el


funcionamiento del mercado, debido a que las comunidades, salvo excepciones, no
pueden ser compradas o absorbidas como si de una empresa se tratase; incluso en
el caso de que una comunidad fuera eliminada, según el tipo de licencia que esta
hubiera incorporado en sus programas, estos y los posteriores desarrollos que se
hicieran sobre los mismos seguirían siendo igual de libres.

Por último, open source ha supuesto una apertura del mercado, generando
competencia y reduciendo los efectos negativos de las situaciones próximas al
monopolio, obligando a las empresas a ser más competitivas, lo que se traduce en
ofertar mejores productos a menores precios.

La tendencia monopolística que viene presentando el sector tecnológico de


desarrollo de software en el que unas pocas compañías controlan los productos
existentes en el mercado ha generado un retroceso en la ingeniería del software
debido a:

— El desarrollo de software no se basa en optimizar este, sino en los


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

adelantos y mayores requerimientos de hardware.

— La aparición de nuevas versiones y mejoras de software se rigen por


criterios económicos y no tecnológicos, y generalmente se producen de
forma dilatada en el tiempo para sacar el mayor rendimiento económico a
cada versión.

La forma de trabajo de open source, con un amplio número de desarrolladores y


usuarios revisando y testando los productos continuamente, favorece que los
avances y mejoras sean rápidas y regidas por criterios de calidad tecnológica.

Los desarrolladores-usuarios pueden colaborar en distintas comunidades y estas


aliarse entre sí para determinados proyectos, que generan colaboraciones y
sinergias desinteresadas económicamente, difíciles de encontrar en el entorno

34
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

empresarial, y que repercuten en diversidad de enfoques ante un mismo problema


tecnológico. Por último, una cuestión fundamental en el open source es que la
aparición de nuevos productos deriva de los intereses de los usuarios-
desarrolladores, que son quienes dirigen la comunidad.

2.4. LICENCIAS
La comunidad open source y software libre se basan en la búsqueda de la libertad
duradera y permanente del software, pero en una libertad siempre conforme al
derecho y la jurisprudencia y nunca sustentada en la violación de las normas
legales. Es precisamente la normativa jurídica la que permite y ampara que el
software se mantenga libre frente a intentos de apropiación por terceros. Esta
libertad se consigue dotando al software de los correspondientes derechos de autor
y licencias. La licencia, en un lenguaje coloquial, puede definirse como la forma en
la que el autor de una obra, en este caso software, permite el uso y distribución de
su creación por terceras personas de la manera que él considera más oportuna,
siendo por tanto responsabilidad del autor incluir la licencia que especifique de qué
forma puede ser utilizado un programa.

La cuestión de las licencias es uno de los temas más complejos de cuantos rodean
al open source, y ello es debido tanto a la dificultad propia del ámbito jurídico que
supone redactar una licencia sin ambigüedades ni contradicciones, que no entre en
conflicto con la ley y sobre todo que sea sostenible ante los tribunales en caso de
litigio; como a la gran variedad de licencias existentes.

Es práctica habitual y recomendada8 entre los desarrolladores de software libre a la


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

hora de crear una licencia para el software desarrollado, tomar como base la
licencia libre GPL (General Public License), que posteriormente se analizará, y a
partir de ella si no se está de acuerdo en algún punto modificarlo hasta lograr una
licencia a medida. Buena muestra de lo anterior es la Tabla 2.3, que recoge algunas
de las licencias más habituales.
Para simplificar, el análisis y tratamiento de las licencias de software pueden
clasificar estas según su pertenencia a uno de estos tres grupos:
— Licencias propietarias.
— Licencias libres.
— Licencias semilibres.

8
Esta recomendación se debe a la mencionada complejidad que entraña el desarrollar una
licencia conforme al derecho.

35
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Academic Free License

Apache Software License

Apple Public Source License

Artistic license

Attribution Assurance Licenses

BSD license

Common Public License

GNU General Public License (GPL)

GNU Library or "Lesser" General Public License (LGPL)

IBM Public License

Intel open source License

Jabber open source License

MIT license

Tabla 2.3 Licencias principales open source y Software Libre


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

2.4.1. LICENCIAS PROPIETARIAS


Son todas aquellas licencias que acompañan al software que no cumple los requisitos
para ser considerado libre o de código abierto por la FSF y la OSI, y se corresponde
con la mayoría del software comercial. Un ejemplo característico es la licencia de
Microsoft. Pese a que el análisis de estas licencias no es el objetivo central de este
apartado, se recogen a continuación una serie de rasgos distintivos de las licencias
propietarias a fin de que el lector pueda con posterioridad comparar con los otros
tipos de licencias. Así, son características genéricas de las licencias propietarias:

— La aceptación a priori de la licencia, es decir, sin dar la posibilidad a


utilización y evaluación del producto.

36
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

— Prohibición de realizar copias de la aplicación. Con ciertas reservas son


admitidas la realización de copias de los programas informáticos para uso
privado con fines de seguridad, las llamadas copias de seguridad9.
— Prohibición de realizar y distribuir modificaciones de la aplicación.
— Cada licencia permite utilizar el producto en un solo equipo informático.
Un ejemplo aclaratorio de esta cláusula consiste en que un usuario que
adquiere una licencia de una aplicación si tiene dos equipos informáticos
solo podrá utilizar esa licencia en uno de ellos.

2.4.2. LICENCIAS LIBRES


Las licencias libres son el medio legal que tiene la corriente open source y
software libre de garantizar que un software desarrollado como libre se mantenga
como tal en el tiempo.

La variedad de licencias libres, como se ha comentado, es muy amplia, si bien la


base de la gran mayoría de ellas está en la primera licencia libre que se creó: la
GPL10 (General Public License) desarrollada por la FSF (free software Foundation)
que recoge unas condiciones de distribución que impiden que el software libre se
transforme en software propietario mediante la denominada cláusula “Copyleft”.
El término copyleft11 tiene por objetivo preservar el carácter libre de un programa,
prohibiendo que del mismo se obtenga otro no libre o que se redistribuya con
restricciones adicionales. Su principal requerimiento es, en palabras de Stallman,
“cualquier cosa agregada o combinada con un programa bajo copyleft debe ser tal
que la versión combinada total sea también libre y bajo copyleft”.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Algunas de las licencias libres más utilizadas son:

— GPL, ya mencionada, y la GPL-2 segunda versión que respeta el núcleo


central de la licencia inicial, la cláusula Copyleft.

9
Así queda regulado en el artículo 25.3 de la Ley de Propiedad Intelectual RDL 1/1996 de
12 de abril.
10
La figura legal más próxima en España sería la llamada obra colectiva. regulada en los
artículos 8 y 97 de la Ley de Propiedad Intelectual, Real Decreto Legislativo 1/1996 de 12
de abril.
11
Copyleft no es lo contrario de Copyright pues la cláusula Copyleft la impone el autor del
programa original en uso de sus facultades de copyright.

37
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

— FDL (Free Document License), licencia que recoge las mismas


condiciones que la GPL pero adaptada al tema de la documentación,
manuales y textos derivados del software libre.
— LGPL (Lesser General Public License), que consiste en una modificación
de la GPL con un carácter menos restrictivo al permitir la creación de
librerías abiertas que puedan incorporarse tanto a programas libres como
propietarios sin obligar a estos últimos a cambiar de licencia.

Las características genéricas de este tipo de licencias con respecto a las licencias de
software propietario son:

— Posibilidad de instalar el software en tantas máquinas como se quiera.


— Aceptación de la licencia a posteriori, utilizada una aplicación el usuario
decide si quiere redistribuirla, siguiendo la licencia inicial y, por tanto,
acatándola.
— Posibilidad de hacer tantas copias como se quiera.
— No restricción en la distribución, incluso mediante venta12.

No obstante, hay que destacar que es en el ámbito de las licencias donde mejor
queda reflejada la distinción entre las dos corrientes, open source y software libre,
puesto que la OSI admite licencias, como la BSD (Berkeley Systmen Distribution),
que añaden determinadas restricciones a los términos de distribución de originales
y de redistribución de programas derivados, al eliminar la obligatoriedad de
mantener el software como libre suprimiendo la cláusula Copyleft. La licencia BSD
tiene como principal característica permitir que un programa libre pueda ser
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

modificado obteniéndose de él un programa derivado que se cierra, deja de ser libre


su código fuente, cambiando la licencia.

2.4.3. LICENCIAS SEMILIBRES


Un caso especial que refleja lo que son las denominadas licencias semilibres ha
sido la licencia QPL referida al uso de las librerías gráficas QT, caracterizadas por
requerir licencia y pago si se van a utilizar para desarrollos comerciales y
ajustándose a la GPL en los demás casos. Por tanto, no es propietaria en cuanto a

12
Siguiendo los principios de libre mercado la oferta y la demanda mantendrán un coste
bajo o nulo, puesto que si los vendedores obtienen un margen de beneficios elevado
entrarán nuevos vendedores en el mercado y la competencia hará que los precios
disminuyan

38
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

que da libre acceso al código fuente, siendo posible modificar y distribuir el


programa, pero no es libre en los términos de la FSF al ser necesario pagar licencia
cuando se use en proyectos comerciales.

Para finalizar este apartado se identificarán las licencias a las que están sujetas las
aplicaciones open source que se van a utilizar y desarrollar en los capítulos
siguientes:

— PHP, que es uno de los lenguajes de programación más utilizados por la


comunidad open source adopta su propia licencia, la PHP License 3.0 que
puede ser consultada integramente en (www.php.net/license/3_0.txt) licencia
que tomando como base la licencia BSD presenta una gran libertad en su uso y
redistribución con las únicas limitaciones que pueden resumirse en:

• Indicar en las redistribuciones la nota de copyright y condiciones


de la licencia original.
• No utilizar en los programas derivados el nombre de PHP, ni como
nombre ni con fines publicitarios sin permiso de PHP Group.

— MySQL, considerada la base de datos por excelencia del open source, ha


generado recientemente un pequeño sobresalto entre la comunidad de
código abierto, pues de su licencia inicial, la licencia LGPL que permite
que sus librerías sean utilizadas por programas de código abierto y no
abierto, ha pasado en la versión MySQL 4 a la licencia GPL
(www.mysql.com/products/licensing.html), que obliga a que todo código
que quiera utilizar las librerias oficiales de MySQL deba ser GPL, lo que
suponía romper la compatibilidad con PHP regida por una licencia no GPL.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Finalmente MySQL AB, compañía propietaria de MySQL, ante las


repercusiones que podía tener esta medida ha publicado una excepción13 a
la licencia GPL de MySQL que permite incluir las librerías en otros
proyectos de código abierto que usen licencia distinta a GPL. Esto supone
que permitirá que las librerías de acceso MySQL sean incluidas en PHP 5
como sucedía hasta ahora en PHP 4.

13
La publicación se ha realizado el 12 de marzo del 2004 y puede ser consultada
íntegramente en la siguiente dirección www.mysql.com/products/foss-exception.html

39
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

2.5. SITUACIÓN ACTUAL DEL SOFTWARE


OPEN SOURCE
La historia universal está llena de ejemplos en distintas ramas y campos del saber,
desde los epicúreos en filosofía hasta los planteamientos del comunismo radical en
economía, de movimientos que por sus propios planteamientos utópicos fueron
desapareciendo progresivamente. Pero este no parece ser el caso de la corriente
open source si se analiza la evolución de los datos y cifras relativas al uso y
aplicación del software perteneciente a dicho movimiento y a las comunidades y
proyectos que surgen dentro del mismo.

En el ámbito general, del software open source se conoce principalmente su


sistema operativo más extendido, Linux (GNU/Linux), pero que no se conozcan
otro tipo de aplicaciones no quiere decir que no existan, sino que simplemente por
ser recientes en comparación con la mayoría de aplicaciones cerradas o
propietarias existentes no han adquirido todavía popularidad entre los usuarios.
Esto es lógico, pues no se puede pensar en un cambio radical de un tipo de
aplicaciones a otro sino en un cambio progresivo, fruto en primer lugar del
conocimiento de las alternativas existentes y en segundo lugar de la comparación
entre las mismas.

2.5.1. SOFTWARE OPEN SOURCE, APLICACIONES


PARA TODO
Los movimientos de open source y software libre tienen como finalidad última
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

evitar la dependencia del software cerrado y para ello buscan dar una cobertura
total a las necesidades de los usuarios mediante software libre. Esto supone
desarrollar todo tipo de software no solo de base o sistema14, sistemas
operativos, sino también de aplicación como procesadores de texto, hojas de
cálculo, compresores, aplicaciones multimedia y herramientas de desarrollo
web.

14
El software de infraestructura, también llamado de base o de sistema, es aquel conjunto
de programas que tienen como misión facilitar el uso del ordenador por parte de los
usuarios. Entre sus funciones están comunicar la computadora con sus periféricos,
asignándolos y administrándolos y actuar como intermediario entre el hardware y el
software de aplicación. Este tipo de software suele dividirse en sistema operativo y
programas de utilidades.

40
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

Software open source de sistema


En primer lugar hay que recordar que el software de sistema hace referencia
principalmente al sistema operativo y matizar que este está formado por dos partes,
un kernel o núcleo y a un conjunto de utilidades y programas básicos que unidos al
núcleo forman un entorno completo.

Existen distintos sistemas operativos open source a parte de Linux como FreeBSD
(www.freebsd.org), caracterizado por proporcionar servicios de red robustos con
una excelente gestión de memoria y un alto rendimiento en los accesos a disco y
librerías compartidas que reducen el tamaño de los programas, OpenBSD
(www.openbsd.org) sistema operativo que concentra sus esfuerzos en la seguridad
y la portabilidad, GNU/HURD (http://hurd.es.gnu.org), novedoso sistema basado
en un conjunto de servidores, que se ejecutan sobre un microkernel formando la
parte del sistema operativo que sustituye al núcleo tradicional. Pero como ya se ha
comentado en apartados anteriores el sistema operativo open source por excelencia
es el que generalmente se denomina como LINUX, basado en el núcleo o kernel
Linux más las librerías y utilidades GNU. En la actualidad son numerosas las
variantes de distribuciones, comerciales y no comerciales, de sistemas
operativos basados en Linux (GNU/Linux) pero con distintas utilidades y
complementos alcanzando un elevado grado de especialización. A continuación
se recogen las distribuciones más destacadas:

Comerciales

— RedHat (www.redhat.es), es la distribución Linux más extendida, está


orientada principalmente a empresas y acompaña sus distribuciones con
atención y soporte al usuario junto con una amplia documentación.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

— Mandrake, (www.mandrakelinux.com), basada inicialmente en Redhat,


pero con una orientación al usuario medio. Es sencilla de instalar y consta
de asistentes y ayudas visualmente atractivas.
— United Linux (www.unitedlinux.com), distribución fruto de la colaboración
de cuatro empresas Conectiva S.A., SCO Group, SuSElinux AG y
Turbolinux, Inc. que tienen por objetivo el desarrollo de un sistema
operativo Linux estandarizado, que actúe como distribución base a partir de
la cual cada empresa añada y comercialice las utilidades y mejoras propias.

No comerciales

— Debian (www.debian.org), Debian GNU/Linux es junto con Redhat la


distribución de uso más extendido. Desde el punto de vista técnico sus

41
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

controles son muy rigurosos y es considerada la distribución Linux más


estable. Las aplicaciones tienen su propio formato “.deb” y un cómodo
instalador “apt”. La distribución completa consta de más de 8.000 paquetes
con utilidades y aplicaciones de todo tipo: programas matemáticos,
grabadores de CD, editores de imágenes, etc. Desde su origen es una
distribución creada y mantenida por los usuarios, su licencia es GPL y es
una distribución apoyada públicamente por la FSF y el proyecto GNU.
— LinEx (www.linex.org), distribución gratuita, incluido el soporte y atención
al usuario, desarrollada y promovida por la administración autonómica de
Extremadura. Su desarrollo se basa en la distribución GNU/Debian de la
que hereda sus ventajas, con una gran variedad de software que permite
cubrir todas las necesidades de un usuario medio con software libre, e
intenta eliminar algunos de sus inconvenientes, facilitando al máximo la
instalación15.
— Guadalinex (www.guadalinex.org), distribución gratuita desarrollada por
la administración autonómica de Andalucía fruto de la colaboración
establecida con la junta de Extremadura destinada a dar cumplimiento al
Decreto 72/2003, en el que la Junta de Andalucía opta por el software libre
como instrumento para el impulso de la Sociedad del Conocimiento en
Andalucía. Guadalinex se desarrolla a partir de Linex de forma que LinEx
y Guadalinex ofrecen sus funcionalidades con las mismas aplicaciones
mantenidas en un mismo repositorio y por un único equipo de control de
calidad, diferenciándose en los programas y contenidos que sean de interés
solo en una de las dos comunidades.
— Knoppix, distribución GNU/Linux alemana totalmente gratuita y basada en
Debian que presenta como ventaja el no necesitar instalación, puesto que
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

permite arrancar desde el CD que puede ser descargado desde Internet


(www.cylnux.org) y Slackware (www.eslack.org). Es una de las más
antiguas y conocidas distribuciones GNU/Linux gratuitas que destacan por
su facilidad de instalación y estabilidad.

Software open source de aplicación


El software de aplicación fue en un principio el gran olvidado de los
desarrolladores open source, centrados casi de forma exclusiva en la búsqueda de
sistemas operativos libres. En la actualidad, superado ese primer estadio de crear
una base libre, si bien las comunidades siguen trabajando en el desarrollo y mejora
de los sistemas operativos, es el ámbito del software de aplicación el que está
15
La distribución Linex ha sido reconocida dentro del apartado Linux, con el premio a la
mejor distribución de 2003 por la empresa Softonic

42
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

despertando un gran interés entre la comunidad open source que se ha lanzado a la


búsqueda de aplicaciones libres con la calidad necesaria para sustituir a las
comerciales.

La oferta de software open source de aplicación es amplia y abarca desde suites


ofimáticas y aplicaciones de gestión empresarial hasta gestores de correo y
aplicaciones multimedia. Establecer una enumeración de todas las aplicaciones
existentes sería complicado tanto por el número como por la poca calidad de
muchas de ellas que han comenzado a desarrollarse recientemente y requerirán un
tiempo de maduración; sin embargo, sí se podría indicar dentro de cada tipo
aplicaciones ya contrastadas que, por supuesto, siguen mejorándose. Así, dentro de
la ofimática destaca el paquete OpenOffice (www.openoffice.org), suite ofimática
gratis y compatible con distintos sistemas operativos y diferentes arquitecturas.
Está compuesto por hoja de cálculo, procesador de texto, editor de fórmulas, editor
de presentaciones, etc., por tanto tiene todas las funcionalidades de Microsoft
Office, con el que es totalmente compatible y además incorpora otras propias como
la posibilidad de exportar documentos de texto a otros formatos como Pdf, Flash,
XML, etc.

En el desarrollo de software de gestión empresarial los avances hechos públicos son


menores que en el resto de actividades, posiblemente por el recelo y desconfianza
que todavía muestra el ámbito empresarial hacia herramientas que son consideradas
de dominio público pero, que analizando la situación real con detenimiento, son
prácticamente igual de accesibles para la competencia que los productos licenciados
de pago, con la ventaja de un menor coste o incluso ser gratuitas. Hoy en día no tiene
sentido pensar que una empresa es la única que utiliza en exclusiva una aplicación,
salvo determinadas aplicaciones realizadas a medida, es más, en el mundo
empresarial la dificultad no está en el acceso a la tecnología o a un programa
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

concreto, sino en sacar el máximo rendimiento de su uso.

Algunas aplicaciones empresariales que podrían citarse son:

— FacturLinEx y ContaLinEx (www.gnulinex.net), herramientas de gestión


liberadas y de acceso gratuito desarrolladas y cedidas por el gobierno de
Extremadura.
— Fisterra (www.fisterra.org), herramienta ERP (Enterprise Resource Planning),
que nació como aplicación empresarial a medida, de pago y con código cerrado
y posteriormente se liberó su código bajo licencia GPL, ofreciéndose de forma
gratuita.

43
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

— FacturaLUX (www.facturalux.org), que pretende ser un software ERP creado


con software de código abierto que permita la gestión integral de la empresa.

En cuanto a gestores de correo, como alternativas al omnipresente Microsoft


Outlook, se tienen varias opciones, las más reconocidas Evolution y Mozilla
Thunderbird, anteriormente conocido como Mozilla mail, que es el cliente de
correo del proyecto Mozilla. (www.mozilla.org).

Por último, en lo que se refiere a las aplicaciones multimedia, verdadera revolución del
software, que permiten entre otras cosas ver y escuchar audio y video, tratamiento de
imágenes, etc. también existen aplicaciones abiertas capaces de hacer sombra a los
productos de código cerrado. Como principales ejemplos, en la Tabla 2.4 se recoge
para cada software de código cerrado un posible homólogo open source.

Cerrado Abierto Dirección


MSN Messenger AMSN http://amsn.sourceforge.net/
MSN Netmeeting GnomeMeeting www.gnomemeeting.org
WinAmp XmmS www.xmms.org
Winzip Gzip, zip www.gnu.org/software/gzip/gzip.html
Windows Media Player Mplayer, Xine www.mplayerhg.hu
Photoshop Gimp www.gimp.org
Acrobat Reader Gpdf www.purl.org/net/gpdf
ACDSEE GThumb http://gthumb.sourceforge.net

Tabla 2.4 Aplicaciones open source


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Los últimos proyectos open source que mayor interés han despertado entre la
comunidad son KDE y Gnome, orientados a dotar al usuario de un escritorio
intuitivo y amigable desarrollado con software totalmente libre:

— KDE, (The K Desktop Enviroment www.kde.org), es el entorno gráfico


desarrollado en C++ que ha constituido el escritorio tradicional en los sistemas
Unix. Este desarrollo ha pasado por dos etapas muy distintas. Una inicial, desde los
comienzos del proyecto, en octubre de 1996, hasta octubre de 2000 con licencia no
libre en sus librerías QT, lo que generó el rechazo por parte de la comunidad open
source, y la actual, a partir de octubre del 2000, con la versión KDE 2.0 en la que
todo el desarrollo es software open source bajo licencia GPL.
— Gnome, (Gnu Network Object Model Environment www.gnome.org), surge
como proyecto liderado por Miguel de Icaza y Federico Mena dentro de GNU

44
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

en respuesta al desarrollo no libre de KDE con el objetivo de dotar al software


GNU de un escritorio libre. El proyecto está muy evolucionado y en realidad
no es solo un escritorio puesto que integra distintas aplicaciones ofimáticas.

Recientemente la empresa Novell ha anunciado que dos de sus divisiones Ximian y


SuSE, trabajarán juntas para crear un escritorio Linux común, con las mejores
características de GNOME y KDE .

Herramientas de desarrollo Web


Es sin duda en el área del desarrollo web donde la corriente open source ha alcanzado un
protagonismo indiscutible con alternativas para todos los elementos que intervienen en
dicho desarrollo y aplicaciones que cubren todas las fases del desarrollo web:
— Servidores web.
— Bases de datos.
— Lenguajes de programación
— Herramientas de desarrollo o gestores de contenido.

De tal forma que cualquier desarrollo web puede llevarse a cabo por completo
mediante la utilización de herramientas open source.

Los servidores web son programas que instalados en equipos conectados a una red,
principalmente Internet, permiten que dichos equipos puedan recibir peticiones http
de otros ordenadores y satisfacerlas sirviendo páginas web.

Algunos de los servidores web open source más conocidos son: Apache, AOL
Server, Roxen y Thttpd, de los cuales el servidor Apache es el que tiene mayor
presencia en Internet, tal como puede apreciarse en la Tabla 2.5.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Servidores Número Porcentaje


Apache 38.028.642 69,73%
Microsoft-IIS 11.923.178 21,86%
Netscape-Enterprise 1.743.421 3,20%
Zeus 739.006 1,36%
Rapidsite 369.532 0,68%
Tigershark 246.962 0,45%
Thttpd 221.446 0,41%
OTROS 1.266.961 2,32%
TOTAL 54.539.148 100%

Tabla 2.5 Servidores activos en Internet en más de 5.000 sitios (noviembre 2004).
Elaboración propia a partir de datos ofrecidos por la consultora de Información Netcraft

45
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

El servidor Apache, desarrollado por más de cien desarrolladores voluntarios


dentro del proyecto Apache, gestionado por la Fundación Apache, The Apache
Software Foundation (www.apache.org), es el servidor web más utilizado en el
mundo y esto es debido a sus características: robustez, rapidez, ser multiplataforma
con versiones para Linux, Win32, MacOs, Unix, modularizable, dispone de
módulos para ejecutar PHP, Perl, etc.

En cuanto a las aplicaciones gestoras de bases de datos, son numerosos los


ejemplos que siguen la corriente open source: MySQL, Postgrade, Sap DB,
Interbase Borland,... de las cuales, merece especial mención MySQL, que presenta
como características destacadas su carácter multiplataforma, una buena integración
con PHP, licencia GPL que garantiza su libertad, gran velocidad y estabilidad.

En una encuesta sobre desarrollo de bases de datos realizada por Evans Data
Corporation en enero del 2004, se puso de manifiesto que SQL Server y Access
continúan dominando el desarrollo de bases de datos, pero las bases de datos open
source están ganando terreno. El uso de SQL Server y Access había crecido casi un
6%, mientras que el uso de MySQL se había incrementado más del 30% en los seis
meses anteriores a la realización de la encuesta.

Los lenguajes de programación son las herramientas básicas utilizadas por los
desarrolladores para crear aplicaciones web. Dentro del desarrollo web la
comunidad open source parece mostrar sus predilección por el lenguaje PHP.
Aunque no se va a profundizar en este apartado en este lenguaje, por ser objeto de
estudio de los próximos capítulos, sí se puede adelantar que se trata de un lenguaje
interpretado especialmente diseñado para embeber su código en el HTML de las
páginas web y especial facilidad para interactuar con bases de datos.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Los sistemas gestores de contenido, más conocidos como CMS (Content


Management Systems) son aplicaciones desarrolladas para facilitar la creación
y gestión de portales en Internet. Estas herramientas, que serán estudiadas con
más detalle en el Capítulo 18, han alcanzado una gran difusión debido a su
simplicidad de uso y potencia de desarrollo; basan su funcionamiento en tres
elementos fundamentales: una base de datos, por ejemplo MySQL, un servidor
web como Apache y un lenguaje de programación que permita la interacción
con la base de datos como por ejemplo PHP. Ejemplos de gestores de contenido
son PHPNuke, Postnuke, Drupal,... En el Capítulo 18 se darán referencias a
estos productos y otro tipo de herramientas de desarrollo web basadas en PHP y
MySQL.

46
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

2.5.2. COMUNIDADES OPEN SOURCE


Las comunidades, como agrupación voluntaria de personas con intereses
comunes representan y son una muestra del espíritu de colaboración y libertad
de la corriente open source y en ellas generalmente usuarios y desarrolladores
llegan a ser la misma cosa. Las comunidades y sus miembros son el verdadero
alma del open source, las comunidades actúan como centro de trabajo y los
miembros de la comunidad, técnicos o no, son la fuerza productiva del software
abierto, unos de forma directa si tienen los conocimientos y medios técnicos
participando directamente en el desarrollo de las aplicaciones, y otros testando
y experimentando con los programas, comunicando cualquier incidencia o
sugiriendo vías de mejora. Las comunidades, como centros de trabajo, ofrecen
el entorno necesario para el trabajo en grupo orientado al desarrollo y mejora de
software open source, facilitando para ello una serie de servicios. Entre los
elementos o servicios comunes que presentan estas comunidades se pueden
citar:

— CVS (Concurrent Versions System) sistema de control de versiones, son


aplicaciones que utilizando una arquitectura cliente-servidor, facilitan la
gestión y trabajo simultáneo sobre el código mediante repositorios o bases
de datos que mantienen un histórico de los códigos fuente, almacenando
solo las diferencias entre versiones.
— Listas de discusión y foros como elementos de comunicación.
— Seguimiento de errores.
— Copias de seguridad.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

En su origen las comunidades nacían del espíritu de colaboración de usuarios y


desarrolladores independientes en la búsqueda de software libre y de calidad. Eran
comunidades creadas y mantenidas por los usuarios. Con el tiempo el número de
comunidades open source se ha incrementado notablemente, en gran medida
debido al apoyo y soporte económico recibido de grandes empresas como IBM a la
comunidad Eclipse y Compaq a Sourceforge, por ejemplo.

Las comunidades organizan su trabajo en proyectos, cada proyecto se corresponde


generalmente con el desarrollo y mejora de una aplicación concreta, tarea realizada
por los usuarios de la comunidad que de forma libre deciden participar en uno o
varios proyectos.

Intentar enumerar las comunidades sería además de imposible, pues continuamente


aparecen nuevas iniciativas, injusto, pues se corre el riesgo de no mencionar a

47
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

todas. No obstante, tomando como criterios la tradición y años de trabajo, los


proyectos desarrollados y en vías de desarrollo y los usuarios (véase Tabla 2.6)
destacan especialmente dos comunidades:

— Sourceforge (http://sourceforge.net/)
— Savannah (http://savannah.gnu.org/)

Comunidad Proyectos Usuarios


registrados
SourceForge 90.625 952.696
Savannah 2.176 31.392

Tabla 2.6 Proyectos activos y usuarios registrados de dos de las comunidades open
source más importantes a fecha de noviembre de 2004. Fuente: Web de las propias
comunidades

2.5.3. USUARIOS DE SOFTWARE OPEN SOURCE


Todas las organizaciones, tanto públicas como privadas, se rigen en su gestión por
la búsqueda de la eficacia y eficiencia, unas para satisfacción de los ciudadanos y
otras de sus accionistas y stakeholders. En este sentido, el software open source no
ha pasado desapercibido para dichas organizaciones por sus beneficios tanto
técnicos como económicos. En el siguiente epígrafe se muestran distintas
referencias de utilización del software open source en distintas administraciones
públicas y privadas.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Open source y la Administración Pública

Las iniciativas gubernamentales a favor del software open source se han producido
en todas las partes del mundo, desde Asia, donde el gobierno de una de las mayores
potencias tecnológicas del mundo, la República Popular China, ha establecido
disposiciones legales a favor del uso de software open source para los servidores
públicos, o Taiwán dónde las previsiones son ahorrar 300 millones de dólares en
pago de licencias a Microsoft, gracias a un programa de desarrollo y adopción de
software open source en toda la administración estatal. Hasta el gobierno de
Estados Unidos, que si bien no ha legislado a favor del software open source sí lo

48
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

utiliza, ejemplo claro es el sitio web de la Casa Blanca16 soportado con sistema
operativo Linux y servidor web Apache. Y latinoamérica, con países como Perú y
Chile en los que se han sucedido las propuestas de leyes que obliguen al uso
exclusivo de software open source en la administración pública.

En Europa las iniciativas no se han quedado atrás a la hora de apostar por el open
source, ejemplos claros son la administración alemana que en junio del 2002
anunció la migración de sus sistemas a Linux, o Noruega país que decidió no
renovar las licencias de Microsoft e invertir en favor del software libre.

En el caso español, si bien no se han producido hasta el momento iniciativas a nivel


estatal17, sí pueden encontrarse ejemplos en distintos gobiernos autonómicos y
municipales. Destaca especialmente el caso de la Junta de Extremadura, entidad
pionera de la introducción de software libre en la administración pública española,
que rescindió sus licencias de sistema operativo pertenecientes a Microsoft y ha
desarrollado un sistema operativo propio, GNU/LINEX (www.linex.org), lo que ha
servido de ejemplo a otras comunidades como la andaluza, que ha desarrollado el
sistema Guadalinux (www.guadalinex.org), o la Generalitat Valenciana, que ha
comunicado su intención de migrar todas las aplicaciones utilizadas por sus
organismos hacia el software libre.

Open source y la empresa privada


En cuanto a las empresas privadas, caracterizadas tradicionalmente por el principio
de maximizar los beneficios para los accionistas, que se puede traducir en apostar
solo por aquellas inversiones capaces de generar beneficios futuros, la penetración
del open source es muy superior a la de las administraciones públicas. La
implantación del software open source en las organizaciones empresariales se ha
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

concentrado de forma inicial en grandes empresas y multinacionales, que hay que


recordar son siempre las pioneras en innovación y desarrollo y paulatinamente se
van incorporando las pequeñas y medianas empresas que, como en otras
circunstancias similares de innovación, suelen ir un paso por detrás de las grandes
compañías. El despegue e implantación del open source en las pymes se producirá
en un futuro no muy lejano.

16
Información tomada de Netcraft, empresa britanica de servicios de Internet reconocida
internacionalmente por sus estudios sobre la Red.
17
La única iniciativa con carácter estatal ha sido una Proposición de Ley para promocionar
el uso del software libre en la Administración del estado en general y en las
administraciones autonómicas en particular, presentada por el Grupo Mixto y debatida en el
Congreso de los Diputados el 24-09-2002, sesión plenaria número 181, donde fue
rechazada.

49
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Como ejemplos de multinacionales y grandes empresas de distintos sectores


económicos que han confiado e invertido en el software open source se recogen las
siguientes:

Sector tecnológico e informático:

— Oracle, ha realizado la migración de sus aplicaciones de negocio de Unix a


un cluster de máquinas Intel bajo Linux.
— IBM, desde el año 2001 ha realizado inversiones superiores a 1.000
millones de dólares en Linux y utiliza Apache en su aplicación de
comercio electrónico WebSphere, además de mantener una colaboración
muy activa con la comunidad open source Eclipse como estrategia y
apuesta de futuro.
— Hewlett-Packard/Compaq y Sun Microsystems, mantienen y dan soporte a
distintas comunidades open source como opensource.compaq.com, en el
caso de la primera, y sunsource.net, en el caso de la segunda.

Sector ventas y distribución:

— Toyota Motor Sales Usa, eligió Linux como sistema operativo de su red de
1.200 servidores.
— Amazon, basa sus sistemas en la utilización de servidores Apache sobre
Linux.

Media y comunicación:

— Walt Disney Feature Animation, utiliza Linux en sus proyectos.


— El País, basa sus sistemas en Apache, PHP4 y Linux.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

— El prestigioso grupo editor Forbes presenta como base de sus plataformas


Linux y Apache y contribuye activamente con el open source Software
Institute (www.oss-institute.org)

Financiero:

— Morgan Stanley, prestigiosa firma financiera, utiliza como sistema


operativo Linux.
— El Banco Herrero, se sirve de Linux sobre un servidor Apache.
— El Banco Sabadell pasó del sistema operativo Solaris 8 sobre
Netscape/Enterprise 4.1 a Linux corriendo sobre un servidor Apache

50
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

2.6. VENTAJAS, INCONVENIENTES Y


PERSPECTIVAS DE FUTURO
A lo largo de este capítulo se han dejado entre ver algunas de las ventajas del
software open source, poco se ha hablado de los inconvenientes que puede tener y
del futuro que puede esperar al software desarrollado bajo los principios del código
abierto.

2.6.1. VENTAJAS
Se enumeran a continuación algunas de las ventajas que proporciona el software
open source, destacando que, si bien las económicas18 son las más visibles, hay
otras ventajas importantes:

— Ahorro de costes, las distribuciones de software open source son


generalmente gratuitas o a un coste muy bajo, teniendo en cuenta que con
sus licencias dan al usuario libertad para hacer con la aplicación las
modificaciones o distribuciones que consideren oportunas sin ningún coste
añadido.
— El código de los programas es abierto y por tanto no depende de una sola
empresa desarrolladora ni de su política y permite total flexibilidad para
adaptar el programa a las necesidades de los usuarios.
— Mayor calidad y seguridad en los programas. Esto es debido tanto a que el
código sea libre como a la metodología de trabajo de las comunidades, que
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

permite que un elevado número de programadores pueda revisar y trabajar


simultáneamente sobre un mismo código, detectando errores que de otra
manera serían difíciles de detectar.
— Reactiva la competencia en un mercado con tendencias monopolísticas.
— Rapidez de desarrollo, la evolución19 y lanzamiento de versiones
mejoradas en el software open source es muy superior al software cerrado.

18
Beneficios que no solo se deben cuantificar como diferencia entre, el pago actual por las
licencias de software y el que se pagaría, en caso de ser necesario, al utilizar software open
source, pues hay otras cuestiones como ahorro en costes de actualizaciones, estabilidad del
sistema que repercute en la productividad, etc.
19
Atendiendo al estudio de IBM que se puede obtener integro en:
http://www-1.ibm.com/linux/LinuxInSight.pdf, Linux es el sistema operativo que más
rápido ha evolucionado en la historia de la ingeniería de software.

51
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

— Escucha activa a los usuarios y retroalimentación entre la producción del


software, desarrolladores, y los usuarios mediante una relación directa y de
colaboración.

2.6.2. INCONVENIENTES
Por supuesto no todo son ventajas, la utilización de este tipo de software puede
tener sus inconvenientes:

— Dificultad en cambiar o dejar de utilizar determinadas aplicaciones de


software cerrado que se han convertido en un estándar.
— La utilización de software open source no es la mejor opción para
determinadas empresas que basen su negocio en algoritmos secretos o
patentados.
— La utilización de aplicaciones open source generalmente requiere, tanto
para el usuario doméstico como para el personal de empresas, un proceso
de adaptación y formación, no porque las herramientas open source sean
más complicadas sino simplemente debido a que los usuarios nunca han
trabajado con ellas.
— Existencia de proyectos de desarrollo y comunidades en algunos casos sin
estructuras jerárquicas ni organizativas claras que dan al usuario sensación
de desorganización.
— Dentro del movimiento hay algunas comunidades con una tendencia
excesiva a la búsqueda del elitismo que aleja al usuario domestico no
técnico.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

2.6.3. PERSPECTIVAS DE FUTURO


A modo de conclusión de este capítulo dedicado al estudio del movimiento open
source y software libre y todo lo que con ellos está relacionado se desea apuntar
tres ideas finales.

Hablar de open source es más que hablar de software gratis o de disponer de un


código fuente. Supone una nueva forma de producir, desarrollar y distribuir
software en la que el usuario, las comunidades e Internet adquieren un papel
protagonista.

52
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
OPEN SOURCE Y SOFTWARE LIBRE

El continuo incremento de usuarios públicos y privados, de comunidades de


desarrollo y de mejoras técnicas afianzan que la corriente open source no es una
moda pasajera dentro del desarrollo del software. Más aún, predicen y hacen
aventurar que su verdadero esplendor está por llegar, siendo indicativo de esto
mismo la creación del “Observatorio del software de fuente abierta” por parte de
la Unión Europea para estudiar este fenómeno en los actuales y futuros estados
miembros y la elaboración desde la UNESCO de un programa de actuaciones en
apoyo del software libre.

Por último, las voces más optimistas predicen en artículos y comentarios la rápida
desaparición de las compañías de software cerrado. Desde aquí, manifestar que
aunque la situación actual parece indicar que se producirá un importante cambio en
el ámbito del software, estas compañías no tienen porqué desaparecer, aunque sí
posiblemente reorientar su núcleo de actividad de la producción de software hacia
la prestación de servicios de valor añadido. No obstante, en ningún caso se puede
pensar que este cambio ocurra de un día para otro sino que, como en todo periodo
de transformación, será fruto de un proceso continuo que comienza ahora a
caminar con paso firme.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

53
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS
WEB MEDIANTE EL
LENGUAJE HTML

3.1. INTRODUCCIÓN
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

En el primer capítulo, en el que se ha sido analizado el funcionamiento del servicio


web, se explicó que Internet utiliza para la transferencia de información entre clientes y
servidores el protocolo HTTP (HiperText Transfer Protocol), protocolo de
transferencia de hipertexto. Este protocolo establece los requisitos que se deben
cumplir para la transferencia de la información, y exige que la información a transferir
sea definida mediante un sistema estándar, comprensible para cualquier equipo. Con la
intención de satisfacer esta necesidad se desarrolló un lenguaje de definición de
hipertextos, el conocido actualmente como HTML. En este capítulo se analizará dicho
lenguaje y su sintaxis desde un punto de vista práctico, mediante pequeños ejemplos.

El objetivo que persigue este capítulo introductorio es situar al lector en las


condiciones mínimas necesarias para poder desarrollar un sitio web y dotarle
posteriormente de diversas funcionalidades mediante el uso de PHP y MySQL. Por
supuesto, no se pretende hacer una presentación exhaustiva del lenguaje, simplemente

55
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

se mostrará el proceso de construcción de un sencillo sitio web, tomando como


referencia lo que podría ser el objetivo de una empresa ficticia, a la que se denominará
Cinem@s. Esta empresa ficticia pertenece al sector del entretenimiento y dispone de un
multicine, el objetivo final que persigue es ofrecer a sus clientes un cómodo servicio de
información y reserva de localidades a través de Internet. El primer paso para ello será
la creación de unas sencillas páginas web de presentación, en torno a las cuales se
desarrollará posteriormente la aplicación web deseada.

La Figura 3.1 muestra la página web de inicio de Cinem@s, el proceso de creación


de está página será explicado a lo largo del capítulo, y contendrá enlaces a otras
páginas que se desarrollarán en la segunda parte del libro para implementar el
sistema de consulta y compra de localidades.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Figura 3.1 Página de inicio de Cinem@s

56
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

3.1.1. DEFINICIÓN DE HTML

Las definiciones existentes de HTML son múltiples y más o menos complejas. Una
definición sencilla y de marcado carácter práctico es la que se propone a
continuación:

HTML es un lenguaje de descripción de hipertexto compuesto por una serie


de comandos, marcas, o etiquetas, también denominadas “Tags” que
permiten definir la estructura lógica de un documento web y establecer los
atributos del mismo (color del texto, contenidos multimedia, hipervínculos,
etc...).
En resumen, es un lenguaje que permite crear páginas web y para ello utiliza unos
comandos o etiquetas que indican o marcan qué se debe mostrar y de qué forma.

Los comandos siempre van incluidos entre los signos < > e insertados en el propio
texto que compone el contenido de la página. Especifican su estructura (las
distintas partes de la página) y formato. Además, permiten la inserción de
contenidos especiales como imágenes, videos, sonidos, etc.

Ejemplo 3.1:
Un primer ejemplo sencillo de creación de una página web, puede ser realizado
utilizando un simple editor de texto, por ejemplo el bloc de notas de Windows.

Si se escribe el código:

<H1> Primer ejemplo de página web </H1>


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

realizado con <B> HTML y el bloc de notas.</B>

y se guarda el documento con un nombre con extensión .htm o .html, ya se


habrá creado una primera página web. Dicho documento abierto desde el
navegador genera una página como la que se puede ver en la Figura 3.2.

Toda página web debe ser guardada en un documento de texto con la


NOTA extensión .htm o .html..

Si se analiza detalladamente el código HTML que ha producido esta página puede


verse cómo los diferentes comandos van señalando los diferentes elementos de la

57
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

página. Por ejemplo, los comandos <H1> y </H1> señalan el inicio y el fin,
respectivamente, del texto que se mostrará con formato de título: “Primer ejemplo
de página web”. De la misma manera, los comandos <B> y </B> encierran el
texto que se mostrará en negrita.

Figura 3.2 Primera página web

Toda página web desarrollada con HTML oculta un documento de texto sin
formato, texto ASCII, que incorpora todas las instrucciones o etiquetas del lenguaje
HTML necesarias para conseguir que la página tenga la apariencia que se visualiza
en el navegador. Este documento de texto que aparece oculto al usuario final, es lo
que se denomina código fuente de la página. Las herramientas de navegación web
permiten la consulta de ese código fuente; por ejemplo, Internet Explorer dispone
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

de la opción Código fuente del menú Ver.

3.2. HISTORIA DE HTML


El nacimiento y desarrollo del lenguaje HTML no fue algo casual y espontáneo.
Desde el comienzo de la utilización de las primeras redes de ordenadores por parte
de las grandes empresas y organismos científicos y militares surge la preocupación
por desarrollar un sistema que permita la edición estructurada de documentos, de
forma que se evite la disparidad de formatos y a la vez se facilite el intercambio de
los mismos.

58
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

El antecedente más remoto de HTML se encuentra en el lenguaje de marcado


generalizado, GML, desarrollado por Charles Goldfarb, Ed Mosher y Ray Lorie
dentro de IBM, en los primeros años de la década de los setenta con el objetivo de
dotar de un formato común a los documentos de la empresa con independencia de
su tipo. Este lenguaje fue posteriormente mejorado por sus creadores dando lugar
a la primera tecnología de información estandarizada y estructurada: el lenguaje
de marcado generalizado estándar, SGML, que en 1986 es aceptado por la
Organización Internacional de Estandarización (ISO), como un estándar. A pesar
de esto, no se consiguió evitar una elevada complejidad para el usuario final, que
unido a un alto coste impidió que dicho lenguaje se convirtiera en un estándar
aceptado, aunque sí sentó las bases de lo que sería posteriormente HTML.

El salto cualitativo se produce en 1989 cuando Tim Berners-Lee y Anders


Berglund, investigadores del Laboratorio Europeo de Física de Partículas (CERN),
crearon un lenguaje basado en etiquetas para editar documentos con el fin de
compartirlos entre diferentes equipos de investigación que trabajaban para el
CERN. Esta aplicación simplificada del SGML se llamó HTML, lenguaje de
marcas de hipertexto, y se convirtió por su simplicidad en el primer formato de
información estándar de Internet, dando lugar a la aparición del servicio más
popular de la red: el servicio web. El lenguaje HTML ha ido evolucionando
mediante distintas versiones, desde la HTML 2.0 de 1994, hasta la actual,
adaptando el lenguaje en cada momento a las necesidades y características de los
usuarios de Internet, pasando, desde la transferencia de documentos de texto plano,
a la incorporación de posibilidades multimedia (imágenes, vídeo, Flash, applets de
Java), de dinamismo (HTML Dinámico), de presentación (CSS) y de operatividad
(CGI, ASP, JSP, PHP,...) que no estaban presentes en un principio. Cambios y
modificaciones no siempre realizados de forma coordinada, como ejemplo claro la
implementación de distintas etiquetas y extensiones del lenguaje en función del
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

navegador, lo que provoca que en ocasiones una misma página no se visualice de


igual forma en todos los navegadores.

Con la intención de solucionar estos problemas se creó en 1996 el consorcio W3C


(www.w3.org), formado por más de 350 organizaciones, entre las que se
encuentran las principales empresas del sector: Microsoft, Netscape,... y distintos
organismos públicos internacionales como el MIT, INRIA,... con el propósito de
promover el crecimiento de la Web, desarrollando especificaciones y software de
referencia disponibles para todos los usuarios sin coste alguno. La tarea principal
del W3C es la de recomendar a las empresas y desarrolladores interesados en la
Web una serie de pautas sobre cómo deben implementarse los diferentes lenguajes
(HTML, CSS, XML, etc.) y tecnologías.

59
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

3.3. SOFTWARE NECESARIO PARA


TRABAJAR CON HTML
Trabajar con un lenguaje siempre conlleva la necesidad de utilizar herramientas
informáticas, generalmente de edición, compilación y otras utilidades. En el caso
del lenguaje HTML esto se simplifica notablemente siendo estrictamente necesario
solo dos tipos de aplicaciones: navegadores y editores.

3.3.1. NAVEGADORES
Son programas instalados en el equipo del usuario que se encargan de ejecutar las
órdenes contenidas en el código HTML. Cuando un usuario desea visitar una
página web, su equipo debe conectarse con un servidor remoto y efectuar una
petición al servidor web. Como respuesta a esta petición se inicia, a través de la red
y basándose en el protocolo HTTP, la transferencia del código fuente que define la
página. Una vez que ese código llega al equipo del usuario, el navegador que este
tenga instalado interpreta “línea a línea” el código recibido y genera la página tal y
como se verá finalmente. Por tanto, los navegadores web o browsers son las
aplicaciones encargadas de realizar las peticiones de páginas web y otros recursos
al servidor y de presentar luego los resultados de la petición al usuario. Si además
la página HTML contiene imágenes, vídeos, documentos PDF u otro tipo de
ficheros diferentes, el navegador es el encargado de intentar presentar en pantalla
de forma correcta dichos contenidos y, si no puede hacerlo, de arrancar la
aplicación necesaria para la visualización de los mismos.

Los navegadores más conocidos son Internet Explorer y Netscape Comunicator,


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

pero existen otros navegadores menos conocidos como Neoplanet, Opera, Hot
Java, Mozilla, etc. Este último cada vez adquiere mayor importancia, y como se
indicó en el Capítulo 2, es el navegador estandarte de la corriente open source.

3.3.2. EDITORES
La labor de creación de una página web está a mitad de camino entre la
programación y el diseño gráfico o maquetación. Aunque se utiliza un lenguaje
(HTML), este está lejos de ser un lenguaje de programación como C, C++, Java,
etc. Por otro lado, crear la página no se reduce únicamente a buscar una
combinación de colores y colocación de diferentes elementos multimedia con una
apariencia visual atractiva.

60
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

Hasta el momento se ha visto que para trabajar en HTML simplemente se necesita


un procesador de textos, por ejemplo el bloc de notas, con el que se crea la página
escribiendo directamente código HTML, y un navegador que interprete dicho
código.
Pero trabajar de esta manera requiere dominar completamente el lenguaje, de
ahí que para facilitar la labor de creación de páginas web se hayan
desarrollado unos programas, editores de HTML, que pueden ser clasificados
en dos grandes grupos:

— Editores WYSIWYG (What You See Is What You Get): con este tipo de editores el
usuario no trabaja directamente sobre el código, sino sobre un documento que
muestra la apariencia de la página tal como llegaría al usuario final (lo que tu ves
es lo que tu obtienes). Se trata de editores ideales para personas que comienzan a
utilizar el lenguaje HTML y quieren llegar a crear una página sin necesidad de
dominar el lenguaje, ya que estos editores se encargan de generar
automáticamente ese código de forma oculta para el usuario. Por supuesto, el
usuario tiene la posibilidad de consultar el código generado y, en algunos casos,
dependiendo del editor, también modificarlo.

— Editores no WYSIWYG: en este tipo de editores, el usuario en todo momento


puede ver y editar el código fuente. Por supuesto, estos editores disponen de
opciones que permiten generar automáticamente la estructura de los diferentes
elementos de la página y ayudan a la utilización de los comandos sin necesidad
de que el usuario los conozca con todo detalle.

Cualquier persona que quisiera crear su página web sin ningún tipo de
complicaciones, podría utilizar el procesador de texto Microsoft Word. Tras incluir
todo el contenido, con el formato deseado, se elegiría la opción de Guardar como
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

página web..., y el propio Word generaría una página web con el código fuente
correspondiente. Otro tipo de editores específicamente creados para generar páginas
web, como por ejemplo FrontPage, también permiten al usuario crear sus páginas de
esta forma tan simple. En ambos casos se estaría trabajando con un entorno de
edición perteneciente a la primera categoría de editores (WYSIWYG). A pesar de su
simplicidad de uso, estos editores también tienen sus inconvenientes; el principal es
la falta de control por parte del usuario del código generado, llegándose a generar en
ocasiones un código excesivamente complejo y no optimizado.

Dentro de la segunda categoría de editores se podrían citar los siguientes:

— HomeSite (www.allaire.com)
— 1stPage2000 (www.evrsoft.com)

61
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

— arachnophilia (www.arachnoid.com/arachnophilia)
— AceHTML (http://freeware.acehtml.com)

La mayoría de los editores que se utilizan a un nivel profesional incorporan las dos
funcionalidades o modos de edición. Normalmente, los desarrolladores prefieren
trabajar directamente sobre el código y utilizar el otro modo para comprobar
únicamente la apariencia final de la página.

3.4. ESTRUCTURA DE UNA PÁGINA WEB


La estructura básica de todo documento HTML, aún no siendo obligatoria, debería
ajustarse al siguiente esquema:

<HTML> Indica el inicio de la página


<HEAD> Comienzo de la cabecera
<TITLE> Comienzo del título
Aquí irá el titulo de la página
</TITLE> Fin del título
</HEAD> Fin de la cabecera
<BODY> Comienzo del cuerpo
Aquí irá el contenido de la página: texto, tablas, imágenes,...
junto con los comandos HTML
</BODY> Fin del cuerpo
</HTML> Indica el fin de la página
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

3.4.1. COMPLEMENTOS A LA ESTRUCTURA BÁSICA:


METATAGS
Generalmente, cuando un internauta visualiza el código fuente de una página web
esta presenta una estructura más compleja que la indicada anteriormente como
estructura básica. Esto es debido principalmente a dos elementos: por un lado, el
código HTML que forma una página puede llevar embebido en distintas partes de
la estructura código de otros lenguajes, como por ejemplo JavaScript, con la
intención de dotar a la página de efectos o funcionalidades imposibles de lograr
con la utilización exclusiva de HTML. Por otro, es posible también encontrar unas
etiquetas especiales llamadas metatags o metaetiquetas, que por su importancia se
estudian a continuación.

62
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

Las metatags, se pueden agrupar según su funcionalidad en dos bloques. El primero,


formado por metatags orientadas a definir una página web de acuerdo con los
estándares del lenguaje HTML, consiguiendo con ello que no solo los navegadores,
sino también las aplicaciones que estos puedan necesitar para visualizar la página,
sepan de forma clara cómo tienen que tratarla, consiguiendo así la máxima
compatibilidad y accesibilidad. Y, el segundo, formado por metatags orientadas a
conseguir la promoción de la página o sitio web.

Etiquetas de compatibilidad
Dos son las principales etiquetas que contribuyen a dotar al sitio de un correcto
aspecto formal y que, aún no siendo obligatorias, es al menos necesario conocer
para poder interpretar su significado.

La primera es la etiqueta META HTT-EQUIV="Content-Type", cuya


finalidad es solucionar el problema derivado de la disparidad de caracteres e
idiomas en los que se puede elaborar una página web. Problema, que de forma
resumida, se debe a la elaboración de una página en un determinado idioma y la
posterior posibilidad de que dicha página sea solicitada por un navegador desde
cualquier punto del mundo y con un idioma distinto, lo que con frecuencia impide
que dicho navegador pueda interpretar correctamente todos los caracteres que
componen la web. Un ejemplo claro es el carácter “ñ”. Surge así la necesidad de
dotar de un estándar a todos los documentos HTML, que permita indicar al
navegador qué conjunto de caracteres debe utilizar para presentar las páginas. Este
patrón viene dado por la metaetiqueta:

<META HTTP-EQUIV= "Content-Type"


CONTENT= "text/html;charset= caracteres a usar">
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

donde el atributo charset fijará el conjunto de caracteres de la página. El


navegador al recibir la página obtiene en la cabecera esta metaetiqueta y solicita al
sistema operativo que cargue los caracteres necesarios para poder presentar la
página tal y como se creó.

Para las páginas elaboradas en castellano se deberá usar el conjunto de caracteres


ISO 8859-1, también denominado Latin1, que incluye las letras acentuadas y la
letra ñ, tanto en mayúsculas como en minúsculas. La metaetiqueta a incluir será
entonces:

<META HTTP-EQUIV= "Content-Type"


CONTENT="text/html;charset= ISO-8859-1">

Por último, indicar que esta etiqueta debe situarse entre el <HEAD> y <TITLE>.

63
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

La segunda metaetiqueta a destacar es DOCTYPE, y permite cumplir con las


recomendaciones del W3C en las que se indica la necesidad de que se declare el
tipo de documento y en la versión de HTML utilizada, facilitando de esta forma la
compatibilidad y accesibilidad a los navegadores. El texto de la declaración debe
colocarse al principio del documento, en la sección de precabecera, antes de la
etiqueta <HTML>, de forma que sea lo primero que recibe el navegador cliente al
solicitar una página web.

En HTML, atendiendo a las recomendaciones del consorcio W3C20, es posible


establecer tres tipos diferentes de documentos:

— Strict: el documento debe estar elaborado de una forma estricta conforme a las
reglas del estándar HTML aprobadas por la W3C para cada versión de HTML.
La etiqueta para establecer este tipo de documento es la siguiente:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

El inconveniente de este tipo de definición es que los navegadores antiguos


pueden no admitirla y que su rigidez no permite errores de código en la
elaboración de la página web.

— Transitional: es la declaración utilizada con mayor frecuencia, con ella además


de incluir los elementos y atributos del HTML estricto se incorporan otros
elementos no aceptados por el consorcio W3C y se dispone de más flexibilidad
a la hora de escribir el código. La declaración de este tipo de documento se
consigue mediante la siguiente etiqueta:

<!DOCTYPE HTML
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

PUBLIC "-//W3C//DTD HTML 4.O1


Transitional//EN">

— Frameset: es la declaración de documento a utilizar cuando la página utiliza


marcos o frames. La declaración se establece del siguiente modo:

<!DOCTYPE HTML
PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">

20
El consorcio W3C pone a disposición de los desarrolladores un servicio gratuito que
permite verificar y confirmar que el documento está elaborado siguiendo las directrices
establecidas. El servicio está disponible en The W3C MarkUp Validation Service:
http://validator.w3.org/

64
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

Etiquetas de promoción
Aún a riesgo de simplificar en exceso, se puede decir que el objetivo último de una
página web es ser visitada, y para lograrlo debe ser conocida, algo extremadamente
complicado de conseguir debido a la ingente cantidad21 de sitios web en la red. Los
usuarios de Internet en su búsqueda de información utilizan buscadores y
directorios, es habitual que consulten solo las páginas que ocupan las primeras
posiciones. Es por tanto un hecho que estos buscadores y directorios son la
principal fuente de visitas de una web, y que la posición que una página ocupa
dentro de ellos es clave para conseguir visitas. A tenor de lo comentado, los
desarrolladores se han esforzado primero en conocer el funcionamiento de los
buscadores22 y robots y, posteriormente, desarrollar un medio de facilitar el
indexado de sus páginas en las bases de datos de dichos buscadores. Surgen así una
serie de metatags entre las que destacan las siguientes:

META NAME="keywords", ofrece a los buscadores palabras clave (keywords)


del contenido de la página. Su sintaxis completa es:

<META NAME="keywords" CONTENT="palabra1, palabra2,


palabra3,
palabra4, palabra 5, palabra6, palabra
7">

META NAME="description", permite establecer una descripción general y


concisa de la página, como norma general se recomienda utilizar las palabras que
aparecen en las metatags keywords y no utilizar más de 255 caracteres. La sintaxis
es:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

<META NAME="description" CONTENT=" Texto que forma la


descripción del sitio web .....">

21
El buscador Google, considerado en la actualidad el más completo de la red, tiene
indexadas un total de 3.300 millones de páginas web.
22
De forma resumida se puede considerar que, en función de la forma de operar, existen
tres tipos de buscadores o robots: los que venden el posicionamiento, los que utilizan robots
que leen las páginas webs, dando un peso fundamental a las metatags, e indexan las páginas
en función de las veces que aparece un término y Google, que utiliza el sistema
denominado “pagerank” en el que no importan tanto las metatags de una web y sí el
número de páginas de contenido similar que se dirigen o enlazan con ella.

65
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

3.5. CARACTERÍSTICAS GENERALES DEL


LENGUAJE Y SINTAXIS DE SUS COMANDOS
Antes de analizar los principales comandos de HTML es necesario conocer algunas
de sus características:

— Los navegadores ignoran los cambios de línea dentro del código HTML, así
como la existencia de más de un espacio en blanco entre palabras.
— Todo comando que carezca de sentido es ignorado por el navegador sin generar
ningún mensaje de error.
— Hay distintos tipos de navegadores e incluso un mismo navegador tiene
distintas versiones, esto hace que no todos funcionen igual, por lo que la
visualización de una misma página puede variar de un navegador a otro si no
se respetan los estándares del lenguaje.
— Los comandos o etiquetas van encerrados entre los signos < > y suelen tener
una orden de inicio y otra de fin con la misma forma que la de inicio pero
precedida de /. Ejemplo, para señalar que un texto se debe visualizar en
negrita se utiliza el comando <B> para señalar el inicio del texto y el comando
</B> para el final.
— Para escribir los comandos en HTML es indiferente el uso de mayúsculas o
minúsculas, pues producen el mismo efecto. Si bien, es bastante común utilizar
mayúsculas para hacer más identificables los comandos dentro del código
fuente.
— Los comandos o etiquetas pueden anidarse, combinarse, obteniendo como
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

resultado la suma de los efectos de cada uno de ellos. Por ejemplo, si se desea
que un texto aparezca en negrita y subrayado se podría realizar el siguiente
anidamiento de comandos:

<B><U> El texto deseado </U></B>


— Los comandos pueden requerir parámetros, elementos que especifican o
concretan la orden indicada por el comando. Los parámetros se introducen a
continuación del inicio del comando. Por ejemplo, la etiqueta <HR> genera una
línea horizontal que permite separar partes de una página; este comando puede
llevar los parámetros ALIGN, que indicará la posición de la línea (centrada,
izquierda, derecha), SIZE, que indica el grosor de la línea en píxeles, y
WIDTH, que marca la longitud de la línea.

66
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

— Si los comandos requieren parámetros, estos pueden indicarse en cualquier


orden, el valor del parámetro es asignado con el signo de igualdad y en caso de
existir más de uno, los parámetros se separan por espacios en blanco. Por
ejemplo, los dos comandos siguientes serían equivalentes:
<HR SIZE=20 WIDTH=40 ALIGN=center>
<HR ALIGN=center WIDTH=40 SIZE=20>
Los valores de los parámetros deben ser dados entrecomillados, salvo en el
caso de que estos valores no incluyan espacios en blanco o caracteres
especiales.

3.5.1. CARACTERES ESPECIALES


Existe una serie de caracteres que originalmente no podían ser incluidos
directamente en el documento HTML; si bien, la evolución del lenguaje ha
permitido el desarrollo de especificaciones concretas para cada idioma, recuérdese
una de las funciones de las metatags. No obstante, una forma de conseguir que
dichos caracteres especiales sean reconocidos por cualquier navegador, con
independencia del idioma que tenga predefinido, es introducirlos mediante una
codificación especial en HTML. La Tabla 3.1 muestra alguno de estos caracteres
especiales.

Carácter Cód. HTML Carácter Cód. HTML


< &lt; > &gt;
& &amp; " &quot;
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

¿ &iquest; i &iexcl;
Á &Aacute; á &aacute;
É &Eacute; é &eacute;
Í &Iacute; í &iacute;
Ó &Oacute; ó &oacute;
Ú &Uacute; ú &uacute;
Ä &Auml; ä &auml;
Ñ &Ntilde; ñ &ntilde;

Tabla 3.1 Caracteres especiales en HTML

67
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

3.6. COMANDOS BÁSICOS

Los comandos o tags existentes en el lenguaje HTML son múltiples. Para facilitar
su compresión se van a presentar agrupados según su finalidad (para qué sirven o
qué permiten hacer).

3.6.1. COMANDOS DE CABECERAS PARA


DEFINICIÓN DE TÍTULOS Y SECCIONES:
HTML dispone de seis cabeceras o tipos de letra predefinidos de distinto tamaño,
que se utilizan para marcar los títulos en las páginas. Mediante estos comandos se
puede estructurar el documento en secciones y diferentes niveles de subsecciones.
Las cabeceras se activan con el comando <Hn> y se desactivan con </Hn> donde Qes un
número de 1 a 6. Las cabeceras provocan automáticamente un salto de línea aunque no se
indique explícitamente. En concreto, los 6 comandos de cabecera se muestran en la Tabla
3.2.

Los comandos de cabecera admiten el parámetro ALIGN, que especifica la forma


de alineación de la cabecera con respecto al resto del documento, y cuyo valor
puede ser LEFT, RIGHT, o CENTER .

Código HTML Visualización


<H1>Cabecera tipo 1</H1> con un tamaño de letra de 24 puntos
<H2>Cabecera tipo 2</H2> con un tamaño de letra de 18 puntos
<H3>Cabecera tipo 3</H3> con un tamaño de letra de 14 puntos
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

<H4>Cabecera tipo 4</H4> con un tamaño de letra de 12 puntos


<H5>Cabecera tipo 5</H5> con un tamaño de letra de 10 puntos
<H6>Cabecera tipo 6</H6> con un tamaño de letra de 8 puntos
Tabla 3.2 Comandos de cabecera

3.6.2. COMANDOS DE CAMBIO DE ESTILO DE TEXTO

Para indicar atributos del texto (negrita, subrayado, etc...) se dispone de varias
directivas que a continuación se muestran. Hay que puntualizar que algunas de ellas
no son reconocidas por determinados navegadores, por lo que el resultado final
dependerá del navegador con que se visualice la página. Un ejemplo de esto es el
comando <BLINK>, específico del navegador Netscape y que no produce efecto en

68
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

otros navegadores. Los comandos más habituales para cambiar el estilo del texto son
los que se muestran en la Tabla 3.3.

Código HTML Visualización


<B>..................</B> Texto en negrita
<I>........... ......</I> Texto en itálica
<U>..................</U> Texto subrayado
<SUP> .............</SUP> Texto como superíndice
<SUB>..............</SUB> Texto como subíndice
<S>..................</S> Texto tachado
<BLINK> ..........</BLINK> Texto parpadeante

Tabla 3.3 Comandos de cambio de estilo del texto

Para variar el tamaño, color y tipo de letra de un texto también es muy útil el
comando <FONT> </FONT>. Algunos de los parámetros de este comando son:
— SIZE = +n/-n permite asignar al texto un tamaño n veces superior (+)
o inferior (-) respecto al tamaño normal de la fuente.
— COLOR = "código del color". Más adelante se analizará la codificación de
los colores en HTML.
— FACE = "nombre del tipo de fuente". Si el tipo de letra indicado no existe
en el ordenador que visualiza el texto, aparecerá escrito en la fuente
predeterminada del navegador.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Ejemplo 3.2:
Si se desea que el texto sea mostrado utilizando un tipo de letra de tamaño 2 veces
superior al normal, en color rojo y con fuente arial, el comando sería:

<FONT SIZE=+2 COLOR="#FF0000" FACE="arial"> Texto </FONT>

3.6.3. BLOQUES DE TEXTO Y PÁRRAFOS

El bloque de texto básico de un documento es el párrafo. Los párrafos del


documento pueden ser delimitados con los comandos:

69
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

<P> .................... </P>

El comando <P> admite el parámetro ALIGN, cuyo valor puede ser LEFT, RIGHT
o CENTER y especifica la forma de alineamiento del párrafo.

Como se ha comentado anteriormente, los cambios de línea en el código fuente


HTML son ignorados por el navegador. Para forzar un salto de línea, basta colocar
el comando <BR>.

Existe un caso en el que los cambios de línea y espacios en blanco extra dentro del
código fuente sí tienen efecto sobre la visualización de la página, este caso
corresponde a los denominados bloques de texto preformateado. La forma de
definir estos bloques de texto en HTML es:

<PRE>................</PRE>

Ejemplo 3.3:
Supóngase que se desea incluir en la página una estadística de las proyecciones y
espectadores de Cinem@s durante el último año. Se podría generar una sencilla
estructura tabular mediante un bloque de texto preformateado:

<PRE>
Trimestre Trimestre Trimestre Trimestre
1 2 3 4
----------------------------------------------------------
Proyecciones 456 502 399 487
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Expectadores 3.446 6.782 2.947 5.821


----------------------------------------------------------
</PRE>

Cuando el navegador interprete este código, se visualizará ese bloque de texto tal como
aparece en él, respetando el espaciado entre palabras y los cambios de línea. Puede
comprobarse cómo, de no usar los comandos <PRE> y </PRE>, los datos se
mostrarían separados entre sí por un único espacio en blanco y los cambios de línea se
producirían en los lugares que determine la anchura de la ventana del navegador.

Otro de los tipos de bloques de texto disponibles está constituido por los bloques
con sangrías (texto sangrado), la definición de uno de estos bloques se realiza con
los comandos:

<BLOCKQUOTE>................</BLOCKQUOTE>

70
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

3.6.4. COMANDOS PARA LA GENERACIÓN DE


LISTAS
La presentación de información en forma de listas se puede realizar básicamente de
dos formas:

— Listas numeradas, representan los elementos de la lista numerando cada


uno de ellos de forma consecutiva según el lugar que ocupan en la misma.
— Listas sin numerar, representan los elementos de la lista con una marca o
viñeta que antecede a cada uno de ellos.

Para la construcción de listas numeradas se utilizan los comandos <OL> y


</OL>, que señalan el inicio y el fin, respectivamente, de la lista. Cada elemento
o ítem de lista se señala con el comando <LI>. El propio intérprete de HTML se
encargará de asignar la numeración a cada ítem.

El comando <OL> tiene algunos parámetros opcionales, entre ellos:


— START: especifica el número de orden del primer elemento de la lista, por
defecto empezará en 1.
— TYPE: Indica el tipo de numeración a emplear, el valor para este parámetro
puede ser:

1 números (valor por defecto).


i números romanos en minúscula.
I números romanos en mayúscula.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

a letras en minúscula.
A letras en mayúscula.

Ejemplo 3.4:
Supóngase que se desea mostrar en una página las 10 películas más taquilleras de
todos los tiempos en España. El código HTML que genera esta página podría ser el
siguiente:

<H2>
LAS PELÍCULAS MAS TAQUILLERAS DE TODOS LOS TIEMPOS EN
ESPAÑA
</H2>
<OL>

71
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

<LI>Titanic (1997)</LI>
<LI>El señor de los anillos, El retorno del
rey (2003)</LI>
<LI>El señor de los Anillos, La comunidad del
anillo (2001)</LI>
<LI>El señor de los anillos, Las dos Torres (2002)</LI>
<LI>Harry Potter y la piedra filosofal (2001)</LI>
<LI>Los otros (2001)</LI>
<LI>El sexto sentido (1999)</LI>
<LI>Shrek 2 (2004)</LI>
<LI>Harry Potter y la cámara secreta (2002)</LI>
<LI>La guerra de las galaxias, Episodio I,
La amenaza fantasma (1999)</LI>
</OL>

Los comandos de finalización de cada ítem de la tabla (</LI>) son opcionales.

La visualización de la página en el navegador se muestra en la Figura 3.3.


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Figura 3.3 Lista de las películas más taquilleras

72
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

En el caso de las listas sin numerar, su construcción es similar, salvo en el uso de


comandos diferentes para señalar el inicio y el fin de la lista. Estos comandos son
<UL> y </UL>; cada elemento de la lista irá precedido del comando <LI>.

El comando <UL> puede llevar el parámetro opcional TYPE, que indica el tipo de
símbolo utilizado para marcar los elementos de la lista. Los valores posibles son:

— circle Círculos huecos


— disc Círculos rellenos
— square Cuadrados rellenos

Ejemplo 3.5:
La Figura 3.4 corresponde a una página web del sitio de Cinem@s en la que se
muestra información sobre las salas de proyección disponibles. Esta página
contiene en su parte inferior una lista sin numerar cuyo código HTML es:

Todas nuestras salas están equipadas con:


<UL TYPE="disc">
<LI>Aire acondicionado</LI>
<LI>Pantallas de grandes dimensiones</LI>
<LI>Sistema de sonido Dolby Digital Soundround</LI>
<LI>Cómodas butacas equipadas con portarefrescos</LI>
<LI>Cómodos accesos y espacios entre butacas</LI>
</UL>
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

73
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Figura 3.4 Página de presentación de las características de las salas de Cinem@s


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Por último, indicar que los diferentes tipos de listas se pueden anidar es decir,
incluir una lista dentro de otra, incluso siendo listas de diferentes tipos.

Ejemplo 3.6:
La página que se puede ver en la Figura 3.5 incorpora una serie de listas anidadas,
la lista de nivel superior es una lista numerada, mientras que las de los niveles
inferiores son listas sin numerar. El código fuente de esa página es:

<H2>
Nuestros menús especiales
</H2>
Para disfrutar del mejor cine le ofrecemos nuestros packs
especiales:

74
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

<OL TYPE=A>
<LI> Menú <I>Junior</I> </LI>

<UL TYPE=square>
<LI>Palomitas pequeña</LI>
<LI>Bebida a elegir:</LI>

<UL TYPE="circle">
<LI>Agua mineral</LI>
<LI>Refresco pequeño</LI>
</UL>
</UL>

<LI> Menú especial <I>Cinem@s</I> </LI>

<UL TYPE=square>
<LI>Palomitas grande</LI>
<LI>Snack</LI>
<LI>Bebida a elegir:</LI>

<UL TYPE="circle">
<LI>Agua mineral</LI>
<LI>Refresco grande</LI>
</UL>
</UL>
</OL>

Aunque no es estrictamente necesario, y no tiene ningún efecto sobre la


visualización de la página, sí que es recomendable tratar de escribir el
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

NOTA
código fuente de una manera que mejore su legibilidad y depuración. En
el ejemplo anterior, las diferentes listas anidadas han sido incluidas en
el código con diferentes niveles de sangrado precisamente para eso.

75
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Figura 3.5 Estructura de listas anidadas

3.6.5. CREACIÓN DE TABLAS

Otra de las estructuras básicas de HTML para mostrar y organizar datos son las
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

tablas. Estas estructuras van a resultar especialmente útiles cuando se desee


recuperar datos de una base de datos y visualizarlos en una página web; es por ello
que, en función de los objetivos de este libro, resulta importante conocer en detalle
los diferentes comandos HTML que permiten generar estas estructuras.

Las tablas se generan siempre con la siguiente estructura:

— Toda tabla queda delimitada por los comandos <TABLE> y </TABLE>.


— Cada fila de la tabla queda delimitada por los comandos <TR> y </TR>.
— Se pueden definir dos tipos de celdas:
o Celdas de cabecera o titulares: señaladas con los comandos <TH>
y </TH>.

76
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

o Celdas de contenido: señaladas con los comandos <TD> y </TD>.

Los diferentes comandos de creación de tablas disponen de una serie de


argumentos opcionales que permiten, entre otras cosas, establecer bordes para las
celdas, tipos de alineación, fusión de celdas, dimensiones,... A continuación se
recogen algunos de estos parámetros.

Parámetros opcionales del comando <TABLE>:

— BORDER: indica que debe dibujarse un borde a la tabla. Si se da un valor a este


parámetro, ese valor indica el grosor en píxeles del borde. Si no se indica este
parámetro la tabla aparecerá sin borde.
— CELLPADDING: permite indicar el espacio que se debe dejar entre el borde de
cada celda y su contenido. El valor por defecto es 1.
— CELLSPACING: fija la anchura, en píxeles, de las líneas de división internas
de la tabla. El valor por defecto es 2.
— WIDTH: controla la anchura de la tabla. Se puede indicar un valor en píxeles o
un porcentaje respecto al ancho total de la página.
— ALIGN: permite situar la tabla respecto al texto que tiene a su alrededor. Los
valores que puede tomar este parámetro son CENTER, LEFT y RIGHT.

Parámetros adicionales de los comandos <TD> y <TH>:

— ALIGN: indica el tipo de alineación del contenido de las celdas. Los valores
pueden ser LEFT, RIGHT y CENTER. Este parámetro también puede aplicarse
sobre el comando <TR> y tendrá efecto sobre todas las celdas de esa fila.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

— VALIGN: indica el tipo de alineación vertical del contenido de las celdas. Los
valores pueden ser TOP, BOTTOM, MIDDLE (valor por defecto).
— BGCOLOR: indica un color de fondo para la celda. También puede ser aplicado
sobre toda una fila o la tabla completa.
— COLSPAN: indica el número de columnas que ocupa la celda. El valor por
defecto es 1.
— ROWSPAN: indica el número de filas que ocupa la celda. Por defecto es 1.
— NOWRAP: obliga al navegador a no partir las líneas de la celda. El ancho de la
celda estará fijado por la longitud del texto que contendrá.
— WIDTH: indica el ancho de la celda. Se puede indicar un ancho en píxeles o un
porcentaje respecto al ancho total de la tabla.

77
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Ejemplo 3.7:
Cinem@s tiene establecido un sistema por el cuál todos sus clientes acumulan
puntos cada vez que adquieren una entrada. Los puntos acumulados pueden ser
canjeados por entradas gratis y otros regalos. Dentro del sitio web, Cinem@s
quiere incluir una tabla como la que se ve en la Figura 3.6 para indicar la
correspondencia entre puntos y premios.

Figura 3.6 Tabla de premios


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

El código HTML que genera esta página es:

<H1 ALIGN="center">
Nuestros premios
</H1>
<TABLE BORDER ALIGN=center>
<TR BGCOLOR=#99CCFF>
<TH> Puntos </TH> <TH> Premio </TD>
</TR>
<TR>
<TH> 20 </TH> <TD> Entrada gratis </TD>
</TR>
<TR>
<TH> 25 </TH> <TD> Gorra <I>Cinem@s</I> </TD>
</TR>

78
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

<TR>
<TH> 30 </TH> <TD> Camiseta <I>Cinem@s</I> </TD>
</TR>
<TR>
<TH> 35 </TH> <TD> Película en DVD o VHS </TD>
</TR>
<TR>
<TH> 40 </TH> <TD> Reproductor de CDs portátil </TD>
</TR>
</TABLE>

3.6.6. INSERCIÓN DE IMÁGENES

Las imágenes son un elemento esencial para diseñar páginas elegantes. Sin
embargo, un excesivo número de imágenes en una página puede hacer que esta
pierda su estética, a la vez que supone hacer más lento el proceso de visualización
(las imágenes son las partes de las páginas que más espacio en bytes ocupan, por lo
que su transferencia requiere más tiempo que la del texto). Los visualizadores
pueden admitir distintos formatos de imágenes, los más extendidos son GIF y JPG.
Cada uno de ellos tiene sus ventajas; por ejemplo, las imágenes JPG ocupan menos
espacio, con la consiguiente reducción de tiempo en la transferencia, pero también
tienen peor calidad que el formato GIF.

El comando utilizado para la inserción de imágenes es <IMG> cuya sintaxis


mínima exige indicar en su parámetro SRC el fichero gráfico que contiene la
imagen:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

<IMG SRC = "fichero gráfico con la imagen">

En el caso de que el fichero gráfico se encuentre almacenado en un directorio


diferente al de la propia página web, será preciso indicar junto con el nombre del
fichero la ruta relativa necesaria para localizarlo.
El comando <IMG> tiene una serie de parámetros opcionales, los más importantes son los
que se citan a continuación:

— ALIGN: especifica el modo en el que la imagen se alinea con el texto que la


rodea. Los valores que puede tomar este parámetro son: TOP, BOTTOM,
MIDDLE, LEFT, RIGHT.
— ALT: especifica un texto alternativo que se utilizará para sustituir a la imagen
en el caso de que el visualizador utilizado no pueda mostrar imágenes o esta
no pueda ser localizada o cargada.

79
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

— HEIGHT y WIDTH: indican al navegador la altura y la anchura en píxeles de la


imagen. Si estas dimensiones no corresponden con las reales la imagen será
escalada.
— BORDER: indica la anchura del borde que rodeará a la imagen en la página.
— HSPACE y VSPACE: fijan márgenes horizontales y verticales a dejar entre la
imagen y el texto que la rodea.

Una opción interesante es insertar una imagen como fondo de la página. La forma
de hacerlo es utilizando el parámetro BACKGROUND al mismo tiempo que se
declara el inicio del cuerpo del documento:

<BODY BACKGROUND="Fondo.gif">

En este caso la imagen se repetirá tantas veces como sea necesario para cubrir todo
el área visible de la página.

Ejemplo 3.8:
La página de inicio de Cinem@s que se vio en la Figura 3.1 incorpora varias
imágenes. La página está dividida en dos áreas diferentes, correspondientes a lo
que en HTML se denomina marcos o frames, en la de la parte superior se incluyen
tres imágenes que han sido insertadas dentro de una tabla para poder posicionarlas
en la página de una manera sencilla. El código siguiente muestra la construcción de
esa tabla y la inserción de las tres imágenes:

<TABLE WIDTH="100%" BORDER=1>


<TR BORDERCOLOR="#FFFFFF" BGCOLOR="#0066CC">
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

<TH WIDTH=110>
<IMG SRC="images/CARRETEPELI1.gif"
WIDTH=77 HEIGHT=60></TH>
<TH WIDTH ="*">
<IMG SRC="images/logo.gif" WIDTH=143 HEIGHT=73>
</TH>
<TH WIDTH =110>
<IMG SRC="images/CARRETEPELI1.gif"
WIDTH=77 HEIGHT=60></TH>
</TR>
</TABLE>

80
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

3.6.7. TRATAMIENTO DEL COLOR


En el último ejemplo se utilizó el parámetro BGCOLOR para definir un color de
fondo para determinadas celdas la tabla. El valor de ese parámetro es una cadena
de caracteres con la codificación hexadecimal de un color. En esta sección se
explica el significado de este tipo de codificaciones.

Todo color en HTML viene definido por su formato RGB (Red-Green-Blue), identificado
mediante un código numérico de seis dígitos hexadecimales precedidos del signo "#".
Según este formato, todo color es una combinación de los tres colores básicos: rojo (R),
verde (G) y azul (B); cada uno de ellos puede expresarse desde la ausencia de color (valor
0) a saturación de color (255). La expresión de los valores debe hacerse en forma
hexadecimal, el valor mínimo (0) se expresa como 00, y el máximo (255) como FF. De
esta forma el código de un color estará formado por 6 dígitos hexadecimales:

— Los dos primeros dígitos indican la componente del color primario rojo.
— Los dos dígitos intermedios indican la componente del color primario verde.
— Los dos últimos dígitos indican la componente azul.

La Tabla 3.4 muestra los códigos hexadecimales de algunos de los colores habituales.
Para alguno de esos colores HTML acepta la utilización de identificadores
alfanuméricos, por ejemplo, el color azul puede ser identificado como blue o el color
rojo como red.

Color Código Color Código


Blanco #FFFFFF Negro #000000
Azul #0000FF Verde #00FF00
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Ciano #00FFFF Verde mar #238E6B


Azul cielo #3299CC Verde oscuro #2F4F2F
Violeta #4F2F4F Verde lima #32CC32
Gris #C0C0C0 Salmón #6F4242
Turquesa #7093DB Marrón #A52A2A
Rosa #BC8F8F Naranja #CC3232
Oro #CC7F32 Rojo #FF0000
Magenta #FF00FF Amarillo #FFFF00
Tabla 3.4 Codificación RGB de colores habituales

Los editores de HTML suelen disponer de una paleta de colores para facilitar la
utilización de los mismos sin tener que realizar conversiones a formato
hexadecimal.

81
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

En el momento de declarar el cuerpo del documento HTML mediante el comando


<BODY>, se pueden utilizar una serie de parámetros para indicar el color de
distintos elementos que intervienen en la página como el fondo, el texto y los
enlaces:

— BGCOLOR : permite dar un color al fondo de la página.


— TEXT : permite indicar el color del texto.
— LINK : permite designar el color de los enlaces aún no visitados.
— VLINK : permite designar el color de los enlaces ya visitados.

Ejemplo 3.9:
Si se desea que el fondo de la página sea de color azul oscuro, el texto amarillo
(combinación de rojo y verde a partes iguales), el texto asociado a los enlaces no
visitados en color verde y el de los visitados en rojo, la definición del cuerpo del
documento debería hacerse de la siguiente manera:

<BODY BGCOLOR="#OOOOCC" TEXT="#FFFFOO"


LINK="#OODDOO" VLINK="#FFOOOO">

3.6.8. ENLACES O HIPERVÍNCULOS


Los enlaces permiten la navegación a través de la información de una página a
puntos concretos de la misma página, a otras páginas diferentes de un mismo sitio
web o a cualquier página en Internet.

Todo enlace consta de dos elementos esenciales: un elemento de enlace y un


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

destino. El elemento de enlace puede ser texto, una imagen o ambas cosas, y la
activación se produce mediante un "click" del ratón sobre él. El elemento de enlace
debe ser señalado encerrándolo entre los comandos <A> y </A>.

En cuanto al destino del enlace, este puede ser otro documento HTML, cualquier
punto intermedio dentro del documento HTML en curso o de otro documento
HTML, e incluso cualquier otro documento de otro tipo (binarios, imágenes,...). El
destino del enlace se define mediante el parámetro HREF del comando <A>.

Ejemplo 3.10:
La página de inicio de Cinem@s (Figura 3.1) tiene un conjunto de enlaces que dan
acceso a las restantes páginas del sitio. Estos enlaces se encuentran situados en una
tabla que consta de tres filas y tres columnas, estando la columna central reservada

82
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

para una imagen. El código que define esa estructura tabular con los enlaces
correspondientes es el que se incluye a continuación:

<TABLE CELLSPACING=2 CELLPADDING=5 WIDTH=100%>


<TR ALIGN="center" BGCOLOR="#0066CC">
<TD WIDTH=25%>
<A HREF="proyecciones.php">
<FONT SIZE=4 COLOR="#FFFFFF">
Nuestra cartelera</FONT>
</A>
</TD>
<TD WIDTH=50% ROWSPAN=4>
<IMG SRC="images/cineportada.jpg"
WIDTH="295" HEIGHT="303">
</TD>
<TD WIDTH=25%>
<A HREF="salas.htm">
<FONT SIZE=4 COLOR="#FFFFFF">
Nuestras salas</FONT>
</A>
</TD>
</TR>
<TR ALIGN=center BGCOLOR="#0066CC">
<TD>
<A HREF="clientes.htm">
<FONT SIZE=4 COLOR="#FFFFFF">
Área de clientes</FONT>
</A>
</TD>
<TD>
<A HREF="entradas.htm">
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

<FONT SIZE=4 COLOR="#FFFFFF">


Compra de entradas</FONT>
</A>
</TD>
</TR>
<TR ALIGN=center BGCOLOR="#0066CC">
<TD>
<A HREF="estrenos.htm">
<FONT SIZE=4 COLOR="#FFFFFF">
Próximos estrenos</FONT>
</A>
</TD>
<TD>
<A HREF="foros/index.php">
<FONT SIZE=4 color="#FFFFFF">
El foro Cinem@s</FONT>

83
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

</A>
</TD>
</TR>
</TABLE>

Como puede apreciarse, los diferentes enlaces apuntan hacia nuevas páginas
HTML o documentos PHP.

Un caso particular de enlaces son los denominados marcadores o anclas internos,


enlaces a puntos concretos de un documento HTML. Para crear un marcador se
debe, en primer lugar, señalar el punto de destino con el siguiente comando:

<A NAME=" nombre_marcador"> Texto opcional </A>

El nombre del marcador no puede contener ni espacios en blanco ni los caracteres


=, +, <, >, ¿, / y %. Además, estos nombres son sensibles al uso de mayúsculas y
minúsculas.

Una vez marcado el destino, se debe crear el enlace, para ello la sintaxis es:

— Si el lugar de destino y el enlace se encuentran en el mismo documento, el


valor del parámetro HREF debe ser el nombre dado al marcador precedido
del signo "#":

<A HREF="# nombre_marcador"> Elemento de enlace


</A>

— Cuando el lugar de destino se encuentra en un documento diferente al del


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

enlace, el parámetro HREF toma como valor el URL absoluto o relativo del
documento de destino, seguido del signo "#" y el nombre del marcador:

<A HREF="URLdestino#nombre_marcador">
Elemento de enlace
</A>

Finalmente, otro de los enlaces o hipervínculos más característicos es el que


permite enviar un correo electrónico a una determinada dirección. El comando a
utilizar vuelve a ser el comando <A> pero con un valor diferente para el parámetro
HREF:

<A HREF="MAILTO:admin@cinemas.es">Enviar mensaje</A>

84
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

Como se pueda apreciar, el valor de HREF es en este caso la palabra MAILTO


seguida de dos puntos y la dirección de correo electrónico de destino.

3.7. MARCOS O FRAMES


Una de las opciones más interesantes para el diseño y presentación de sitos web
es la utilización de los denominados marcos o frames. Los marcos en HTML
permiten la creación de un documento web con varias partes independientes,
cada una de las cuales puede mostrar diferentes páginas web, lo que permite
dotar a un sitio de cierto dinamismo a la vez que mejorar su funcionalidad y
apariencia.

Uno de los usos más frecuentes de los marcos es el de reservar una zona de la
página para mostrar cierta información siempre visible o fija, por ejemplo un
logotipo de una empresa, un índice con enlaces a otras páginas, etc. De esta forma,
cuando se activa uno de esos enlaces se puede acceder a su contenido en otra parte
de la página manteniendo también visible la parte fija. Esto es precisamente lo que
se ha realizado en el diseño del sitio web de Cinem@s, cuya página de inicio
muestra la Figura 3.1 y que contiene dos marcos:

1. El marco superior muestra en todo momento el logotipo de la empresa con


dos imágenes flanqueándole a ambos lados.

2. El marco inferior, o principal, contiene la tabla con los enlaces a las


restantes páginas del sitio. Cada vez que un enlace se active se cargará en
esa parte de la ventana la correspondiente página, pero quedando fijo el
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

marco que contiene el logotipo.

3.7.1. CONSTRUCCIÓN DE PÁGINAS CON MARCOS


Los documentos HTML que contienen marcos de forma general suelen recibir el
nombre de páginas de marcos, y tienen una estructura diferente a la de los
documentos sin marcos. Un documento HTML tiene dos grandes secciones
definidas por las etiquetas <HEAD>, para indicar la cabecera del documento, y
<BODY> para introducir el cuerpo de la página. Sin embargo, esta estructura
cambia en los documentos con marcos. Para crear un documento con marcos se
debe crear una página web con una cabecera pero se sustituye el cuerpo por unas
directivas o etiquetas específicas <FRAMESET> y </FRAMESET> mediante las
que se define el conjunto de marcos del documento.

85
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Los parámetros que recibe el comando de definición de marcos (<FRAMESET>)


son:

— COLS: establece que la disposición de los marcos será en columnas,


dividiendo la pantalla verticalmente en columnas. Además, indica la
extensión de cada espacio generado. Este parámetro recibe como valor una
lista con las dimensiones de cada columna separadas por comas, cada una
de estas dimensiones puede darse de tres formas:
o Un número que represente la anchura en píxeles de la
columna.
o Un porcentaje que la columna ocupará sobre el total del
espacio libre.
o Un asterisco, indicando que la columna se extenderá por todo
el espacio libre de la ventana.
— ROWS: establece que la disposición de los marcos será en filas, dividiendo
la pantalla horizontalmente. Como en el caso anterior debe indicarse la
extensión de cada marco y para ello toma los mismos parámetros que el
atributo COLS.
— FRAMEBORDER: dota de borde a los marcos según tome los valores YES o NO.
— BORDER: señala el grosor, en píxeles, del borde.
— BORDERCOLOR: establece un color concreto para el borde.
— FRAMESPACING: indica la separación entre marcos tomando.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Es conveniente señalar que los marcos se crean de izquierda a derecha para las
columnas y de arriba a bajo para las filas. Además, los marcos se pueden anidar es
decir, introducir unos marcos dentro de otros o subdividir un marco en otros.

Hasta el momento se ha visto cómo dividir una página en varias áreas con la
directiva <FRAMESET>. Una vez realizada esa división es necesario definir los
contenidos que se mostrarán en cada marco, para ello se utiliza la etiqueta
<FRAME>, etiqueta que no tiene comando de cierre y que irá situada en cada uno
de los marcos que se definan entre las etiquetas <FRAMESET>. Los parámetros
que pueden acompañar a esta etiqueta permiten indicar el contenido y modificar la
apariencia del marco:

— SRC: indica el documento que se cargará o visualizará en el marco. El


valor que toma es el nombre del documento HTML o su ruta.

86
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

— NAME: asigna un nombre al marco, este nombre identificará posteriormente


al marco.
— FRAMEBORDER: permite que aparezca visible o no el borde del marco. Los
valores que puede tomar son YES o NO.
— MARGINHEIGHT: altura del margen a dejar respecto a los bordes del
marco.
— MARGINWIDTH: anchura del margen a dejar respecto a los bordes del
marco.
— SCROLLING: permite indicar si se desea mostrar una barra de
desplazamiento para el marco. Los valores que puede tomar son:
o YES: mostrar siempre barra de desplazamiento.
o No: sin barra de desplazamiento.
o AUTO: (valor por defecto) se mostrará la barra de
desplazamiento cuando sea necesario (el contenido de la
página no se puede visualizar completamente en el espacio
reservado a tal efecto).
— NORESIZE: si está presente indica que el usuario no podrá redimensionar
el marco, es decir, aumentar o reducir el tamaño.

Los marcos, si bien permiten enriquecer un sitio con mayor dinamismo y sensación
de interactividad, también pueden generar problemas derivados principalmente del
navegador que utilice el usuario, puesto que determinados navegadores o versiones
de estos no están preparados para permitir mostrar páginas construidas con marcos.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

El diseñador del sitio web debe tener en cuenta este posible problema y anticiparse
a él generando un contenido alternativo que pueda ser visualizado por los usuarios
con navegadores que no admitan marcos. Para la creación de este contenido
alternativo se utilizan las etiquetas <NOFRAMES> y </NOFRAMES>. Estas
etiquetas permiten indicar a los navegadores que no soporten marcos que el
contenido que se debe mostrar es el contenido comprendido entre ellas.

3.7.2. ENLACES EN PÁGINAS CON MARCOS


Una cuestión importante cuando se trabaja con páginas con marcos es señalar
claramente el marco en el que se desea visualizar cada enlace. Por ejemplo, podría
ser interesante que el enlace se encuentre en un marco pero que al activarlo el
contenido del destino se visualice en otro; sin embargo, las opciones son múltiples:

87
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

además de visualizarlo en un marco concreto se podría ver en una ventana nueva


del navegador, en la misma ventana haciendo desaparecer la página de marcos,...

Para realizar esta tarea de asignación de un lugar concreto de visualización a cada


enlace, en la creación del vínculo se debe introducir el parámetro TARGET, siendo
su valor alguno de los siguientes:

— "Nombre_marco": señala el nombre del marco en el que debe cargarse


el destino.
— _blank: abre el documento vinculado en una nueva ventana del
navegador sin cerrar la anterior.
— _parent: muestra el contenido del enlace en el anterior marco definido.
Si no hay ningún marco definido se muestra a pantalla completa.
— _self: abre el documento en el mismo marco o ventana en el que se
encuentra el vinculo (opción por defecto).
— _top: muestra el contenido del enlace a pantalla completa eliminando la
ventana anterior.

Hay que hacer notar al lector que la decisión de asignar el lugar en el que se deben
mostrar los contenidos no es trivial, imagínese que en un sitio web tiene una página
que consta de diferentes enlaces a otros sitios web distintos; si se decide que al
seleccionar un enlace este se abra en la misma ventana del navegador, implicaría
que el usuario al seleccionarlo sale del sitio web.

Ejemplo 3.11:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

A continuación se muestra el código fuente de la página principal de Cinem@s


(Figura 3.1), que como ya se ha comentado anteriormente está constituida por dos
marcos divididos horizontalmente.

<HTML>
<HEAD>
<TITLE>Cinem@s</TITLE>
</HEAD>
<FRAMESET ROWS="105,*">
<FRAME NAME="encabezado" SCROLLING="no" NORESIZE
SRC="encabezado.htm" FRAMEBORDER=0>
<FRAME NAME="principal" SRC="principal.htm"
FRAMEBORDER =0>
<NOFRAMES>
<BODY>

88
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

<P>Esta página usa marcos, pero su explorador


no los admite.</P>
</BODY>
</NOFRAMES>
</FRAMESET>
</HTML>

Como en todo documento HTML, la etiqueta de inicio es <HTML> seguida de la


cabecera del documento que contiene el título de la página. Finalizada la cabecera
del documento en una página normal se encuentra el cuerpo (<BODY>), pero como
ya se ha comentado, en las páginas de marcos lo que sigue a la cabecera del
documento es la definición de los marcos. En este caso:

<FRAMESET ROWS="105,*">

indica que la página se va a dividir horizontalmente en dos filas, una superior con
una altura de 105 píxeles y la inferior, que ocupará el resto de espacio libre.
Posteriormente se definen los dos marcos con el comando <FRAME>:

<FRAME NAME="encabezado" SCROLLING="no" NORESIZE


SRC="encabezado.htm" FRAMEBORDER=0>

Este primer comando define el marco superior, asignándole un nombre, indicando


que no tendrá barra de desplazamiento y que no se podrá redimensionar su tamaño.
Además, establece que en el marco se mostrará la página encabezado.htm y que no
aparecerá visible el borde del marco.

La segunda etiqueta <FRAME> establecerá la apariencia y contenido de la segunda


división de la ventana:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

<FRAME NAME="principal" SRC="principal.htm"


FRAMEBORDER =0>

El segundo espacio generado por el marco se denomina principal y en él se


mostrará el documento principal.htm.

En la siguiente línea se define un contenido alternativo (<NOFRAMES>) para los


visitantes cuyo navegador no admita marcos. Nótese que este contenido alternativo
se sitúa entre las etiquetas <NOFRAMES> y </NOFRAMES>, antes de cerrar la
definición de la estructura de marcos.

89
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

3.8. FORMULARIOS
Los formularios son uno de los componentes esenciales en una página web, ya que
permiten la interacción con el usuario, consiguiendo así recoger información
particular sobre sus gustos, opiniones, datos personales,... Los visitantes rellenan
los campos del formulario y haciendo clic en un botón del propio formulario, se
envían los datos al servidor en el que reside el sitio web, para que sean procesados,
en su caso, por este. Especialmente útiles serán los formularios para actuar de
interfaz de usuario en los programas PHP.

Los formularios están compuestos por campos de diferentes tipos (cuadros de


texto, casillas de verificación, botones de opciones, menús desplegables,...) en los
que el usuario introduce los datos, y dispone de botones que ejecutan las acciones
de enviar o borrar los datos del formulario.

Para crear un formulario se utiliza el comando <FORM> y una serie de comandos


especiales para crear cada uno de sus campos. Este comando <FORM> admite dos
parámetros fundamentales:

— El parámetro ACTION indica quién será el encargado de recibir y, en su


caso procesar, los datos que se envían desde el formulario. Este parámetro
puede tomar como valor:
o El URL de un programa CGI alojado en el servidor y
encargado de procesar la información recibida mediante un
formulario.
o El URL de un archivo, por ejemplo en PHP, creado ad hoc
para procesar el formulario.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

o Una dirección de correo electrónico a la que será enviada la


información de los campos del formulario.

— El parámetro METHOD indica cómo debe realizarse la transferencia de los


datos contenidos en el formulario. Los valores que puede tomar son:
o GET: envía los datos formando parte del URL.
o POST: transmite los datos separados del URL.

La diferencia entre estos dos métodos de envío será analizada en detalle en el


Capítulo 5, cuando se estudie la forma en la que PHP recibe y procesa los datos
procedentes de formularios.

90
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

Una vez delimitado el formulario entre los comando <FORM> y </FORM>, deben
indicarse entre ellos los comandos necesarios para construir cada uno de sus
campos. Un formulario consta de campos de diferentes tipos y cada uno de esos
campos se define utilizando un comando <INPUT>, acompañado de un parámetro
TYPE que será el que indique el tipo de campo. Los valores que puede tomar este
parámetro TYPE son los que muestra la Tabla 3.5.

Otros parámetros del comando <INPUT> son:

— NAME: nombre que utilizará el programa encargado de procesar los datos


para referirse al campo.
— VALUE: utilizado para dar al campo valores por defecto.
— SIZE: establece el tamaño del campo (número de caracteres).
— MAXSIZE: indica el número máximo de caracteres que puede recibir el
campo.

Valor de TYPE Tipo de campo


text Campo de texto.
password Campo especial para introducir contraseñas.
radio Botón de radio.
checkbox Cajas de selección.
submit Botón de envío de la información.
reset Botón de borrado de la información.
button Botón de acción.
hidden Campo oculto.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Tabla 3.5 Tipos de campos de formulario

Además de los campos de texto definidos con el comando <INPUT>, se pueden crear
también otro tipo de campos: las áreas de texto. Se trata de campos de texto que ocupan
más de una línea. La definición de un área de texto responde al siguiente esquema:

<TEXTAREA NAME= "nombre_campo" ROWS=n COLS=m>


</TEXTAREA>

donde n es el número de filas y m el número de columnas del área de texto.

Otro recurso de los formularios son las listas desplegables, que definen campos con
valores predefinidos. Estas listas se crean igualmente con un comando especial: el

91
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

comando <SELECT>. Cada uno de los elementos de la lista se define con el comando
<OPTION>.

Ejemplo 3.12:
El siguiente código crea un menú desplegable con cuatro opciones, apareciendo la
primera seleccionada por defecto:

<SELECT NAME="nombre">
<OPTION SELECTED> Opción por defecto
<OPTION> Opción 2
<OPTION> Opción 3
<OPTION> Opción 4
</SELECT>

Si en el comando <SELECT> aparece el parámetro MULTIPLE la lista será de


selección múltiple, además la opción seleccionada por defecto tiene que indicarse
colocando el parámetro SELECTED en el correspondiente comando <OPTION>.

Para concluir este capítulo se incluyen a continuación ejemplos de formularios que


forman parte del sitio web de Cinem@s y que serán utilizados en los Capítulos 16 y
17 para efectuar diversas operaciones de acceso a bases de datos.

Ejemplo 3.13:
Cinem@s incluye en su sitio web una página en la que sus clientes pueden
registrarse y acceder a la consulta de sus datos. La página de este “Área de
clientes” es la que se muestra en la Figura 3.7. Dicha página incluye dos
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

formularios situados dentro de una tabla de dos columnas, el primero permite


introducir un número de usuario y contraseña, mientras que el segundo sirve para
enviar todos los datos necesarios para registrarse como cliente.

El código completo de la página del “Área de clientes” es:

<HTML>
<HEAD><TITLE>Área de clientes</TITLE></HEAD>
<BODY TEXT=blue>
<!-- Barra de navegación del sitio -->
<TABLE WIDTH="100%" BORDER BGCOLOR=#99CCFF>
<TR>
<TH WIDTH="16%">
<A HREF="principal.htm">Página principal</A></TH>
<TH WIDTH="17%">
<A HREF="proyecciones.php">Nuestra cartelera</A></TH>

92
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

<TH WIDTH="17%">
<A HREF="salas.htm">Nuestras salas</A></TH>
<TH WIDTH="17%">
<A HREF="entradas.htm">Compra de entradas</A></TH>
<TH WIDTH="17%">
<A HREF="estrenos.htm">Próximos estrenos</A></TH>
<TH WIDTH="16%">
<A HREF="foros/index.php">Foro Cinem@s</A></TH>
</TR>
</TABLE>

<H1 ALIGN="center">Área de clientes</H1>


<TABLE CELLSPACING=12>
<TR>
<TD WIDTH=35%>
En Cinem@s queremos premiar la fidelidad de nuestros
clientes. Por ello, te ofrecemos la posibilidad de
registrarte como cliente y por cada entrada que compres
online acumularás puntos canjeables por regalos o entradas
gratuitas.
<P> Si ya eres cliente registrado, entra en tu página:
<!-- Formulario de acceso al área personal -->
<FORM ACTION=accesocliente.php METHOD=POST>
Número de cliente:
<INPUT TYPE=text SIZE="5" NAME="numcliente"><BR>
Contraseña:
<INPUT TYPE=password SIZE="6" NAME="pass"><BR>
<INPUT TYPE=submit VALUE=Entrar>
</FORM>
</TD>
<TD WIDTH=65%>
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

<I>Si aún no te has registrado hazlo aquí y comienza a


disfrutar de enormes ventajas</I>
<!-- Formulario de inscripción de clientes -->
<FORM ACTION="nuevocliente.php" METHOD=POST>
<TABLE>
<TR>
<TD>Nombre (*):</TD>
<TD><INPUT TYPE=text SIZE="40" NAME="nombre"></TD>
</TR>
<TR>
<TD>Dirección:</TD>
<TD><INPUT TYPE=text SIZE="50" NAME="direccion"></TD>
</TR>
<TR>
<TD>NIF (*):</TD>
<TD><INPUT TYPE=text SIZE="9" NAME="nif"></TD>

93
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

</TR>
<TR>
<TD>Fecha de Nacimiento:</TD>
<TD>día <INPUT TYPE=text SIZE="2" NAME="dianac">
mes <INPUT TYPE=text SIZE="2" NAME="mesnac">
año <INPUT TYPE=text SIZE="4" NAME="annonac">
</TD>
</TR>
<TR>
<TD>Teléfono:</TD>
<TD><INPUT TYPE=text SIZE="20" NAME="telefono"></TD>
</TR>
<TR>
<TD>Email:</TD>
<TD><INPUT TYPE=text SIZE="30" NAME="email"></TD>
</TR>
</TABLE>
Contraseña (*):
<INPUT TYPE=password SIZE="6" NAME="pass1">
Repita su contraseña:
<INPUT TYPE=password SIZE="6" NAME="pass2">
<BR>
<FONT SIZE=-1> (*) campos obligatorios</FONT>
<BR>
<INPUT TYPE=submit VALUE=Enviar>
<INPUT TYPE=reset VALUE=Borrar>
</FORM>
</TD>
</TR>
</TABLE>
</BODY>
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

</HTML>

Ejemplo 3.14:
Para conocer la opinión de sus clientes y que estos compartan sus impresiones,
Cinem@s implementará un foro (véase Capítulo 17). Los mensajes serán enviados
al foro a través de una página con un formulario como el que puede verse en la
Figura 3.8, y cuyo código completo se incluye a continuación:

<H1>Nuevo mensaje para el foro</H1>


<FORM ACTION="nuevomensaje.php">
<TABLE>
<INPUT TYPE="hidden" NAME="respuestas" VALUE="0">
<INPUT TYPE="hidden" NAME="identificador" VALUE="">

94
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

<TR>
<TD>Autor:</TD>
<TD><INPUT TYPE="text" NAME="autor" SIZE=40></TD>
</TR>
<TR>
<TD>Título del mensaje:</TD>
<TD> <INPUT TYPE="text" NAME="titulo" SIZE=40 VALUE="">
</TD>
</TR>
<TD>Mensaje:</TD>
<TD><TEXTAREA NAME="mensaje" ROWS=6 COLS=30></TEXTAREA>
</TD>
</TR>
<TR><TD> <INPUT TYPE=submit VALUE="Enviar"> </TD></TR>
</TABLE>
</FORM>

Este último formulario tiene dos campos ocultos cuya utilidad se podrá ver cuando
se desarrolle completamente la página destino nuevomensaje.php en el Capítulo 17.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

95
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Figura 3.7 Área de clientes de Cinem@s

96
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
CREACIÓN DE PÁGINAS WEB MEDIANTE EL LENGUAJE HTML

Figura 3.8 Formulario para el envío de mensajes al foro


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

97
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

4.1. EL LENGUAJE PHP


PHP es un lenguaje interpretado del lado del servidor que se caracteriza por su
potencia, versatilidad, robustez y modularidad. Los programas escritos en PHP son
embebidos directamente en el código HTML y ejecutados por el servidor web a
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

través de un intérprete antes de transferir al cliente que lo ha solicitado un resultado


en forma de código HTML puro. Al ser un lenguaje que sigue la corriente open
source, tanto el intérprete como su código fuente son totalmente accesibles de
forma gratuita en la red. En concreto, la dirección oficial en la que puede
descargarse es:

http://www.php.net/

Por su flexibilidad, PHP resulta un lenguaje muy sencillo de aprender;


especialmente para programadores familiarizados con lenguajes como C, Perl o
Java, debido a las similitudes de sintaxis entre ellos.

Por supuesto, es un lenguaje multiplataforma; los programas funcionan igual sobre


diferentes plataformas, trabajando sobre la mayoría de servidores web y estando
preparado para interactuar con más de 20 tipos de bases de datos. No obstante, al

99
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

ser un lenguaje inicialmente concebido para entornos Unix, es sobre este sistema
operativo sobre el que se pueden aprovechar mejor sus prestaciones.

En comparación con otro tipo de tecnologías similares, PHP resulta más rápido,
independiente de la plataforma y más sencillo de aprender y utilizar.

Todas estas características han hecho de este lenguaje uno de los que mayor
crecimiento ha experimentado en los últimos años, desde su aparición en 1994. Es
de destacar especialmente la facilidad para la conectividad con sistemas gestores de
bases de datos a través de un gran número de funciones especializadas. En este
libro en concreto se analizará la conectividad con el sistema gestor MySQL. Esa
facilidad de conexión ha hecho que PHP sea actualmente uno de los lenguajes más
utilizados para la generación de páginas dinámicas, no solo personales sino
también portales de empresas y organizaciones.

Inicialmente diseñado para realizar poco más que contadores y libros de visita de
páginas, en la actualidad PHP permite realizar una multitud de tareas útiles para el
desarrollo web. Por ejemplo, dispone, entre otras, de:

— Funciones de correo electrónico que pueden ser utilizadas para programar completos
sistemas de correo electrónico vía web.
— Funciones de administración y gestión de bases de datos específicas para la mayoría de
gestores comerciales y funciones para conexiones ODBC con bases de datos en
sistemas Microsoft.
— Funciones de gestión de directorios y ficheros, incluso para la transferencia mediante
FTP.
— Funciones de tratamiento de imágenes y librerías de funciones gráficas
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

— Funciones de generación y lectura de cookies.


— Funciones para la generación de documentos PDF.

A la innumerable cantidad de funciones predefinidas en PHP deben añadirse, por


supuesto todas aquellas funciones propias de cada programador, y que pueden ser
reutilizadas e intercambiadas a través de foros específicos con otros programadores.

4.2. ORÍGENES Y EVOLUCIÓN DEL LENGUAJE


En 1994 un programador de Groenladia, Rasmus Lerdorf, creó el lenguaje PHP con
el objetivo inicial de hacer un seguimiento de los visitantes de su página personal.
El sistema desarrollado originalmente por Lerdorf estaba formado por un conjunto

100
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

de scripts programados en Perl que posteriormente serían reimplementados en


lenguaje C con el objeto de obtener mayores funcionalidades. El significado
original del nombre PHP no era otro que Personal Home Page. Adicionalmente
Lerdorf desarrolló un sistema de procesamiento de formularios, sistema que fue
bautizado como FI (Form Interpreter), constituyendo ambos sistemas la primera
versión del actual lenguaje PHP: el PHP/FI. Lerdorf decidió hacer público el
código fuente de sus programas para que cualquiera pudiera utilizarlo; de esta
forma el sistema rápidamente comenzó a ser utilizado por otros usuarios de Internet
y entre todos comenzó a mejorarse el lenguaje, de manera que el actual PHP es
progresivamente construido por colaboradores desinteresados que implementan
nuevas funciones en nuevas versiones del lenguaje.

La versión PHP 1 aparece en la primavera de 1995 y el PHP 2 fue desarrollado


entre 1995 y 1997. En 1997 se estimaba que un 1% de los dominios de Internet
hacían uso del PHP 2.

A mediados de 1997 se produce un cambio importante en el lenguaje, se


reprogramó el analizador sintáctico, se incluyeron nuevas funcionalidades como el
soporte a nuevos protocolos de Internet y a la mayoría de los sistemas gestores de
bases de datos comerciales. Con estas nuevas funcionalidades nace el PHP 3,
además se decide rebautizar el lenguaje dando un nuevo significado a sus siglas:
preprocesador de hipertexto. El PHP 3 se caracterizaba por su gran extensibilidad
y por el diseño de una sintaxis mucho más potente y consistente, además del
soporte de sintaxis orientado a objeto. Se estima, que en su apogeo el PHP 3 llegó a
estar instalado sobre el 10% de los servidores web de Internet.

En el año 2000 surge la siguiente versión del lenguaje: el PHP 4, con una mayor
independencia del servidor web y con un mayor número de funciones disponibles.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Con esta versión se redefine el núcleo del programa, generando un nuevo motor que
mejora la ejecución de aplicaciones complejas, este nuevo motor es bautizado como
“motor Zend”, en honor a sus autores: Zeev Zuraski y Andi Gutmans, quienes al
mismo tiempo fundan la empresa Zend (http://www.zend.com) con el objetivo de
ofrecer productos complementarios y herramientas para el desarrollo en PHP.

La actual versión del lenguaje, PHP 5, fue lanzada oficialmente en septiembre de


2004. Hoy en día se estima que PHP es usado por cientos de miles de
programadores y que está presente en más del 20% de los servidores web en
Internet. Es el sexto lenguaje de programación más utilizado en el desarrollo de
software23, únicamente por detrás de C, Java, C++, Visual Basic y Perl.

23
Estimación de la TIOBE Programming Community en noviembre de 2004. Fuente:
http://www.tiobe.com/tpci.htm

101
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Como prueba del crecimiento experimentado en estos años, la Figura 4.1 muestra
una gráfica con la evolución de dominios y direcciones IP que hacen uso de PHP.
Como puede apreciarse, a inicio de 2005 más de 18 millones de dominios y 1,3
millones de direcciones IP en Internet hacían uso de esta tecnología.

Figura 4.1 Evolución de la presencia de PHP en Internet (Fuente:


http://www.php.net/usage.php )

4.3. PROGRAMACIÓN EN PHP: PRIMEROS


EJEMPLOS
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Para empezar a programar en PHP se necesita disponer de una serie de elementos


básicos:

1. Al ser PHP un lenguaje de programación del lado del servidor, lo primero


que se requiere es un servidor web. PHP puede trabajar con la totalidad de
los servidores web más conocidos. Lo más habitual es encontrar PHP sobre
un servidor Apache, pero también es posible instalarlo sobre los servidores
de Microsoft: Microsoft Internet Information Server y Personal Web
Server. Otros servidores posibles serían: Netscape, iPlanet, Oreilly Website
Pro Server, Caudium, Xitami, OmniHTTPd,... En cuanto al sistema
operativo a utilizar también hay diferentes posibilidades: Linux, Unix,
Microsoft Windows, Mac OS X o RISC OS.

102
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

2. Sobre el servidor web es preciso instalar el intérprete de PHP. Este


intérprete puede obtenerse en la dirección http://www.php.net y está
disponible para varias versiones de sistemas operativos. En el proceso de
instalación debe configurarse además el servidor web y decidir si dicho
intérprete se ejecutará como módulo o como un CGI independiente.

3. Una vez instalados el servidor web y el intérprete de PHP, ya se está en


condiciones de crear las primeras páginas dinámicas con PHP. En principio
para la creación del código fuente no es necesario disponer de ningún editor
especial, cualquier editor de texto o de HTML podría ser utilizado. Sin
embargo, en Internet pueden encontrarse algunos editores gratuitos específicos
para el lenguaje PHP y que además permiten probar el funcionamiento de los
programas sin necesidad de salir del entorno de edición.

Una vez instalados sobre el equipo a utilizar todas las herramientas necesarias, es el
momento de crear el primer programa en PHP. Por supuesto, se tratará de un
programa muy simple y cuyo interés es meramente educativo.

Ejemplo 4.1:
En un nuevo documento escriba el siguiente código y grábelo en un fichero con la
extensión .php, por ejemplo con el nombre primer.php.

<HTML>
<HEAD>
<TITLE> Primer ejemplo </TITLE>
</HEAD>
<BODY>
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

<U>
<?PHP
echo "Este es mi primer
programa en PHP";
?>
</U>
</BODY>
</HTML>

Como puede apreciarse, el código tiene la estructura básica de cualquier


documento HTML, con las correspondientes etiquetas que van señalando la
cabecera del documento, el título, el cuerpo,... Pero también puede observarse
cómo dentro del código se encuentra un bloque, señalado con letra negrita, con una
sintaxis diferente. Este bloque es el que inserta dentro del documento un programa
o script en PHP. En este caso se trata de un programa que simplemente usa la
función echo para escribir un mensaje.

103
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

El documento anterior debe ser guardado con la extensión .php y no con la


extensión .htm o .html habitual en los documentos HTML. De esta manera,
cuando un cliente solicite al servidor la página, este último sabrá que esa página
incorpora un programa PHP y que por tanto deberá ser pasado al intérprete de PHP
antes de remitir la página al cliente que la ha solicitado.

Para hacer pública esta primera página, el documento primer.php deberá ser
guardado en el directorio que el servidor web tenga establecido para alojar las
páginas. Para probar que la página funciona correctamente, sin necesidad de tener
una salida real a Internet, se podría abrir el navegador web en el propio equipo que
tiene instalado el servidor web y en la barra de direcciones escribir:

http://localhost/primer.php

Por supuesto, es necesario que el servidor web se encuentre en marcha. En este caso
se está usando el mismo ordenador como servidor y como cliente. El nombre
localhost que aparece en la dirección podría ser también sustituido por el nombre
que identifique al equipo.

En la ventana del navegador se podrá ver el resultado esperado (Figura 4.2).


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Figura 4.2 Ejecución del primer programa en PHP

104
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

La página generada muestra el mensaje indicado en el programa pero subrayado.


Esto último es debido a que el script en el documento se encontraba entre las
etiquetas <U> y </U> que indican el estilo subrayado en HTML.
Si desde el navegador se solicita a este que muestre el código fuente de la página
web que ha recibido, se podría comprobar que dicho código es:

<HTML>
<HEAD>
<TITLE> Primer ejemplo </TITLE>
</HEAD>
<BODY>
<U>
Este es mi primer
programa en PHP</U>
</BODY>
</HTML>

En este código recibido en el cliente no hay ningún elemento que no sea HTML
puro. Esto es debido a que el servidor web, antes de transferir la página al cliente,
se la envió al intérprete de PHP y este ejecutó el programa que estaba integrado en
el documento. Al ejecutar la llamada a la función echo del programa, se escribió
el correspondiente mensaje directamente sobre el código transferido al cliente. Con
este sencillo ejemplo puede verse claramente la forma de trabajo de una tecnología
del lado del servidor como es PHP.

Para probar este ejemplo, se ha utilizado un mismo ordenador en un doble papel:


como servidor web y como cliente que realiza una petición al servidor. Es
conveniente destacar que para poder hacer esto es necesario que la petición de la
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

página sea realizada desde la dirección del navegador usando el protocolo http,
tal como se ha hecho anteriormente, y no abriendo directamente el documento
como archivo local.

La extensión .php es la más habitual en los documentos que contienen


scripts PHP, sin embargo es posible también encontrar documentos con
otras extensiones como .php3 para documentos que incluyan
NOTA programas en PHP 3, .php4 para los programas en PHP 4, o incluso
la extensión .phtml, actualmente en desuso.

En Ejemplo 4.1 se ha utilizado la función echo para escribir un mensaje en la


página web. Realmente echo es una sentencia del lenguaje más que una función,
obsérvese la no necesidad de utilizar los paréntesis para pasar el argumento. En

105
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

PHP existe otra función que se puede utilizar para ese mismo cometido: la función
print(). En cualquiera de los dos casos, al producirse la escritura sobre el
código HTML que será pasado al cliente, es posible utilizar esas funciones para
generar código HTML dentro de un script PHP. Por ejemplo, el siguiente programa
genera una tabla HTML con el título y director de una película que se encuentran
almacenados en sendas variables ($t y $d).

Ejemplo 4.2:
<?PHP
$t = "Todo sobre mi madre";
$d = "Pedro Almodóvar";
print("<TABLE BORDER>");
print("<TR> <TH>Título</TH> <TH>Director</TH> </TR>");
print("<TR> <TD> ");
print($t);
print("</TD> <TD> ");
print($d);
print("</TD> </TR> </TABLE>");
?>

El programa anterior generaría el código HTML necesario para que el cliente que
accede a la página pueda ver una tabla como la siguiente:

Título Director
Todo sobre mi madre Pedro Almodóvar
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

En este programa se ha utilizado la función print() en lugar de echo() para


escribir las cadenas, además se hace uso de dos variables inicializadas en el propio
programa. Cuando más adelante se presenten las diferentes formas de dar cadenas
de caracteres en PHP y su relación con las variables, se verá una forma de
optimizar el código anterior reduciendo el número de sentencias de escritura.

Una de las funciones predefinidas en PHP es la función phpinfo()que genera


diversas tablas con gran cantidad de información sobre la configuración de PHP en
el servidor, como por ejemplo, versión del lenguaje, ubicación del fichero de
inicialización, opciones de compilación, sistema operativo del servidor,...

106
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

Ejemplo 4.3:
A continuación se muestra un documento HTML que incorpora un script que hace
una llamada a la función phpinfo():

<HTML>
<HEAD><TITLE> Información PHP</TITLE></HEAD>
<BODY>
Opciones de configuración de PHP:
<?PHP
phpinfo();
?>
</BODY>
</HTML>

Ejemplo 4.4:
Finalmente, se incluye a continuación un nuevo sencillo ejemplo de programa en
PHP que es capaz de detectar la hora actual del servidor y mostrar esa información
con un formato preestablecido por el programador. En este caso se utiliza un nueva
función predefinida del lenguaje: la función date(), que permite generar una
cadena de caracteres con una fecha u hora dada y de acuerdo a una cadena de
formato. En el capítulo destinado a funciones predefinidas de PHP, se estudiarán
esta y otras funciones de tratamiento de fechas y horas.

<HTML>
<HEAD>
<TITLE> Cuarto ejemplo </TITLE>
</HEAD>
<BODY>
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Bienvenido a esta página, la fecha y hora actual es:<BR>


<B>
<?PHP
print(date("d \de M \de Y, H:i:s"));
?>
</B>
</BODY>
</HTML>

La página que el usuario podría visualizar con su navegador tendría un contenido


como el siguiente:

Bienvenido a esta página, la fecha y hora actual es:


27 de Nov de 2004, 22:43:59

107
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

4.4. FORMAS DE INCRUSTAR EL CÓDIGO PHP


EN LOS DOCUMENTOS HTML
Como ha quedado de manifiesto en el primer ejemplo visto en la sección anterior,
el código de los programas PHP se incrusta directamente entre el código HTML.
Cuando el documento es pasado al intérprete de PHP, este debe saber diferenciar lo
que realmente es código PHP de lo que son etiquetas de HTML. La forma de
conseguirlo es utilizar etiquetas o comandos especiales que señalen el inicio y fin
de cada script PHP; todo lo que quede fuera de esas etiquetas será ignorado por el
intérprete de PHP.

Existen cuatro formas diferentes de diferenciar el código PHP, dos de ellas están
siempre disponibles y las dos restantes dependen de la configuración particular del
servidor.

Las dos formas siempre disponibles de delimitar el código PHP son:

<?PHP
.........................
.........................
.........................
?>

<SCRIPT LANGUAGE="php">
.........................
.........................
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

.........................
</SCRIPT>

De estas dos formas, la primera es la sintaxis específica del lenguaje PHP, mientras
que la segunda es la sintaxis general que se utiliza para insertar scripts
programados en diferentes lenguajes.

Las otras dos formas de incrustar el código PHP son:

<?
.........................
.........................
.........................
?>
o

108
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

<%
.........................
.........................
.........................
%>

La primera de estas sintaxis es la que se denomina de "etiquetas de formato corto"


y requiere que el servidor tenga configurado su fichero php.ini para aceptarlas.
Finalmente, la última sintaxis es la que resulta compatible con ASP, pero tampoco
es aceptada por todos los servidores.

De las cuatro formas de incrustar el código PHP, la más recomendable es la


primera (<?PHP .... ?>), por varias razones: por ser la específica de PHP, por
estar disponible en cualquier servidor, y por ser además la única que permite
incrustar código PHP también en XML y en XHTML. A lo largo de este libro se
utilizará siempre esta sintaxis para insertar los scripts PHP.

Una de las características destacadas de PHP es que los scripts pueden ser
divididos en bloques, y añadir entre los bloques código HTML puro. Esto resulta
especialmente útil cuando dentro de un programa se necesita escribir un texto que
requeriría en otro caso el uso de una serie de funciones echo.

Ejemplo 4.5:
Dado el script siguiente:

<?php
if ($x<0) {
echo "<B> Valor negativo </B>";
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

echo "<BR> Vuelva a intentarlo";


} else {
echo "<B> Valor positivo </B>";
echo "<BR> Correcto";
}
?>

se podría conseguir el mismo resultado fraccionándolo en bloques y colocando


código HTML entre ellos:

<?php
if ($x<0) {
?>
<B> Valor negativo </B>
<BR> Vuelva a intentarlo
<?php

109
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

} else {
?>
<B> Valor positivo </B>
<BR> Correcto
<?php
}
?>

Ejemplo 4.6:
El ejemplo anterior no tiene mucho interés, pero siguiendo ese mismo esquema se
podría definir, por ejemplo, una página que mostrara diferentes contenidos
dependiendo del navegador que esté usando el cliente.

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
?>
................................
................................
código HTML si el navegador del
cliente es Internet Explorer
................................
................................
<?php
} else {
?>
................................
................................
código HTML para otros navegadores
................................
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

................................
<?php
}
?>

En este ejemplo se utiliza por un lado la variable global de PHP $_SERVER para
saber el navegador que ha utilizado el cliente para hacer la petición, y la función
strstr() para tratar de localizar la cadena de caracteres "MSIE" en la
identificación del navegador.

Como puede verse en estos ejemplos, la flexibilidad y fluidez lógica del script
permanece intacta a pesar de su ruptura en varios bloques.

110
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

4.5. ESCRITURA DEL CÓDIGO FUENTE PHP

4.5.1. ASPECTOS SOBRE LA SINTAXIS DEL


LENGUAJE
La sintaxis del lenguaje PHP es muy similar a la de otros lenguajes conocidos
como C o Perl, algunos aspectos iniciales sobre la sintaxis que deben ser
considerados a la hora de abordar la escritura del código fuente de los programas
son:

— El uso de mayúsculas y minúsculas es indiferente. A diferencia de otros


lenguajes similares, PHP permite que las diferentes sentencias estén escritas
con cualquier combinación de letras mayúsculas o minúsculas. Por ejemplo, en
las estructuras condicionales sería totalmente equivalente utilizar la palabra
reservada if o IF. Una excepción importante a esta regla se produce en los
nombres de las variables; como se verá más adelante, no es lo mismo nombrar
una variable con letras mayúsculas que hacerlo con minúsculas.

— Se pueden colocar todos los espacios en blanco y cambios de línea que se


deseen con objeto de hacer más legible el código fuente. Esos espacios
adicionales no tienen efecto alguno en la ejecución del programa, el intérprete
de PHP los ignora.

— Las diferentes instrucciones deben terminar con ";". Sin embargo PHP admite
cierta flexibilidad a este respecto, ya que el terminador punto y coma no sería
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

necesario en la última sentencia del script antes de terminador ?>, ni en los


casos en los que al final de la instrucción se cierre un bloque de código con una
llave, por ejemplo en las estructuras condicionales o bucles.

— Las instrucciones se pueden partir en tantas líneas como se desee a efectos, de


nuevo, de mejorar la legibilidad. Esta división de las instrucciones no afecta a
su ejecución.

— En una misma línea se pueden colocar, si así se desea, varias instrucciones


diferentes separadas por ";". Esto puede ser útil en el caso, por ejemplo, de
tener que hacer varias sentencias de asignación diferentes.

111
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

4.5.2. INSERCIÓN DE COMENTARIOS EN EL CÓDIGO


La inserción de comentarios dentro del código fuente no tiene ningún efecto sobre
la ejecución de los programas pero ayuda a hacerlos más legibles. Sobre todo en
proyectos de gran envergadura, la documentación de los programas mediante
comentarios es esencial para facilitar su mantenimiento, y muy especialmente
cuando son varios los programadores que trabajan en un mismo proyecto. Debe
destacarse igualmente que PHP crece gracias al esfuerzo de todos los
programadores que distribuyen libremente sus desarrollos, por lo que el código
distribuido debe estar especialmente bien documentado.

En PHP hay varias formas de incluir comentarios en el código. En primer lugar


están los que usan el estilo de C o C++:

// Comentario estilo C. Hasta fin de línea.

/* Comentario estilo C.
Puede extenderse durante varias líneas.
*/

Cuando PHP se encuentra la pareja de caracteres // considera como comentario


todo lo que le sigue hasta alcanzar el fin de línea o el fin del script, lo que antes
ocurra. Con este estilo, si se quiere que el comentario abarque varias líneas, cada
una de ellas debería ser precedida del correspondiente inicio de comentario //.
Para evitar la innecesaria repetición, se puede utilizar el segundo estilo de
comentarios. Con él, el comentario puede extenderse por varias líneas hasta
encontrar la señal de fin */. Con este segundo estilo hay que prestar especial
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

atención para evitar anidamientos de comentarios.

El tercer estilo de comentarios es propio del lenguaje Perl, y consiste en utilizar el


signo #, considerándose en este caso como comentario todo lo que le sigue hasta el
fin de línea:

# Comentario estilo Perl. Hasta fin de línea.

112
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

4.6. ELEMENTOS BÁSICOS DEL LENGUAJE

4.6.1. TIPOS DE DATOS


Como todo lenguaje de programación, PHP puede trabajar con una serie de tipos de
datos básicos. En concreto los tipos de datos admitidos son:

— Números enteros: los enteros pueden ser dados tanto en base decimal como en
base octal o hexadecimal (un 0 inicial indica que el valor está representado en
octal, un 0x indica que es hexadecimal).
o Ejemplos de números en base 10: 45 -142 783
o Ejemplo de número en octal: 0123 (equivale a 83)
o Ejemplos de números en hexadecimal: 0x12 (equivale a 18)
0x21B (equivale a 539)

— Números en coma flotante: los números en coma flotante se pueden dar en dos
formatos: como parte entera y parte decimal, usando el punto como separador,
o en notación científica:
o Ejemplos: 14.67 -76.0023 1.4e3 -78.5e-4

— Cadenas de caracteres: las cadenas de caracteres pueden ser dadas en dos


formatos: usando comillas dobles o usando comillas simples. El uso de una u
otra forma de delimitación afecta a la forma en la que se tratan las posibles
variables que pueda haber dentro de la propia cadena. Más adelante se
analizará este aspecto.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

o Ejemplos: "Casablanca"'Cantando bajo la lluvia'

— Arrays o matrices: los arrays constituyen colecciones de datos que se


referencian bajo un nombre común. Como se verá en el capítulo dedicado a
estas estructuras de datos, PHP admite la posibilidad de construir dos tipos de
arrays: arrays asociativos e indexados.

— Objetos: finalmente PHP admite también la posibilidad de crear objetos y


realizar acciones con ellos. Mediante el uso de objetos se pueden entender
como una misma entidad los datos y las acciones que se realizan con ellos. Esta
es la base de la programación orientada a objetos. Al igual que ocurre con los
arrays, los objetos serán tratados con detalle en un capítulo posterior.

113
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

4.6.2. VARIABLES
Una vez analizados los tipos de datos básicos soportados por PHP, lo siguiente que
se necesita es disponer de "contenedores" que permitan guardar los datos y realizar
operaciones con ellos. Estos contenedores son las variables. Algunas de la
peculiaridades de las variables en PHP son:

— No es necesario declarar explícitamente las variables, sino que basta con


utilizarlas cuando se necesite.
— En principio las variables no tienen un tipo predefinido, puede asignarse
cualquier tipo de valor.
— La asignación de valores a las variables se realiza utilizando el signo "=".
— Los nombres de las variables en PHP siempre comienzan por el signo "$".
— Se pueden utilizar nombres de variables de cualquier longitud, formados por
letras, dígitos y signos de subrayado, pero nunca comenzando por un dígito.
Entre las letras que pueden utilizarse se encuentran los caracteres cuyo código
ASCII se encuentren entre 127 y 255, por lo que se pueden utilizar letras
acentuadas o "ñ" en los nombres de las variables.
— En los nombres de las variables SÍ se distingue el uso de mayúsculas y
minúsculas, de manera que $titulo y $TITULO serían variables diferentes.
— Una misma variable se puede reutilizar asignándole a lo largo del tiempo datos
incluso de distinto tipo.

Serían ejemplos de nombres de variable válidos:


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

$titulo $fecha_nacimiento $año $precio2

En cambio no serían válidos los siguientes:

$dir-pelicula $4fila genero $dto%

Ejemplo 4.7:
A continuación se incluye un sencillo script que utiliza dos variables para generar
un mensaje:

<?php
$titulo = "Buscando a Nemo";
$sala = 2;

114
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

echo "En la Sala $sala se proyectará la película $titulo";


?>

En este caso, a la primera variable se le asigna una cadena de caracteres y a la


segunda un número entero. Las dos variables se utilizan dentro de la cadena a
imprimir; cuando dicha cadena está delimitada por comillas dobles como en este
caso, las variables que se encuentran en su interior serán sustituidas por sus
valores.

Además de las variables propias que el programador pueda utilizar, en PHP existen
un gran número de variables predefinidas a las que se tendrá acceso dentro de los
scripts.

Ejemplo 4.8:
Como se ha comentado, es posible reasignar valores a una misma variable aún
cuando sean de distinto tipo:

<?php
$x = "Importe: ";
echo $x;
$x = 5;
echo $x . " (precio normal) ";
$x = $x * 0.85;
echo $x . " (precio reducido) ";
?>

El resultado del programa sería:


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Importe: 5 (precio normal) 4.25 (precio reducido)

Como puede observarse, en este programa se ha utilizado una única variable $x a


la que inicialmente se le asignó una cadena de caracteres, después se le asignó un
número entero y, finalmente, el resultado de una expresión que devuelve un
número en coma flotante.

En este caso se ha utilizado el operador punto para realizar concatenaciones entre


cadenas de caracteres y variables. Esto es una alternativa a la inclusión de las
variables directamente dentro de las cadenas.

En el momento en el que se usa por primera vez una variable y se le asigna un


valor, automáticamente PHP asigna un tipo a dicha variable. Si el valor asignado
cambia de tipo, implícitamente se produce una conversión de tipos en la variable.

115
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Además de esta conversión implícita, el programador puede forzar a la conversión


explícita usando la función settype() o la operación de conversión o cast.

Ejemplo 4.9:
En la siguiente secuencia de instrucciones se producen tres conversiones de tipo
implícitas y una explícita.

$a = "10 euros";
$b = 2.25;
$c = $a - $b; // conversión implícita a tipo float
$d = (integer)$c; // conversión explícita a tipo integer
$e = $d / 2; // conversión implícita a tipo float
echo $e; // conversión implícita a tipo cadena
// finalmente, se escribe el valor 3.5

La primera conversión se produce al realizar una operación numérica como es la


diferencia sobre dos variables de tipos diferentes, la primera una cadena de
caracteres y la segunda un número en coma flotante (float). En esta conversión
la cadena será convertida a su valor numérico equivalente, siendo en este caso 10.
Por tanto el valor de la variable $c sería 7.75. Este valor luego es convertido a
entero, para lo cual se produce un truncamiento de la parte decimal, por tanto, la
variable $d pasa a ser una variable entera con valor 7. Al hacer la división se
produce de nuevo una conversión implícita del resultado a tipo float. Finalmente al
utilizar una variable numérica en una operación de escritura, esta debe ser
convertida a cadena de caracteres.

La conversión de tipo explícita se puede realizar mediante el operador de cast:


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

(tipo) expresión

o mediante la función settype():

$tlf = (string) 942323305;


$x = (integer) 5.97;
$y = 12.5;
settype($y,"integer");
settype($y,"float");

Otro de los aspectos importantes a tener en cuenta a la hora de trabajar con


variables es el denominado ámbito de las variables. El ámbito determina desde qué
lugares esa variable es visible y, por tanto, puede ser utilizada.

116
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

Las variables por defecto tienen un ámbito global que abarcaría el documento
completo en el que son definidas, a no ser que sean definidas dentro de una
función, en cuyo caso solo pueden ser utilizadas dentro de la propia función
(ámbito local).

Esto significa que una variable definida en un script del documento fuera de
cualquier función, puede ser utilizada en cualquier otro lugar de ese script o incluso
en otros posibles scripts que se encuentren en el mismo documento.

Ejemplo 4.10:

<?PHP
...........
$fila = 12;
$num = 6;
...........
?> En este caso el documento incluye dos
scripts, en el primero se definen dos
...........
variables que, al ser globales, pueden ser
<?PHP utilizadas posteriormente en un segundo
........... script.
$asiento =
"F$fila.$num";
...........
?>

Una variable global puede ser utilizada dentro de cualquier función, pero para
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

hacer referencia a ella debe declararse dentro de la función con la palabra global
delante de su nombre.

Ejemplo 4.11:
$precio = 4.5;

function calcular_importe($num_entradas) {
global $precio;
$i = $precio * $num_entradas;
return $i;
}

117
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

En este caso la variable $precio está definida fuera de la función y es utilizada


dentro de la función calcular_importe(). Por otro lado, la variable $i está
definida dentro de la función y no puede ser utilizada fuera de ella.

Más adelante, cuando se explique con detalle la forma de construir funciones, se


volverá a analizar la diferencia entre las variables locales y globales.

Otra peculiaridad del lenguaje PHP en relación al trabajo con variables es la


posibilidad de tener nombres de variables que sean a su vez variables, es decir, que
los nombres puedan establecerse y usarse dinámicamente. Estas variables se
identifican por ir precedidas de dos signos dólar.

Ejemplo 4.12:

$nombrevariable = 'x';
......................
......................
$$nombrevariable = 150; // asignación equivalente a
$x=150

Dado que en PHP las variables no tienen un tipo declarado explícitamente y que
este puede cambiar a lo largo de la ejecución de los programas, se necesita
disponer de alguna forma de saber el tipo de dato que guarda la variable en cada
instante. Para ello PHP incorpora una serie de funciones:

gettype(): devuelve el tipo de la variable.


is_array(): determina si la variable contiene un array.
is_float(): determina si la variable contiene un número en coma flotante.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

is_int(): determina si la variable contiene un número entero.


is_object(): determina si la variable hace referencia a un objeto.
is_string(): determina si la variable contiene una cadena de caracteres.

Otra función especialmente interesante es la función isset() que permite


averiguar si una variable ha sido definida. Esta función es especialmente útil
cuando se quiere comprobar si se han recibido los valores correspondientes a todos
los campos de un formulario.

Por otro lado, la función unset() permite eliminar una variable, no solo borra el
contenido de la variable sino que también libera el espacio de memoria reservado
para ella. Cualquier intento posterior de acceso a esa variable generaría un error.

118
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

En ocasiones puede interesar también saber si una variable existe pero tiene un
valor nulo o vacío, la función que permite efectuar esta comprobación es
empty().

4.6.3. CONSTANTES
Una constante es un valor que permanece inalterable a lo largo de la ejecución del
script y a la que se le asigna un identificador. Solo pueden definirse constantes con
valores escalares (números o cadenas de caracteres). Por ejemplo, no podría
definirse una constante cuyo valor fuese un array.

La definición de las constantes se realiza con la función define(), y una vez


definidas su valor no puede cambiarse. En cuanto a los identificadores de las
constantes, estos siguen las mismas reglas que los identificadores de las variables
salvo que no comienzan con el signo $. Aunque no es una regla de obligado
cumplimiento, por convenio se suelen utilizar identificadores con letras mayúsculas
para las constantes.

Otra diferencia con las variables está en la ausencia de cualquier restricción de


ámbito en las constantes. Una constante definida en un documento será accesible
desde cualquier punto de cualquier script que esté en el mismo documento.

Ejemplo 4.13:
A continuación se muestra un sencillo ejemplo de definición y uso de constantes:

define("NOMBRE_EMPRESA", "Cinem@s");
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

define("EDAD_JUBILACION", 65);
define("TIPO_IVA", 0.16);

echo NOMBRE_EMPRESA;

if($edad > EDAD_JUBILACIÓN) {


$base = 3;
} else {
$base = 4.5;
}
$importe = $base*(1 + TIPO_IVA);
echo $total;

El uso de constantes puede resultar especialmente adecuado para definir


determinados parámetros del programa que no se espera que cambien.

119
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

El propio PHP incorpora un amplio conjunto de constantes predefinidas; entre ellas


por ejemplo se encuentran TRUE y FALSE que hacen referencia a los valores
booleanos verdadero y falso, respectivamente.

4.6.4. CADENAS DE CARACTERES Y VARIABLES


Como ya se comentó, las cadenas de caracteres constituyen uno de los tipos de
datos básicos del lenguaje PHP. En su definición se pueden utilizar como
delimitadores tanto las comillas simples como las dobles, lo que no es posible es
combinar ambos tipos de delimitadores, por ejemplo abriendo la cadena con
comillas dobles y cerrándola con comillas simples.

Serían cadenas válidas:

"Bailando con lobos" 'El último samurai'

en cambio, no serían válidas:

"Monstruos S.A. "Mulán' "El "último" emperador"

la primera de ellas, por no haber sido cerrada, la segunda, por utilizar diferentes
delimitadores a cada lado, y la tercera, por el hecho de aparecer como un carácter
de la propia cadena las comillas.

En relación a este último error, debe señalarse que, al igual que ocurre en el
lenguaje C, la inclusión de determinados caracteres en las cadenas exige la
utilización de las denominadas secuencias de escape. Entre estos caracteres
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

especiales están las comillas, el signo dólar, la barra invertida y los caracteres de
tabulación y retorno de carro. La Tabla 4.1 muestra algunas de estas secuencias de
escape.

Secuencia de escape Significado


\n Nueva línea
\r Retorno de carro
\t Tabulador
\\ Barra invertida
\' Comillas simples
\" Comillas dobles
\xNum Carácter cuyo código ASCII en hexadecimal es Num
\Num Carácter cuyo código ASCII en octal es Num
Tabla 4.1 Secuencias de escape

120
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

Ejemplo 4.14:
La instrucción PHP:

echo "Página creada por:\n \"CINEM@S\" \t \xA9 2004";

generaría en la página web el mensaje:

Página creada por: "CINEM@S" © 2004

En la cadena anterior se utilizan dos secuencias de escape que no tienen reflejo en la


página que sería visualizada por el navegador del cliente, pero sí en el código fuente
HTML: el carácter de nueva línea y el tabulador se incluirían en el código fuente
HTML, pero, como todos los espacios extra, serían ignorados por el navegador.

Las otras secuencias de escape que han sido utilizadas en el ejemplo son las que
permiten incluir comillas en la propia cadena y que generan el signo copyright
(correspondiente al carácter de código ASCII 169 o A9 en hexadecimal).
La diferencia entre el uso de comillas dobles o simples como delimitadores de las
cadenas de caracteres está en la forma en la que se tratan los posibles
identificadores de variables que aparezcan dentro de la cadena:

— Con las comillas dobles, las variables dentro de la cadena se expanden, es


decir, se sustituyen por su valor.
— Con las comillas simples las variables no se expanden y por tanto en la propia
cadena aparecerán sus identificadores como cualquier otro carácter de la
misma. Además de eso, en este caso las únicas secuencias de escape
reconocidas son \\ y \'.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Ejemplo 4.15:
Si se tienen definidas las siguientes variables:

$titulo = "Todo sobre mi madre";


$director = "Pedro Almodóvar";
$año = 1999;

la sentencia:

print "Sesión especial: \"$titulo\" de $director ($año)";

escribiría el siguiente mensaje:

Sesión especial: "Todo sobre mi madre" de Pedro Almodóvar (1999)

121
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Obsérvese cómo al utilizar las comillas dobles, los nombres de variables que
aparecen dentro de la cadena son sustituidos por sus valores. Esta característica de
PHP es especialmente útil y evita tener que recurrir a engorrosas operaciones de
concatenación de cadenas con variables, tal como ocurre en otros lenguajes.

En cambio, la sentencia:

print 'Sesión especial: \"$titulo\" de $director ($año)';

escribiría el siguiente mensaje:

Sesión especial: \"$titulo\" de $director ($año)

En este caso se observa cómo las secuencias de escape no son reconocidas y se


escriben los nombres de las variables dentro de la cadena y no sus valores.

Existe otra forma de expandir variables dentro de cadenas que PHP hereda del
lenguaje Perl y que fue incorporada en la versión PHP 4. Se trata de la sintaxis de
documento incrustado: se basa en señalar el inicio de la cadena con la secuencia
<<< seguida de un identificador y cerrar la cadena con el identificador elegido.
Entre el inicio y el fin, la cadena puede ocupar incluso varias líneas y en ella todas
las variables que aparezcan se expandirán.

Ejemplo 4.16:
El siguiente código

$titulo = "La gran evasión";


$nacionalidad = "norteamericana";
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

$director = "John Sturges";


$año = 1963;
$actores = " Charles Bronson, David McCallum,
Donald Pleasence, Gordon Jackson,
James Coburn, James Donald, James Garner,
Richard Attenborough, Steve McQueen";
$dia = "12/5/2004";
$hora = "18:30";
$nsala = 2;
$c = <<<FICHA
<B>$titulo</B>: película de nacionalidad $nacionalidad
dirigida por $director en el año $año y protagonizada
por $actores.
<BR>
La película será proyectada el <U>día $dia a las $hora</U>
en la Sala $nsala.

122
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

FICHA;
echo $c;

genera un mensaje como el que sigue:

La gran evasión: película de nacionalidad norteamericana dirigida por John


Sturges en el año 1963 y protagonizada por Charles Bronson, David McCallum,
Donald Pleasence, Gordon Jackson, James Coburn, James Donald, James
Garner, Richard Attenborough, Steve McQueen.
La película será proyectada el día 12/5/2004 a las 18:30 en la Sala 2.

Las cadenas de caracteres son un caso especial de un tipo de datos que se verá más
adelante: los arrays. Por tanto, como en todo array, se puede acceder a cualquiera
de los caracteres que componen la cadena sin más que utilizar un índice numérico.
Los índices deben ser siempre dados entre corchetes y además debe tenerse en
cuenta que el primer carácter de la cadena es el correspondiente al índice 0.

Por ejemplo, dada la cadena: $genero="Comedia", se podría acceder a su


primer carácter usando la sintaxis $genero[0], al segundo mediante
$genero[1], y así sucesivamente.

Al hablar de las conversiones de tipo en las variables, se comentó cómo en


determinadas ocasiones PHP realiza conversiones implícitas. Por ejemplo, cuando
una cadena de caracteres interviene en una expresión aritmética, esta es convertida
a su valor numérico. Para la determinación de ese valor numérico debe tenerse en
cuenta que PHP intenta convertir la cadena en número hasta que se encuentra un
carácter que no tiene sentido numérico, a continuación pueden verse ejemplos de
tales conversiones:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

$x = 12 + "23"; // $x tendrá el valor 35


$x = 1 + "0.5"; // $x tendrá el valor 1.5
$x = 4000 + "-1.5e+3"; // $x tendrá el valor 2500
$x = 4 + "5 dias"; // $x tendrá el valor 9
$x = "2 horas" + "10 min"; // $x tendrá el valor 12
$x = 2.5 – "1.2Kg"; // $x tendrá el valor 1.3
$x = 4 + "Tarde"; // $x tendrá el valor 4
$x = 2 * "5 Eur"; // $x tendrá el valor 10
$x = 2 * "Eur 5"; // $x tendrá el valor 0

Por supuesto, PHP dispone de un gran número de funciones predefinidas para


realizar operaciones habituales con cadenas de caracteres: localización de
caracteres, conversiones entre mayúsculas y minúsculas, determinación de la
longitud de las cadenas,... Estas funciones serán presentadas con detalle en el
capítulo destinado a análisis de funciones predefinidas (Capítulo 9).

123
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

4.6.5. OPERADORES

Una vez analizados los tipos de datos básicos del lenguaje y la definición de las
variables y constantes, el siguiente aspecto a revisar lo constituyen el conjunto de
operadores que se pueden utilizar para generar expresiones complejas.

Los operadores se podrían clasificar en diferentes categorías:

— Operadores aritméticos.
— Operadores de asignación.
— Operadores de bit.
— Operadores de comparación.
— Operadores lógicos.
— Otros operadores (concatenación, supresión de error, ejecución,...).

Operadores aritméticos
Los operadores aritméticos básicos son los habituales de cualquier lenguaje de
programación:
$x + $y Suma de dos números
$x - $y Diferencia de dos números
$x * $y Producto de dos números
$x / $y División de dos números
$x % $y Resto de la división entera
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Tabla 4.2 Operadores aritméticos

Además de los operadores anteriores se dispone de los operadores de incremento y


decremento que existen también en lenguajes como C o C++.

++$x Incrementa una unidad el valor de $x


$x++ Incrementa una unidad el valor de $x,
pero después de evaluar el resto de la
expresión
--$x Decrementa una unidad el valor de $x
$x-- Decrementa una unidad el valor de $x,
pero después de evaluar el resto de la
expresión
Tabla 4.3 Operadores de incremento y decremento

124
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

En su uso más sencillo, los operadores de incremento están pensados para actuar de
contadores; así por ejemplo, las sentencias siguientes serían totalmente
equivalentes:

$x++; ++$x; $x = $x + 1;

Sin embargo, el uso de estos operadores es especialmente útil cuando se incluyen


formando parte de expresiones u otras sentencias más complejas, permitiendo
optimizar el código fuente. Además en este caso el uso de los operadores delante o
detrás de las variables determina el valor final de la expresión.

Ejemplo 4.17:
Para entender la diferencia entre la utilización de los operadores de incremento o
decremento antes o después de la variable, conviene analizar algunos sencillos
ejemplos:

En este caso la variable $n tomará el valor 5 mientras


$n = 5; que $m tendrá el valor 6, ya que el operador de
$m = ++$n; incremento delante de $n hace que el incremento se
realice antes de efectuar la asignación a $m..

Los valores finales de las variables serán 4, 8 y 3 para


$z = 4; $z, $v y $w, respectivamente. En este caso, en la
$v = 2*$z--; segunda sentencia se utiliza el operador de decremento
$w = $z; después de la variable, por lo que el decremento se
produce después de realizar la asignación.

$a = 10; Tras ejecutar estas tres sentencias la variable $a


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

$b = 2*--$a; tendría el valor 10, la variable $b valdría 17 y $c


$c = ++$a-$b--; valdría –8.

Operadores de asignación
En diversos ejemplos previos ya se ha utilizado el operador de asignación para dar
valores a variables, este operador se representa mediante el signo "=". Su sentido es
el evidente: la variable de la izquierda del operador tomará el valor resultado de la
expresión que se encuentre a la derecha.

$variable = valor ó expresión

125
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Cuando en PHP se realiza una asignación, la sentencia devuelve como valor el


propio valor asignado; esto permite por ejemplo utilizar asignaciones dentro de
otras sentencias de asignación:

$z = ($x = 4) + ($y = 5);

En la sentencia anterior se realizan 3 asignaciones diferentes, por un lado se asigna


el valor 4 a la variable $x y el valor 5 a $y, pero además, teniendo en cuenta que
estas asignaciones devuelven el propio valor asignado, se aprovecha a asignar a $z
el valor resultante de la suma de 4 y 5.

Esta misma particularidad del lenguaje PHP hace que sea posible encadenar varias
asignaciones en una misma sentencia, por ejemplo, las tres asignaciones siguientes:

$a = 1;
$b = 1;
$c = 1;

podrían condensarse en una sola sentencia de la siguiente manera:

$a = $b = $c = 1;

Además del operador básico de asignación (=), PHP permite la utilización de la


asignación combinada con otro tipo de operadores. La sintaxis de esta asignación
combinada es:

$v op= valor; que equivale a $v = $v op valor;


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

A continuación pueden verse algunos ejemplos de utilización de estas asignaciones


junto con su asignación equivalente:

Asignación combinada Asignación equivalente


$x += 5; $x = $x + 5;
$y *= 2; $y = $y * 2;
$z %= 3; $z = $z % 3;
$c .= "fin"; $c = $c . "fin";
Tabla 4.4 Ejemplos de asignaciones combinadas

126
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

Operadores de bit
Los operadores de bit trabajan directamente sobre la representación binaria de los
números enteros, realizando operaciones sobre los diferentes bits de los operandos.
La Tabla 4.5 detalla cuáles son estos operadores y su funcionamiento.

$x & $y Se ponen en 1 los bits que en $x y en $y están


en 1 (Y)
$x | $y Se ponen en 1 los bits que en $x o en $y están
en 1 (O)
$x ^ $y Se ponen en 1 los bits que en $x o en $y están
en 1 pero no en ambos (O exclusivo)
~$x En la representación binaria de $x cambia los
1 por 0 y viceversa (negación)
$x << $n Los bits de $x se desplazan $n posiciones a la
izquierda
$x >> $n Los bits de $x se desplazan $n posiciones a la
derecha
Tabla 4.5 Operadores de bit

Para comprender mejor el funcionamiento de estos operadores se presenta a


continuación un sencillo ejemplo.

Ejemplo 4.18:
Supóngase que se tienen dos variables $x e $y con valores de 214 y 178
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

respectivamente. Asumiendo una representación binaria con 8 bits, estos dos


valores estarían codificados con las siguientes cadenas de dígitos binarios:

$x = 214 1 1 0 1 0 1 1 0
$y = 178 1 0 1 1 0 0 1 0

Con estos datos, los resultados de algunas de las operaciones de bit anteriores
serían:

$x & $y 1 0 0 1 0 0 1 0 Resultado: 146


$x | $y 1 1 1 1 0 1 1 0 Resultado: 246
$x ^ $y 0 1 1 0 0 1 0 0 Resultado: 100
$x >> 2 0 0 1 1 0 1 0 1 Resultado: 53

127
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Operadores de comparación
En cualquier lenguaje de programación una de las estructuras más comunes son las
condicionales. En ellas se ejecutan una serie de sentencias en función del valor de
una expresión de tipo lógico (verdadero/falso) que con frecuencia proviene de la
realización de una comparación de valores. Los operadores de comparación son los
que realizan estas comparaciones, devolviendo un valor verdadero si la
comparación es positiva o falso en otro caso.

$x == $y Compara si $x e $y tienen el mismo valor


(operador de igualdad)
$x === $y Compara si $x e $y son iguales y además son
del mimo tipo (operador de identidad)
$x != $y Comprueba si $x e $y tienen distinto valor
(negación de igualdad)
$x !== $y Comprueba si $x e $y tienen distinto valor y/o
tipo (negación de identidad)
$x < $y Comprueba si el valor de $x es menor que el
valor de $y
$x > $y Comprueba si el valor de $x es mayor que el
valor de $y
$x <= $y Comprueba si el valor de $x es menor o igual
que el valor de $y
$x >= $y Comprueba si el valor de $x es mayor o igual
que el valor de $y

Tabla 4.6 Operadores de comparación

Quizás convenga realizar algunas observaciones relativas a los operadores de


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

igualdad y de identidad. En primer lugar, no debe confundirse el operador de


igualdad (==) con el operador de asignación (=). Suele ser bastante frecuente en
programadores principiantes dicha confusión, lo que puede conducir a situaciones
aparentemente tan extrañas como lo que ocurre en el siguiente programa.

Ejemplo 4.19:

$x = 10;
$y = 35;
if ($x = $y)
echo "Los dos valores son iguales";
else
echo "Los dos valores son diferentes";

128
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

Sorprendentemente, este programa escribiría el mensaje "Los dos valores son


iguales". En ese programa se ha utilizado la estructura condicional if...else,
que será analizada con calma en el próximo capítulo, para escribir un mensaje u
otro en función del resultado de la expresión $x = $y.

Pero, ¿qué es lo que ha pasado para que el programa indique que las dos variables
tienen el mismo valor cuando claramente eso no es cierto? El problema se ha
debido a que se ha utilizado el operador de asignación en lugar del operador de
igualdad. La asignación $x = $y asigna a la variable $x el valor de la variable
$y y devuelve como valor el valor asignado, en este caso 35. En PHP cualquier
expresión que de como resultado un valor numérico diferente de cero o una cadena
de caracteres no vacía es considerada, a efectos de su participación en expresiones
lógicas, como valor "verdadero". Esta es la razón por la que el programa anterior
escribe el mensaje "Los dos valores son iguales". Para que el programa realmente
escriba ese mensaje cuando los dos valores de las variables sean iguales, se debería
haber utilizado el operador de comparación en lugar del de asignación:

if ($x == $y)
echo "Los dos valores son iguales";
else
echo "Los dos valores son diferentes";

El operador de igualdad es un operador del que disponen todos los lenguajes de


programación; en cambio, el operador de identidad no es un operador muy
frecuente en otros lenguajes, de hecho, en el propio PHP no existía hasta su
aparición en el PHP 4. Se trata de un operador que compara la igualdad de los
valores pero también de los tipos de las respectivas variables. La mejor forma de
entender la diferencia entre el operador de igualdad y el de identidad es a través de
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

un sencillo ejemplo, las dos variables siguientes

$a = 120;
$b = "120";

tienen tipos diferentes, una corresponde a una variable numérica y la otra a una
cadena de caracteres. Sin embargo, tras la correspondiente conversión, se puede
entender que las dos variables tienen el valor numérico 120. Teniendo en cuenta
esto, la comparación $a == $b produciría un valor "verdadero", mientras que la
comparación $a === $b produciría un valor "falso".

129
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Operadores lógicos
Los operadores lógicos de PHP son los clásicos de cualquier lenguaje de
programación, permiten generar expresiones lógicas complejas conjugando
diferentes subexpresiones.

$x and $y Devuelve un valor cierto cuando tanto $x


$x && $y como $y tienen el valor cierto (operación Y)
$x or $y Devuelve un valor cierto cuando $x o $y
$x || $y tienen el valor cierto (operación O)
$x xor $y Devuelve un valor cierto cuando $x o $y
tienen un valor cierto pero no ambos a la vez
(operación O exclusivo)
!$x Devuelve un valor cierto cuando $x tiene un
valor falso (operación de negación)
Tabla 4.7 Operadores lógicos

Como puede observarse, para los operadores Y y O existen dos sintaxis válidas, el
funcionamiento de las dos es el mismo, la única diferencia estriba en tener
diferentes prioridades a la hora de ser evaluados en expresiones. Tras finalizar este
repaso a los operadores de PHP, la Tabla 4.8 mostrará las diferentes prioridades de
estos.

Otros operadores
Operador condicional:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

A continuación se presentan algunos otros operadores que no pertenecen a las


categorías anteriores. En primer lugar destaca la existencia de un operador ternario
(que opera sobre tres argumentos): se trata del operador condicional, cuya sintaxis
es la siguiente:

(condicion) ? (expresion1) : (expresion2)

El funcionamiento es el siguiente: se evalúa la condición y en el caso de ser cierta


se devuelve el valor de la expresión1, si la condición es falsa se devuelve el valor
de la expresión2.

130
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

Ejemplo 4.20:
Con la siguiente sentencia se asignaría un valor 1 a una variable $par si el valor
de otra variable $n es un número par, y se asignaría el valor 0 en otro caso. Para
determinar si un número es par se utiliza el operador módulo, que calcula el resto
de la división entera (un número es par si el resto de la división entera entre 2 es 0):

$par = ($n % 2 == 0) ? 1 : 0;

Teniendo en cuenta que en PHP cualquier expresión numérica se considera como


"cierto" si tiene un valor diferente de 0, la sentencia anterior también podría
escribirse de la siguiente manera:

$par = !($n % 2) ? 1 : 0;

Operador de concatenación:

El operador de concatenación permite concatenar cadenas de caracteres. Aplicado


sobre dos cadenas, este operador devuelve como resultado una nueva cadena. La
sintaxis es:

cadena1 . cadena2

Ejemplo 4.21:
Ejemplo de uso de este operador sería:

$titulo = "El último Samurai";


$protagonista = "Tom Cruise";
$anuncio = $titulo . ", con " . $protagonista;
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

En este caso la variable $anuncio tendría finalmente como valor la cadena "El
último Samurai, con Tom Cruise".

El operador de concatenación también puede ser utilizado combinado con el


operador de asignación:

$actores = "Tom Cruise";


$actores .= ", Timothy Spall";

El resultado final de estas sentencias sería que la variable $actores contendría la


cadena "Tom Cruise, Timothy Spall".

131
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Operador de supresión de error

El signo "@" se utiliza en PHP para identificar al operador denominado de


supresión de error. Este operador hace que el intérprete de PHP no genere mensajes
de error aún cuando detecte situaciones que claramente son erróneas, como por
ejemplo errores de tipo aritmético.

Ejemplo 4.22:
La sentencia

$x = 12/0;

produce un error de tipo aritmético (división por cero) que generaría en la página
un mensaje como

Warning: Division by zero in fichero.php on line n

Estos mensajes en las páginas pueden ser eliminados bien mediante determinados
parámetros de configuración del servidor web o mediante el uso del operador de
supresión de error en la sentencia causante del mismo.

De esta manera, la sentencia

$x = @(12/0);

no genera ningún tipo de mensaje de error. Por supuesto, en este caso la variable
$x no tendría ningún valor (variable vacía).
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Operador de ejecución

El operador de ejecución (acento grave: `) se utiliza para indicar a PHP que la


expresión encerrada entre esos acentos graves debe ser tratada como una sentencia
a ejecutar directamente por el sistema operativo del servidor.

Ejemplo 4.23:
Si se quisiera generar una página web que muestre un listado con el contenido del
directorio del servidor en el que está alojada la propia página web, se podría
insertar en la página el script siguiente:

132
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

<?php
$x=`dir`;
echo "<pre> $x </pre>";
?>

La página generada, mostraría un listado con el siguiente aspecto:

El volumen de la unidad C no tiene etiqueta.


El número de serie del volumen es: 43F2-A53B

Directorio de C:\home

11/03/2004 18:23 .
11/03/2004 18:23 ..
21/11/2003 19:53 64 Comentarios.txt
21/11/2003 18:07 361 cookie.php
14/11/2003 10:23 315 index.php
21/02/2004 23:24 478 ordenar.php
21/11/2003 19:53 267 prueba.htm
11/03/2004 18:23 205 prueba.php
11/03/2004 18:23 0 ~out.htm
11/03/2004 18:23 205 ~scp.php
8 archivos 1.895 bytes
2 dirs 33.409.753.088 bytes libres

Operador de conversión de tipo (cast)

La conversión explícita del tipo de dato se realiza a través del operador cast:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

(tipo) expresión

Ejemplos de uso de este operador serían:

$x = (int)12.67;
$p = (string)4.5;

Orden de prioridad de los operadores


Cuando en una expresión se combinan varios operadores, el orden en el que estos
se aplican es determinante para el resultado final de la expresión.

133
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Ejemplo 4.24:
En la expresión:

$x = 5/2+3*4;
intervienen cuatro operadores diferentes: uno de asignación y tres aritméticos
(división, suma y producto). ¿En qué orden se aplican esos operadores? La
respuesta viene dada por la prioridad que tenga cada uno en una tabla de
prioridades que todo lenguaje de programación maneja. En concreto, los
operadores de asignación son los que menor prioridad tienen, y por tanto este sería
el último en ser aplicado; en cuanto a los operadores aritméticos, los productos y
divisiones tienen mayor prioridad que las sumas y las restas. En definitiva, la
expresión anterior sería evaluada de la manera siguiente:

1. Se realiza la división 5/2, obteniéndose 2.5


2. Se realiza el producto 3*4, obteniéndose 12
3. Se realiza la suma de los dos resultados anteriores, obteniéndose 14.5
4. Se asigna a la variable $x el valor obtenido: 14.5

Si se quiere cambiar el orden de aplicación de los diferentes operadores deben


utilizarse paréntesis para agrupar expresiones. Las expresiones entre paréntesis
serán siempre las que primero se evaluarán, y en el caso de paréntesis anidados,
siempre se comenzará por los más internos.

Como puede verse en los siguientes ejemplos, en la expresión anterior el uso de


paréntesis en diferentes lugares cambiaría radicalmente el resultado final:

$x = 5/(2+3)*4; // $x tendría el valor 4


$x = 5/(2+3*4); // $x tendría el valor 0.35714
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

$x = 5/((2+3)*4); // $x tendría el valor 0.25

El orden de prioridad de los diferentes operadores es el que viene expresado en la


Tabla 4.8, siempre considerados de mayor a menor prioridad.

134
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
INTRODUCCIÓN A PHP

Orden de prioridad de operadores (de mayor a menor)


— Paréntesis (empezando por los más internos).
— Operadores de incremento (++), decremento (--), conversión de tipo
y supresión de error.
— Productos, divisiones y módulos (evaluados de izquierda a
derecha).
— Sumas y restas.
— Concatenación de cadenas.
— Operadores de desplazamiento de bits.
— Operadores relacionales (igualdad, desigualdad e identidad).
— Operadores lógicos (& ^ | && ||)
— Operador condicional.
— Operadores de asignación.
— Operadores lógicos (and, or, xor)
Tabla 4.8 Prioridades de los operadores

Obsérvese cómo en la tabla de prioridades los operadores lógicos Y y O se


encuentran en dos niveles diferentes, dependiendo de la sintaxis utilizada (&& o
and, || o or). En principio las dos sintaxis definen el mismo operador, pero la
prioridad es diferente, eso hace que, por ejemplo, las dos expresiones siguientes
produzcan resultados muy diferentes:

$x = 2<5 and 8<7;


$y = 2<5 && 8<7;

El operador lógico Y con la sintaxis and es el que menos prioridad tiene, menos
incluso que el operador de asignación, por eso en la primera sentencia la secuencia
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

de operaciones sería:

1. Se evalúan las dos condiciones: 2<5 y 8<7, produciendo una de ellas un


valor cierto y la otra falso.
2. A continuación se procede a realizar la asignación del resultado de 2<5 a
la variable $x, por tanto, $x pasará a tener el valor "cierto", que equivale
en un contexto numérico a 1.
3. Finalmente se aplica el operador and, que devolverá un valor falso pero
que no es asignado ya a ninguna variable.

Por tanto, el valor de la variable $x será 1.

En cambio, en la segunda sentencia se utiliza el operador Y con la sintaxis &&, que


tiene más prioridad que la asignación. La secuencia en este caso es:

135
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

1. Se evalúan las dos condiciones: 2<5 y 8<7, produciendo una de ellas un


valor cierto y la otra falso.
2. Se aplica sobre los dos resultados anteriores el operador &&, produciendo
en este caso un valor falso.
3. El valor obtenido se asigna a la variable $y.

En definitiva la variable $y tendría un valor falso, que es equivalente al valor


numérico 0 o a la cadena de caracteres vacía.

Si se deseaba que las dos sentencias tuvieran el mismo efecto, se tendrían que
haber utilizado los paréntesis en la primera para alterar el orden de evaluación.

$x = (2<5 and 8<7); es equivalente a $y = 2<5 && 8<7;

El ejemplo anterior pone de manifiesto que en caso de dudas es mejor


usar paréntesis para asegurarse que el orden de evaluación de las
expresiones es el deseado.
NOTA En una expresión el uso de paréntesis innecesarios no produce ningún
tipo de error pero sí que puede ayudar a clarificar su significado. En
definitiva, es preferible que "sobren" paréntesis a que se obtengan
resultados inesperados por su no utilización.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

136
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y LOS FORMULARIOS
DE HTML

5.1. FORMULARIOS DE HTML


Los formularios de HTML constituyen el primer mecanismo de interacción entre
las páginas web y el usuario. A través de sus diferentes campos, los formularios
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

solicitan al usuario información que podrá ser procesada directamente en la misma


página, enviada al servidor para su procesamiento o enviada a una dirección de
correo electrónico especificada. Para indicar la acción a realizar con esos datos se
utiliza el parámetro ACTION de la etiqueta FORM de definición del formulario. Por
ejemplo, si se quisiera que los datos introducidos por el usuario fueran enviados
automáticamente a una dirección de correo electrónico, la definición del formulario
en HTML se haría de la siguiente manera:

<FORM ACTION="mailto:admin@mimail.com" METHOD="post">


...............................
...............................
...............................
</FORM>

137
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Cada uno de los datos que el usuario introduzca en el formulario estará asociado al
correspondiente campo del mismo, es por ello necesario disponer de un sistema de
identificación de cada uno de esos campos. La identificación se logra asignando a
cada campo un nombre mediante el parámetro NAME de la etiqueta de definición de
campo.

Ejemplo 5.1:
Supóngase que Cinem@s tiene establecidas diferentes tarifas para las localidades
en función de la edad del cliente y de su condición o no de estudiante, y que desea
que los propios clientes puedan calcular exactamente el importe de sus entradas a
través de una sencilla página web. El primer paso resulta evidente: diseñar un
formulario que permita "interrogar" al usuario. El aspecto de ese formulario podría
ser el mostrado en la Figura 5.1.

Figura 5.1 Formulario para el cálculo de precios de entradas

El código HTML que genera este formulario es:

<FORM NAME="miformulario">
Edad: <INPUT TYPE="text" NAME="edad" SIZE="3">
Estudiante:
<INPUT TYPE="radio" NAME="estudiante" VALUE=1> Si
<INPUT TYPE="radio" NAME="estudiante" VALUE=0 CHECKED> No
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

<BR>
<INPUT TYPE="submit" VALUE="Calcular">
<INPUT TYPE="reset" VALUE="Borrar">
</FORM>

Como puede apreciarse, el formulario tiene asociado un nombre


(miformulario) al igual que cada uno de sus controles:

— El control para introducir la edad es un campo de texto de nombre edad.


— Para indicar si se es o no estudiante se incluye un grupo de dos botones de
radio. Para que ambos botones estén conmutados el nombre asignado a cada
uno debe coincidir (en este caso el nombre es estudiante), distinguiéndose
por el valor de la propiedad VALUE.

138
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y LOS FORMULARIOS DE HTML

— Los dos últimos controles del formulario son el botón para enviar los datos
(submit) y el de reiniciar todos los valores de los campos (reset). A estos dos
controles no es necesario asignarles un nombre ya que no tienen como función
almacenar datos que luego se deban recuperar.

5.2. ENVÍO DE DATOS A PROGRAMAS PHP


Los datos que el usuario introduce en un formulario pueden ser enviados de una
forma sencilla a un programa PHP para su procesamiento. Precisamente esta
sencillez y facilidad de interacción con los formularios HTML es una de las
características más destacadas del lenguaje PHP.

En primer lugar es preciso indicar en el parámetro ACTION de la etiqueta FORM el


documento PHP al que deben ser enviados los datos.

Ejemplo 5.2:
Si se desea que los datos del formulario anterior sean enviados a un programa que
se encuentra en el archivo procesar.php, el formulario debería ser definido de la
siguiente manera:

<FORM NAME="miformulario" ACTION="procesar.php">


Edad: <INPUT TYPE="text" NAME="edad" SIZE="3">
Estudiante:
<INPUT TYPE="radio" NAME="estudiante" VALUE=1> Si
<INPUT TYPE="radio" NAME="estudiante" VALUE=0 CHECKED> No
<BR>
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

<INPUT TYPE="submit" VALUE="Calcular">


<INPUT TYPE="reset" VALUE="Borrar">
</FORM>

En este caso se está suponiendo que el archivo procesar.php se encuentra alojado


en el servidor en el mismo directorio que el documento HTML que define el
formulario; de no ser así se debería indicar el nombre de ese archivo junto con la
ruta absoluta o relativa para localizarlo.

Una vez indicado el archivo de destino, la pregunta siguiente sería: ¿cómo se


reciben esos datos en el programa PHP?, la respuesta a esta cuestión sorprende por
su simplicidad: el programa PHP recibirá variables con los valores que el usuario
introdujo en los campos del formulario; los nombres de esas variables
corresponderán además con los nombres de los correspondientes controles.

139
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Para poder acceder a las variables de formulario utilizando


directamente el nombre del correspondiente control, el intérprete de
PHP debe estar configurado para ello. En la próxima sección se
NOTA describirá exactamente cuál es esa configuración especial y qué otras
opciones hay para referirse a las variables del formulario.

En el caso del formulario anterior, las variables que se enviarán al documento


destino son: $edad y $estudiante. La primera de las variables contendrá la
cadena de caracteres que el usuario introduzca en el campo edad; la segunda de las
variables contendrá un valor 1 o 0 dependiendo del botón de radio que se encuentre
seleccionado. Los valores posibles para esta última variable coinciden con los
dados en el parámetro VALUE del control del formulario.

$edad
$estudiante Procesar.php

Ambas variables serán accesibles desde cualquier script que se incluya en el


archivo destino: procesar.php. A continuación puede verse cuál podría ser el
contenido de este archivo:

<html>
<head>
<title>Importe de la entrada</title>
</head>
<body>
<?php
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

if (($edad<12) or ($estudiante))
echo "El precio de la entrada es 3.5 euros";
else
echo "El precio de la entrada es 5 euros";
?>
</body>
</html>

Como puede observarse, el script PHP hace uso de las dos variables que provienen
del formulario para determinar el precio de la entrada. Si la edad del usuario es
menor que 12 o es un estudiante, la página mostrará un mensaje diciendo que el
importe es 3,5 á, en otro caso el importe será 5 á.

La variable $estudiante tendrá un valor numérico 1 si se ha elegido el primer


botón de radio y el valor 0 en el caso del segundo. Cuando los valores numéricos se

140
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y LOS FORMULARIOS DE HTML

utilizan en expresiones lógicas, un valor diferente de cero se considera equiparable


al valor lógico verdadero.

5.3. MÉTODOS DE ACCESO A LAS VARIABLES


DEL FORMULARIO
Cómo ha podido apreciarse, el paso de datos desde los formularios HTML a los
programas PHP es sorprendentemente simple y sencillo, no hay más que hacer uso
de las denominadas variables de formulario. A esas variables se puede hacer
referencia de varias maneras, la más simple es la que se utilizó en el ejemplo
analizado en la sección anterior: el uso de un identificador de variable igual al
nombre del campo del formulario precedido del signo $ (esto es lo que se conoce
como "estilo corto"). Sin embargo, esta opción no siempre está disponible, para
que esto sea posible el archivo de inicialización del intérprete de PHP debe estar
configurado de una manera especial.

Este archivo de inicialización lleva por nombre php.ini y la configuración que se


exige es la activación del parámetro register_globals, en concreto, el
archivo php.ini debería tener la siguiente línea:

register_globals = On

En las primeras versiones del lenguaje PHP este parámetro se encontraba


activado por defecto, sin embargo, en las últimas versiones (desde la 4.2)
viene desactivado por defecto:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

register_globals = Off

Por tanto, si el programador quiere hacer uso del estilo corto para hacer referencia
a las variables de formulario debe cambiar ese parámetro.

La razón de este cambio de estrategia en los desarrolladores de PHP al dejar de


considerarlo activado por defecto está en el hecho de que este estilo de acceso es
más proclive a cometer errores que puedan comprometer la seguridad en el código.
De hecho, en el propio archivo de configuración se advierte de este riesgo. Lo que
puede ocurrir al considerar las variables de formulario como globales es que el
programa pueda recibir variables del exterior y que las considere como si fuesen
variables provenientes de un formulario. En la próxima sección se verá cómo es
posible, por ejemplo, pasar variables a un programa directamente en el URL.

141
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

A pesar de estos riesgos, en este libro se utilizará habitualmente el estilo corto en


las variables de formulario por resultar mucho más práctico.

En el caso de que el estilo corto no esté habilitado, o simplemente no se desee


hacer uso de él, en PHP existen otras dos formas de acceder a las variables de los
formularios. La primera de ellas es el uso de un estilo intermedio en el que se
accede a las variables a través de un array asociativo con un índice igual al nombre
del campo del formulario. Esta opción apareció por primera vez en el PHP 4.1. En
concreto, todos los valores que el usuario introduzca en el formulario quedarán
almacenados en el array:

$_REQUEST[]

Adicionalmente también se almacenarán en los arrays:

$_POST[] ó $_GET[]

dependiendo del método utilizado para el envío de los datos del formulario.
Precisamente en la próxima sección se analizarán las diferencias entre ambos
métodos de envío (get y post).

Ejemplo 5.3:
En el caso del formulario de la Figura 5.1, desde el programa PHP se podría
acceder a los datos introducidos por el usuario en los campos edad y estudiante de
la manera siguiente:

$_REQUEST['edad'] ó $_GET['edad']
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

$_REQUEST['estudiante'] ó $_GET['estudiante']

En este caso, se puede utilizar el array $_GET[] porque el método GET es el


método de envío por defecto de los formularios de HTML. El código completo del
script que recibe los datos del formulario sería:

<?php
if (($_GET['edad']<12) or ($_GET['estudiante']))
echo "El precio de la entrada es 3.5 euros";
else
echo "El precio de la entrada es 5 euros";
?>

Finalmente, en PHP existe otra posibilidad para acceder a las variables del
formulario; se trata de una notación que garantiza el funcionamiento en todos los

142
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y LOS FORMULARIOS DE HTML

servidores e independientemente de la configuración de PHP. En este caso se


vuelven a utilizar dos arrays asociativos:
$HTTP_POST_VARS[] ó $HTTP_GET_VARS[]

de nuevo dependiendo del método de envío de los datos.

Ejemplo 5.4:
A las variables del formulario del Ejemplo 5.1 se puede acceder también de la
siguiente manera:

$HTTP_POST_VARS['edad']
$HTTP_POST_VARS['estudiante']

En la actualidad, este estilo de acceso a las variables se considera obsoleto y es


muy probable que desaparezca, por lo que no se recomienda su uso.

5.4. MÉTODOS DE TRANSFERENCIA DE


DATOS EN FORMULARIOS
Los datos que el usuario introduzca en un formulario de una página web pueden ser
transferidos al servidor para su procesamiento con dos métodos diferentes:
— Método GET: los datos son enviados dentro del URL de localización del
destino.
— Método POST: los datos son enviados de manera "invisible" para el usuario,
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

haciendo uso del protocolo http y en un encabezado independiente.

El método de transferencia se especifica en la definición del formulario mediante el


parámetro METHOD, asignándole el valor "Get" o "Post" en función del
método elegido. En caso de ausencia de ese parámetro, se considera como método
por defecto el método GET.

En el caso de que los datos deban ser transferidos por correo electrónico, es
obligatorio el uso del método POST.

143
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

5.4.1. MÉTODO GET


Ejemplo 5.5:

Considérese el formulario definido anteriormente. A pesar de que el método de


transferencia es por defecto GET, aquí se indica explícitamente:

<FORM NAME="miformulario" ACTION="procesar.php"


METHOD="Get">
Edad: <INPUT TYPE="text" NAME="edad" SIZE="3">
Estudiante:
<INPUT TYPE="radio" NAME="estudiante" VALUE=1> Si
<INPUT TYPE="radio" NAME="estudiante" VALUE=0 CHECKED> No
<BR>
<INPUT TYPE="submit" VALUE="Calcular">
<INPUT TYPE="reset" VALUE="Borrar">
</FORM>

Si el usuario que accede a esa página rellena el formulario de la siguiente manera:

Figura 5.2 Envío de datos a través del formulario

debería ser transferido el valor 35 para la variable edad y el valor 0 para la


variable estudiante. Con el método GET lo que se hace es añadir esas
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

asignaciones a continuación del URL de destino (el indicado en el parámetro


ACTION) de la siguiente manera:

...URL...?variable=valor&variable=valor&variable=valor...

En concreto, con los datos anteriores, el URL que se formaría tendría el siguiente
aspecto:

http://miservidor/procesar.php?edad=35&estudiante=0

Este URL sería visible en la barra de dirección del navegador al visualizar la


página resultado (Figura 5.3).

Si el usuario rellena el formulario de la siguiente manera:

144
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y LOS FORMULARIOS DE HTML

el URL que se generaría sería:

http://miservidor/procesar.php?edad=23&estudiante=1

Figura 5.3 Página generada a partir del envío con el método get

5.4.2. MÉTODO POST


Como ha podido apreciarse en los ejemplos anteriores, con el método GET
cualquier persona que vea la página resultado podrá conocer los valores que el
usuario introdujo en el formulario previo, ya que estos son visibles directamente
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

en la barra de direcciones. Cuando se desea ocultar esa información debe usarse


el otro método de transferencia: el método POST. Con este método los datos son
transferidos en una cabecera http independiente y no son visibles para el usuario.

Ejemplo 5.6:
Si el formulario se define de la siguiente manera:

<FORM NAME="miformulario" ACTION="procesar.php"


METHOD="Post">
Edad: <INPUT TYPE="text" NAME="edad" SIZE="3">
Estudiante:
<INPUT TYPE="radio" NAME="estudiante" VALUE=1> Si
<INPUT TYPE="radio" NAME="estudiante" VALUE=0 CHECKED> No
<BR>

145
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

<INPUT TYPE="submit" VALUE="Calcular">


<INPUT TYPE="reset" VALUE="Borrar">
</FORM>

El script recibirá los datos y se ejecutará de la misma manera, pero en la barra de


dirección del navegador cuando se visualice la página generada no podrá verse
ninguna información sobre las variables transferidas (véase Figura 5.4).

Figura 5.4 Página generada a partir del envío con el método post

5.4.3. DIFERENCIAS ENTRE AMBOS MÉTODOS


El uso de uno u otro método de transferencia de datos implica diferentes ventajas e
inconvenientes que se deben tener presentes a la hora de optar por uno de ellos.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Con el método GET:

— La cantidad de información a transmitir está condicionada por la longitud


máxima de los URL que pueden ser procesados por el servidor y el cliente
web.
— Se permite añadir la URL con los datos a la lista de favoritos (bookmarks), de
manera que por ejemplo no sería necesario que el usuario vuelva a introducir
los datos en el formulario, ya que estos quedarían incluidos en el URL
almacenado.
— No se conserva la privacidad de los datos transferidos (aparecen en el URL y
por tanto en la barra de direcciones del navegador, quedan registrados en el
historial,...)

146
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y LOS FORMULARIOS DE HTML

Con el método POST:

— No hay límite en la cantidad de información a transferir, ya que esta se


transfiere de manera independiente.
— No se puede agregar a la lista de favoritos la página destino, ya que para
generarla es necesario que las variables sean transferidas de nuevo
directamente del formulario.
— Los datos transferidos no son visibles en la URL y no quedan registrados en el
historial, conservando de este modo la privacidad.
A la vista de esta diferencias, queda claro por ejemplo que cuando la información
transferida sea confidencial (por ejemplo contraseñas), se debería utilizar el método
POST, además de poder establecer otro tipo de medidas (cifrado de datos,
conexiones seguras,...).

5.5. TRANSFERENCIA DE DATOS AL SCRIPT


DESDE EL URL
Cuando se comentó el riesgo que supone la utilización del estilo corto para
referenciar a las variables de los formularios, se indicó que el usuario podía
transferir directamente variables al script y que estas podrían ser confundidas con
variables que realmente provenían de un formulario. En esta sección se indica una
forma muy sencilla que tiene el usuario para transferir datos a los programas PHP.

Utilizando la misma idea en la que se basa el método GET, es posible transferir valores
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

para las variables del script directamente desde la barra de direcciones del navegador o
desde un enlace. Se trata, en definitiva, de incluir asignaciones de variables y valores al
final del URL con la misma sintaxis que utiliza el método GET:

http://servidor/script.php?variable1=valor1&variable2=valor2.
..

En el caso de que los valores de alguna de las variables transferidas incluyan


espacios en blanco, estos deben ser sustituidos por el signo '+'.

Ejemplo 5.7:
Si el usuario en la barra de dirección de su navegador escribe el URL:

http://miservidor/favorita.php?titulo=Piratas+del+Caribe

147
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

estaría indicando que se debe transferirse al script que se encuentra en el archivo


favorita.php una variable de tipo cadena de caracteres de nombre titulo y valor
"Piratas del Caribe". El script recibiría esa variable como cualquier otra variable
proveniente de un formulario.

El siguiente script recoge esa variable y muestra a partir de ella un mensaje:

<?php
echo "Su película favorita es \"$titulo\". ";
echo "Muchas gracias por su opinión";
?>

Evidentemente, no es habitual ni recomendable que se solicite al usuario la


introducción de datos de esta manera. En este caso, si el usuario no añade al URL
la variable titulo con su correspondiente valor, el script anterior generaría un
mensaje de error al encontrarse con una variable no definida. La forma de evitar
ese error es utilizar la función isset() que permite averiguar si una variable
concreta se encuentra definida o no:

Ejemplo 5.8:
El siguiente script hace uso de la función isset() para comprobar si la variable
$titulo se encuentra definida, y en función de esa comprobación genera un
mensaje diferente en la página:

<?php
if (isset($titulo)) {
echo "Su película favorita es \"$titulo\".";
echo "Muchas gracias por su opinión";
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

} else {
echo "No nos ha indicado su película favorita";
}
?>

Otra de las utilidades de esta forma de transferir datos a los scripts es la generación
dinámica de enlaces; en este caso, los URL con las variables son incluidos en
etiquetas HTML de definición de enlaces.

Ejemplo 5.9:
Supóngase que se desea diseñar un formulario para introducir datos de películas y una
serie de enlaces que permitan verificar y confirmar los datos antes de ser enviados al
servidor.

148
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y LOS FORMULARIOS DE HTML

El primer paso sería el diseño del formulario:

Figura 5.5 Formulario de recogida de datos sobre películas

El código HTML que genera este formulario es:

<html>
<head><title>Datos de películas</title></head>
<body>
<form action="procesarpelicula.php">
Titulo: <input type="text" name="titulo" size="90">
<br>
Actores: <input type="text" name="actores" size="85">
<br>
Director: <input type="text" name="direccion" size="40">
<br>
Guión: <input type="text" name="guion" size="30">
Producción: <input type="text" name="produccion"
size="30">
<hr>
Año: <input type="text" name="anno" size="4">
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Nacionalidad:
<input type="text" name="nacionalidad" size="15">
Género:
<select name="genero">
<option selected> Comedia
<option> Drama
<option> Acción
<option> Terror
<option> Suspense
<option> Otras
</select>
Duración: <input type="text" name="duracion" size="3">
(minutos)
<br>
Restricciones de edad:
<input type="radio" name="edad" value="Apta">

149
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Todos los públicos


<input type="radio" name="edad" value="Mayores de 7">
Mayores de 7 años
<input type="radio" name="edad" value="Mayores de 18">
Mayores de 18 años
<br>
<input type="submit" value="Enviar">
<input type="reset" value="Borrar">
</form>
</body>
</html>

El usuario podría cumplimentar el formulario con los datos que se muestran en la


Figura 5.6.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Figura 5.6 Introducción de datos de una película

Cuando el usuario pulse el botón "Enviar", los datos serán transferidos al script que
se encuentra en el archivo procesarpelicula.php y cuyo contenido se incluye a
continuación:

<html>
<head><title>Confirmación de datos</title></head>
<body>
Datos recibidos correctamente,
si quiere confirmar los valores active el enlace
correspondiente
<br>
<?php

150
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y LOS FORMULARIOS DE HTML

$url1="confirmar.php?datos=a&titulo=$titulo&" .
"actores=$actores&genero=$genero";
echo "<A HREF=\"$url1\"> Ficha artística </A> <BR>";
$url2="confirmar.php?datos=t&direccion=$direccion&" .
"produccion=$produccion&guion=$guion";
echo "<A HREF=\"$url2\"> Ficha técnica </A> <BR>";
$url3="confirmar.php?datos=o&nacionalidad=$nacionalidad&"
.
"anno=$anno&duracion=$duracion&edad=$edad";
echo "<A HREF=\"$url3\"> Otros datos </A> <BR>";
?>
</body>
</html>

Como puede apreciarse, este script recibe las variables con los datos introducidos
por el usuario y genera de manera dinámica tres simples enlaces, obteniéndose la
página que muestra la Figura 5.7.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Figura 5.7 Página con los enlaces generados dinámicamente

Todos los enlaces tienen como destino un tercer archivo (confirmar.php), pero en
cada uno de ellos se añaden al URL diferentes variables que serán transferidas al
script. Además se utiliza una nueva variable (datos) para que el script destino
sepa cuáles son las variables que vienen dentro del URL que reciba.

El código que se encuentra en el archivo confirmar.php se incluye a continuación.


Como puede apreciarse, el script destino de los enlaces generará una página
diferente en función de las variables que se reciben desde la página origen.

151
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

<html>
<body>
<?php
if($datos=="a") {
print "<h1> $titulo </h1>";
print "Género: $genero <br>";
print "Protagonizada por $actores <br>";
}
elseif ($datos=="t") {
print "Dirigida por $direccion <br>";
print "Producida por $produccion <br>";
print "Guión de $guion <br>";
}
elseif ($datos=="o") {
print "Nacionalidad: $nacionalidad <br>";
print "Año: $anno <br>";
print "Duración: $duracion minutos <br>";
print "Autorizada para: $edad <br>";
}
?>
</body>
</html>

De esta manera, dependiendo de cuál sea el enlace que active el usuario, la página mostrará
una información u otra. En concreto, las páginas que se generarán por cada uno de los
enlaces anteriores son las que muestran la Figura 5.8, la Figura 5.9 y la Figura 5.10.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Figura 5.8 Página generada después de seleccionar el enlace "Ficha Artística"

152
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y LOS FORMULARIOS DE HTML

Figura 5.9 Página generada después de seleccionar el enlace "Ficha técnica"


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Figura 5.10 Página generada después de seleccionar el enlace "Otros datos"

5.6. TRATAMIENTO DE FORMULARIOS CON


LISTAS DE SELECCIÓN MÚLTIPLE
Cuando los formularios incluyen listas de selección múltiple, debe tenerse en
cuenta que si se desea que se transfieran al script todas las opciones seleccionadas

153
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

por el usuario en la lista, el correspondiente campo no puede tener un nombre


simple como los restantes campos de formulario.

Ejemplo 5.10:
Si se desea diseñar un formulario en el que el usuario seleccione uno o varios
temas de interés dentro de una lista, se podría optar por incluir en la definición del
formulario el siguiente código HTML:

<SELECT MULTIPLE NAME=tema SIZE=5>


<OPTION>Música
<OPTION>Cine
<OPTION>Deportes
<OPTION>Informática
<OPTION>Viajes
</SELECT>

En este caso, la lista viene identificada por el nombre tema. Si el usuario opta por
seleccionar varias opciones de la lista (por ejemplo, tal como muestra la Figura
5.11), cuando los datos se transfieran al script de destino, la variable $tema tendrá
el valor "Informática"; es decir, la variable guardará el valor de la última
opción seleccionada por el usuario.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Figura 5.11 Página que muestra una lista de selección múltiple

Evidentemente, la principal utilidad de las listas de selección múltiple es permitir al


usuario seleccionar varias opciones y que todas ellas puedan ser tratadas
adecuadamente. Para conseguir que al script destino llegue no la última opción

154
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y LOS FORMULARIOS DE HTML

seleccionada sino todas ellas, a la hora de dar un nombre al campo del formulario
se deberían utilizar un par de corchetes vacíos para señalar que realmente se
guardará todo un vector o array de valores.

<SELECT MULTIPLE NAME=tema[] SIZE=5>


<OPTION>Música
<OPTION>Cine
<OPTION>Deportes
<OPTION>Informática
<OPTION>Viajes
</SELECT>

El script recibirá en este caso un array $tema[] que podrá ser procesado para
obtener todas sus componentes individuales. Como se verá en el próximo capítulo
existen incluso estructuras iterativas que permiten recorrer todos los elementos de
un array de una manera simple.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

155
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE
CONTROL

6.1. INTRODUCCIÓN
Todo lenguaje de programación requiere de estructuras que permitan variar el flujo
normal de ejecución de los programas en función del valor de una expresión o de la
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

satisfacción de determinadas condiciones. Las denominadas sentencias de control son


las que permiten alterar el orden secuencial habitual en la ejecución de las sentencias.
Básicamente las sentencias de control se clasifican en dos grandes bloques:

— Estructuras condicionales.
— Estructuras iterativas.

Las primeras son las que permiten seleccionar porciones de código a ejecutar si se
cumplen determinadas condiciones; las segundas permiten establecer un bloque de
instrucciones que se ejecutarán un número determinado de veces o mientras se
satisfaga una condición.

En las próximas secciones se analizarán las diferentes sentencias de control


disponibles en PHP a partir de sencillos ejemplos prácticos.

157
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

6.2. ESTRUCTURAS CONDICIONALES

6.2.1. SENTENCIA IF
La primera de las estructuras condicionales con las que cuenta PHP es la sentencia
if. Esta estructura permite ejecutar una sentencia o bloque de sentencias siempre
que se cumpla determinada condición.

Esta sentencia condicional, con su sintaxis propia, está presente en todos los
lenguajes de programación. En el caso del lenguaje PHP la sintaxis es totalmente
similar a la del lenguaje C:

if (expresión)
sentencia

o bien

if (expresión) {
bloque de sentencias
}

Cuando la expresión se evalúa como verdadera, se ejecutan la sentencia o bloque


de sentencias que siguen; en caso contrario, estas sentencias son ignoradas.

Como puede apreciarse, en el caso de que se deseen ejecutar varias sentencias en


función del valor de la expresión, estas deben introducirse entre llaves.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Recordar igualmente que en PHP toda expresión que produzca como resultado un
valor numérico distinto de cero, una cadena diferente de la cadena vacía o un array
no vacío, si aparece dentro de un contexto lógico es tratada como el valor booleano
verdadero (true).

Con objeto de que el código de los programas resulte más legible suele
ser recomendable utilizar diferentes niveles de sangrado para identificar
los bloques de sentencias que se ejecutan en caso de verificarse una
NOTA condición. Debe advertirse sin embargo que esto únicamente tiene un
efecto "estético" en el programa y no influye en la ejecución del mismo.

158
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

Ejemplo 6.1:
Considérese el siguiente fragmento de programa en el que se genera un mensaje en
la página solo cuando el valor de la variable $descuento es mayor que 0:

if ($descuento > 0)
print "Artículo con precio rebajado";

Debe tenerse especial cuidado cuando se desea ejecutar más de una sentencia si la
condición es cierta.

Ejemplo 6.2:
Por ejemplo, dada la estructura siguiente:

if ($x > 0)
$y = 2 * $x;
$z = 1 / $x;

si el valor de la variable $x fuese 0 generaría un error de tipo aritmético (división


por cero). ¿Por qué se produce ese error? La razón es que la segunda sentencia de
asignación (la de asignación de valor a la variable $z) sería ejecutada siempre,
independientemente del resultado de la condición $x > 0. El hecho de que esa
sentencia esté en el mismo nivel de sangrado que la sentencia anterior no tiene
ninguna relevancia a efectos de la ejecución; el error que se está cometiendo al
escribir la estructura anterior es el olvido de las llaves para delimitar todo el bloque
de código que debe ejecutarse cuando la condición sea cierta. En ausencia de
llaves, solo se ejecutaría la primera sentencia que se encuentra, quedando la
segunda, por tanto, fuera de la estructura condicional. La forma correcta de escribir
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

la estructura condicional es:

if ($x > 0) {
$y = 2 * $x;
$z = 1 / $x;
}

Por supuesto, la forma de colocar las llaves para delimitar el bloque se presta a que
cada programador opte por un estilo propio; por ejemplo, se conseguiría el mismo
efecto escribiendo el código de cualquiera de las siguientes maneras:

if ($x > 0)
{
$y = 2 * $x;
$z = 1 / $x;
}

159
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

if ($x > 0)
{$y = 2 * $x;
$z = 1 / $x;}

e incluso

if ($x > 0) { $y = 2 * $x; $z = 1 / $x; }

Las expresiones que determinan la condición de ejecución de las sentencias en la


estructura condicional deben ser siempre dadas entre paréntesis. En este sentido el
lenguaje PHP es sintácticamente más estricto que otros lenguajes.

Ejemplo 6.3:
La sentencia:

if $fila <= 5
$ocupada = true;

produciría un error con el siguiente mensaje:

Parse error: parse error, unexpected T_VARIABLE, expecting '('

por no indicar entre paréntesis la condición. Incluso cuando la condición es una


simple variable de valor lógico, esta debe darse entre paréntesis. Por ejemplo:

if ($ocupada)
print "Lo siento, asiento no disponible";

En las expresiones condicionales es habitual también el uso de los operadores


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

lógicos para definir condiciones más complejas.

Ejemplo 6.4:
La siguiente estructura condicional escribiría el mensaje "Lo siento, asiento no
disponible" cuando la variable $fila tome un valor entre 10 y 12 o la variable
$vendida tenga el valor true. Obsérvese de nuevo la necesidad de introducir
toda la condición entre paréntesis y usar igualmente paréntesis para establecer el
orden de evaluación de la expresión.

if ((($fila >= 10) and ($fila <= 12)) or $vendida)


print "Lo siento, asiento no disponible";

160
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

Finalmente, en relación a la condición, advertir de nuevo algo que ya se comentó a


la hora de presentar los diferentes operadores del lenguaje: debe tenerse especial
cuidado en no confundir el operador de comparación de igualdad con el de
asignación.

Ejemplo 6.5:
La sentencia

if ($fila = 15)
print "Última fila de la sala";

escribiría siempre el mensaje "Última fila de la sala" independientemente del valor


de la variable $fila, ya que en la propia estructura condicional se está realizando
una asignación del valor 15 a esa variable y no una comparación. La estructura
condicional correcta sería:

if ($fila == 15)
print "Última fila de la sala";

Por supuesto, las estructuras condicionales pueden anidarse unas dentro de otras.

Ejemplo 6.6:

if ($fila <= 5) {
print "Fila próxima a la pantalla";
if (($asiento == 1) or ($asiento == 20)) {
print "Mala visibilidad de la pantalla";
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

}
}

En este caso cuando la variable $fila toma un valor menor o igual que 5 se
advierte al usuario de la proximidad a la pantalla; si además de eso el asiento
corresponde a los números 1 ó 20, se advierte de una mala visibilidad.

Ya se ha comentado que las expresiones que se evalúan en las condiciones, pueden


ser no solo expresiones lógicas, sino también expresiones numéricas, cadenas de
caracteres o incluso arrays. Cualquier expresión numérica que dé como resultado
un número diferente de 0, o cualquier cadena o array no vacío equivale al valor
lógico true.

161
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Ejemplo 6.7:
La sentencia

if($precio)
print "El precio es $precio euros";

escribiría un mensaje con el precio cuando el valor de la variable sea diferente de


cero (valor true).

Ejemplo 6.8:
La sentencia

if(!$nombre)
print "Por favor, díganos su nombre";

mostraría el mensaje cuando la variable $nombre tenga como valor la cadena de


caracteres vacía.

6.2.2. LA CLÁUSULA ELSE


Es frecuente encontrarse con situaciones en las que se quiere que un bloque de
sentencias sea ejecutado cuando se cumpla cierta condición, y otro bloque lo sea
cuando esa condición es falsa. En principio esto podría conseguirse encadenando
dos sentencias condicionales if; sin embargo existe una forma mucho más
efectiva de programar estas estructuras: el uso de la cláusula else dentro de la
sentencia if.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

La sintaxis concreta de la sentencia if...else sería:

if (condición)
{
sentencias a ejecutar si la condición es cierta
}
else
{
sentencias a ejecutar si la condición es falsa
}

Las sentencias del bloque else se ejecutarán solamente si la condición se evalúa


como falsa.

162
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

De nuevo, en caso de que alguno de los bloques esté constituido por una única
sentencia, las llaves podrían suprimirse.

Ejemplo 6.9:
Supuesto que la variable $edad guarda la edad de una persona, y se desea asignar
valores diferentes a la variable $precio para los niños menores de 12 años o
jubilados y para el resto de personas, se podría escribir una sentencia condicional
con una cláusula else:

if (($edad < 12) or ($edad >= 65))


$precio = 3.5;
else
$precio = 4.75;

Ejemplo 6.10:
La sentencia

if($precio)
print "El precio es $precio euros";
else
print "Entrada gratuita";

escribiría el mensaje con el precio cuando la correspondiente variable tenga un


valor diferente de cero (equivalente a true) y escribiría "Entrada gratuita" en
otro caso (valor numérico 0, o equivalentemente false).

Obsérvese cómo en ambos casos las llaves han podido suprimirse por estar
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

constituidos los bloques por una sola sentencia. De todas formas debe tenerse un
especial cuidado con la supresión de esas llaves porque pueden provocar errores
que en ocasiones resultan difíciles de detectar.

Ejemplo 6.11:
Considérese la estructura condicional siguiente:

if ($num == 126)
$fila = 12;
$asiento = 8;
else
$fila = 10;
$asiento = 6;

163
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Tal como está escrita se generaría el siguiente error:

Parse error: parse error, unexpected T_ELSE

debido a que al no utilizar llaves en el bloque a ejecutar en el caso de que la


variable $num tome el valor 126, la segunda de las sentencias de ese bloque haría
finalizar la estructura condicional.

En cambio, la sentencia

if ($num == 126) {
$fila = 12;
$asiento = 8;
}
else
$fila = 10;
$asiento = 6;

no produce ningún error, pero tampoco produce el efecto deseado, ya que la


ausencia de llaves en el bloque else hace que la segunda sentencia del bloque se
considere fuera de la estructura condicional y por tanto se ejecuta siempre,
independientemente del valor de la condición. De manera que, por ejemplo, si la
variable $num tiene el valor 126, después de esas sentencias $fila valdría 12
pero $asiento valdría 6.

En definitiva, la estructura condicional correcta requiere en este caso agrupar entre


llaves cada uno de los bloques de sentencias a ejecutar:

if ($num == 126) {
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

$fila = 12;
$asiento = 8;
}
else {
$fila = 10;
$asiento = 6;
}

Además de las sentencia if...else, PHP dispone del operador


condicional que ya fue presentado cuando se mostraron los diferentes
operadores del lenguaje. Este operador condicional resulta útil para
NOTA realizar sencillas asignaciones en las que el valor asignado dependa del
resultado de una condición.

164
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

6.2.3. SENTENCIA IF ... ELSEIF ... ELSE


Por supuesto, las estructuras if pueden encadenarse una tras otra o anidarse para
poder indicar bloques de sentencias a ejecutar en función de varias condiciones
diferentes; de todas formas, existe una estructura condicional optimizada que
permite realizar esta acción, se trata de la estructura if...elseif...if. La
sintaxis general de esta sentencia es:

if (condición1)
{
sentencias a ejecutar si la condición1 es cierta
}
elseif (condición2)
{
sentencias a ejecutar si la condición2 es cierta
}
elseif (condición3)
{
sentencias a ejecutar si la condición3 es cierta
}
...
else
{
sentencias a ejecutar si ninguna de las
condiciones anteriores es cierta
}

Como en las estructuras condicionales anteriores, cuando los bloques de órdenes a


ejecutar en cada caso están compuestos por una única sentencia, las llaves se
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

pueden suprimir. Además, debe indicarse que es igualmente opcional la utilización


de la cláusula else para indicar sentencias a ejecutar cuando todas las condiciones
sean falsas.

El funcionamiento de esta sentencia es el esperado: si la primera condición es


evaluada como cierta, entonces se ejecutan las sentencias del bloque
correspondiente y tras ello finaliza la ejecución de la sentencia. En el caso de que la
primera condición sea falsa, el intérprete continuará evaluando de manera
consecutiva las siguientes condiciones hasta encontrar la primera que es cierta, en
cuyo caso se ejecutan las sentencias de su bloque y se finaliza. Es de destacar, por
tanto, que el orden en el que se indiquen las diferentes condiciones resulte decisivo,
ya que únicamente se ejecutará el bloque asociado a la primera condición cierta,
ignorando los restantes bloques aunque su condición pueda ser igualmente cierta.

165
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Ejemplo 6.12:
La siguiente estructura condicional asigna diferente valor a la variable $precio
en función del valor de la variable $edad:

if ($edad < 3) {
$precio = 0;
}
elseif ($edad <= 16) {
$precio = 8;
}
elseif ($edad > 16 and $edad < 65) {
$precio = 12;
}
else {
$precio = 10;
}

En este caso, las llaves de cada bloque podrían suprimirse.

Comentar igualmente que la estructura anterior se podría escribir también en la


forma:

if ($edad < 3) {
$precio = 0;
}
else
if ($edad <= 16) {
$precio = 8;
}
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

else

if ($edad > 16 and $edad < 65) {


$precio = 12;
}
else {
$precio = 10;
}

En este caso se estarían utilizando tres sentencias condicionales anidadas.

Como puede observarse en este ejemplo, en una estructura condicional se


conseguiría el mismo efecto utilizando la palabra elseif o las palabras else
if, a pesar de tener diferente significado sintáctico (en el primer caso se estaría

166
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

ante una sola sentencia y en el segundo ante dos sentencias condicionales


anidadas).

Ejemplo 6.13:
Supóngase que se desea que una página web muestre un mensaje de bienvenida
diferente dependiendo de la hora del día; por ejemplo, considérese el siguiente
script:

$hora=date("H");
if ($hora<5)
print("Buenas noches, ");
elseif ($hora<12)
print("Buenos días, ");
elseif ($hora<20)
print("Buenas tardes, ");
else
print("Buenas noches, ");
print("bienvenido a nuestra página web");

En este caso se generaría un mensaje de "Buenas noches", "Buenos días" o


"Buenas tardes" en función del valor de la variable $hora. Para saber la hora
actual se hace uso de la función date() que será estudiada con detalle en el
capítulo dedicado a las funciones predefinidas en PHP (Capítulo 9). Esta función se
puede utilizar para obtener tanto fechas como horas en diferentes formatos, para
ello se debe indicar como argumento una cadena de caracteres que actúa de patrón
de formato. En este caso la cadena "H" indica que lo que se desea obtener es el
número de hora de 0 a 23.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Debe recordarse que PHP es un lenguaje de programación del lado del


servidor, lo que significa que los programas son ejecutados en el
servidor y no en el cliente. Por tanto, la fecha y la hora que se obtienen
NOTA con la función date() serían las del servidor, que no necesariamente
coinciden con la fecha y hora del cliente que acceda a la página.

6.2.4. SINTAXIS ALTERNATIVA DE LAS SENTENCIAS IF


PHP admite una sintaxis alternativa para la construcción de estructuras
condicionales; con esta sintaxis el bloque de sentencias a ejecutar se delimita entre
el signo ':' y la palabra reservada endif:

167
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

if (condición) :
sentencias a ejecutar si la condición es cierta
endif;

Ejemplo 6.14:
Un sencillo ejemplo de construcción de una estructura condicional con esta sintaxis
sería:

if ($x != 0) :
$y = 1 / $x;
endif;

en este caso se asigna a la variable $y el inverso del valor de $x siempre que este
último sea diferente de 0.

En las estructuras if...elseif...else también es posible utilizar esta


sintaxis alternativa;

Ejemplo 6.15:

if ($y == 1):
$z = 3;
elseif ($y == 2):
$z = 5;
else:
$z = 7;
endif;
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Una de las características más sorprendentes, pero al mismo tiempo más


útiles, del lenguaje PHP es la posibilidad de partir una estructura en dos
scripts diferentes, integrando entre ellos código HTML puro. En el caso
NOTA de estructuras condicionales esta posibilidad permite enviar al cliente
un código HTML solo cuando se verifique determinada condición.

La sintaxis alternativa de las sentencia if resulta especialmente apropiada cuando


se desea fraccionar la estructura en dos o más scripts, ya que el inicio y final de
cada bloque queda señalado de forma muy clara y sin prestarse a confusión.

168
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

Ejemplo 6.16:
El siguiente fragmento de código incluye dos scripts entre los que se está
colocando código HTML puro. En este caso, el primer script comienza una
estructura condicional en la que se pregunta si la variable $edad se encuentra
definida y si su valor es menor que 7; en caso de que esto ocurra la página
mostrará una lista HTML con un conjunto de películas autorizadas para todos los
públicos.

<?php if (isset($edad) and ($edad < 7)) : ?>


Listado de películas <U>autorizadas para todos los
públicos</U>:
<UL>
<LI>Nemo
<LI>Hermano Oso
<Ul>
<?php endif; ?>

Obsérvese cómo después de incluir el código HTML de definición de la lista, un


nuevo script PHP cierra la estructura condicional abierta en el primer script. Por
supuesto, el mismo efecto se podría haber conseguido con un único script en el que
todas los comandos HTML fuesen generados con las funciones echo() o
print(), pero sin lugar a dudas, esta posibilidad de "romper" la estructura
condicional permite escribir ese código HTML de una manera mucho más sencilla.

6.2.5. ESTRUCTURAS CONDICIONALES


SWITCH...CASE
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

La sentencia switch permite definir estructuras condicionales en las que


diferentes bloques de sentencias serán ejecutados dependiendo del valor de una
misma variable o expresión. En principio cualquier estructura switch se podría
escribir de forma equivalente con una sentencia if...elseif...else, sin
embargo, las sentencias switch facilitan la generación de la estructura cuando lo
que se quiere comprobar en todas las condiciones es el valor que toma una misma
variable o expresión.

La sintaxis básica de la sentencia es:

switch (expresion) {
case valor1:
sentencias
case valor2:

169
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

sentencias
...
case valorN:
sentencias
default:
sentencias
}

Esta sentencia evalúa la expresión y sucesivamente compara el valor devuelto con


los valores que van apareciendo en cada una de las cláusulas case, cuando el
valor coincide ejecuta las sentencias que van a continuación hasta llegar al final de
la estructura o encontrarse una sentencia de finalización break.

La cláusula default es opcional y permite indicar las sentencias a ejecutar


cuando la expresión no toma ninguno de los valores anteriores.

La expresión que se evalúa y compara en la estructura switch puede ser


cualquier expresión que se evalúe a un tipo simple, es decir, números enteros o de
punto flotante y cadenas de caracteres. En cada una de las cláusulas case se puede
indicar uno de los valores admisibles de la expresión, pero no se pueden indicar
condiciones lógicas sobre esos valores.

Ejemplo 6.17:
A continuación se presenta un sencillo ejemplo de estructura condicional switch
con su estructura equivalente if...elseif...else, en este caso la estructura
se encarga de asignar diferentes valores a la variable $precio en función del
valor que tome otra variable $dia:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

switch ($dia) {
case 'L':
$precio = 4;
break;
case 'M':
$precio = 3;
break;
case 'X':
$precio = 4.5;
break;
case 'J':
$precio = 4.5;
break;
case 'V':
$precio = 5;

170
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

break;
case 'S':
$precio = 5;
break;
case 'D':
$precio = 4.5;
break;
}

La sentencia if equivalente sería:

if ($dia == 'L')
$precio = 4;
elseif ($dia == 'M')
$precio = 3;
elseif ($dia == 'X')
$precio = 4.5;
elseif ($dia == 'J')
$precio = 4.5;
elseif ($dia == 'V')
$precio = 5;
elseif ($dia == 'S')
$precio = 5;
elseif ($dia == 'D')
$precio = 4.5;

En una sentencia switch la condición, o expresión que la define, se evalúa solo


una vez y el resultado se compara con cada uno de los valores que aparecen en las
cláusulas case. En una sentencia if..elseif...else, en cambio, la
condición se evalúa en cada una de las cláusulas elseif, por lo que a efectos de
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

ejecución y dependiendo de la complejidad de la condición, las estructuras


switch pueden resultar más rápidas que sus equivalentes estructuras if.

Debe tenerse presente la forma en la que se ejecuta la sentencia


switch: cuando el valor de la expresión coincide con alguno de los
valores dados en la sentencia, se ejecutan todas las sentencias que van a
NOTA continuación hasta encontrarse una sentencia break o alcanzar el final
de la estructura. Si no aparece ningún break, se seguirán ejecutando
las sentencias correspondientes a los siguientes bloques case. Esta
particularidad suele ser fuente de errores en programadores noveles.

171
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Ejemplo 6.18:
Si la sentencia switch anterior se hubiese escrito de la forma siguiente:

switch ($dia) {
case 'L':
$precio = 4;
case 'M':
$precio = 3;
case 'X':
$precio = 4.5;
case 'J':
$precio = 4.5;
case 'V':
$precio = 5;
case 'S':
$precio = 5;
case 'D':
$precio = 4.5;
}

el valor de la variable $precio siempre sería 4.5 ya que al no existir ninguna


sentencia break, en cuanto la variable $dia tome uno cualquiera de los 7 valores
predefinidos, se ejecutarían todas las sentencias correspondientes hasta el final y
por tanto la única asignación que tendría efecto es la última. Para evitar esto es para
lo que se utiliza la orden break al final del bloque de sentencias que se deseen
ejecutar en cada caso. De esta manera, cuando el valor de la variable coincide con
uno de los valores preestablecidos se procede a la asignación del valor
correspondiente a $precio y se abandona la estructura. Evidentemente, el último
break no sería necesario.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

En el caso de que el valor de la variable $dia no coincida con ninguno de los


valores predefinidos (L, M, X, J, V, S y D), la variable $precio no tendría
ningún valor asignado. Si se desea evitar esto podría utilizarse la cláusula
default para establecer un valor a asignar por defecto:

switch ($dia) {
case 'L':
$precio = 4; break;
case 'M':
$precio = 3; break;
case 'X':
$precio = 4.5; break;
case 'J':
$precio = 4.5; break;

172
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

case 'V':
$precio = 5; break;
case 'S':
$precio = 5; break;
case 'D':
$precio = 4.5; break;
default:
$precio = 0;
}

Finalmente, indicar que es posible que la lista de sentencias de un case se


encuentre vacía, en cuyo caso, al no encontrar tampoco ninguna sentencia break,
el programa pasaría a ejecutar las sentencias del siguiente case. Esta característica
permite optimizar el código de estructuras switch en las que un mismo conjunto
de sentencias se repiten para diferentes casos, tal como ocurre, por ejemplo, en la
estructura anterior en la que hay asignaciones iguales en diferentes casos. Teniendo
en cuenta esta observación, la sentencia anterior podría escribirse de la siguiente
manera:

switch ($dia) {
case 'L':
$precio = 4;
break;
case 'M':
$precio = 3;
break;
case 'X':
case 'J':
case 'D':
$precio = 4.5;
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

break;
case 'V':
case 'S':
$precio = 5;
break;
default:
$precio = 0;
}

Al igual que ocurría con la sentencia if, la sentencia switch dispone de una
sintaxis alternativa en la que el inicio del bloque de casos se señala con un signo ':'
y el final de la estructura con la palabra endswitch. A continuación se puede ver
un sencillo ejemplo con esta nueva sintaxis.

173
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Ejemplo 6.19:

switch ($nombre) :
case 'Juan':
case 'Pedro':
case 'Daniel':
print("Soltero");
break;
case 'Ana':
case 'Luis':
print("Casado");
break;
default:
print("Desconocido");
endswitch;

Ejemplo 6.20:
Como ejemplo final, supóngase que se desea calcular el número de días que tiene
un mes concreto, considerando además si el año es bisiesto o no (un año es bisiesto
cuando es múltiplo de 4 pero no de 100, o bien cuando es múltiplo de 400).
Supóngase que las variables $mes y $anno identifican el mes concreto del que se
desea conocer el número de días, el siguiente programa asigna ese número a la
variable $nd:

switch($mes) {
case 2:
if((($anno%4==0) and ($anno%100!=0)) or
($anno%400==0))
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

$nd=29;
else
$nd=28;
break;
case 4: case 6: case 9: case 11:
$nd=30;
break;
default:
$nd=31;
}

174
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

6.3. ESTRUCTURAS ITERATIVAS


La segunda categoría de estructuras de control está constituida por las sentencias
que permiten construir bucles; es decir, que permiten ejecutar varias veces de
forma iterativa un mismo conjunto de instrucciones.

6.3.1. SENTENCIA WHILE


Los bucles construidos con la sentencia while constituyen las estructuras
iterativas más simples con las que cuenta el lenguaje PHP. En este caso, las
sentencias que constituyen el cuerpo del bucle se ejecutarán mientras el valor de
una expresión lógica sea verdadero. La sintaxis de la sentencia es:

while (expresión)
sentencia

En el caso de que el cuerpo del bucle esté formado por más de una sentencia, estas
deben ser dadas entre llaves:

while (expresión) {
sentencias
}

La expresión es evaluada cada vez que se inicie una iteración del bucle, pudiéndose
dar el caso incluso de que las sentencias del bucle no se ejecuten ni una sola vez si
la expresión es inicialmente falsa. Por supuesto, dentro del bloque de sentencias a
ejecutar en cada iteración debe haber alguna que modifique el valor de la
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

expresión, ya que en caso contrario se entraría en un bucle infinito.

Al igual que ocurre con las restantes sentencias de control, existe una sintaxis
alternativa de la sentencia while:

while (expresión) :
sentencias
endwhile;

Dentro del bloque de sentencias a ejecutar, en cada iteración pueden incluirse


sentencias condicionales u otras estructuras iterativas anidadas.

175
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Ejemplo 6.21:
Mediante el siguiente programa se genera una lista HTML con los múltiplos de 5
menores o iguales que 100:

print "<OL>";
$n = 5;
while ($n <= 100) {
print "<LI> $n";
$n += 5;
}
print "</OL>";

6.3.2. SENTENCIA DO...WHILE


Los bucles do...while son muy similares a los bucles while, la única
diferencia es que la condición es comprobada al final de cada iteración en lugar de
hacerlo al comienzo. Esta diferencia en el momento de comprobación de la
condición hace que en un bucle do...while se tenga garantizada la ejecución de
las sentencias del cuerpo del bucle al menos una vez. La sintaxis de la sentencia
do..while es la siguiente:

do
{
sentencias
}
while (condición);
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

En el caso de esta sentencia, no existe sintaxis alternativa.

El funcionamiento del bucle es el obvio: mientras la condición sea cierta se


ejecutan las sentencias del cuerpo del bucle.

Ejemplo 6.22:
El bucle para generar una lista con los múltiplos de 5 menores o iguales que 100
también podría construirse utilizando esta sentencia:

print "<OL>";
$n = 5;
do {
print "<LI> $n";
$n += 5;

176
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

}
while ($n <= 100)
print "</OL>";

En este caso concreto, ambas estructuras iterativas (bucle while y bucle


do...while) producen exactamente el mismo resultado; sin embargo, en otros
casos el uso de una u otra estructura puede conducir a resultados diferentes, tal
como puede verse en el siguiente ejemplo.

Ejemplo 6.23:
Considérese el siguiente bucle:

$n = 0;
while ($n > 0) {
print $n;
$n--;
}

En este caso, al utilizarse la sentencia while, la condición del bucle se comprueba


al inicio de cada iteración y por tanto, al no verificarse ni siquiera en la iteración
inicial el bucle no se ejecutaría ni una sola vez.

En cambio, si se utiliza la sentencia do...while para definir el bucle:

$n = 0;
do {
print $n;
$n--;
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

}
while ($n > 0);

la condición se comprobará después de cada iteración, por tanto, el cuerpo del


bucle se ejecuta una vez y después se comprueba la condición; al no verificarse
esta, el bucle finaliza. En definitiva, la sentencia habrá escrito el valor 0 y al salir
del bucle la variable $n tendrá el valor –1.

Ejemplo 6.24:
A continuación se muestra el uso de la sentencia do...while para comprobar la
conjetura de Collatz, que establece que cualquiera que sea el número entero
positivo n de partida, la sucesión de números enteros f(n), f(f(n)), f(f(f(n))),...
siempre llega a alcanzar el valor 1, siendo f(n) la siguiente función:

177
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

­n / 2 si n es par
f ( n) = ®
¯(3n + 1) / 2 si n es impar

En el siguiente programa se asume que $n contiene el valor de partida (por


ejemplo, podría venir de un formulario previo). Con ese valor inicial se construye
un bucle que finaliza cuando se alcanza el valor 1. En cada una de las iteraciones
del bucle se redefine $n aplicando sobre el valor previo la función de Collatz y se
van introduciendo los resultados en un control de tipo lista de HTML.

print "<SELECT>";
print "<OPTION> Valor inicial: $n";
$niter = 0;
do {
if($n%2==0) {
$n = $n/2;
}
else {
$n = (3*$n+1)/2;
}
$niter++;
print "<OPTION> Iteración $niter: $n";
} while ($n!=1);
print "</SELECT>";

Por ejemplo, asumiendo que el valor inicial es 23, se generaría una lista como la
que se muestra en la Figura 6.1.
.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Figura 6.1 Resultado de la ejecución del programa para el valor inicial 23

178
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

6.3.3. SENTENCIA FOR


La sentencia for es la sentencia más potente, y al mismo tiempo la más compleja,
con las que cuenta el lenguaje PHP para la construcción de bucles. Cualquier bucle
construido con las sentencias while o do...while podría implementarse de
manera equivalente con la sentencia for. La sintaxis y funcionamiento de esta
sentencia es totalmente similar a su análoga en el lenguaje C. Su sintaxis general es:

for (inicialización; condición; modificación)


{
sentencias a ejecutar mientras la condición es cierta
}

Como puede apreciarse, en la sintaxis de construcción del bucle intervienen cuatro


elementos diferenciados:

— Inicialización: las sentencias que aparezcan en esta parte se ejecutarán una


sola vez al principio del bucle. Lo habitual es situar en esta parte las
sentencias de inicialización de las variables que actúen de contadores de
iteraciones del bucle. En el caso de querer indicar varias sentencias de
inicialización, estas deberán separarse por comas.

— Condición: expresión lógica que se evaluará al comienzo de cada una de


las iteraciones, si esta expresión se evalúa como cierta entonces la iteración
se realiza, en caso contrario finaliza la ejecución del bucle.

— Modificación: sentencias que se ejecutan al finalizar cada una de las


iteraciones del bucle. Lo normal es que estas sentencias modifiquen los
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

valores de las variables que actúan de contadores del bucle de manera que
la condición de continuación del bucle pueda verse igualmente alterada. Al
igual que ocurría en la parte de inicialización, si se necesitan varias
sentencias de modificación, estas deben darse separadas por comas.

— Sentencias: bloque de sentencias a ejecutar en cada iteración del bucle. En


el caso de que este bloque esté constituido por una única sentencia, las
llaves que lo delimitan podrían suprimirse.

Para la sentencia for existe también una sintaxis alternativa:

for (inicialización; condición; modificación) :


sentencias a ejecutar mientras la condición es cierta
endfor;

179
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Ejemplo 6.25:
A continuación se muestra la construcción de un sencillo bucle que calcula la suma
de los 100 primeros números naturales: 1+2+3+4+...+99+100:

$suma = 0;
for ($n=1; $n<=100 ; $n++){
$suma = $suma + $n;
}

En este caso se utiliza una variable $suma en la que se irán acumulando las sumas
parciales y una variable $n que actuará de contador en el bucle. La variable
contador se inicializa con el valor 1, y mientras su valor sea menor o igual que
100 se seguirá ejecutando el bucle. Al finalizar cada iteración, la variable contador
se incrementa en una unidad. El cuerpo del bucle lo único que hace es sumar el
valor de la variable contador a la suma parcial acumulada hasta el momento.
A la hora de utilizar la sentencia for PHP admite bastante flexibilidad; como
prueba de ello se muestra a continuación la manera de escribir la estructura
iterativa anterior de una forma mucho más compacta:

for ($suma=0,$n=1; $n<=100 ; $n++, $suma+=$n);

En este caso, tanto la variable contador como la que acumula las sumas parciales,
toman sus valores iniciales en la parte de inicialización del bucle; obsérvese cómo
ambas inicializaciones se separan con una coma. De la misma manera, la variable
$suma actualiza su valor en cada una de las iteraciones en la parte de modificación
de variables del bucle junto con el incremento a la variable contador. Finalmente,
obsérvese que en este caso el cuerpo del bucle no tiene ninguna sentencia, por lo
que se finaliza con un punto y coma.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

En la sentencia for es opcional no solo la presencia del cuerpo del bucle sino
también cualquiera de las otras tres partes que la forman. En el caso de que no se
indique ninguna condición, PHP asume que esta es siempre cierta, con lo que se
estaría definiendo un bucle infinito. Evidentemente, un bucle infinito no tiene
ninguna utilidad práctica a no ser que dentro del cuerpo del bucle se utilice la
sentencia break para forzar la salida del mismo.

Aunque resulte sorprendente, la sentencia:

for( ; ; );

180
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

es sintácticamente correcta, pero evidentemente no tiene ningún interés, a no ser


que se desee bloquear el programa con un bucle infinito que no produce ninguna
acción en cada una de sus iteraciones.

Ejemplo 6.26:
Otro ejemplo de bucle infinito sería:

for($n=1; ;$n++)
print $n;

En este caso se construye un bucle que escribe los números 1,2,3,4,.... y así
indefinidamente, ya que no hay condición de finalización.

PHP dispone de un mecanismo de seguridad para evitar situaciones como las que
se producen en los bucles anteriores; se trata de limitar el tiempo máximo de
ejecución de un script, de manera que cuando se entra en un bucle infinito y se
supera ese límite, automáticamente se aborta la ejecución y se genera el mensaje de
error:

Fatal error: Maximum execution time of 30 seconds exceeded in … on line …

Por defecto el tiempo máximo de ejecución de un script está fijado en 30


segundos; de todas formas ese tiempo puede ser modificado en el fichero
NOTA de inicialización de PHP (php.ini) asignando el tiempo deseado al
parámetro max_execution_time
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

A continuación se presentan algunos ejemplos adicionales de construcción de


bucles.

Ejemplo 6.27:
Uno de los ejemplos "clásicos" de estructuras iterativas es el cálculo del factorial
de un número (n!=1*2*3*...*(n-1)*n). La implementación de este bucle
sería:

$fact = 1;
for ($i = 2; $i <= $n; $i++ ) {
$fact *= $i;
}

181
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Al igual que en el caso del bucle que efectuaba la suma de los números menores o
iguales que 100, el bucle anterior puede escribirse de una forma más compacta:

for ($fact=1, $i=2; $i <= $n; $fact*=$i, $i++);

Ejemplo 6.28:
Supóngase que se desea construir, de forma aleatoria, una contraseña formada por
8 letras. Se puede utilizar la función rand() para generar un número aleatorio
entre 97 y 122 (códigos ASCII correspondientes a las letras minúsculas) y la
función chr() para obtener el carácter asociado a un código ASCII dado.

$codigo="";
for($i=1;$i<=8;$i++) {
$letra = chr(rand(97,122));
$codigo = $codigo.$letra;
}
print("Contraseña asignada es:<B>$codigo</B>");

Ejemplo 6.29:
En los bucles es posible utilizar más de una variable que actúe como contador, por
ejemplo:

for ($i = 1,$j = 2; $i <= 10; $i++, $j += 2)


{
echo $i*$j . "--";
}
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Como resultado de este bucle se generaría la siguiente secuencia de números:

2--8--18--32--50--72--98--128--162--200--

Como puede apreciarse, en cada iteración se escribe el resultado del producto de


dos variables ($i y $j); la primera se irá incrementando de uno en uno hasta llegar
a su valor máximo (10) y la segunda lo hará de dos en dos.

También es posible generar bucles anidados, es decir, bucles cuyas iteraciones


ejecutan un nuevo bucle.

Ejemplo 6.30:
Supóngase que se desea generar en la página web la tabla de multiplicar del 1 al
10; esto puede hacerse de una manera muy sencilla con dos bucles for anidados:

182
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

for ($i = 1; $i <= 10; $i++) {


print("<B>Tabla de multiplicar del $i <BR></B>");
for ($j = 1; $j <= 10; $j++) {
print("$i * $j =" . $i*$j . "<BR>");
}
}

La salida de este bucle sería:

Tabla de multiplicar del 1


1 * 1 =1
1 * 2 =2
1 * 3 =3
1 * 4 =4
1 * 5 =5
1 * 6 =6
1 * 7 =7
1 * 8 =8
1 * 9 =9
1 * 10 =10
Tabla de multiplicar del 2
2 * 1 =2
2 * 2 =4
............

El bucle anterior podría ser modificado para que la salida generada correspondiera
realmente a un formato de tabla en HTML. En este caso, el propio bucle debería
encargarse de ir generando las diferentes etiquetas de construcción de tablas
HTML en los lugares adecuados:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

print("<TABLE BORDER>\n");
// Generación de la fila de cabecera
print("<TR ALIGN=CENTER>\n <TH> * </TH>");
for ($i = 1; $i <= 10; $i++)
print("<TH> $i </TH>");
print("\n</TR>\n");
// Generación de las restantes filas
for ($i = 1; $i <= 10; $i++) {
print("<TR ALIGN=CENTER> <TH>$i</TH> ");
for ($j = 1; $j <= 10; $j++) {
print("<TD>" . $i*$j . "</TD>");
}
print("\n</TR>\n");
}
print('</TABLE>');

183
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Ahora sí, el resultado de la ejecución del script sería la tabla:

*  1  2  3  4  5  6  7  8  9  10 
1 1 2 3 4 5 6 7 8 9 10
2 2 4 6 8 10 12 14 16 18 20
3 3 6 9 12 15 18 21 24 27 30
4 4 8 12 16 20 24 28 32 36 40
5 5 10 15 20 25 30 35 40 45 50
6 6 12 18 24 30 36 42 48 54 60
7 7 14 21 28 35 42 49 56 63 70
8 8 16 24 32 40 48 56 64 72 80
9 9 18 27 36 45 54 63 72 81 90
10 10 20 30 40 50 60 70 80 90 100

En ocasiones los bucles for pueden ser utilizados para generar dinámicamente
campos de formularios.

Ejemplo 6.31:
A continuación puede verse la definición de un formulario HTML dentro del cuál
se incluye un script PHP con sendos bucles que generan las opciones de dos
controles de tipo lista:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

<FORM NAME=FORMHORA>
<?php
print("HORAS: <SELECT HORA>");
for($i=0; $i<=23; $i++)
print("<OPTION VALUE=$i> $i");
print("</SELECT>");
print("<BR>MINUTOS: <SELECT MINUTOS>");
for($i=0; $i<=55; $i+=5)
print("<OPTION VALUE=$i> $i");
print("</SELECT>");
?>
</FORM>

184
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

Ejemplo 6.32:
Como último ejemplo de construcción de bucles con la sentencia for se presenta a
continuación un programa más complejo que es capaz de generar el calendario de
un mes concreto. Se asume que las variables $mes y $anno contienen los valores
del mes y año cuyo calendario se quiere generar. El código del programa sería:

$diasemana=date("w",mktime(0,0,0,$mes,1,$anno));
if($diasemana==0) $diasemana=7;
switch($mes) {
case 1:
$nd=31; $nombremes="Enero";
break;
case 2:
if((($anno%4==0) and ($anno%100!=0)) or
($anno%400==0))
$nd=29;
else
$nd=28;
$nombremes="Febrero";
break;
case 3:
$nd=31; $nombremes="Marzo";
break;
case 4:
$nd=30; $nombremes="Abril";
break;
case 5:
$nd=31; $nombremes="Mayo";
break;
case 6:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

$nd=30; $nombremes="Junio";
break;
case 7:
$nd=31; $nombremes="Julio";
break;
case 8:
$nd=31; $nombremes="Agosto";
break;
case 9:
$nd=30; $nombremes="Septiembre";
break;
case 10:
$nd=31; $nombremes="Octubre";
break;
case 11:
$nd=30; $nombremes="Noviembre";

185
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

break;
case 12:
$nd=31; $nombremes="Diciembre";
break;
}
// generación del calendario en una tabla HTML
print("<B>$nombremes $anno </B>");
print("<TABLE BORDER ALING=CENTER>");
print("<TR>
<TH>Lu</TH><TH>Ma</TH><TH>Mi</TH><TH>Ju</TH>");
print("<TH>Vi</TH><TH>Sa</TH><TH>Do</TH> </TR>");
print("<TR>");
$aux=1;
// genera celdas en blanco hasta llegar el día
// de comienzo del mes
while($aux<$diasemana) {
print("<TD>&nbsp;</TD>");
$aux++;
}
for($i=1;$i<=$nd;$i++) {
if(($diasemana==6) or ($diasemana==7))
print("<TD BGCOLOR=#00FFFF>$i</TD>");
else
print("<TD>$i</TD>");
$diasemana++;
if($diasemana==8) {
// comienza nueva semana
print("</TR>");
print("<TR>");
$diasemana=1;
}
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

}
print("</TR></TABLE>");

El modelo de calendario que genera el programa anterior es:

Julio 2004
Lu Ma Mi Ju Vi Sa Do
   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 29 30 31

186
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

Como puede apreciarse, el primer dato que se necesita es saber en qué día de la
semana comienza el mes, para ello se utiliza la combinación de las funciones
date() y mktime(), ambas serán estudiadas con detalle en el Capítulo 9; de
momento, únicamente indicar que la función mktime() permite generar un
instante de tiempo, en este caso el instante que se genera corresponde a las 0 horas,
0 minutos, 0 segundos del día 1 del mes y año dados. Con ese instante de tiempo la
función date() es capaz de devolver un valor numérico de 0 a 6 indicando el día
de la semana (0 corresponde al domingo). Para que el programa quede más claro,
se asigna el valor 7 a los domingos.

El siguiente paso es la definición de una estructura condicional para determinar el


número de días del mes y generar una cadena de caracteres con el nombre del mes
correspondiente. Tras esa estructura condicional se incluyen las estructuras
iterativas que generan las diferentes celdas de la tabla que mostrarán los días del
calendario. Obsérvese que las celdas correspondientes a los fines de semana
tendrán un color de fondo.

6.3.4. SENTENCIA FOREACH


La última de las sentencias de construcción de bucles con las que cuenta el
lenguaje PHP es la sentencia foreach. Se trata de una sentencia que fue
incorporada en la versión PHP 4, ya que hasta entonces no existía. La sentencia
foreach permite recorrer todos los elementos de un array de una forma muy
simple. Los arrays son estructuras de datos que permiten almacenar, bajo un
nombre común, una serie de valores a los que se puede acceder a través de un
índice numérico o palabra clave; en el Capítulo 8 se estudiarán estas estructuras de
datos y se presentarán con más detalle las estructuras iterativas que permiten
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

recorrer todos sus elementos.

Se incluye a continuación la sintaxis básica de la sentencia foreach y un sencillo


ejemplo de aplicación:

foreach (nombre_array as nombre_variable)


{
sentencias a ejecutar para cada elemento del array
}

Como puede apreciarse, debe indicarse el nombre del array en el que están
almacenados todos los datos y el nombre de una variable. En la iteración inicial
esta variable contendrá el valor del primer elemento del array y en las sucesivas
iteraciones del bucle esta variable hará referencia a los siguientes elementos.

187
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Ejemplo 6.33:
Las siguientes sentencias

$lista = array ("Luis","Pedro","Ana","Susana");


foreach ($lista as $nombre)
{
print "Bienvenido, $nombre <BR>";
}

generarían los siguientes mensajes en la página:


Bienvenido, Luis
Bienvenido, Pedro
Bienvenido, Ana
Bienvenido, Susana

6.3.5. SENTENCIAS BREAK Y CONTINUE


Las sentencias break y continue permiten alterar la ejecución prevista de una
estructura iterativa; la primera de ellas permite cancelar completamente la
ejecución del bucle y la segunda permite cancelar una de las iteraciones y pasar
directamente a la siguiente.

La sentencia break, además de permitir abandonar una estructura iterativa se


utiliza también dentro de las estructuras condicionales switch. En el caso de su
uso dentro de bucles, break admite un parámetro opcional que determina el
número de estructuras de control de las que hay que salir, el valor por defecto de
este parámetro es 1.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Ejemplo 6.34:
Si se desea construir un bucle que escriba todos los números pares menores o
iguales que 100, se podría utilizar una sentencia for como la siguiente:

for ($i = 2; $i <= 100; $i+=2) {


print $i;
}

pero también es posible construir un bucle con condición de finalización vacía en


el que se fuerce la salida desde dentro del cuerpo del bucle.

for ($i = 2; ; $i+=2) {


if ($i > 100)

188
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

break;
print $i;
}

En esta segunda opción es obligado utilizar la sentencia break, ya que de no ser


así se entraría en un bucle infinito.

En el caso de estructuras de control anidadas, se puede utilizar el parámetro


opcional de la sentencia break para indicar de cuántas estructuras se quiere salir.

Ejemplo 6.35:
Considérense los siguientes bucles anidados:

for($i=1;$i<=10;$i++) {
$j=10;
print "<BR> <B>$i</B>: ";
while ($j>0) {
if ($i>$j) {
break;
}
else {
print "$j ";
}
$j--;
}
}

En este caso, el bucle interno se ejecutaría en principio mientras la variable $j


tome un valor positivo, pero dentro del cuerpo de ese bucle se fuerza la salida
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

cuando el valor de $i supere a $j. Al utilizarse la sentencia break sin ningún


parámetro, se asume el valor por defecto (1) lo que implica que se sale solamente
del bucle interior pero no del bucle for; en definitiva, la salida producida por las
sentencias anteriores sería:

1: 10 9 8 7 6 5 4 3 2 1
2: 10 9 8 7 6 5 4 3 2
3: 10 9 8 7 6 5 4 3
4: 10 9 8 7 6 5 4
5: 10 9 8 7 6 5
6: 10 9 8 7 6
7: 10 9 8 7
8: 10 9 8
9: 10 9
10: 10

189
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

En cambio, si se utiliza la sentencia break pero con un valor de 2 para su


parámetro opcional, cuando se verifique por primera vez la condición $i>$j se
producirá la salida y terminación de los dos bucles anidados.

La salida producida por la construcción siguiente:

for($i=1;$i<=10;$i++) {
$j=10;
print "<BR> <B>$i</B>: ";
while ($j>0) {
if ($i>$j) {
break 2;
}
else {
print "$j ";
}
$j--;
}
}

sería:
1: 10 9 8 7 6 5 4 3 2 1
2: 10 9 8 7 6 5 4 3 2

Ejemplo 6.36:
En el siguiente programa puede verse otro ejemplo de salida de dos estructuras de
control anidadas, en este caso un bucle y una estructura condicional:

$n = 10;
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

while (--$n) {
switch ($n) {
case 1:case 3:case 5:case 7:case 9:
print "$n (impar) ";
break;
case 2:case 4:case 6:case 8:
print "$n (par) ";
break;
case 0:
break 2;
}
}

En este caso las sentencias break dentro de los primeros casos de la estructura
condicional tienen por objeto únicamente salir de esa estructura; mientras que el

190
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
SENTENCIAS DE CONTROL

break situado dentro del último caso fuerza la salida de las dos estructuras
anidadas (la estructura condicional y el bucle). La salida producida por las
sentencias anteriores sería:

9 (impar) 8 (par) 7 (impar) 6 (par) 5 (impar) 4 (par) 3 (impar) 2 (par) 1 (impar)

La sentencia continue, por su parte, permite abandonar una iteración del bucle
pero sin omitir el resto de iteraciones. Cuando el intérprete de PHP se encuentra
una sentencia continue, ignora las posibles sentencias que queden por ejecutar
en la iteración actual del bucle y pasa directamente a las sentencias de la siguiente
iteración.

Ejemplo 6.37:
Una forma de calcular la suma de los números pares menores o iguales que 100
sería:

$suma = 0;
for($n=1;$n<=100;$n++) {
if($n%2 != 0) // el número es impar
continue;
$suma = $suma + $n;
}

En este caso, se construye un bucle que recorre todos los números menores o
iguales que 100, tanto los pares como los impares; en cada iteración se comprueba
si el número es impar, y de ser así se abandona esa iteración y se pasa a la
siguiente.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Por supuesto, este ejemplo tiene por único objeto mostrar el funcionamiento de la
sentencia continue, ya que el cálculo de la suma se podría realizar de una forma
más optimizada con un bucle que recorra solamente los números pares. De hecho,
la siguiente sentencia sería suficiente para conseguir el mismo efecto:

for($suma=0,$n=2;$n<=100;$n+=2);

Al igual que la sentencia break, la sentencia continue admite un parámetro


opcional que determina, en el caso de estructuras anidadas, cuántos niveles deben
ser saltados para continuar la ejecución.

191
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Ejemplo 6.38:
Los siguientes bucles anidados generan todos los pares de números formados por
combinaciones de los dígitos del 1 al 9, siendo además los dos componentes del par
diferentes. Obsérvese cómo cuando en la iteración interna se comprueba que las
dos componentes son iguales, se abandona dicha iteración

for($i=1;$i<10;$i++)
for($j=1;$j<10;$j++)
if($i == $j)
continue;
else
print "($i,$j) ";

El resultado generado por la estructura anterior es:

(1,2) (1,3) (1,4) (1,5) (1,6) (1,7) (1,8) (1,9) (2,1) (2,3) (2,4) (2,5) (2,6) (2,7) (2,8)
(2,9) (3,1) (3,2) (3,4) (3,5) (3,6) (3,7) (3,8) (3,9) (4,1) (4,2) (4,3) (4,5) (4,6) (4,7)
(4,8) (4,9) (5,1) (5,2) (5,3) (5,4) (5,6) (5,7) (5,8) (5,9) (6,1) (6,2) (6,3) (6,4) (6,5)
(6,7) (6,8) (6,9) (7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,8) (7,9) (8,1) (8,2) (8,3) (8,4)
(8,5) (8,6) (8,7) (8,9) (9,1) (9,2) (9,3) (9,4) (9,5) (9,6) (9,7) (9,8)

En cambio, si se utiliza la sentencia continue 2, cuando se observa que las dos


componentes son iguales se pasa a la siguiente iteración pero no del bucle interno
sino del externo (segundo nivel)

for($i=1;$i<10;$i++)
for($j=1;$j<10;$j++)
if($i == $j)
continue 2;
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

else
print "($i,$j) ";

El resultado sería:

(2,1) (3,1) (3,2) (4,1) (4,2) (4,3) (5,1) (5,2) (5,3) (5,4) (6,1) (6,2) (6,3) (6,4) (6,5)
(7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (8,1) (8,2) (8,3) (8,4) (8,5) (8,6) (8,7) (9,1) (9,2)
(9,3) (9,4) (9,5) (9,6) (9,7) (9,8)

192
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
DEFINICIÓN DE
FUNCIONES

7.1. ¿CÓMO SE DEFINEN FUNCIONES EN PHP?


PHP permite al programador la creación de sus propias funciones, ahorrando
tiempo y esfuerzo y facilitando un mejor diseño de los programas
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

implementados. El programador puede crearse sus propias librerías de funciones o


utilizar las innumerables funciones implementadas por la comunidad de
desarrolladores en PHP. En este capítulo se aborda el proceso de definición y
creación de funciones para su posterior utilización dentro de un programa PHP.

La sintaxis que debe adoptarse a la hora de definir una función en PHP sigue el
siguiente esquema general:

function NombreFuncion (argumentos) {


sentencias de definición
return ValorDevuelto;
}

193
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Como puede apreciarse, toda definición de función comienza con la palabra


reservada function seguida del nombre asignado, la lista de argumentos y el
bloque de definición de la función.

En los nombres de las funciones no se distingue entre mayúsculas y minúsculas,


aunque siempre es aconsejable efectuar la llamada a una función tal y como ha sido
definida. Respecto a los argumentos, estos son unos parámetros formales que
vienen representados por variables. Conviene recordar que en PHP no se declaran
tipos para las variables, por tanto en los argumentos de la función tampoco es
necesario indicar tipo alguno. Es posible definir funciones sin argumentos, en este
caso, a continuación del nombre deberían colocarse paréntesis vacíos:

function NombreFuncion()

La sentencia return permite que la función devuelva un valor de retorno. Una vez
ejecutada esa sentencia se abandona la función, sin ejecutar cualquier sentencia
posterior que se encuentre en el cuerpo de la misma. El valor devuelto puede ser una
cadena de caracteres, un valor numérico, un valor booleano, un array,... Este valor será
recogido en una variable a la hora de efectuar la llamada a la función o utilizado
directamente en alguna otra sentencia. Debe destacarse que a la hora de definir una
función, no es indispensable que esta devuelva valores; en este sentido en PHP no hay
distinción sintáctica entre lo que en otros lenguajes son funciones y procedimientos.

Se muestran a continuación los primeros ejemplos de definición de funciones en PHP.

Ejemplo 7.1:
En este primer caso, se define una función que calcula la suma de sus dos
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

argumentos numéricos. La sentencia return devuelve el resultado:

function Suma($x,$y) {
return ($x+$y);
}

Ejemplo 7.2:
La siguiente función no devuelve ningún valor, simplemente imprime en pantalla
una serie de cadenas de caracteres a modo de saludo:

function Saluda() {
print("Bienvenido ");
print("¿Cómo estás?");
}

194
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
DEFINICIÓN DE FUNCIONES

Ejemplo 7.3:
Avanzando un paso más se muestra cómo definir una función que calcula el
factorial de un número dado:

function factorial ($n) {


if ($n < 0 ) {
return "¡Solo se admiten valores positivos!";
}
else if($n==0)
return 1;
else {
$aux = 1;
for ($i = 2; $i <= $n; $i++) {
$aux = $aux * $i;
}
return $aux;
}
}

En este caso se implementa el proceso iterativo de cálculo del factorial de un número


(n! = 1*2*3*...*n). Además puede observarse que el valor devuelto por la función
puede ser de tipo diferente según determinadas condiciones, en el ejemplo la función
devuelve una cadena de caracteres con un mensaje de error cuando $n es menor que 0,
y un número entero en otro caso.

Ejemplo 7.4:
En este ejemplo se programa una función que genera un array a partir de dos
valores numéricos dados. El primer elemento es el menor valor de ambos. A partir
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

de él se generan los siguientes elementos sumando una unidad al anterior hasta


llegar al segundo de los valores dados. Los arrays serán estudiados en profundidad
en el capítulo siguiente.

function GeneraArray($min,$max) {
$x = array();
$d = $min;
while ($d<=$max){
$x[]=$d;
$d++;
}
return $x;
}

195
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

En la definición de funciones se admite la recursividad, es decir, se permite la


llamada a una función dentro de su propia definición. Un ejemplo clásico que
ilustra este concepto es de nuevo la función factorial de un número natural. De
hecho, el factorial de un natural n se puede definir como:

n! = n* (n-1)!

Por tanto, la definición de la función factorial del Ejemplo 7.3 se podría


condensar en menos líneas de código de la siguiente manera:

function factorial ($n) {


if ($n < 0 ) {
return "¡Solo se admiten valores positivos!";
}
else if($n==0)
return 1;
else{
$aux = $n*factorial($n-1);
return $aux;
}
}

De todas formas conviene advertir que el uso de recursividad en la definición de


funciones hace que estas requieran de más memoria para su ejecución y resulten en
ocasiones más lentas que sus funciones iterativas equivalentes.

7.2. LLAMADA A LAS FUNCIONES


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Una vez definida una función, ¿cómo acceder a ella?, ¿cómo utilizarla cuando se
necesite a lo largo del programa? Se deben tener en cuenta los siguientes puntos:

— La función debe encontrarse definida antes del lugar en el que se efectuará la


llamada, a no ser que el servidor web trabaje con las versiones PHP 4 o 5. En
ese caso, la llamada a la función puede realizarse con anterioridad a su
definición. No obstante, es práctica habitual y recomendable definir las
funciones incluso antes de cualquier código HTML, por ejemplo, colocar los
scripts que las definen antes del comando <HTML> o dentro del encabezado del
documento.
— En la llamada, los argumentos, en el caso de que existan, deben ser pasados en
el mismo orden en el que aparecen en la definición. Como argumentos pueden
pasarse variables, valores o expresiones. Los valores numéricos pueden ser

196
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
DEFINICIÓN DE FUNCIONES

escritos directamente o entrecomillados. En el caso de funciones que no


reciban argumentos, en la llamada deben colocarse los paréntesis vacíos.
— Si se pasan menos argumentos que los que tiene la función en su definición, los
últimos argumentos se asumirán como nulos, la función ejecutará las
instrucciones pero se generarán mensajes de aviso (warnings).
— Si la función devuelve un valor, este puede ser asignado a una variable en la
llamada o utilizado directamente en otra expresión.

Ejemplo 7.5:
Dada la función:

function Suma($x,$y) {
return ($x+$y);
}

las siguientes llamadas son todas ellas válidas:

$x=2;
$y=3;
$z=Suma($x,$y);

$z=Suma(2,3);

$x=2;
echo SUMA($x,3);

$z=Suma("2","3");
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

$z=suma((2+3)*5,4);

echo suma(suma(2,3)*5,4);

Ejemplo 7.6:
La siguiente página muestra la generación de un array con ayuda de la función
GeneraArray() definida en el Ejemplo 7.4. Como puede observarse, el código
de la página incorpora dos scripts PHP diferentes, el primero, situado antes del
código HTML, define la función; mientras que en el segundo es donde se realiza la
llamada a la misma.

<?PHP
function GeneraArray($min,$max) {

197
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

$x = array();
$d = $min;
while ($d<=$max){
$x[]=$d;
$d++;
}
return $x;
}
?>

<HTML>
<HEAD>
<TITLE>Generación de un array</TITLE>
</HEAD>
<BODY>
<?PHP
print "<PRE>";
print_r(GeneraArray(3,10));
print "</PRE>";?>
</BODY>
</HTML>

La salida de este programa resulta ser.

Array
(
[0] => 3
[1] => 4
[2] => 5
[3] => 6
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

[4] => 7
[5] => 8
[6] => 9
[7] => 10
)

En este ejemplo se ha utilizado la función print_r() que permite visualizar los


contenidos de variables o expresiones de cualquier tipo. Si estas variables son
números o cadenas de caracteres, la función print_r() produce exactamente el
mismo efecto que la función print(); pero en el caso de arrays u objetos,
print_r() permite visualizar todas sus componentes de una forma clara.

198
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
DEFINICIÓN DE FUNCIONES

7.3. ARGUMENTOS DE UNA FUNCIÓN

7.3.1. ARGUMENTOS OPCIONALES


En PHP todos los argumentos de las funciones pueden ser considerados opcionales,
de manera que a la hora de realizar la llamada a una función, pueden pasarse un
número de argumentos distinto del que acepta la función. Si se pasan menos
argumentos de los esperados, los últimos se asumirá que tienen el valor nulo. En el
caso de pasarse más argumentos de los esperados, los que sobran pueden ser
ignorados. En cualquiera de los dos casos la llamada y ejecución de la función
puede realizarse con normalidad.

Ejemplo 7.7:
Considérese una función que reciba tres argumentos correspondientes a una
cantidad de horas, minutos y segundos, y devuelva el número total de segundos
equivalentes a dicho periodo. A continuación puede verse la definición de esa
función y tres llamadas a la misma con diferente número de argumentos.

<?PHP
function Cuenta_segundos($horas,$minutos,$segundos) {
return (3600*$horas + 60*$minutos + $segundos);
}
?>
<HTML>
<HEAD>
<TITLE>Generación de un array</TITLE>
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

</HEAD>
<BODY>
<?PHP
$h=2; $m=15; $s=30;
$ss = Cuenta_segundos($h,$m,$s);
print "$h horas, $m minutos y $s segundos
son $ss segundos <BR>";
$h=3; $m=20;
$ss = Cuenta_segundos($h,$m);
print "$h horas y $m minutos son $ss segundos <BR>";
$h=5;
$ss = Cuenta_segundos($h);
print "$h horas son $ss segundos <BR>";
?>
</BODY>
</HTML>

199
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

La salida generada por el programa sería:

2 horas, 15 minutos y 30 segundos son 8130 segundos

Warning: Missing argument 3 for cuenta_segundos() in C:\\www\~scp.php


on line 2
3 horas y 20 minutos son 12000 segundos

Warning: Missing argument 2 for cuenta_segundos() in C:\\www\~scp.php


on line 2
Warning: Missing argument 3 for cuenta_segundos() in C:\\www\~scp.php
on line 2
5 horas son 18000 segundos

Como puede apreciarse, en la primera llamada se pasan los tres argumentos,


mientras que en las dos llamadas restantes se pasan las horas y los minutos, y
únicamente las horas, respectivamente. En estos dos casos los argumentos que no
son pasados tomarán el valor 0 y la ejecución de la función podrá realizarse con
normalidad. Sin embargo, como puede apreciarse, se generan unos mensajes de
aviso notificando el hecho de recibirse menos argumentos de los previstos.

Puede configurarse el intérprete de PHP para que los avisos en tiempo


de ejecución (warnings) no sean presentados en la propia página web,
evitando situaciones como la del ejemplo anterior, en la que a pesar de
NOTA esos mensajes de aviso, el programa se ejecuta correctamente. Dentro
del fichero de inicialización php.ini se debe configurar el parámetro
error_reporting para indicar al intérprete qué tipo de errores
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

debe mostrar en la página. Por ejemplo, si se realiza en ese fichero la


asignación: error_reporting = E_ALL & ~E_WARNING
PHP mostraría en la página los mensajes correspondientes a todos los
errores salvo los errores no graves en tiempo de ejecución (warnings).

7.3.2. ARGUMENTOS CON VALORES POR DEFECTO


Al definir funciones pueden darse valores por defecto para argumentos, de tal
forma que si un argumento no está presente en la llamada, se le asigna ese valor
por defecto en lugar de tomar el valor nulo. Para indicar un valor por defecto basta
asignar dicho valor con el signo "=" en la lista de argumentos de la cabecera de la
función. Si la función tiene argumentos que no llevan valor por defecto y otros que
sí lo llevan, estos últimos deben estar situados al final en la lista de argumentos de
la función.

200
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
DEFINICIÓN DE FUNCIONES

Ejemplo 7.8:
A continuación se define una función que crea enlaces en una página web, a partir
de dos argumentos: el texto del enlace y la dirección URL de destino. A este
segundo argumento se le asignará un valor por defecto:

function CrearEnlace($texto,$url="http://www.cinemas.es")
{
echo "<a href=$url>$texto</a>";
}

Al llamar a la función anterior se podrían indicar los dos argumentos o únicamente


el primero, tomando en este caso el segundo su valor por defecto. Llamadas válidas
a esta función serían:

CrearEnlace("Página web de Cinem@s");


CrearEnlace("Disney","http://www.disney.es");

Por supuesto, todos los argumentos de la función pueden tomar valores por
defecto:

function CrearEnlace($texto="Pulse aquí",


$url="http://www.cinemas.es")
{
echo "<a href=$url>$texto</a>";
}

En este caso, una llamada podría ser simplemente:

CrearEnlace();
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

En este caso, los dos argumentos tomarían sus respectivos valores por defecto.

7.3.3. LISTAS DE ARGUMENTOS DE LONGITUD


VARIABLE
A partir de PHP 4 se admite que las funciones definidas por el usuario puedan
recibir listas de argumentos de longitud variable. En este caso, a la hora de definir
la función se puede dejar la lista de argumentos vacía y utilizar una serie de
funciones predefinidas para recuperar los argumentos que realmente han sido
pasados a la hora de efectuar la llamada a la función.

201
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

La primera de las funciones que puede ser utilizada es:

func_num_args()

que devuelve el número de argumentos que efectivamente han sido pasados.

Una vez que se sabe cuántos argumentos han sido pasados, es necesario también
disponer de algún mecanismo para recuperar los valores de los mismos. La
siguiente función permite recuperar el valor del argumento número n:

func_get_arg(n)

Debe tenerse en cuenta que la numeración de los argumentos comienza en 0, es


decir, para obtener el primer argumento habría que utilizar la sintaxis
func_get_arg(0). Si se llama a la función con un índice fuera del rango de
argumentos recibidos, esta genera un aviso (warning) y devolverá el valor
booleano falso.

Si lo que se quiere es recuperar todos los valores de los argumentos en una


estructura de datos y en una sola operación, puede usarse la función:

func_get_args()

que devuelve un array con todos los valores de los argumentos.

Ejemplo 7.9:
A continuación se define una función que calcula la suma de los valores de todos
sus argumentos. Como puede observarse, en la cabecera de la definición no se
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

declara ningún argumento y estos son recuperados en el cuerpo de la propia


función.

function suma() {
$n = func_num_args();
$aux = 0;
for ($i=0;$i<$n;$i++)
$aux += func_get_arg($i);
return $aux;
}

A la hora de efectuar la llamada a esta función, pueden ser pasados tantos


argumentos como se desee. Por ejemplo, las sentencias

print suma(2,5,6) . "<BR>";

202
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
DEFINICIÓN DE FUNCIONES

print suma(1,5,7,2) . "<BR>";


print suma() . "<BR>";

generarían como resultado:

13
15
0

7.3.4. PASO DE ARGUMENTOS POR VALOR O POR


REFERENCIA
A la hora de efectuar la llamada a una función, los argumentos pueden ser pasados
por valor o por referencia. En el primer caso, lo que se pasa realmente es una copia
del correspondiente valor para que la función lo reciba y realice con él las
correspondientes operaciones. En el segundo caso, en cambio, cuando se pasa una
variable como argumento, no se pasa a la función una copia de su valor sino la
dirección de memoria donde se encuentra dicha variable. De esta forma la función
puede acceder directamente a esa zona de memoria y leer o modificar el valor de la
variable.

Antes de analizar las diferencias entre el paso de argumentos por valor y por
referencia, conviene entender ambos conceptos pero aplicados al caso de la
asignación de variables.

Asignar a una variable dada un valor por referencia no supone almacenar un valor
concreto, sino una dirección de memoria que remite a otra variable. Cualquier
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

modificación sobre esta segunda variable se verá reflejada en la variables asignada


por referencia.

Si se desea asignar por referencia a una variable $b la información de otra variable


$a debería utilizarse el operador de dirección (&):

$b = &$a;

El siguiente ejemplo muestra las diferencias en el resultado final entre las dos
formas de inicialización de variables, la directa, o por valor, y la asignación por
referencia.

203
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Ejemplo 7.10:
Dadas las sentencias de asignación siguientes:

$a = "¡Hola!";
$b = $a;
$a = "¡Adiós!";
echo "$b"; //Se imprime "¡Hola!", el valor inicial de $a

cuando se da la orden de escribir el valor de $b, lo que realmente se escribe es el valor


inicial de $a, ya que, en el momento de realizar la asignación a $b, se realiza una
asignación por valor, es decir, se asigna a $b una copia del valor que en ese momento tenía
$a. Cualquier modificación posterior de la variable $a no tiene ningún efecto sobre la
asignación previa.

En cambio, si la asignación a $b se realiza por referencia, $b en todo momento


estará apuntando a la posición de memoria de $a, con lo que las modificaciones
posteriores de $a tienen reflejo también en $b.

$a = "¡Hola!";
$b = &$a;
$a = "¡Adiós!";
echo "$b"; //Se imprime "¡Adiós!", el nuevo valor de $a

Se puede anular una asignación por referencia mediante la función unset():

$a = "¡Hola!";
$b = &$a;
unset($a);
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

$a = "¡Adiós!";
echo "$b"; //Se imprime "¡Hola!", el valor inicial de $a

En este caso, tras realizar la asignación por referencia a la variable $b, la variable
$a es destruida con la función unset(), quedando $b con el valor que hasta ese
momento tenía la variable destruida. Posteriormente, al hacer la última asignación,
la variable $a vuelve a ser creada pero ocupando una posición de memoria
diferente a la que tenía en principio, por lo que la referencia de $b no es
recuperada.

De forma similar al caso de las variables, pasar un argumento de una función por
referencia significa que lo que realmente se pasa es la dirección de memoria de una
variable y no su valor. Para indicar que un argumento es pasado por referencia, se
antepone, de nuevo, el signo "&" al nombre de la variable en la lista de argumentos

204
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
DEFINICIÓN DE FUNCIONES

de la función. Si los argumentos se pasan por referencia, cualquier modificación


que se haga dentro de la función tiene su efecto sobre la variable que se pasó.

Ejemplo 7.11:
En la siguiente función se pasan dos argumentos por valor ($x y $y) y otros dos
por referencia ($suma y $prod) para que la función guarde en estos dos últimos
el valor de la suma y del producto, respectivamente, de los dos primeros:

function Opera($x, $y, &$suma, &$prod)


{
$suma = $x+$y;
$prod = $x*$y;
}

A la hora de llamar a la función:

$a=3; $b=2;
Opera($a,$b,$s,$p);

// se puede acceder a las variables $s y $p


// desde fuera de la función
echo "Suma: $s Producto: $p";

Si en la definición de la función se hubiera prescindido del signo & en los dos


últimos argumentos, al llamarla se estaría trabajando no sobre las posiciones de
memoria de las dos variables sino sobre una copia de su valor (paso por valor).
Esto significa que al devolver el control del programa al punto en el que se efectuó
la llamada, las dos variables enviadas ($s y $p) no tendrían ningún valor asignado.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Ejemplo 7.12:
Para apreciar la diferencia entre ambas maneras de pasar los argumentos de una
función, se define a continuación una función que toma como argumento una
variable numérica y multiplica su valor por 20, pero implementando las dos
versiones: pasando el argumento por valor (función Fvalor()) y pasándolo por
referencia (función Frefer()).

function Fvalor($x){
$x *= 20;
}
function Frefer(&$x){
$x *= 20;
}

205
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Con las funciones anteriores, las sentencias

$z = 3;
Fvalor($z);
echo "$z";

escribirían en la página el valor 3, valor inicial de la variable $z y que no se ve


afectado por el cambio de valor del argumento dentro de la función, por ser pasado
por valor.

Por el contrario, si se pasa el argumento por referencia, al efectuar las sentencias:

$z = 3;
Frefer($z);
echo "$z";

escribiría en la página el valor 60, ya que al pasar el argumento por referencia, la


modificación que sufre dentro de la función se mantiene fuera de ella.

7.4. ÁMBITO DE LAS VARIABLES

7.4.1. VARIABLES LOCALES

Toda variable definida dentro de una función tiene un ámbito local a la misma; es
decir, únicamente podrá ser utilizada dentro de la propia función.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

Ejemplo 7.13:
Dada la función f(), en la que se define una variable local $titulo, cualquier
referencia a esa variable fuera de la función devolvería un valor nulo (variable no
definida). Así, con las siguientes sentencias no se imprimiría ningún mensaje:

function f() {
$titulo = "Mar adentro";
print $titulo;
}

print $titulo;

206
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
DEFINICIÓN DE FUNCIONES

7.4.2. VARIABLES GLOBALES


Por otra parte, una variable declarada fuera de una función tiene un ámbito global,
y no puede ser utilizada dentro de una función, a no ser que se declare
explícitamente su globalidad.

Ejemplo 7.14:
El siguiente programa tampoco escribiría ningún mensaje, ya que al hacer la
referencia a la variable $director dentro de la función, PHP buscará esa variable
localmente.

$director = "Amenábar"; // variable de ámbito global

function g()
{
print $director; // referencia a una variable local
}

g(); // llamada a la función

Puede observarse que el funcionamiento de PHP en este sentido es diferente al de


otros lenguajes como C, en los que cualquier variable global puede ser utilizada
directamente dentro de las funciones, a no ser que se oculten por una variable local
con el mismo nombre.

En PHP las variables globales deben ser declaradas como tal dentro de la función que
quiera utilizarlas, esta declaración se hace utilizando la palabra reservada global.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

No existe ningún límite al número de variables globales que pueden aceptar las
funciones.

Ejemplo 7.15:
Si se desea utilizar la variable $director dentro de la función g(), la
declaración debería hacerse de la siguiente manera:

$director = "Amenábar"; // variable de ámbito global

function g()
{
global $director; // declaración de variable global
print $director; // referencia a la variable global
}

207
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

Una segunda forma de acceder a las variables globales dentro de una función es
utilizar el array $GLOBALS, que siempre almacena todas las variables globales
definidas. Así, en la función anterior, también se podría acceder a la variable
$director utilizando la siguiente sintaxis:

function g()
{
print $GLOBALS["director"];
}

$GLOBALS es un array asociativo en el que para acceder a sus elementos se utiliza,


en lugar de un índice numérico, el propio nombre de la variable pero sin el signo $.
En el Capítulo 8 se estudiarán en detalle este tipo de arrays.

7.4.3. VARIABLES ESTÁTICAS


Otro aspecto importante relacionado con el ámbito de las variables es la posibilidad de
definir variables estáticas. Una variable estática tiene un ámbito local a la función en la
que se define pero no pierde su valor cuando se termina la ejecución de la misma. Es
decir, conserva el valor entre llamadas sucesivas a la función; en contra de lo que
ocurre con las variable locales, que pierden su valor una vez que la ejecución de la
función ha finalizado.

Ejemplo 7.16:
La siguiente función declara una variable estática, con valor inicial 0, y en cada
iteración la incrementa en una unidad y escribe su nuevo valor.
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

function h()
{
static $n = 0;
$n++;
print "$n ";
}

Para comprobar que realmente la variable no se destruye al salir de la función, se


podría implementar un bucle de llamadas sucesivas con el siguiente:

for($i=1;$i<=10;$i++)
h();

208
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
DEFINICIÓN DE FUNCIONES

Puede comprobarse que el bucle generaría el siguiente resultado:

1 2 3 4 5 6 7 8 9 10

Si la variable $n no hubiese sido declarada estática, en cada llamada a la función


se perdería el valor previo, inicializándose de nuevo en 0.

7.5. CLÁUSULAS INCLUDE Y REQUIRE


Al programar es bastante frecuente que unas mismas líneas de código o conjunto
de funciones se necesiten en varios documentos. Puede tratarse por ejemplo, de:

— Funciones de validaciones de datos.


— Funciones para mostrar cabeceras o pies de páginas.
— Código de configuración para acceso a una base de datos.
— Definición de determinados parámetros del programa.

En lugar de copiar el código, se puede optar por escribir el código correspondiente


en ficheros externos e incluirlos tantas veces como se quiera en otros ficheros
diferentes. Las cláusulas include y require permiten incluir y ejecutar el
contenido del fichero indicado en aquél que contiene la cláusula. De esta forma
pueden escribirse completas librerías de funciones y facilitar su portabilidad y
reusabilidad.

La sintaxis de las dos sentencias de inclusión es idéntica:


Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

include("fichero.php");

require("fichero.php");

La inclusión puede realizarse en cualquier punto del programa, incluso puede


depender del flujo de ejecución, por ejemplo, una inclusión dentro de un bloque
if.

El nombre del fichero a incluir puede estar incluso almacenado en una variable y
cambiar de valor durante la ejecución del programa. Además, en el caso de que el
fichero a incluir se encuentre en un directorio diferente del que incluye al fichero
que hace la llamada, el nombre del mismo debería ir acompañado de la ruta relativa
para localizarlo.

209
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
PHP Y MYSQL. TECNOLOGÍAS PARA EL DESARROLLO DE APLICACIONES WEB

La única diferencia entre include y require es que, en caso de no localizar el


fichero a incluir, require produce un “Error Fatal” y no ejecuta el resto del programa
ni continúa con la carga de la página. En cambio, con include, si el fichero no se
encuentra, se genera un aviso pero se sigue con la ejecución del resto del programa y
carga de la página.

Ejemplo 7.17:
A continuación se muestra el uso de la cláusula require para incluir en un
programa las asignaciones realizadas en el fichero de nombre definiciones.php. El
contenido de este podría ser:

<?php
$titulo = "Los increibles";
$director = "Brad Bird";
$genero = "aventuras";
?>

Si otro documento quiere incluir estas definiciones, debería hacerlo de la siguiente


manera:

<HTML>
<BODY>
<?php
require("definiciones.php");
echo "Nuestro próximo estreno: $titulo, ";
echo "película del genero $genero, ";
echo "dirigida por $director";
?>
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

</BODY>
</HTML>

Por supuesto, la inclusión puede tener lugar en cualquier punto, incluso dentro de
una función, tal como ocurre en el código siguiente:

function estreno(){
include("definiciones.php");
echo "Nuestro próximo estreno: $titulo, ";
echo "película del genero $genero, ";
echo "dirigida por $director";
}

En este último caso, al incluirse las definiciones dentro del cuerpo de la función,
las variables definidas pasarán a tener un ámbito local, y por tanto solo podrán ser

210
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.
DEFINICIÓN DE FUNCIONES

utilizadas dentro de esa función. Si se quiere acceder a cualquiera de las tres


variables definidas desde una línea de código externa a la función, se debería
indicar en la definición de la misma que dicha variable sea declarada global:

function estreno(){
global $titulo;
global $director;
global $genero;
include("definiciones.php");
echo "Nuestro próximo estreno: $titulo, ";
echo "película del genero $genero, ";
echo "dirigida por $director";
}

7.6. FUNCIONES VARIABLES


PHP soporta el concepto de funciones variables, lo que significa que el nombre de
una función puede estar almacenado en una variable, y por tanto, cambiar durante
la ejecución del programa. Cuando en un programa PHP una variable va seguida de
los paréntesis que se utilizan para dar valores a los argumentos de una función,
PHP automáticamente buscará una función cuyo nombre coincida con el valor de la
correspondiente variable y tratará de aplicarla.

Ejemplo 7.18:
Supóngase que se dispone de dos funciones diferentes que pueden realizar el
cálculo del precio total a pagar por un número $n de entradas a adquirir:
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.

function precio_normal($n) {
return ($n * 4.5);
}

function precio_reducido($n) {
return ($n * 3);
}

Como puede apreciarse, las dos funciones tienen nombres diferentes, una aplica un
precio de 4.5 á por entrada, mientras que para la otra el precio unitario es de 3.

En el fragmento de código que se incluye a continuación se utiliza una variable


$tarifa que guardará el nombre de la función concreta que se desea aplicar, y se
utiliza esa variable para hacer una llamada a dicha función.

211
Cobo, Á., Gómez, P., & Pérez, D. (2005). Php y mysql : Tecnologías para el desarrollo de aplicaciones web. Retrieved from http://ebookcentral.proquest.com
Created from unadsp on 2019-09-12 11:47:02.

Potrebbero piacerti anche