Internet Y La Programación de Ordenadores
Internet Y La Programación de Ordenadores
Internet Y La Programación de Ordenadores
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.
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.
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
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
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:
— 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.
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
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
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
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.
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
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.
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
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:
Traducción
if(x<0) 01101101110
return 1; 10111101000
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.
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
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.
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.
— ¿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
— 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
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
— 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
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
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.
— 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
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.
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:
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.
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.
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.
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.
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.
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.
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.
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)
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
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.
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.
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.
En este periodo la mayoría del software existente era compartido libremente entre
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.
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:
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
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.
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
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.
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.
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:
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
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.
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
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.
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
Artistic license
BSD license
MIT license
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
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
Las características genéricas de este tipo de licencias con respecto a las licencias de
software propietario son:
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.
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
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:
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
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
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
No comerciales
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
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
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
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.
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:
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
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.
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
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.
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
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
— Sourceforge (http://sourceforge.net/)
— Savannah (http://savannah.gnu.org/)
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
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.
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
— 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:
Financiero:
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.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:
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
2.6.2. INCONVENIENTES
Por supuesto no todo son ventajas, la utilización de este tipo de software puede
tener sus inconvenientes:
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
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.
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
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
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:
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:
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.
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.
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
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.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.
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
— 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.
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.
— 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.
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
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.
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
— 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
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.
<!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:
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
— 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:
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
¿ ¿ i ¡
Á Á á á
É É é é
Í Í í í
Ó Ó ó ó
Ú Ú ú ú
Ä Ä ä ä
Ñ Ñ ñ ñ
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
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).
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.
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:
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
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.
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.
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
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>
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
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:
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:
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
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>
<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>
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
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.
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
— 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.
<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>
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.
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
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:
<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
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.
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
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:
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:
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.
Una vez marcado el destino, se debe crear el enlace, para ello la sintaxis es:
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>
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
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:
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
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:
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
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.
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
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.
<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
<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>:
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.
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.
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:
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>
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.
<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>
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:
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.
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
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
http://www.php.net/
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.
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
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.
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.
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
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>
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
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.
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
<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.
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.
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.
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.
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
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.
<?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.
<?
.........................
.........................
.........................
?>
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
<%
.........................
.........................
.........................
%>
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.
<?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
— 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.
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
/* Comentario estilo C.
Puede extenderse durante varias líneas.
*/
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
— 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
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:
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
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) ";
?>
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
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
(tipo) expresión
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
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:
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.
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;
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
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.
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:
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:
Ejemplo 4.15:
Si se tienen definidas las siguientes variables:
la sentencia:
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:
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
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;
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.
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.
— 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.
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;
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:
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.
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
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;
$a = $b = $c = 1;
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.
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.
$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:
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.
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
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";
$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.
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.
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;
$par = !($n % 2) ? 1 : 0;
Operador de concatenación:
cadena1 . cadena2
Ejemplo 4.21:
Ejemplo de uso de este operador sería:
En este caso la variable $anuncio tendría finalmente como valor la cadena "El
último Samurai, con Tom Cruise".
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
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
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.
$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
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>";
?>
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
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
$x = (int)12.67;
$p = (string)4.5;
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:
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
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:
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
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.
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
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.
<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>
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.
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:
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
$edad
$estudiante Procesar.php
<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 á.
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
register_globals = On
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.
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
$_REQUEST[]
$_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']
<?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
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 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
...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
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
http://miservidor/procesar.php?edad=23&estudiante=1
Figura 5.3 Página generada a partir del envío con el método get
Ejemplo 5.6:
Si el formulario se define de la siguiente manera:
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
Figura 5.4 Página generada a partir del envío con el método post
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
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.
..
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
<?php
echo "Su película favorita es \"$titulo\". ";
echo "Muchas gracias por su opinión";
?>
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
<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
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.
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.
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.
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
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
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:
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.
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.
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.
— 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.
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.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
}
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;
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
Ejemplo 6.3:
La sentencia:
if $fila <= 5
$ocupada = true;
if ($ocupada)
print "Lo siento, asiento no disponible";
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.
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
Ejemplo 6.5:
La sentencia
if ($fila = 15)
print "Última fila de la sala";
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.
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";
Ejemplo 6.8:
La sentencia
if(!$nombre)
print "Por favor, díganos su nombre";
if (condición)
{
sentencias a ejecutar si la condición es cierta
}
else
{
sentencias a ejecutar si la condición es 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:
Ejemplo 6.10:
La sentencia
if($precio)
print "El precio es $precio euros";
else
print "Entrada gratuita";
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
En cambio, la sentencia
if ($num == 126) {
$fila = 12;
$asiento = 8;
}
else
$fila = 10;
$asiento = 6;
if ($num == 126) {
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.
$fila = 12;
$asiento = 8;
}
else {
$fila = 10;
$asiento = 6;
}
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
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
}
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;
}
if ($edad < 3) {
$precio = 0;
}
else
if ($edad <= 16) {
$precio = 8;
}
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.
else
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
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");
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.
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.
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.
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
}
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;
}
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;
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;
}
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;
}
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
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.
Al igual que ocurre con las restantes sentencias de control, existe una sintaxis
alternativa de la sentencia while:
while (expresión) :
sentencias
endwhile;
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>";
do
{
sentencias
}
while (condición);
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.
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>";
Ejemplo 6.23:
Considérese el siguiente bucle:
$n = 0;
while ($n > 0) {
print $n;
$n--;
}
$n = 0;
do {
print $n;
$n--;
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.
}
while ($n > 0);
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
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.
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
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.
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:
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.
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
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:
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:
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:
2--8--18--32--50--72--98--128--162--200--
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
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
* 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> </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>");
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.
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
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:
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;
}
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--;
}
}
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
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:
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);
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) ";
(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)
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
La sintaxis que debe adoptarse a la hora de definir una función en PHP sigue el
siguiente esquema general:
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
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.
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.
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:
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.
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
n! = n* (n-1)!
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:
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
Ejemplo 7.5:
Dada la función:
function Suma($x,$y) {
return ($x+$y);
}
$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>
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
)
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
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
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>";
}
Por supuesto, todos los argumentos de la función pueden tomar valores por
defecto:
CrearEnlace();
Copyright © 2005. Ediciones Díaz de Santos. All rights reserved.
En este caso, los dos argumentos tomarían sus respectivos valores por defecto.
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
func_num_args()
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)
func_get_args()
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.
function suma() {
$n = func_num_args();
$aux = 0;
for ($i=0;$i<$n;$i++)
$aux += func_get_arg($i);
return $aux;
}
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
13
15
0
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.
$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
$a = "¡Hola!";
$b = &$a;
$a = "¡Adiós!";
echo "$b"; //Se imprime "¡Adiós!", el nuevo valor de $a
$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
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:
$a=3; $b=2;
Opera($a,$b,$s,$p);
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
$z = 3;
Fvalor($z);
echo "$z";
$z = 3;
Frefer($z);
echo "$z";
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
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.
function g()
{
print $director; // referencia a una variable local
}
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:
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"];
}
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 ";
}
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
1 2 3 4 5 6 7 8 9 10
include("fichero.php");
require("fichero.php");
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
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";
?>
<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
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";
}
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.
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.