Programación Web Mayo2021
Programación Web Mayo2021
La programación de los sitios web es una de las disciplinas dentro del mundo de Internet
que más se ha desarrollado y no deja de sorprender día a día con las posibilidades que abre y
través de hipervículos diferentes páginas web lo que generó la enorme interconexión que es hoy
Internet. Esta base que inició esta red, fué desarrollada y generó el lenguaje ícono de las páginas
Pero, la creatividad humana no tiene límites y lejos de contentarse con el desarrollo del
desataron una reacción en cadena con respecto a las operaciones que se podían lograr en un sitio
web.
De esta manera nació Java Script, que ha su vez incentivó a la creación de otros lenguajes
que apuntaron a el mimso objetivo como PHP, y así constantemente se están buscando mejoras y
nuevas alternativas, todas que apuntan a la interacción del usuario con el sitio.
Está demostrado que los sitios más visitados son los que brindan un servicio más
que a través de conocer los gustos y tendencias del usuario, utiliza estos datos para
La materia de programación web le permitirá al estudiante tener otra visión mucho más
El módulo está conformado por cinco (5) unidades, distribuidas de la siguiente manera:
Unidad I, HTML.
2
Versión Mayo 2021
Unidad III, JavaScript.
Unidad V, PHP.
competente en el aprendizaje de este módulo cuando pueda desarrollar sitios web dinámicos.
3
Versión Mayo 2021
Semana I
Contenido
HTML ................................................................................................................................. 8
Estructurar. ................................................................................................................ 13
4
Versión Mayo 2021
Imágenes en HTML .......................................................................................................... 20
5
Versión Mayo 2021
Lunes – Semana I
Página Web
Se conoce como página Web, página electrónica o página digital a un documento digital
de carácter multimediático (es decir, capaz de incluir audio, video, texto y sus combinaciones),
adaptado a los estándares de la World Wide Web (WWW) y a la que se puede acceder a través
de un navegador Web y una conexión activa a Internet. Se trata del formato básico de contenidos
en la red.
caracterizan por su relación entre unas y otras a través de hipervínculos: enlaces hacia contenidos
diversos que permiten una lectura compleja, simultánea y diversa, muy distinta a la que podemos
Las páginas Web cumplen básicamente con la tarea de brindar información de cualquier
Algunas, al mismo tiempo, permiten distintos grados de interacción entre usuarios o con
alguna institución, como son las páginas de foros, servicios de citas o redes sociales, las páginas
especializado.
En principio, las funciones de una página Web son tan amplias como la demanda de
6
Versión Mayo 2021
Tipos de página Web
Existen dos tipos de página Web, conforme al modo en que se genera su contenido:
HTML, en el que están todas las instrucciones para que el navegador reconstruya la página web,
accediendo a las ubicaciones de sus elementos y siguiendo un orden preconcebido, rígido, que no
permite la interacción con el usuario. Este tipo de páginas son meramente informativas,
documentales, no interactivas.
Páginas web dinámicas. A diferencia de las anteriores, las páginas web dinámicas se
generan en el momento mismo del acceso del usuario, empleando para ello algún lenguaje
interpretado (como el PHP), lo cual le permite recibir solicitudes del usuario, procesarlas
Desarrollo web
una página web, sin embargo, el diseño web se limita a eso, al diseño de la página web, como
mucho y según lo estrictos que seamos en los términos, estaríamos hablando del diseño y la
maquetación web, es decir, del aspecto visual de la página o la aplicación web en cuestión, sin
embargo, especialmente si estamos hablando de una página web creada a medida, estamos
Programación back end, el panel de control desde el cual el administrador web gestiona
7
Versión Mayo 2021
Martes – Semana I
HTML
web habituales están formadas por cientos o miles de pares de etiquetas. De hecho, las letras
"ML" de la sigla HTML significan "markup language", que es como se denominan en inglés a
La principal ventaja de los lenguajes de etiquetas es que son muy sencillos de leer y
escribir por parte de las personas y de los sistemas electrónicos. La principal desventaja es que
pueden aumentar mucho el tamaño del documento, por lo que en general se utilizan etiquetas con
denomina marcar (markup en inglés). Cada una de las palabras que se emplean para marcar el
Aunque existen algunas excepciones, en general las etiquetas se indican por pares y se
Etiqueta de apertura: carácter <, seguido del nombre de la etiqueta (sin espacios en
Etiqueta de cierre: carácter <, seguido del carácter /, seguido del nombre de la etiqueta
8
Versión Mayo 2021
<nombre_etiqueta> ... </nombre_etiqueta>
Las páginas HTML se dividen en dos partes: la cabecera y el cuerpo. La cabecera incluye
información sobre la propia página, como por ejemplo su título y su idioma. El cuerpo de la
Figura 1. Esquema de las partes que forman un documento HTML. Fuente (Eguiluz)
cabecera (llamada head en inglés) contiene todo lo que no se ve (con la única excepción del
título de la página, que los navegadores muestran como título de sus ventanas).
<html>
<head>
<title>Mi primera página HTML</title>
</head>
<body>
<p>El lenguaje HTML es <strong>tan sencillo</strong> que
prácticamente se entiende sin estudiar el significado
de sus etiquetas principales.</p>
</body>
</html>
Es importante conocer las tres etiquetas principales de un documento HTML:
contenido puede colocarse antes o después de la etiqueta <html> (a excepción del Doctype). En
9
Versión Mayo 2021
el interior de la etiqueta <html> se definen la cabecera y el cuerpo del documento HTML y todo
información sobre el propio documento HTML, como por ejemplo su título y el idioma de la
página. Los contenidos indicados en la cabecera no son visibles para el usuario, con la excepción
de la etiqueta <title>, que se utiliza para indicar el título del documento y que los navegadores lo
<body>: delimita el cuerpo del documento HTML. El cuerpo encierra todos los
Figura 2. Esquema de las etiquetas principales que contiene un documento HTML. Fuente: (Eguiluz)
Algunos elementos como las imágenes y los enlaces requieren cierta información
La etiqueta <a> por ejemplo se emplea para incluir un enlace en una página. Utilizando
sólo la etiqueta <a> no es posible establecer la dirección a la que apunta cada enlace. Como no es
viable crear una etiqueta por cada enlace diferente, la solución consiste en personalizar las
10
Versión Mayo 2021
Aunque cada una de las etiquetas HTML define sus propios atributos, algunos de los
atributos son comunes a muchas o casi todas las etiquetas. De esta forma, es habitual explicar por
separado los atributos comunes de las etiquetas para no tener que volver a hacerlo cada vez que
Elementos HTML.
Además de etiquetas y atributos, HTML define el término elemento para referirse a las
realidad un elemento HTML es mucho más que una etiqueta, ya que está formado por:
pueden encerrar ningún texto. El siguiente esquema muestra un elemento HTML, formado por
Figura 3. Esquema de las partes que componen un elemento HTML. (Terán, 2010)
Por otra parte, el lenguaje HTML clasifica a todos los elementos en dos grupos:
elementos en línea (inline elements en inglés) y elementos de bloque (block elements en inglés).
11
Versión Mayo 2021
La principal diferencia entre los dos tipos de elementos es la forma en la que ocupan el
espacio disponible en la página. Los elementos de bloque siempre empiezan en una nueva línea y
ocupan todo el espacio disponible hasta el final de la línea, aunque sus contenidos no lleguen
hasta el final de la línea. Por su parte, los elementos en línea sólo ocupan el espacio necesario
otros elementos de bloque. Los elementos en línea sólo pueden contener texto u otros elementos
línea. En cambio, un elemento en línea puede aparecer dentro de un elemento de bloque y dentro
a, abbr, acronym, b, basefont, bdo, big, br, cite, code, dfn, em, font, i, img, input, kbd, lab
el, q, s, samp, select, small, span, strike, strong, sub, sup, textarea, tt, u, var.
address, blockquote, center, dir, div, dl, fieldset, form, h1, h2, h3, h4, h5, h6, hr, isindex,
menu, noframes, nos-cript, ol, p, pre, table, ul, dd, dt, frame-set, li, tbody, td, tfoot, th, thead, tr.
Los siguientes elementos pueden ser en línea y de bloque según las circunstancias:
12
Versión Mayo 2021
Miércoles – Semana I
Texto en HTML
Estructurar.
La forma más sencilla de estructurar un texto consiste en separarlo por párrafos. Además,
HTML permite incluir títulos que delimitan cada una de las secciones.
Párrafos.
Una de las etiquetas más utilizadas de HTML es la etiqueta <p>, que permite definir los
párrafos que forman el texto de una página. Para delimitar el texto de un párrafo, se encierra ese
<body>
<p>Este es el texto que forma el primer párrafo de la página.
Los párrafos pueden ocupar varias líneas y el navegador se encarga
de ajustar su longitud al tamaño de la ventana.</p>
Los títulos de sección se utilizan para delimitar el comienzo de cada sección de la página.
HTML permite crear secciones de hasta seis niveles de importancia. De esta forma, aunque una
página puede definir cualquier número de secciones, sólo puede incluir seis niveles jerárquicos.
Las etiquetas que definen los títulos de sección son <h1>, <h2>, <h3>, <h4>, <h5> y
<h6>. La etiqueta <h1> es la de mayor importancia y por tanto se utiliza para definir los titulares
13
Versión Mayo 2021
de la página. La importancia del resto de etiquetas es descendiente, de forma que la
etiqueta <h6> es la que se utiliza para delimitar las secciones menos importantes de la página.
Los navegadores asignan de forma automáticamente el tamaño del título de cada sección
en función de su importancia. Así, los títulos de sección <h1> se muestran con el tamaño de letra
más grande, ya que son el nivel jerárquico superior, mientras que los títulos de sección <h6> se
visualizan con un tamaño de letra muy pequeño, adecuado para el nivel jerárquico de menor
importancia.
Para delimitar el texto de las secciones, se encierra ese texto con la etiqueta <h[nivel]>,
<body>
<h1>Título 1</h1>
<h2>Título 2</h2>
<h3>Título 3</h3>
<h4>Título 4</h4>
<h5>Título 5</h5>
<h6>Título 6</h6>
</body>
Marcado del texto.
los elementos que componen el texto. Los textos habituales están formados por elementos como
palabras en negrita o cursiva, anotaciones y correcciones, citas a otros documentos externos, etc.
HTML proporciona varias etiquetas para marcar cada uno de los diferentes tipos de texto. En la
14
Versión Mayo 2021
Tabla 1.
Etiquetas para el marcado del texto
Etiqueta Significado Ejemplo
<b> Negrita <b>Texto en negrita </b>
<i> Cursiva <i> Texto en cursiva </i>
<u> Subrayado <u> Texto subrayado </u>
<s> Tachado <s> Texto tachado </s>
<big> Agranda el texto <big> Texto grande </big>
<small> Disminuye el texto <small>Texto pequeño
</small>
<sup> Superíndice Potencia 2<sup>3</sup>
<sub> Subíndice H<sub>2</sub>O
<em> Texto con énfasis <em> Texto con
énfasis</em>
<strong> Texto destacado <strong> Texto
destacado</strong>
Enlaces en HTML
simplemente "enlace".
Los enlaces se utilizan para establecer relaciones entre dos recursos. Aunque la mayoría
de enlaces relacionan páginas web, también es posible enlazar otros recursos como imágenes,
documentos y archivos.
El atributo más importante de la etiqueta <a> es href, que se utiliza para indicar la URL a
la que apunta el enlace. Cuando el usuario pincha sobre un enlace, el navegador se dirige a la
Para crear un enlace que apunte a la página principal de Google solamente habría que
15
Versión Mayo 2021
Como el atributo href indica una URL, un enlace puede apuntar a cualquier tipo de
recurso al que pueda acceder el navegador. El siguiente enlace apunta a una imagen, que se
fondo de escritorio</a>
De la misma forma, los enlaces pueden apuntar directamente a documentos PDF, Word,
etc.
[DOC]</a>
16
Versión Mayo 2021
Jueves – Semana I
Listas en HTML
El lenguaje HTML define tres tipos diferentes de listas para agrupar los elementos: listas
no ordenadas (se trata de una colección simple de elementos en la que no importa su orden),
listas ordenadas (similar a la anterior, pero los elementos están numerados y, por tanto, importa
Listas no ordenadas.
Una lista no ordenada es un conjunto de elementos relacionados entre sí pero para los que
no se indica un orden o secuencia determinados. La etiqueta <ul> encierra todos los elementos
<html>
<head><title>Ejemplo de etiqueta UL</title></head>
<body>
<h1>Menú</h1>
<ul>
<li>Inicio</li>
<li>Noticias</li>
<li>Artículos</li>
<li>Contacto</li>
</ul>
</body>
</html>
El navegador por defecto muestra los elementos de la lista tabulados y con una pequeña
viñeta formada por un círculo negro. Pero si queremos definir nosotros mismo el símbolo del
17
Versión Mayo 2021
Así podemos hacer que la lista esté definida por puntos negros (li type=”disc”), por
puntos con el fondo blanco (li type=”circle”) o por cuadrados (li type=”square”):
<ul>
<li type="circle">Esto es un tipo de punto.</li>
<li type="square">Este es otro.</li>
<li type="disc">Y este es otro diferente.</li>
</ul>
Listas ordenadas.
Las listas ordenadas son casi idénticas a las listas no ordenadas, salvo que en este caso los
etiqueta <ol>. Los elementos de la lista se definen mediante la etiqueta <li>, la misma que se
<html>
<head><title>Ejemplo de etiqueta OL</title></head>
<body>
<h1>Instrucciones</h1>
<ol>
<li>Enchufar correctamente</li>
<li>Comprobar conexiones</li>
<li>Encender el aparato</li>
</ol>
</body>
</html>
Gracias al atributo “type” definimos el ítem como se enumera, ejemplo: por números (li
type=”1”) este viene por defecto sino se especifica el tipo en los “li”, por números romanos
mayúsculas (li type=”I”), por números romanos minúsculas (li type=”i”), por letras mayúsculas
<ul>
<li type="1"> Número decimal.</li>
18
Versión Mayo 2021
<li type="I"> Número romano mayúscula.</li>
<li type="i"> Número romano minúscula.</li>
<li type="A"> Letra mayúscula.</li>
<li type="a"> Letra minúscula.</li>
</ul>
En las listas ordenadas podemos hacer que el primer punto comience con el número que
nosotros queramos. Lo conseguiremos gracias al atributo “value”. Los siguientes puntos que
Por ejemplo, si queremos que nuestra lista empiece por el número 20, sólo deberemos
escribir lo siguiente:
<ol>
<li value="20">Este será el número 20. </li>
<li>Este será el 21. </li>
<li> Este será el 22. Y así sucesivamente. </li>
</ol>
Listas de definición.
formado por términos y definiciones. La etiqueta <dl> crea la lista de definición y las
la lista.
<html>
<head><title>Ejemplo de etiqueta DL</title></head>
<body>
<h1>Metalenguajes</h1>
<dl>
<dt>SGML</dt>
<dd>Metalenguaje para la definición de otros lenguajes de
marcado</dd>
<dt>XML</dt>
<dd>Lenguaje basado en SGML y que se emplea para describir
19
Versión Mayo 2021
datos</dd>
<dt>RSS</dt>
<dt>GML</dt>
<dt>XHTML</dt>
<dt>SVG</dt>
<dt>XUL</dt>
<dd>Lenguajes derivados de XML para determinadas aplicaciones</dd>
</dl>
</body>
</html>
Los navegadores formatean las listas de definición de forma similar a las otras listas,
término puede tener asociada más de una definición y cada definición puede tener asociada
varios términos.
Imágenes en HTML
Las imágenes son uno de los elementos más importantes de las páginas web. De hecho,
prácticamente todas las páginas web contienen alguna imagen y la mayoría incluyen decenas de
imágenes.
Los dos atributos requeridos son src y alt. El atributo src es similar al atributo href de los
enlaces, ya que establece la URL de la imagen que se va a mostrar en la página. Las URL
indicadas pueden ser absolutas o relativas. El atributo alt permite describir el contenido de la
20
Versión Mayo 2021
imagen mediante un texto breve. Las descripciones deben tener una longitud inferior a 1024
caracteres y son útiles para las personas y dispositivos discapacitados que no pueden acceder a
las imágenes.
HTML no impone ninguna restricción sobre el formato gráfico que se puede utilizar en
las imágenes, por lo que en principio la etiqueta <img> puede incluir cualquier formato gráfico
existente. Sin embargo, si la imagen utiliza un formato poco habitual, todos o algunos
La recomendación es utilizar uno de los tres siguientes formatos gráficos que entienden
todos los navegadores modernos: GIF, JPG y PNG. El formato PNG presenta el inconveniente de
que los navegadores obsoletos como Internet Explorer 6 no muestran correctamente las imágenes
21
Versión Mayo 2021
Actividades – Semana I
Actividad 1
Actividad 2
Actividad 3
Actividad 4
Actividad 5
Determinar el código HTML necesario para crear una página web como la siguiente:
Todas las siglas, como HTTP, W3C o MIT deben aparecer como texto destacado.
22
Versión Mayo 2021
Los nombres de las instituciones o empresas, como Consorcio de la World Wide Web o
Código base
Tim Berners-Lee
Sir Timothy "Tim" John Berners-Lee (Londres, Reino Unido, 8 de junio de 1955) es un científico de la
computación británico, conocido por ser el padre de la Web. Estableció la primera comunicación entre un cliente y
un servidor usando el protocolo HTTP en noviembre de 1989. En octubre de 1994 fundó el Consorcio de la World
Wide Web (W3C) con sede en el MIT, para supervisar y estandarizar el desarrollo de las tecnologías sobre las que
se fundamenta la Web y que permiten el funcionamiento de Internet.
Biografía
Nació en el sudoeste de Londres en 1955. Sus padres eran matemáticos y formaron parte del equipo que
construyó el Manchester Mark I (una de las primeras computadoras). Durante el tiempo que estuvo en la
universidad, construyó una computadora con una soldadora, circuitos TTL, un procesador Motorola 68000 y un
televisor viejo. Se graduó en física en 1976 en el Queen's College de la Universidad de Oxford. Conoció a su
primera esposa en este periodo. En 1978, trabajó en D.G. Nash Limited (también en Poole) escribió un sistema
operativo.
Desarrollo de su carrera
Berners-Lee trabajó en el CERN desde junio hasta diciembre de 1980. Durante ese tiempo, propuso un
proyecto basado en el hipertexto para facilitar la forma de compartir y la puesta al día de la información entre
investigadores. En este periodo también construyó un programa llamado Enquire que no llegó a ver la luz.
Después de dejar el CERN, en 1980, se fue a trabajar a la empresa de John Poole Image Computer Systems
Ltd., pero regresó al CERN otra vez en 1984.
En 1989, el CERN era el nodo de Internet más grande de Europa y Berners-Lee vio la oportunidad de unir
Internet y el hipertexto (HTTP y HTML), de lo que surgiría la World Wide Web. Desarrolló su primera propuesta de
la Web en marzo de 1989, pero no tuvo mucho eco, por lo que en 1990 y con la ayuda de Robert Cailliau, hicieron
una revisión que fue aceptada por su gerente, Mike Sendall. Usó ideas similares a las que había usado en el sistema
Enquire para crear la World Wide Web, para esto diseñó y construyó el primer navegador (llamado WorldWideWeb
y desarrollado con NextStep) y el primer servidor web al que llamó httpd (HyperText Transfer Protocol daemon).
Actividad 6
Debes crear una página web que tenga el mismo aspecto que la siguiente imagen:
Los enlaces que aparecen en la página deben tener los siguientes destinos:
Web → http://es.wikipedia.org/wiki/World_Wide_Web
HTML → https://es.wikipedia.org/wiki/HTML
23
Versión Mayo 2021
HTTP → https://es.wikipedia.org/wiki/Protocolo_de_transferencia_de_hipertexto
URL → https://es.wikipedia.org/wiki/Localizador_de_recursos_uniforme
Actividad 7
A partir del texto que se te proporciona, debes crear una página web que tenga el mismo
Actividad 8
Crear una lista de definición para los términos: HTML, CSS, JavaScript y PHP.
Actividad 9
<html>
<head>
<title>World Wide Web</title>
<body>
</head>
<h1>World Wide Web</h1>
<p>
En informática, la <strong><em>World Wide Web</strong></em> (WWW) o
Red informática mundial comúnmente conocida como la web, es un sistema
24
Versión Mayo 2021
de distribución de documentos de hipertexto o hipermedios
interconectados y accesibles vía Internet. Con un navegador web, un
usuario visualiza sitios web compuestos de páginas web que pueden
contener texto, imágenes, vídeos u otros contenidos multimedia, y
navega a través de esas páginas usando hiperenlaces.
<h2>Historia</h2>
<p>
La web se desarrolló entre marzo de 1989 y diciembre de 1990 por el
inglés Tim Berners-Lee con la ayuda del belga Robert Cailliau mientras
trabajaban en el CERN en Ginebra, Suiza, y publicado en 1992.
</p>
<p>
Desde entonces, Berners-Lee ha jugado un papel activo guiando el
desarrollo de estándares web (como los lenguajes de marcado con los
que se crean las páginas web), y en los últimos años ha abogado por su
visión de una web semántica.
</html>
Actividad 10
Crear una página web que tenga el mismo aspecto que la siguiente imagen:
25
Versión Mayo 2021
Recursos – Semana I
Vídeos
https://www.youtube.com/watch?v=N0lS3zhf318
• Listas. https://www.youtube.com/watch?v=IRbEXqBBOCo
Presentaciones
72289810
introducci-n
Lecturas complementarias
47.pdf
https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/aprende-html-tutorial-
para-principiantes/
26
Versión Mayo 2021
Semana II
Contenido
Tablas ................................................................................................................................ 29
Formularios ....................................................................................................................... 33
27
Versión Mayo 2021
Metainformación ............................................................................................................... 48
Metadatos. ................................................................................................................. 49
28
Versión Mayo 2021
Lunes – Semana II
Tablas
Las tablas en HTML utilizan los mismos conceptos de filas, columnas, cabeceras y títulos
Las tablas más sencillas de HTML se definen con tres etiquetas: <table> para crear la
tabla, <tr> para crear cada fila y <td> para crear cada columna.
<html>
<head><title>Ejemplo de tabla sencilla</title></head>
<body>
<h1>Listado de cursos</h1>
<table>
<tr>
<td><strong>Curso</strong></td>
<td><strong>Horas</strong></td>
<td><strong>Horario</strong></td>
</tr>
<tr>
<td>CSS</td>
<td>20</td>
<td>16:00 - 20:00</td>
</tr>
29
Versión Mayo 2021
<tr>
<td>HTML</td>
<td>20</td>
<td>16:00 - 20:00</td>
</tr>
<tr>
<td>Dreamweaver</td>
<td>60</td>
<td>16:00 - 20:00</td>
</tr>
</table>
</body>
</html>
La etiqueta <table> encierra todas las filas y columnas de la tabla. Las etiquetas <tr> (del
inglés "table row") definen cada fila de la tabla y encierran todas las columnas. Por último, la
etiqueta <td> (del inglés "table data cell") define cada una de las columnas de las filas, aunque
Al definir una tabla, se debe pensar en primer lugar en las filas que la forman y a
continuación en las columnas. El motivo es que HTML procesa primero las filas y por eso las
Normalmente, algunas de las celdas de la tabla se utilizan como cabecera de las demás
celdas de la fila o de la columna. En este caso, HTML define la etiqueta <th> (del inglés "table
header cell") para indicar que una celda es cabecera de otras celdas.
Fusión de columnas.
Todas las filas de una tabla HTML deben tener el mismo número de columnas. Por lo
atributo colspan, que indica el número de columnas simples que va a ocupar una determinada
celda.
30
Versión Mayo 2021
Figura 5. Fusión de columnas. Fuente: (Eguiluz)
<table>
<tr>
<td colspan="2">A</td>
</tr>
<tr>
<td>B</td>
<td>C</td>
</tr>
</table>
La primera fila de la tabla está formada sólo por una columna, mientras que la segunda
fila está formada por dos columnas. En el ejemplo anterior, la celda de la primera fila debe
ocupar el espacio de dos columnas simples, por lo que el código HTML debe ser <td
colspan="2">A</td>.
Fusión de filas.
La fusión de filas debe indicarse de forma especial. Como las tablas HTML tienen que ser
regulares, todas las columnas deben tener el mismo número de filas. Se fusionan mediante el
atributo rowspan.
31
Versión Mayo 2021
<table>
<tr>
<td>A</td>
<td rowspan="2">B</td>
</tr>
<tr>
<td>C</td>
</tr>
</table>
Como la segunda columna de la tabla ocupa el espacio de las dos filas, el código HTML
debe indicar claramente que esa celda va a ocupar dos filas, de manera que todas las columnas de
32
Versión Mayo 2021
Martes – Semana II
Formularios
verificación, botones radio, etc) que permiten al usuario introducir datos y enviarlos al servidor
La etiqueta <form> encierra todos los contenidos del formulario (botones, cuadros de
texto, listas desplegables) y la etiqueta <input> permite definir varios tipos diferentes de
atributo action indica la URL de la aplicación del servidor que se encarga de procesar los datos
introducidos por los usuarios. Esta aplicación también se encarga de generar la respuesta que
muestra el navegador.
El atributo method establece la forma en la que se envian los datos del formulario al
servidor. Este atributo hace referencia al método HTTP, por lo que no es algo propio de HTML.
Los dos valores que se utilizan en los formularios son GET y POST. De esta forma, casi todos
Al margen de otras diferencias técnicas, el método POST permite el envío de mucha más
información que el método GET. En general, el método GET admite como máximo el envío de
unos 500 bytes de información. La otra gran limitación del método GET es que no permite el
envío de archivos adjuntos con el formulario. Además, los datos enviados mediante GET se ven
33
Versión Mayo 2021
en la barra de direcciones del navegador (se añaden al final de la URL de la página), mientras
que los datos enviados mediante POST no se pueden ver tan fácilmente.
Elementos de formulario.
crean con la etiqueta <input>, por lo que su definición formal y su lista de atributos es muy
extensa.
Atributos.
type = "text | password | checkbox | radio | submit | reset | file | hidden | button |…" -
name = "texto" - Asigna un nombre al control (es imprescindible para que el servidor
size = "unidad_de_medida" - Tamaño inicial del control (para los campos de texto y de
píxel).
password.
checked = "checked" - Para los controles checkbox y radiobutton permite indicar qué
34
Versión Mayo 2021
src = "url" - Para el control que permite crear botones con imágenes, indica la URL de la
placeholder = "texto" - Útil para guiar al usuario sobre el tipo de contenido a rellenar en
el formulario.
Cuadro de texto.
Se trata del elemento más utilizado en los formularios. En el caso más sencillo, se
muestra un cuadro de texto vacío en el que el usuario puede escribir cualquier texto:
Nombre <br/>
Cuadro de contraseña.
La única diferencia entre este control y el cuadro de texto normal es que el texto que el
ocultan el texto utilizando asteriscos o círculos, por lo que es ideal para escribir contraseñas y
Contraseña <br/>
35
Versión Mayo 2021
<input type="password" name="contrasena" value="" />
Checkbox.
varios checkbox juntos, cada uno de ellos es completamente independiente del resto. Por este
motivo, se utilizan cuando el usuario puede activar y desactivar varias opciones relacionadas
pero no excluyentes.
El valor del atributo type para estos controles de formulario es checkbox. Como se
muestra en el ejemplo anterior, el texto que se encuentra al lado de cada checkbox no se puede
establecer mediante ningún atributo, por lo que es necesario añadirlo manualmente fuera del
control del formulario. Si no se añade un texto al lado de la etiqueta <input /> del checkbox, el
ese checkbox.
El valor del atributo value, junto con el valor del atributo name, es la información que
36
Versión Mayo 2021
Si se quiere mostrar un checkbox seleccionado por defecto, se utiliza el atributo checked.
Si el valor del atributo es checked, el checkbox se muestra seleccionado. En cualquier otro caso,
el checkbox permanece sin seleccionar. Aunque resulta redundante que el nombre y el valor del
atributo sean idénticos, es obligatorio indicarlo de esta forma porque los atributos en XHTML no
Radiobutton.
Los controles de tipo radiobutton son similares a los controles de tipo checkbox, pero
presentan una diferencia muy importante: son mutuamente excluyentes. Los radiobutton se
utilizan cuando el usuario solamente puede escoger una opción entre las distintas opciones
relacionadas que se le presentan. Cada vez que se selecciona una opción, automáticamente se
Figura 10. Ejemplo de etiqueta input (type=radio). Fuente: elaboración propia (2020).
Sexo <br/>
El valor del atributo type para estos controles de formulario es radio. El atributo name se
emplea para indicar los radiobutton que están relacionados. Por lo tanto, cuando varios
radiobutton tienen el mismo valor en su atributo name, el navegador sabe que están relacionados
y puede deseleccionar una opción del grupo de radiobutton cuando se seleccione otra opción.
37
Versión Mayo 2021
Botón de envío de formulario.
Figura 11. Ejemplo de etiqueta input (type=submit). Fuente: elaboración propia (2020).
El valor del atributo type para este control de formulario es submit. El navegador se
encarga de enviar automáticamente los datos cuando el usuario pincha sobre este tipo de botón.
El valor del atributo value es el texto que muestra el botón. Si no se establece el atributo value, el
Aunque su uso era muy popular hace unos años, la mayoría de formularios modernos ya
no utilizan este tipo de botón. Se trata de un botón especial que borra todos los datos
Figura 12. Ejemplo de etiqueta input (type=reset). Fuente: elaboración propia (2020).
El valor del atributo type para este control de formulario es reset. Cuando el usuario pulsa
38
Versión Mayo 2021
vuelve a mostrar vacío. Si el formulario contenía información, el botón reset vuelve a mostrar la
texto que muestra el botón. Si no es utiliza este atributo, el navegador muestra el texto
Ficheros adjuntos.
Los formularios también permiten adjuntar archivos para subirlos al servidor. Aunque
desde el punto de vista de HTML y del navegador no existe ninguna limitación sobre el número,
tipo o tamaño total de los archivos que se pueden adjuntar, todos los servidores añaden
Figura 13. Ejemplo de etiqueta input (type=file). Fuente: elaboración propia (2020).
Fichero adjunto
El valor del atributo type para este control de formulario es file. El navegador se encarga
de mostrar un cuadro de texto donde aparece el nombre del archivo seleccionado y un botón que
permite navegar por los directorios y archivos del ordenador del usuario.
enctype en la etiqueta <form> del formulario. El valor del atributo enctype debe ser
multipart/form-data, por lo que la etiqueta <form> de los formularios que permiten adjuntar
39
Versión Mayo 2021
...
</form>
Campos ocultos.
Figura 14. Ejemplo de etiqueta input (type=hidden). Fuente: elaboración propia (2020).
El valor del atributo type para este control de formulario es hidden. Los campos ocultos
no se muestran por pantalla, de forma que el usuario desconoce que el formulario los incluye.
Normalmente los campos ocultos se utilizan para incluir información que necesita el servidor
Botón.
Algunos formularios complejos necesitan botones más avanzados que los de enviar datos
Figura 15. Ejemplo de etiqueta input (type=button). Fuente: elaboración propia (2020).
El valor del atributo type para este control de formulario es button. Si pruebas a pulsar un
botón de este tipo, verás que el navegador no hace nada: no envía los datos al servidor y no borra
los datos introducidos. Este tipo de botones sólo son útiles si se utilizan junto con el lenguaje de
40
Versión Mayo 2021
programación JavaScript. Si la página incluye código JavaScript, los botones de este tipo se
pueden programar para que realicen cualquier tarea compleja cuando se pulsa sobre ellos.
En HTML5 se introducen otros tipos más: datalist, keygen, output, number, range, tel,
email, color, search, url, date, datetime, datetime-local, month, time, week.
41
Versión Mayo 2021
Miércoles – Semana II
Las áreas de texto son útiles cuando se debe introducir una gran cantidad de texto, ya que
y altura. La anchura del área de texto se controla mediante el atributo cols, que indica
las columnas o número de caracteres que se podrán escribir como máximo en cada fila. La altura
del área de texto se controla mediante rows, que indica directamente las filas de texto que serán
visibles.
La etiqueta <select> define la lista y encierra todas las opciones que muestra la lista.
Cada una de las opciones de la lista se define mediante una etiqueta <option>. El atributo value
de cada opción es obligatorio, ya que es el dato que se envía al servidor cuando el usuario envía
el formulario. Para seleccionar por defecto una opción al mostrar la lista, se añade el atributo
La inmensa mayoría de listas desplegables que utilizan las aplicaciones web son simples,
42
Versión Mayo 2021
<label for="so">Sistema operativo</label> <br/>
<select id="so" name="so">
<option value="" selected="selected">- selecciona -</option>
<option value="windows">Windows</option>
<option value="mac">Mac</option>
<option value="linux">Linux</option>
<option value="otro">Otro</option>
</select>
Agrupando elementos del formulario
formularios de las aplicaciones web. No obstante, HTML define algunos elementos adicionales
La siguiente imagen muestra un formulario que agrupa sus elementos y añade etiquetas a
cada campo para mejorar su estructura: la etiqueta <fieldset> agrupa campos del formulario y la
<fieldset>
<legend>Datos de conexión</legend>
Nombre de usuario<br/>
<input type="text" name="nombre" value="" maxlength="10" />
<br/>
Contraseña<br/>
43
Versión Mayo 2021
<input type="password" name="password" value="" maxlength="10" />
<br/>
Repite la contraseña<br/>
<input type="password" name="password2" value="" maxlength="10" />
</fieldset>
</form>
La etiqueta <fieldset> agrupa todos los controles de formulario a los que encierra. El
navegador muestra por defecto un borde resaltado para cada agrupación. La etiqueta <legend> se
incluye dentro de cada etiqueta <fieldset> y establece el título que muestra el navegador para
Etiqueta <label>
único atributo que suele utilizarse con la etiqueta <label> es for, que indica el identificador
(atributo id) del campo de formulario para el que esta etiqueta hace de título.
se mejora su accesibilidad. Además, al pinchar sobre el texto del <label>, el puntero del ratón se
posiciona automáticamente para poder escribir sobre el campo de formulario asociado. Este
44
Versión Mayo 2021
Etiqueta HTML de audio
Es posible añadir archivos de audio a nuestras páginas web para colocar música, sonidos
preload = auto | metadata | none. Indica como realizar la precarga del audio.
conocer estos detalles para saber que formatos están soportados por los diferentes navegadores.
navegador. De hecho, si arrastramos un video a la ventana del navegador, veremos que comienza
a reproducirse en él. Para poder insertar videos en nuestras páginas HTML tenemos que utilizar
45
Versión Mayo 2021
la etiqueta <video>, que junto a la etiqueta <source> podremos utilizar estas capacidades
multimedia de HTML5.
preload = auto | metadata | none. Indica como realizar la precarga del video.
Otros formatos como MOV, FLV, 3GP, MPG, RMVB o ASF (WMV) no se recomiendan
Los tags div y span no tienen ningún significado especial, sólo que la primera se define
opciones de formato mediante hojas de estilo a bloques completos o elementos individuales del
documento.
46
Versión Mayo 2021
47
Versión Mayo 2021
Jueves – Semana II
Metainformación
Las páginas y documentos HTML incluyen más información de la que los usuarios ven
en sus pantallas. Estos datos adicionales siempre están relacionados con la propia página, por lo
puede incluir mucha otra información útil para los navegadores y para los buscadores.
Estructura de la cabecera.
denominadas cabecera y cuerpo. La sección de la cabecera está formada por todas las etiquetas
<head>
<!-- Zona de etiquetas META -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
48
Versión Mayo 2021
Etiqueta <title>.
como título de la propia ventana del navegador. Los buscadores utilizan este título como título de
Por tanto, el valor de <title> no sólo es importante para los usuarios, sino que también es
importante para que los usuarios encuentren las páginas a través de los buscadores. Cada página
debe mostrar un título corto, adecuado, único y que describa inequívocamente los contenidos de
la página.
Metadatos.
Una de las partes más importantes de la metainformación de la página son los metadatos,
por lo que las páginas tienen libertad absoluta para definir los metadatos que consideren
name = "texto" - El nombre de la propiedad que se define (no existe una lista oficial de
propiedades).
content = "texto" - El valor de la propiedad definida (no existe una lista de valores
permitidos).
scheme = "texto" - Indica el esquema que se debe emplear para interpretar el valor de la
propiedad.
49
Versión Mayo 2021
Metadatos más utilizados
Aunque no existe una lista oficial con los metadatos que se pueden definir, algunos de
accesibilidad" />
50
Versión Mayo 2021
Actividades – Semana II
Actividad 1
Crear una página web que tenga el mismo aspecto que la siguiente imagen:
Actividad 2
Crear una página web que tenga el mismo aspecto que la siguiente imagen:
51
Versión Mayo 2021
Actividad 3
Crear una página web que tenga el mismo aspecto que la siguiente imagen:
Actividad 4
Crear una página web que tenga el mismo aspecto que la siguiente imagen:
52
Versión Mayo 2021
Actividad 5
siguiente imagen:
Actividad 6
siguiente imagen:
53
Versión Mayo 2021
Actividad 7
Actividad 8
Actividad 9
Actividad 10.
54
Versión Mayo 2021
Recursos – Semana II
Vídeos
• Tablas. https://www.youtube.com/watch?v=LmSUS6MuSzk
• Formularios. https://www.youtube.com/watch?v=QDOfODwsfuQ
Presentaciones
Lecturas complementarias
metadatos-para-que-sirven/
55
Versión Mayo 2021
Semana III
Contenido
CSS.................................................................................................................................... 58
Selectores básicos...................................................................................................... 63
Colores. ..................................................................................................................... 72
56
Versión Mayo 2021
Jueves – Semana III .......................................................................................................... 81
Bordes en CSS................................................................................................................... 81
background-color. ..................................................................................................... 82
background-image. .................................................................................................... 83
background-repeat. .................................................................................................... 83
background-position.................................................................................................. 83
background-attachment. ............................................................................................ 85
background. ............................................................................................................... 85
57
Versión Mayo 2021
Lunes – Semana III
CSS
CSS es el segundo lenguaje más básico y esencial para crear páginas web. El primero
Las siglas de CSS son “Cascade Style Sheet”, en español hojas de estilo en cascada.
CSSes un lenguaje que nos permite otorgar atributos a los elementos de los documentos
hipertexto); CSS permite realizar una separación del diseño (formato y estilos) de los
contenidos de las páginas webs. Es importante resaltar que, hay características que ofrece
CSS y que también se pueden realizar con HTML, pero CSS tiene una mayor cantidad de
opciones para personalizar los elementos de una página web en general (Condor & Soria,
2015).
CSS es un lenguaje que consiste en una serie de elementos mediante los cuales se
Los estilos se definen en una zona específica del propio documento HTML. Se emplea la
etiqueta <style> de HTML (solamente se debería incluir en la cabecera del documento, es decir
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>CSS en el propio documento</title>
<style type="text/css">
58
Versión Mayo 2021
p { color: black; font-family: Verdana; }
</style>
</head>
<body>
<p>Un párrafo de texto.</p>
</body>
</html>
Este método se emplea cuando se define un número pequeño de estilos o cuando se
quieren incluir estilos específicos en una determinada página HTML que completen los estilos
que se incluyen por defecto en todas las páginas del sitio web.
En este caso, todos los estilos CSS se incluyen en un archivo de tipo CSS que las páginas
HTML enlazan mediante la etiqueta <link>. Un archivo de tipo CSS no es más que un archivo
simple de texto cuya extensión es .css. Se pueden crear todos los archivos CSS que sean
necesarios y cada página HTML puede enlazar tantos archivos CSS como necesite.
Si se quieren incluir los estilos del ejemplo anterior en un archivo CSS externo, se deben
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>CSS en un archivo externo</title>
<link rel="stylesheet" type="text/css" href="/css/estilos.css"
media="screen" />
</head>
59
Versión Mayo 2021
<body>
<p>Un párrafo de texto.</p>
</body>
</html>
Cuando el navegador carga la página HTML anterior, antes de mostrar sus contenidos
también descarga los archivos CSS externos enlazados mediante la etiqueta <link> y aplica los
estilos a los contenidos de la página. De todas las formas de incluir CSS en las páginas HTML,
La etiqueta <link>, generalmente incluye tres atributos cuando enlaza un archivo CSS:
• rel: indica el tipo de relación que existe entre el recurso enlazado (en este caso, el
archivo CSS) y la página HTML. Para los archivos CSS, siempre se utiliza el
valor stylesheet.
• type: indica el tipo de recurso enlazado. Sus valores están estandarizados y para los
• href: indica la URL del archivo CSS que contiene los estilos. La URL indicada puede
ser relativa o absoluta y puede apuntar a un recurso interno o externo al sitio web.
El último método para incluir estilos CSS en documentos HTML es el peor y el menos
utilizado.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>CSS en el propio documento</title>
</head>
<body>
<p style="color: black; font-family: Arial;">Un párrafo de texto.</p>
</body>
</html>
60
Versión Mayo 2021
Esta forma de incluir CSS directamente en los elementos HTML solamente se utiliza en
determinadas situaciones en las que se debe incluir un estilo muy específico para un solo
elemento concreto.
CSS define una serie de términos que permiten describir cada una de las partes que
componen los estilos CSS. El siguiente esquema muestra las partes que forman un estilo CSS
muy básico:
Figura 16. Componentes de un estilo CSS básico. Fuente: (Eguiluz, Introducción a CSS)
Regla: cada uno de los estilos que componen una hoja de estilos CSS. Cada regla está
compuesta de una parte de "selectores", un símbolo de "llave de apertura" ({), otra parte
Selector: indica el elemento o elementos HTML a los que se aplica la regla CSS.
Declaración: especifica los estilos que se aplican a los elementos. Está compuesta por una
61
Versión Mayo 2021
Un archivo CSS puede contener un número ilimitado de reglas CSS, cada regla se puede
aplicar a varios selectores diferentes y cada declaración puede incluir tantos pares
Comentarios en CSS.
CSS permite incluir comentarios entre sus reglas y estilos. Los comentarios son
contenidos de texto que el diseñador incluye en el archivo CSS para su propia información y
utilidad. Los navegadores ignoran por completo cualquier comentario de los archivos CSS, por
lo que es común utilizarlos para estructurar de forma clara los archivos CSS complejos.
Los comentarios pueden ocupar tantas líneas como sea necesario, pero no se puede incluir
62
Versión Mayo 2021
Martes – Semana III
Selectores en CSS
Los selectores son imprescindibles para aplicar de forma correcta los estilos CSS en una
página. Estos indican "a quién se hace el estilo". Para crear diseños web profesionales, es
Selectores básicos.
Selector universal.
asterisco (*). A pesar de su sencillez, no se utiliza habitualmente, ya que es difícil que un mismo
* {
…
}
Selector de tipo o etiqueta.
Selecciona todos los elementos de la página cuya etiqueta HTML coincide con el valor
p {
...
}
Para utilizar este selector, solamente es necesario indicar el nombre de una etiqueta
HTML (sin los caracteres < y >) correspondiente a los elementos que se quieren seleccionar.
Si se quiere aplicar los mismos estilos a dos etiquetas diferentes, se pueden encadenar los
selectores:
h1, h2, h3 {
color: #8A8E27;
font-family: Arial, Helvetica, sans-serif;
}
63
Versión Mayo 2021
Selector descendente.
descendiente de otro cuando se encuentra entre las etiquetas de apertura y de cierre del otro
elemento.
El selector del siguiente ejemplo selecciona todos los elementos <span> de la página que
<p>
...
<span>texto1</span>
...
<a href="">...<span>texto2</span></a>
...
</p>
El selector p span selecciona tanto texto1 como texto2. El motivo es que en el selector
descendente, un elemento no tiene que ser descendiente directo del otro. La única condición es
que un elemento debe estar dentro de otro elemento, sin importar el nivel de profundidad en el
que se encuentre.
Los selectores descendentes siempre están formados por dos o más selectores separados
entre sí por espacios en blanco. El último selector indica el elemento sobre el que se aplican los
estilos y todos los selectores anteriores indican el lugar en el que se debe encontrar ese elemento.
Selector de clase.
<body>
64
Versión Mayo 2021
<p>Lorem ipsum dolor sit amet...</p>
<p>Nunc sed lacus et est adipiscing accumsan...</p>
<p>Class aptent taciti sociosqu ad litora...</p>
</body>
Surge la pregunta de cómo se pueden aplicar estilos CSS sólo al primer párrafo, el
selector universal (*) no se puede utilizar porque selecciona todos los elementos de la página. El
selector de tipo o etiqueta (p) tampoco se puede utilizar porque seleccionaría todos los párrafos.
Por último, el selector descendente (body p) tampoco se puede utilizar porque todos los párrafos
Una de las soluciones más sencillas para aplicar estilos a un solo elemento de la página
consiste en utilizar el atributo class de HTML sobre ese elemento para indicar directamente la
<body>
<p class="destacado">Lorem ipsum dolor sit amet...</p>
<p>Nunc sed lacus et est adipiscing accumsan...</p>
<p>Class aptent taciti sociosqu ad litora...</p>
</body>
A continuación, se crea en el archivo CSS una nueva regla llamada destacado con todos
los estilos que se van a aplicar al elemento. Para que el navegador no confunda este selector con
los otros tipos de selectores, se prefija el valor del atributo class con un punto (.) tal y como
atributo class sea igual a destacado", por lo que solamente el primer párrafo cumple esa
condición.
65
Versión Mayo 2021
Este tipo de selectores se llaman selectores de clase y son los más utilizados junto con los
selectores de ID. La principal característica de este selector es que en una misma página HTML
<body>
<p class="destacado">Lorem ipsum dolor sit amet...</p>
<p>Nunc sed lacus et <a href="#" class="destacado">est
adipiscing</a> accumsan...</p>
<p>Class aptent taciti <em class="destacado">sociosqu ad</em>
litora...</p>
</body>
Selectores de ID.
puede utilizarse un selector de clase para aplicar estilos a un único elemento, existe otro selector
atributo id. Este tipo de selectores sólo seleccionan un elemento de la página porque el valor del
que se utiliza el símbolo de la almohadilla (#) en vez del punto (.) como prefijo del nombre de la
regla CSS:
<p>Primer párrafo</p>
<p id="destacado">Segundo párrafo</p>
<p>Tercer párrafo</p>
En el ejemplo anterior, el selector #destacado solamente selecciona el segundo párrafo
66
Versión Mayo 2021
La principal diferencia entre este tipo de selector y el selector de clase tiene que ver con
HTML y no con CSS. Como se sabe, en una misma página, el valor del atributo id debe ser
único, de forma que dos elementos diferentes no pueden tener el mismo valor de id. Sin
embargo, el atributo class no es obligatorio que sea único, de forma que muchos elementos
quiere aplicar un estilo a un solo elemento específico de la página y utilizar el selector de clase
Selectores avanzados.
Selector de hijos.
funcionamiento. Se utiliza para seleccionar un elemento que es hijo directo de otro elemento y se
<p><span>Texto1</span></p>
<p><a href="#"><span>Texto2</span></a></p>
En el ejemplo anterior, el selector p > span se interpreta como "cualquier elemento
<span> que sea hijo directo de un elemento <p>", por lo que el primer elemento <span> cumple
la condición del selector. Sin embargo, el segundo elemento <span> no la cumple porque es
Selector adyacente.
página se encuentran justo a continuación de otros elementos. Su sintaxis emplea el signo + para
67
Versión Mayo 2021
elemento1 + elemento2 { ... }
Si se considera el siguiente código HTML:
<body>
<h1>Titulo1</h1>
<h2>Subtítulo</h2>
...
<h2>Otro subtítulo</h2>
...
</body>
La página anterior dispone de dos elementos <h2>, pero sólo uno de ellos se encuentra
inmediatamente después del elemento <h1>. Si se quiere aplicar diferentes colores en función de
h2 { color: green; }
h1 + h2 { color: red }
Las reglas CSS anteriores hacen que todos los <h2> de la página se vean de color verde,
salvo aquellos <h2> que se encuentran inmediatamente después de cualquier elemento <h1> y
Técnicamente, los elementos que forman el selector adyacente deben cumplir las dos
siguientes condiciones:
• elemento1 y elemento2 deben ser elementos hermanos, por lo que su elemento padre
de la página.
Selector de atributos.
Permiten seleccionar elementos HTML en función de sus atributos y/o valores de esos
68
Versión Mayo 2021
• [nombre_atributo], selecciona los elementos que tienen establecido el atributo
atributo llamado nombre_atributo y al menos uno de los valores del atributo es valor.
llamado nombre_atributo y cuyo valor es una serie de palabras separadas con guiones,
pero que comienza con valor. Este tipo de selector sólo es útil para los atributos de
al sitio "http://www.ejemplo.com" */
sea "externo" */
69
Versión Mayo 2021
a[class~="externo"] { color: blue; }
*[lang=en] { ... }
Unidades de medida.
Las medidas en CSS se emplean, entre otras, para definir la altura, anchura y márgenes de
los elementos y para establecer el tamaño de letra del texto. Todas las medidas se indican como
un valor numérico entero o decimal seguido de una unidad de medida (sin ningún espacio en
Unidades absolutas.
Una medida indicada mediante unidades absolutas está completamente definida, ya que
cm, centímetros.
mm, milímetros.
pc, picas. Una pica equivale a 12 puntos, es decir, unos 4.23 milímetros.
70
Versión Mayo 2021
La principal ventaja de las unidades absolutas es que su valor es directamente el valor que
se debe utilizar, sin necesidad de realizar cálculos intermedios. Su principal desventaja es que
Unidades relativas.
ya que su valor siempre está referenciado respecto a otro valor. A pesar de su aparente dificultad,
son las más utilizadas en el diseño web por la flexibilidad con la que se adaptan a los diferentes
medios.
A continuación se muestran las tres unidades de medida relativas definidas por CSS y la
em, (no confundir con la etiqueta <em> de HTML) relativa respecto del tamaño de letra
del elemento.
ex, relativa respecto de la altura de la letra x ("equis minúscula") del tipo y tamaño de
Las unidades em y ex no han sido creadas por CSS, sino que llevan décadas utilizándose
anchura de la letra M ("eme mayúscula") del tipo y tamaño de letra del elemento.
utiliza una tipografía de 12 puntos, 1em equivale a 12 puntos. El valor de 1ex se puede
71
Versión Mayo 2021
Porcentajes.
El porcentaje también es una unidad de medida relativa. Un porcentaje está formado por
un valor numérico seguido del símbolo % y siempre está referenciado a otra medida. Cada una
de las propiedades de CSS que permiten indicar como valor un porcentaje, define el valor al que
h1 { font-size: 10%; }
Colores.
Los colores en CSS se pueden indicar de cinco formas diferentes: palabras clave, colores
del sistema, RGB hexadecimal, RGB numérico y RGB porcentual. Aunque el método más
Palabras clave.
CSS define 17 palabras clave para referirse a los colores básicos. Las palabras se
aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, orange, purple, red, silv
RGB decimal.
En el campo del diseño gráfico, se han definido varios modelos para hacer referencia a
los colores. Los dos modelos más conocidos son RGB y CMYK.
En el modelo RGB un color se define indicando sus tres componentes R (rojo), G (verde)
y B (azul). Cada una de las componentes puede tomar un valor entre 0 y 255. De esta forma, el
color rojo puro en RGB se crea mediante el máximo valor de la componente R y un valor
72
Versión Mayo 2021
Si todas las componentes valen 0, el color creado es el negro y si todas las componentes
La sintaxis que se utiliza para indicar los colores es rgb() y entre paréntesis se indican las
tres componentes RGB, en ese mismo orden y separadas por comas. El siguiente ejemplo
RGB porcentual.
funcionamiento y la sintaxis de este método es el mismo que el del RGB decimal. La única
diferencia es que en este caso el valor de las componentes RGB puede tomar valores
entre 0% y 100%. Por tanto, para transformar un valor RGB decimal en un valor RGB
porcentual, es preciso realizar una regla de tres considerando que 0 es igual a 0% y 255 es igual
a 100%.
Aunque es el método más complicado para indicar los colores, se trata del método más
utilizado con mucha diferencia. De hecho, prácticamente todos los sitios web reales utilizan
Definir un color en CSS con el método RGB hexadecimal requiere realizar los siguientes
pasos:
1. Determinar las componentes RGB decimales del color original, por ejemplo: R = 71,
G = 98, B = 176
73
Versión Mayo 2021
2. Transformar el valor decimal de cada componente al sistema numérico
prefijo #.
De esta forma, el color del ejemplo anterior es #4762B0 en formato RGB hexadecimal.
Siguiendo el mismo ejemplo de las secciones anteriores, el color del párrafo se indica de la
p { color: #4762B0; }
74
Versión Mayo 2021
Miércoles – Semana III
El modelo de cajas o "box model" es una de la característica más importante del lenguaje
de hojas de estilos CSS, ya que condiciona el diseño de todas las páginas web. El modelo de
cajas es el comportamiento de CSS que hace que todos los elementos de las páginas se
Las cajas de una página se crean automáticamente. Cada vez que se inserta una etiqueta
HTML, se crea una nueva caja rectangular que encierra los contenidos de ese elemento. La
siguiente imagen muestra las tres cajas rectangulares que crean las tres etiquetas HTML que
incluye la página:
Figura 17. Las cajas se crean automáticamente al definir cada elemento HTML. Fuente: (Eguiluz, Introducción a
CSS)
Las cajas de las páginas no son visibles a simple vista porque inicialmente no muestran
Los navegadores crean y colocan las cajas de forma automática, pero CSS permite
modificar todas sus características. Cada una de las cajas está formada por seis partes, tal y como
75
Versión Mayo 2021
Figura 18. Representación tridimensional del box model de CSS. Fuente: (Eguiluz, Introducción a CSS)
Las partes que componen cada caja y su orden de visualización desde el punto de vista
• Contenido (content): se trata del contenido HTML del elemento (las palabras de un
• Imagen de fondo (background image): imagen que se muestra por detrás del
• Color de fondo (background color): color que se muestra por detrás del contenido y el
espacio de relleno.
adyacentes.
Si una caja define tanto un color como una imagen de fondo, la imagen tiene más
del elemento o si la imagen tiene zonas transparentes, también se visualiza el color de fondo.
76
Versión Mayo 2021
Anchura y altura
Anchura.
La propiedad CSS que controla la anchura de la caja de los elementos se denomina width.
Se aplica a todos los elementos, salvo los elementos en línea que no sean imágenes, las filas de
tabla y los grupos de filas de tabla. Los valores que puede tomar son:
partir de la anchura de su elemento padre. El valor inherit indica que la anchura del elemento se
hereda de su elemento padre. El valor auto, que es el que se utiliza si no se establece de forma
explícita un valor a esta propiedad, indica que el navegador debe calcular automáticamente la
anchura del elemento, teniendo en cuenta sus contenidos y el sitio disponible en la página.
<div id="lateral">
...
</div>
Altura.
La propiedad CSS que controla la altura de los elementos se denomina height. Se aplica a
todos los elementos, salvo los elementos en línea que no sean imágenes, las columnas de tabla y
los grupos de columnas de tabla. Los valores que puede tomar son:
Al igual que sucede con width, la propiedad height no admite valores negativos. Si se
indica un porcentaje, se toma como referencia la altura del elemento padre. Si el elemento padre
77
Versión Mayo 2021
El valor inherit indica que la altura del elemento se hereda de su elemento padre. El
valor auto, que es el que se utiliza si no se establece de forma explícita un valor a esta propiedad,
indica que el navegador debe calcular automáticamente la altura del elemento, teniendo en
<div id="cabecera">
...
</div>
Margen y relleno.
Margen.
CSS define cuatro propiedades para controlar cada uno de los márgenes horizontales y
Se aplica a todos los elementos, salvo margin-top y margin-bottom que sólo se aplican a
los elementos de bloque y a las imágenes. Los valores que puede tomar son: unidad de
Cada una de las propiedades establece la separación entre el borde lateral de la caja y el
Figura 19. Las cuatro propiedades relacionadas con los márgenes. Fuente: (Eguiluz, Introducción a CSS)
78
Versión Mayo 2021
Además de las cuatro propiedades que controlan cada uno de los márgenes del elemento,
CSS define una propiedad especial que permite establecer los cuatro márgenes de forma
simultánea. La propiedad que permite definir de forma simultánea los cuatro márgenes se
denomina margin.
La propiedad margin admite entre uno y cuatro valores, con el siguiente significado:
• Si se indican los cuatro valores, el orden de asignación es: margen superior, margen
div img {
margin-top: .5em;
margin-bottom: .5em;
margin-left: 1em;
margin-right: .5em;
}
Alternativa directa:
div img {
margin: .5em .5em .5m 1em;
}
79
Versión Mayo 2021
Relleno.
CSS define cuatro propiedades para controlar cada uno de los espacios de relleno
left.
Se aplica a todos los elementos excepto algunos elementos de tablas como grupos de
cabeceras y grupos de pies de tabla. Los valores que puede tomar son: unidad de
Cada una de estas propiedades establece la separación entre el contenido y los bordes
Figura 20. Las cuatro propiedades relacionadas con los rellenos. Fuente: (Eguiluz, Introducción a CSS)
Como sucede con los márgenes, CSS también define una propiedad llamada padding para
establecer los cuatro rellenos de un elemento de forma simultánea. La propiedad padding admite
entre uno y cuatro valores, con el mismo significado que el de la propiedad margin. Ejemplo:
80
Versión Mayo 2021
Jueves – Semana III
Bordes en CSS
CSS permite modificar el aspecto de cada uno de los cuatro bordes de la caja de un
elemento. Para cada borde se puede establecer su anchura o grosor, su color y su estilo.
El aspecto con el que los navegadores muestran los diferentes tipos de borde se muestra a
continuación:
Figura 21.Tipos de bordes definidos por CSS. Fuente: (Eguiluz, Introducción a CSS)
CSS define una serie de propiedades que permiten establecer todos los atributos de los
todos los elementos. Sus valores son: unidad de medida_borde || color_borde || estilo_borde:
81
Versión Mayo 2021
div {
border-top: 1px solid #369;
border-bottom: 3px double #369;
}
CSS define una propiedad global para establecer el valor de todos los atributos de todos
div {
border-top: 1px solid red;
border-right: 1px solid red;
border-bottom: 1px solid red;
border-left: 1px solid red;
}
El fondo puede ser un color simple o una imagen. El fondo solamente se visualiza en el
área ocupada por el contenido y su relleno, ya que el color de los bordes se controla directamente
desde los bordes y las zonas de los márgenes siempre son transparentes.
CSS define cinco propiedades para establecer el fondo de cada elemento (background-
background-color.
elemento. El siguiente ejemplo muestra una página web con un color gris claro de fondo:
body {
background-color: #F5F5F5;
}
82
Versión Mayo 2021
background-image.
image, que permite mostrar una imagen como fondo de la caja de cualquier elemento. El
Las imágenes de fondo se indican a través de su URL, que puede ser absoluta o relativa.
background-repeat.
verticalmente. Para ello, CSS introduce la propiedad background-repeat que permite controlar la
forma de repetición de las imágenes de fondo. Puede obtener valores: repeat | repeat-x | repeat-y |
no-repeat | inherit.
El valor repeat indica que la imagen se debe repetir en todas direcciones y por tanto, es el
comportamiento por defecto. El valor no-repeat muestra una sola vez la imagen y no se repite en
ninguna dirección. El valor repeat-x repite la imagen sólo horizontalmente y el valor repeat-
83
Versión Mayo 2021
desplazamiento horizontal y al desplazamiento vertical se le asigna automáticamente el valor de
50%.
el punto (x%, y%) de la imagen de fondo en el punto (x%, y%) del elemento.
Las palabras clave permitidas son equivalentes a algunos porcentajes significativos: top =
CSS permite mezclar porcentajes y palabras clave, como por ejemplo 50% 2cm, center
El siguiente ejemplo muestra una misma imagen de fondo posicionada de tres formas
diferentes:
#caja1 {
background-image: url("images/help.png");
background-repeat: no-repeat;
background-position: bottom left;
84
Versión Mayo 2021
}
#caja2 {
background-image: url("images/help.png");
background-repeat: no-repeat;
background-position: right top;
}
#caja3 {
background-image: url("images/help.png");
background-repeat: no-repeat;
background-position: 50% 50%;
}
background-attachment.
Se utiliza para indicar que el fondo permanezca fijo cuando la ventana del navegador se
Para hacer que una imagen de fondo se muestre fija al desplazar la ventana del
es establecida en scroll.
background.
Establece todas las propiedades del fondo de un elemento. Para establecer el valor se
85
Versión Mayo 2021
Actividades – Semana III
Actividad 1
Actividad 2
Actividad 3
Cada regla CSS incluye un comentario en el que se explica los elementos a los que debe
aplicarse.
<html>
<head>
<meta charset="utf-8" />
<title>Ejercicio de selectores</title>
<style>
/* Todos los elementos de la pagina */
{
font-size: 16px;
font-family: Arial, Helvetica, sans-serif;
}
/* Todos los parrafos de la pagina */
{
color: #555;
}
/* Todos los párrafos contenidos en #primero */
{
color: #369;
}
/* Todos los enlaces la pagina */
{
color: #C30;
}
/* Los elementos <em> contenidos en #primero */
{
color: #0000BB;
86
Versión Mayo 2021
background-color: #FFFFCC;
}
/* Todos los elementos <em> con la clase "especial" en toda la pagina
*/
{
color: #FFFF00;
background: #000000;
}
/* Todos los elementos <span> contenidos en la clase "normal" */
{
font-weight: bold;
}
</style>
</head>
Actividad 4
A partir de la página web que se te proporciona, debes escribir las reglas CSS necesarias
para lograr una página web que tenga el mismo aspecto que la siguiente imagen:
Puedes modificar el código HTML proporcionado para añadir los identificadores y clases
que necesites.
<html>
<head>
<meta charset="utf-8" />
<title>Ejercicio de selectores</title>
</head>
87
Versión Mayo 2021
<body>
<table border="1">
<tr><td>teal</td><td>teal</td><td>teal</td></tr>
<tr><td>red</td><td>red</td><td>red</td></tr>
<tr><td>blue</td><td>blue</td><td>blue</td></tr>
<tr><td>orange</td><td>orange</td><td>orange</td></tr>
<tr><td>purple</td><td>purple</td><td>purple</td></tr>
<tr><td>olive</td><td>olive</td><td>olive</td></tr>
<tr><td>fuchsia</td><td>fuchsia</td><td>fuchsia</td></tr>
<tr><td>green</td><td>green</td><td>green</td></tr>
</table>
</body>
</html>
Actividad 5
Actividad 6
A partir del código HTML proporcionado, determinar las reglas CSS necesarias para
<html>
<head>
<meta charset="utf-8" />
<title>Actividad</title>
</head>
<body>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam et
elit.
Vivamus placerat lorem. Maecenas sapien. Integer ut massa. Cras diam
ipsum,
88
Versión Mayo 2021
laoreet non, tincidunt a, viverra sed, tortor.</p>
<p class="destacado">Vestibulum lectus diam, luctus vel, venenatis
ultrices,
cursus vel, tellus. Etiam placerat erat non sem. Nulla molestie odio
non
nisl tincidunt faucibus.</p>
A partir de la página web que se te proporciona, debes escribir las reglas CSS necesarias
para lograr una página web que tenga el mismo aspecto que la siguiente imagen:
Encabezado nivel 1: borde inferior con una anchura de 2px, sólido y de color azul (#00F).
Encabezado nivel 2: borde completo con una anchura de 2px, sólido y de color gris
(#AAA).
89
Versión Mayo 2021
Lista con los datos del libro: borde superior e inferior con una anchura de 4px, punteado y
Lista con el contenido del libro: borde completo con una anchura de 2px, con guiones y
<html>
<head>
<meta charset="utf-8" />
<title>HTML & CSS: Curso práctico avanzado</title>
</head>
<body>
<h1>HTML & CSS: Curso práctico avanzado</h1>
<ul>
<li>Título: HTML & CSS: Curso práctico avanzado</li>
<li>Autor: Sergio Luján Mora</li>
<li>Editorial: Publicaciones Altaria</li>
<li>Año de publicación: 2015</li>
<li>ISBN: 978-84-944049-4-8</li>
</ul>
<h2>Descripción del libro</h2>
<p>
Aunque los inicios de Internet se remontan a los años sesenta, no ha
sido hasta los años noventa cuando, gracias a la Web, se ha extendido
su uso por todo el mundo. En pocos años, la Web ha evolucionado
enormemente: se ha pasado de páginas sencillas, con pocas imágenes y
contenidos estáticos que eran visitadas por unos pocos usuarios a
páginas complejas, con contenidos dinámicos que provienen de bases de
datos y que son visitadas por miles de usuarios al mismo tiempo.
</p>
<p>
Todas las páginas están internamente construidas con la misma
tecnología, con el Lenguaje de marcas de hipertexto (Hypertext Markup
Language, HTML) y con las Hojas de estilo en cascada (Cascading Style
90
Versión Mayo 2021
Sheets, CSS).
</p>
<p>
Este libro es adecuado para cualquiera que tenga interés en aprender a
desarrollar sus propias páginas web. No son necesarios conocimientos
previos para aprender con este libro, lo único que es necesario es
saber utilizar un ordenador y saber navegar por la Web.
</p>
<h2>Contenido del libro</h2>
<p>
El contenido de este libro se estructura en tres apartados bien
diferenciados:
</p>
<ul>
<li>En la primera parte del libro se trabajan conceptos generales que
son necesarios para poder desarrollar páginas web; se explican
conceptos de estructura física y estructura lógica (o estructura de
navegación) de un sitio web. Se detalla cómo influye la estructura
física en las URL o direcciones que se emplean a la hora de crear los
enlaces de un sitio web. Pasando por el concepto de "estándar web", un
término general que se emplea para refererirse a los estándares que
define su funcionamiento como HTML y CSS, empleados para el desarrollo
de las páginas web en el lado del cliente.</li>
<li>En la segunda parte se trabaja HTML. Partiendo de la estructura
básica de una página web, se explican las etiquetas de HTML que se
utilizan para definir el texto, los enlaces, las listas, las tablas,
los formularios y los elementos multimedia.</li>
<li>En la tercera y última parte se explica CSS, el lenguaje que se
emplea para definir el formato y la presentación de una página web. Se
explica cómo utilizar el color, cómo definir la presentación del
texto, de las tablas y de los formularios; cómo realizar
transformaciones y transiciones con el fin de diseñar una página
web.</li>
</ul>
</body>
</html>
91
Versión Mayo 2021
Actividad 8
Actividad 9
Actividad 10
92
Versión Mayo 2021
Recursos – Semana III
Videos
https://www.youtube.com/watch?v=uqkj7HQ7ids
https://www.youtube.com/watch?v=SKkKLi1wAos
Presentaciones
Lecturas complmentarias
• CSS. https://desarrolloweb.com/home/css
http://www.cs.us.es/blogs/bd2012/files/2012/09/ConceptosB%C3%A1sicosDeCSS.p
df
93
Versión Mayo 2021
Semana IV
Contenido
94
Versión Mayo 2021
Pseudo-clases. ......................................................................................................... 115
95
Versión Mayo 2021
Lunes – Semana IV
Posicionamiento en CSS
Los navegadores crean y posicionan de forma automática todas las cajas que forman cada
página HTML. No obstante, CSS permite al diseñador modificar la posición en la que se muestra
cada caja.
Utilizando las propiedades que proporciona CSS para alterar la posición de las cajas es
posible realizar efectos muy avanzados y diseñar estructuras de páginas que de otra forma no
serían posibles.
El estándar de CSS define cinco modelos diferentes para posicionar una caja:
una caja según el posicionamiento normal y después desplazarla respecto de su posición original.
elemento.
Posicionamiento fijo: variante del posicionamiento absoluto que convierte una caja en un
desplaza las cajas todo lo posible hacia la izquierda o hacia la derecha de la línea en la que se
encuentran.
96
Versión Mayo 2021
El posicionamiento de una caja se establece mediante la propiedad position, la cual se
puede aplicar a cualquier elemento. Puede obtener valores static (que es la que viene por
ignoran los valores de las propiedades top, right, bottom y left que se verán a
continuación.
también se controla con las propiedades top, right, bottom y left, pero su
con otra propiedad llamada float y que se explica más adelante. Además, la
propiedad position sólo indica cómo se posiciona una caja, pero no la desplaza.
su posición original o respecto de otro origen de coordenadas. CSS define cuatro propiedades
llamadas top, right, bottom y left para controlar el desplazamiento de las cajas posicionadas.
97
Versión Mayo 2021
En el caso del posicionamiento relativo, cada una de estas propiedades indica el
Posicionamiento normal.
navegadores para mostrar los elementos de las páginas. En este modelo, sólo se tiene en cuenta si
Posicionamiento relativo.
98
Versión Mayo 2021
El desplazamiento relativo de una caja no afecta al resto de cajas adyacentes, que se
original.
Figura 22. Ejemplo de posicionamiento relativo de un elemento. Fuente (Eguiluz, Introducción a CSS)
Las cajas desplazadas de forma relativa no modifican su tamaño, por lo que los valores de
Si tanto left como right tienen un valor de auto (que es su valor por defecto) la caja no se
mueve de su posición original. Si sólo el valor de left es auto, su valor real es -right. Igualmente,
Si tanto left como right tienen valores distintos de auto, uno de los dos valores se tiene
que ignorar porque son mutuamente excluyentes. Para determinar la propiedad que se tiene en
valor de direction es ltr, el texto se muestra de izquierda a derecha, que es el método de escritura
99
Versión Mayo 2021
Si el valor de direction es ltr, y las propiedades left y right tienen valores distintos de
auto, se ignora la propiedad right y sólo se tiene en cuenta el valor de la propiedad left. De la
misma forma, si el valor de direction es rtl, se ignora el valor de left y sólo se tiene en cuenta el
valor de right.
Figura 23. Elementos posicionados de forma normal. Fuente: elaboración propia (2020)
descendente:
img.desplazada {
position: relative;
top: 12em;
}
100
Versión Mayo 2021
Figura 24. Elemento posicionado de forma relativa. Fuente: elaboración propia (2020)
El resto de imágenes no varían su posición y por tanto no ocupan el hueco dejado por la
Posicionamiento absoluto.
que se muestra la caja de un elemento. La nueva posición de la caja se indica mediante las
propiedades top, right, bottom y left. La interpretación de los valores de estas propiedades es
mucho más compleja que en el posicionamiento relativo, ya que en este caso dependen del
Cuando una caja se posiciona de forma absoluta, el resto de elementos de la página se ven
posiciona de forma absoluta una caja es probable que se produzcan solapamientos con otras
cajas.
101
Versión Mayo 2021
Figura 25. Elemento posicionado de forma relativa. Fuente: (Eguiluz, Introducción a CSS)
En la figura anterior, se puede ver que la caja 2 está posicionada de forma absoluta, lo
que provoca que el resto de elementos de la página modifiquen su posición. En concreto, la caja
Por otra parte, el desplazamiento de una caja posicionada de forma absoluta se controla
mediante las propiedades top, right, bottom y left. A diferencia del posicionamiento relativo, la
interpretación de los valores de estas propiedades depende del elemento contenedor de la caja
posicionada.
descendente:
img.desplazada {
position: absolute;
top: 12em;
}
El aspecto que muestran ahora las imágenes es el siguiente:
102
Versión Mayo 2021
Figura 26. Elemento posicionado de forma absoluta. Fuente: elaboración propia (2020)
Posicionamiento fijo.
posicionadas.
Cuando una caja se posiciona de forma fija, la forma de obtener el origen de coordenadas
usuario no mueve la página HTML en la ventana del navegador, no existe ninguna diferencia
103
Versión Mayo 2021
La principal característica de una caja posicionada de forma fija es que su posición es
inamovible dentro de la ventana del navegador. El posicionamiento fijo hace que las cajas no
Posicionamiento flotante.
automáticamente se convierte en una caja flotante, lo que significa que se desplaza hasta la zona
la caja 1:
Figura 27. Ejemplo de posicionamiento float de una caja. Fuente: (Eguiluz, Introducción a CSS)
Las cajas flotantes influyen en la disposición de todas las demás cajas. Los elementos en
línea hacen sitio a las cajas flotantes adaptando su anchura al espacio libre dejado por la caja
desplazada. Los elementos de bloque no les hacen sitio, pero sí que adaptan sus contenidos para
La propiedad CSS que permite posicionar de forma flotante una caja se denomina float.
Si se indica un valor left, la caja se desplaza hasta el punto más a la izquierda posible en esa
104
Versión Mayo 2021
misma línea (si no existe sitio en esa línea, la caja baja una línea y se muestra lo más a la
El valor right tiene un funcionamiento idéntico, salvo que en este caso, la caja se desplaza
hacia la derecha. El valor none permite anular el posicionamiento flotante de forma que el
105
Versión Mayo 2021
Martes – Semana IV
Visualización
define otras cuatro propiedades para controlar su visualización: display, visibility, overflow y z-
index.
Utilizando algunas de estas propiedades es posible ocultar y/o hacer invisibles las cajas
de los elementos, por lo que son imprescindibles para realizar efectos avanzados y animaciones.
Las propiedades display y visibility controlan la visualización de los elementos. Las dos
con JavaScript para crear efectos dinámicos como mostrar y ocultar determinados textos o
Por otra parte, la propiedad visibility permite hacer invisible un elemento, lo que significa
que el navegador crea la caja del elemento pero no la muestra. En este caso, el resto de elementos
de la página no modifican su posición, ya que aunque la caja no se ve, sigue ocupando sitio.
106
Versión Mayo 2021
Figura 28. Diferencias visuales entre las propiedades display y visibility. Fuente: (Eguiluz, Introducción a CSS)
página, por lo que la propiedad display se utiliza mucho más que la propiedad visibility.
Propiedad display.
Las posibilidades de la propiedad display son mucho más avanzadas que simplemente
elemento.
Los valores más utilizados son inline, block y none. El valor block muestra un elemento
como si fuera un elemento de bloque, independientemente del tipo de elemento que se trate. El
valor inline visualiza un elemento en forma de elemento en línea, independientemente del tipo de
107
Versión Mayo 2021
El siguiente ejemplo muestra el uso de la propiedad display para mostrar un elemento de
bloque como si fuera un elemento en línea y para mostrar un elemento en línea como si fuera un
elemento de bloque:
<div>DIV normal</div>
<div style="display:inline">DIV con display:inline</div>
Las posibilidades de la propiedad visibility son mucho más limitadas que las de la
propiedad display, ya que sólo permite hacer visibles o invisibles a los elementos de la página.
Inicialmente todas las cajas que componen la página son visibles. Empleando el
valor hidden es posible convertir una caja en invisible para que no muestre sus contenidos. El
resto de elementos de la página se muestran como si la caja todavía fuera visible, por lo que en el
lugar donde originalmente se mostraba la caja invisible, ahora se muestra un hueco vacío.
108
Versión Mayo 2021
Por último, el valor collapse de la propiedad visibility sólo se puede utilizar en las filas,
propiedad display, ya que oculta completamente la fila y/o columna y se pueden mostrar otros
contenidos en ese lugar. Si se utiliza el valor collapse sobre cualquier otro tipo de elemento, su
Propiedad overflow.
para ese elemento. Sin embargo, en algunas ocasiones el contenido de un elemento no cabe en el
cuando se establece la anchura y/o altura de un elemento mediante la propiedad width y/o height.
Otra situación habitual es la de las líneas muy largas contenidas dentro de un elemento <pre>,
CSS define la propiedad overflow para controlar la forma en la que se visualizan los
• hidden: el contenido sobrante se oculta y sólo se visualiza la parte del contenido que
• scroll: solamente se visualiza el contenido que cabe dentro de la zona reservada para
el elemento, pero también se muestran barras de scroll que permiten visualizar el resto
del contenido.
109
Versión Mayo 2021
• auto: el comportamiento depende del navegador, aunque normalmente es el mismo
propiedad overflow:
div {
display: inline;
float: left;
margin: 1em;
padding: .3em;
border: 2px solid #555;
width: 100px;
height: 150px;
font: 1em Arial, Helvetica, sans-serif;
}
110
Versión Mayo 2021
<div style="overflow:hidden"><h1>overflow: hidden</h1> Lorem ipsum
dolor
sit amet, consectetuer adipiscing elit. Cras vitae dolor eu enim
dignissim
lacinia. Maecenas blandit. Morbi mi.</div>
Además de posicionar una caja de forma horizontal y vertical, CSS permite controlar la
posición tridimensional de las cajas posicionadas. De esta forma, es posible indicar las cajas que
controla mediante la propiedad z-index. Utilizando esta propiedad es posible crear páginas
especificación oficial permite los números negativos, en general se considera el número 0 como
Cuanto más alto sea el valor numérico, más cerca del usuario se muestra la caja. Un
elemento con z-index: 10 se muestra por encima de los elementos con z-index: 8 o z-index: 9,
111
Versión Mayo 2021
Figura 31. Ejemplo de propiedad z-index. Fuente: (Eguiluz, Introducción a CSS)
Tipografía.
Tabla 2.
Propiedades para tipografía.
Propiedad Descripción
Color Establece el color de letra utilizado
para el texto
font-family Establece el tipo de letra utilizado
para el texto
font-size Establece el tamaño de letra utilizado
para el texto
font-weight Establece la anchura de la letra
utilizada para el texto
font-style Establece el estilo de la letra utilizada
para el texto
font-variant Establece el estilo alternativo de la
letra utilizada para el texto. La
propiedad font-variant no se suele
emplear habitualmente, ya que sólo
permite mostrar el texto con letra
versal (mayúsculas pequeñas).
Además de las propiedades relativas a la tipografía del texto, CSS define numerosas
113
Versión Mayo 2021
Tabla 3.
Propiedades para la apariencia del texto.
Propiedad Valores Descripción
text-align left | right | center | Establece la alineación del
justify contenido del elemento
line-height normal | numero Permite establecer la altura
| unidad de medida de línea de los elementos
text-decoration none | ( underline || Establece la decoración del
overline || line- texto (subrayado, tachado,
through || blink ) parpadeante, etc.)
text-transform capitalize | uppercase Transforma el texto
| lowercase | none original (lo transforma a
mayúsculas, a minúsculas,
etc.)
text-indent unidad de medida Tabula desde la izquierda
la primera línea del texto
original
letter-spacing normal | unidad de Permite establecer el
medida espacio entre las letras que
forman las palabras del
texto
word-spacing normal | unidad de Permite establecer el
medida espacio entre las palabras
que forman el texto
white-space normal | pre | nowrap Establece el tratamiento de
| pre-wrap | pre-line los espacios en blanco del
texto
114
Versión Mayo 2021
Jueves – Semana IV
Enlaces
Los estilos más sencillos que se pueden aplicar a los enlaces son los que modifican su
Pseudo-clases.
estado. De esta forma, es posible cambiar el aspecto de un enlace cuando por ejemplo el usuario
pasa el ratón por encima o cuando el usuario pincha sobre ese enlace.
Como con los atributos id o class no es posible aplicar diferentes estilos a un mismo
:link, aplica estilos a los enlaces que apuntan a páginas o recursos que aún no han sido
:visited, aplica estilos a los enlaces que apuntan a recursos que han sido visitados
:hover, aplica estilos al enlace sobre el que el usuario ha posicionado el puntero del ratón.
:active, aplica estilos al enlace que está pinchando el usuario. Los estilos sólo se aplican
desde que el usuario pincha el botón del ratón hasta que lo suelta, por lo que suelen ser unas
Como se sabe, por defecto los navegadores muestran los enlaces no visitados de color
azul y subrayado y los enlaces visitados de color morado. Las pseudo-clases anteriores permiten
modificar completamente ese aspecto por defecto y por eso casi todas las páginas las utilizan.
115
Versión Mayo 2021
El siguiente ejemplo muestra cómo ocultar el subrayado cuando el usuario pasa el ratón
Aplicando las reglas anteriores, los navegadores ocultan el subrayado del enlace sobre el
Figura 32. Ocultando el subrayado de los enlaces al pasar el ratón por encima. Fuente: (Eguiluz, Introducción a
CSS)
Las pseudo-clases siempre incluyen dos puntos (:) por delante de su nombre y siempre se
añaden a continuación del elemento al que se aplican, sin dejar ningún espacio en blanco por
delante
Las pseudo-clases :link y :visited solamente están definidas para los enlaces, pero las
Las propiedades definidas por CSS permiten mostrar los enlaces con el aspecto de un
botón, lo que puede ser útil en formularios en los que no se utilizan elementos específicos para
crear botones.
116
Versión Mayo 2021
Figura 33. Mostrando un enlace como si fuera un botón. Fuente: (Eguiluz, Introducción a CSS)
Listas
CSS define una propiedad que permite establecer todas las propiedades de una lista de
forma directa. La propiedad se denomina list-style, los valores que se le puede colocar: ( list-
personalizadas:
ul { list-style: none }
117
Versión Mayo 2021
Menú vertical.
Los sitios web correctamente diseñados emplean las listas de elementos para crear todos
sus menús de navegación. Utilizando la etiqueta <ul> de HTML se agrupan todas las opciones
del menú y haciendo uso de CSS se modifica su aspecto para mostrar un menú horizontal o
vertical.
vertical de navegación.
<ul>
<li><a href="#">Elemento 1</a></li>
<li><a href="#">Elemento 2</a></li>
<li><a href="#">Elemento 3</a></li>
<li><a href="#">Elemento 4</a></li>
<li><a href="#">Elemento 5</a></li>
<li><a href="#">Elemento 6</a></li>
</ul>
Aspecto final del menú vertical:
118
Versión Mayo 2021
2. Eliminar las viñetas automáticas y todos los márgenes y espaciados aplicados por
defecto:
ul.menu {
list-style: none;
margin: 0;
padding: 0;
width: 180px;
}
3. Añadir un borde al menú de navegación y establecer el color de fondo y los bordes de
ul.menu {
border: 1px solid #7C7C7C;
border-bottom: none;
list-style: none;
margin: 0;
padding: 0;
width: 180px;
}
ul.menu li {
background: #F4F4F4;
border-bottom: 1px solid #7C7C7C;
border-top: 1px solid #FFF;
}
4. Aplicar estilos a los enlaces: mostrarlos como un elemento de bloque para que ocupen
todo el espacio de cada <li> del menú, añadir un espacio de relleno y modificar los
ul.menu li a {
color: #333;
display: block;
padding: .2em 0 .2em .5em;
text-decoration: none;
}
119
Versión Mayo 2021
Menú horizontal básico.
Partiendo de la misma lista de elementos del menú vertical, resulta muy sencillo crear un
elementos de la lista.
<ul>
<li><a href="#">Elemento 1</a></li>
<li><a href="#">Elemento 2</a></li>
<li><a href="#">Elemento 3</a></li>
<li><a href="#">Elemento 4</a></li>
<li><a href="#">Elemento 5</a></li>
</ul>
Aspecto final del menú horizontal:
1. Aplicar los estilos CSS básicos para establecer el estilo del menú (similares a los del
ul.menu {
background: #F4F4F4;
border: 1px solid #7C7C7C;
list-style: none;
margin: 0;
padding: 0;
}
ul.menu li a {
color: #333;
display: block;
padding: .3em;
text-decoration: none;
}
120
Versión Mayo 2021
2. Establecer la anchura de los elementos del menú. Como el menú es de anchura
variable y contiene cinco elementos, se asigna una anchura del 20% a cada elemento.
ul.menu li {
float: left;
width: 20%;
}
Después de posicionar de forma flotante a todos los elementos de la lista, el
elemento <ul> es un elemento vacío ya que en su interior no existe ningún elemento posicionado
de forma normal.
aplicar la propiedad overflow: hidden; al elemento <ul>, de forma que encierre a todos los
ul.menu {
overflow: hidden;
}
3. Establecer los bordes de los elementos que forman el menú:
ul.menu li a {
border-left: 1px solid #FFF;
border-right: 1px solid #7C7C7C;
}
4. Por último, se elimina el borde derecho del último elemento de la lista, para evitar el
borde duplicado:
<ul>
<li><a href="#">Elemento 1</a></li>
<li><a href="#">Elemento 2</a></li>
121
Versión Mayo 2021
<li><a href="#">Elemento 3</a></li>
<li><a href="#">Elemento 4</a></li>
<li><a href="#" style="border-right: none">Elemento 5</a></li>
</ul>
122
Versión Mayo 2021
Actividad – Semana IV
Actividad 1
Realice un resumen (200 palabras minimo) sobre el posicionamiento y sus tipos en CSS.
Actividad 2
Actividad 3
Actividad 4
Utilizando las propiedades display y visibility de CSS, cree una página como la siguiente:
123
Versión Mayo 2021
Actividad 5
A partir de la página web que se te proporciona, debes crear una página web que tenga el
• El tipo de letra principal del texto debe ser Calibri. Como este tipo de letra no está en
todos los ordenadores, se debe definir como alternativa los tipos de letra Arial,
• El tipo de letra del encabezado de nivel 1 debe ser Cambria. El tipo alternativo debe
ser Times junto con el tipo genérico serif. El color del texto debe ser #1F497D y el
color del fondo #BFBFBF. El tamaño del texto debe ser 24 px. El espaciado entre
letras debe ser 0.5 em y el espaciado entre palabras 1.5 em. Además, el encabezado de
color del texto debe ser #632423. El tamaño del texto debe ser 18 px. El espaciado
entre letras debe ser 0.5 em. Además, el encabezado de nivel 2 debe aparecer en
mayúsculas.
124
Versión Mayo 2021
• El contenido de las listas debe aparecer en cursiva y en negrita. Sin embargo, el
contenido etiquetado como <strong> no debe aparecer en negrita, pero debe aparecer
en versalitas.
• No puedes modificar el código HTML de la página, sólo puedes añadir las reglas CSS
<html>
<head>
<meta charset="utf-8" />
<title>Curriculum Vitae de Bruce Wayne</title>
</head>
<body>
<h1>Curriculum Vitae de Bruce Wayne</h1>
<h2>Datos personales</h2>
<ul>
<li>Nombre completo: <strong>Bruce Wayne</strong></li>
<li>Fecha de nacimiento: <strong>1/5/1939</strong></li>
<li>Lugar de nacimiento: <strong>Gotham City</strong></li>
</ul>
<h2>Formación académica</h2>
<ul>
<li>1956-1961: <strong>Universidad del Espantapájaros</strong></li>
<li>1952-1956: <strong>Instituto de Dos Caras</strong></li>
<li>1944-1952: <strong>Escuela Primaria del Joker</strong></li>
</ul>
<h2>Experiencia laboral</h2>
<ul>
<li>1975-1985: <strong>En el paro</strong></li>
<li>1965-1975: <strong>Cazavillanos y demás chusma</strong></li>
<li>1962-1965: <strong>Aprendiz de superhéroe</strong></li>
</ul>
</body>
</html>
125
Versión Mayo 2021
Actividad 6
Definir las reglas CSS que permiten mostrar un texto como el siguiente:
Actividad 7
Definir las reglas CSS que permiten mostrar los enlaces con los siguientes estilos:
• Cuando el usuario pasa su ratón sobre el enlace, se muestra con un color de fondo
Actividad 8
Definir las reglas CSS que permiten mostrar el enlace con un botón: color de fondo rojo,
letras blancas, relleno de 15px. Cuando el usuario pasa su ratón sobre el enlace, se muestra con
126
Versión Mayo 2021
Actividad 9
Realice el código HTML y CSS necesario para obtener un menú como el siguiente:
Actividad 10
Realice el código HTML y CSS necesario para obtener un menú como el siguiente:
127
Versión Mayo 2021
Recursos – Semana IV
Videos
https://www.youtube.com/watch?v=JwyjHyGOgmg
• https://www.youtube.com/watch?v=hAEfwmJqvmY
Presentaciones
posicionamiento-y-visualizacion
del-texto-en-css
https://es.slideshare.net/rennybatista/html-tema-2
Lecturas complementarias
• Posicionamiento CSS.
https://developer.mozilla.org/es/docs/Web/CSS/CSS_Positioning
https://developer.mozilla.org/es/docs/Web/CSS/Introducci%C3%B3n/Los:estilos_de_
texto
dando-estilo-a-los-enlaces-links-o-hipervinculos/
128
Versión Mayo 2021
Semana V
Contenido
129
Versión Mayo 2021
Variables en JavaScript ................................................................................................... 151
Asignación............................................................................................................... 155
130
Versión Mayo 2021
Lunes – Semana
Propiedad border-collapse.
Define el mecanismo de fusión de los bordes de las celdas adyacentes de una tabla.
El modelo collapse fusiona de forma automática los bordes de las celdas adyacentes,
mientras que el modelo separate fuerza a que cada celda muestre sus cuatro bordes. Por defecto,
los navegadores utilizan el modelo separate, tal y como se puede comprobar en el ejemplo
anterior.
En general, los diseñadores prefieren el modelo collapse porque estéticamente resulta más
atractivo y más parecido a las tablas de datos tradicionales. El ejemplo anterior se puede rehacer
para mostrar la tabla con bordes sencillos y sin separación entre celdas:
.normal {
width: 250px;
border: 1px solid #000;
border-collapse: collapse;
}
.normal th, .normal td {
border: 1px solid #000;
}
131
Versión Mayo 2021
<table class="normal" summary="Tabla genérica">
<tr>
<th scope="col">A</th>
<th scope="col">B</th>
<th scope="col">C</th>
<th scope="col">D</th>
<th scope="col">E</th>
</tr>
...
</table>
Propiedad border-spacing.
Establece la separación entre los bordes de las celdas adyacentes de una tabla. Si
solamente se indica como valor una medida, se asigna ese valor como separación horizontal y
puede utilizar para modificar el tipo de modelo de bordes que se utiliza. En concreto, si se
establece un valor igual a 0 para la separación entre los bordes de las celdas, el resultado es muy
132
Versión Mayo 2021
En la tabla del ejemplo anterior, se ha establecido la propiedad border-spacing: 0, por lo
que el navegador no introduce ninguna separación entre los bordes de las celdas. Además, como
modelo separate.
El resultado es que border-spacing: 0 muestra los bordes con una anchura doble, ya que
en realidad se trata de dos bordes iguales sin separación entre ellos. Por tanto, las diferencias
Propiedad empty-cells.
Define el mecanismo utilizado para el tratamiento de las celdas vacías de una tabla. El
valor hide indica que las celdas vacías no se deben mostrar. Una celda vacía es aquella que no
La siguiente imagen muestra las diferencias entre una tabla normal y una tabla con la
Propiedad caption-side.
Establece la posición del título de la tabla. Puede tener valores: top | bottom | inherit.
133
Versión Mayo 2021
El valor bottom indica que el título de la tabla se debe mostrar debajo de los contenidos
de la tabla. Si también se quiere modificar la alineación horizontal del título, debe utilizarse la
propiedad text-align.
propiedad caption-side:
.especial {
caption-side: bottom;
}
navegador:
134
Versión Mayo 2021
Formularios
Por defecto, los campos de texto de los formularios no incluyen ningún espacio de
relleno, por lo que el texto introducido por el usuario aparece pegado a los bordes del cuadro de
texto.
form.elegante input {
padding: .2em;
}
Labels alineadas y formateadas.
Los elementos <input> y <label> de los formularios son elementos en línea, por lo que el
aspecto que muestran los formularios por defecto, es similar al de la siguiente imagen:
135
Versión Mayo 2021
Figura 40. Aspecto por defecto que muestran los formularios
<form>
<fieldset>
<legend>Alta en el servicio</legend>
<label for="nombre">Nombre</label>
<input type="text" id="nombre" />
<label for="apellidos">Apellidos</label>
<input type="text" id="apellidos" size="50" />
<label for="dni">DNI</label>
<input type="text" id="dni" size="10" maxlength="9" />
<label for="contrasena">Contraseña</label>
<input type="password" id="contrasena" />
136
Versión Mayo 2021
Figura 41. Mostrando las etiquetas label encima de los campos del formulario
En primer lugar, se muestran los elementos <label> como elementos de bloque, para que
añadan una separación para cada campo del formulario. Además, se añade un margen superior
label {
display: block;
margin: .5em 0 0 0;
}
El botón del formulario también se muestra como un elemento de bloque y se le añade un
.btn {
display: block;
margin: 1em 0;
}
En ocasiones, es más útil mostrar todos los campos del formulario con
su <label> alineada a la izquierda y el campo del formulario a la derecha de cada <label>, como
137
Versión Mayo 2021
Figura 42. Mostrando las etiquetas label alineadas con los campos del formulario
Para mostrar un formulario tal y como aparece en la imagen anterior no es necesario crear
una tabla y controlar la anchura de sus columnas para conseguir una alineación perfecta. Sin
embargo, sí que es necesario añadir un nuevo elemento (por ejemplo un <div>) que encierre a
cada uno de los campos del formulario (<label> y <input>). El esquema de la solución propuesta
es el siguiente:
Por tanto, en el código HTML del formulario anterior se añaden los elementos <div>:
<form>
<fieldset>
<legend>Alta en el servicio</legend>
<div>
<label for="nombre">Nombre</label>
<input type="text" id="nombre" />
</div>
<div>
138
Versión Mayo 2021
<label for="apellidos">Apellidos</label>
<input type="text" id="apellidos" size="35" />
</div>
...
</fieldset>
</form>
Y en el código CSS se añaden las reglas necesarias para alinear los campos del
formulario:
div {
margin: .4em 0;
}
div label {
width: 25%;
float: left;
}
139
Versión Mayo 2021
Martes – Semana V
Layout
El diseño de las páginas web habituales se divide en bloques: cabecera, menú, contenidos
El objetivo de este diseño es definir una estructura de página con cabecera y pie, un menú
Figura 44. Esquema del diseño a 2 columnas con cabecera y pie de página
La solución CSS se basa en el uso de la propiedad float para los elementos posicionados
como el menú y los contenidos y el uso de la propiedad clear en el pie de página para evitar los
140
Versión Mayo 2021
Figura 45. Propiedades CSS necesarias en el diseño a dos columnas con cabecera y pie de página
El código HTML y CSS mínimos para definir la estructura de la página sin aplicar ningún
#contenedor {
width: 700px;
}
#cabecera {
}
#menu {
float: left;
width: 150px;
}
#contenido {
float: left;
width: 550px;
}
#pie {
clear: both;
}
<body>
<div id="contenedor">
<div id="cabecera">
141
Versión Mayo 2021
</div>
<div id="menu">
</div>
<div id="contenido">
</div>
<div id="pie">
</div>
</div>
</body>
En los estilos CSS anteriores se ha optado por desplazar tanto el menú como los
contenidos hacia la izquierda de la página (float: left). Sin embargo, en este caso también se
podría desplazar el menú hacia la izquierda (float:left) y los contenidos hacia la derecha (float:
right).
ventana del navegador. Para conseguir una página de anchura variable y que se adapte de forma
dinámica a la ventana del navegador, se deben aplicar las siguientes reglas CSS:
#contenedor {
}
#cabecera {
}
#menu {
float: left;
width: 15%;
}
#contenido {
float: left;
width: 85%;
}
#pie {
clear: both;
}
142
Versión Mayo 2021
Si se indican las anchuras de los bloques que forman la página en porcentajes, el diseño
final es dinámico. Para crear diseños de anchura fija, basta con establecer las anchuras de los
bloques en píxel.
Además del diseño a dos columnas, el diseño más utilizado es el de tres columnas con
cabecera y pie de página. En este caso, los contenidos se dividen en dos zonas diferenciadas:
Figura 46. Esquema del diseño a tres columnas con cabecera y pie de página
La solución CSS emplea la misma estrategia del diseño a dos columnas y se basa en
143
Versión Mayo 2021
Figura 47. Propiedades CSS necesarias en el diseño a 3 columnas con cabecera y pie de página
El código HTML y CSS mínimos para definir la estructura de la página sin aplicar ningún
#contenedor {
}
#cabecera {
}
#menu {
float: left;
width: 15%;
}
#contenido {
float: left;
width: 85%;
}
#contenido #principal {
float: left;
width: 80%;
}
#contenido #secundario {
float: left;
width: 20%;
}
144
Versión Mayo 2021
#pie {
clear: both;
}
<body>
<div id="contenedor">
<div id="cabecera">
</div>
<div id="menu">
</div>
<div id="contenido">
<div id="principal">
</div>
<div id="secundario">
</div>
</div>
<div id="pie">
</div>
</div>
</body>
El código anterior crea una página con anchura variable que se adapta a la ventana del
navegador. Para definir una página con anchura fija, solamente es necesario sustituir las anchuras
Al igual que sucedía en el diseño a dos columnas, se puede optar por posicionar todos los
elementos mediante float: left o se puede utilizar float: left para el menú y la zona principal de
contenidos y float: right para el contenedor de los contenidos y la zona secundaria de contenidos.
145
Versión Mayo 2021
Miércoles – Semana V
JavaScript
páginas web dinámicas. Los programas escritos con JavaScript se pueden probar directamente en
del documento. Aunque es correcto incluir cualquier bloque de código en cualquier zona de la
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-
1" />
<title>Ejemplo de código JavaScript en el propio documento</title>
</head>
<body>
<p>Un párrafo de texto.</p>
</body>
<script type="text/javascript">
alert("Un mensaje de prueba");
</script>
</html>
Para que la página HTML resultante sea válida, es necesario añadir el atributo type a la
etiqueta <script>. Los valores que se incluyen en el atributo type están estandarizados y para el
146
Versión Mayo 2021
Este método se emplea cuando se define un bloque pequeño de código o cuando se
quieren incluir instrucciones específicas en un determinado documento HTML que completen las
instrucciones y funciones que se incluyen por defecto en todos los documentos del sitio web.
código, es necesario modificar todas las páginas que incluyen ese mismo bloque de código
JavaScript.
que los documentos XHTML enlazan mediante la etiqueta <script>. Se pueden crear todos los
archivos JavaScript que sean necesarios y cada documento XHTML puede enlazar tantos
Ejemplo:
Archivo codigo.js
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-
1" />
<title>Ejemplo de código JavaScript en el propio documento</title>
</head>
<body>
<p>Un párrafo de texto.</p>
</body>
<script type="text/javascript" src="/js/codigo.js"></script>
</html>
Además del atributo type, este método requiere definir el atributo src, que es el que indica
la URL correspondiente al archivo JavaScript que se quiere enlazar. Cada etiqueta <script>
147
Versión Mayo 2021
solamente puede enlazar un único archivo, pero en una misma página se pueden incluir tantas
Los archivos de tipo JavaScript son documentos normales de texto con la extensión .js,
que se pueden crear con cualquier editor de texto como Notepad, Wordpad, EmEditor, UltraEdit,
Vi, etc.
código XHTML de la página, que se puede reutilizar el mismo código JavaScript en todas las
páginas del sitio web y que cualquier modificación realizada en el archivo JavaScript se ve
Este último método es el menos utilizado, ya que consiste en incluir trozos de JavaScript
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-
1" />
<title>Ejemplo de código JavaScript en el propio documento</title>
</head>
<body>
<p onclick="alert('Un mensaje de prueba')">Un párrafo de texto.</p>
</body>
</html>
El mayor inconveniente de este método es que ensucia innecesariamente el código
método sólo se utiliza para definir algunos eventos y en algunos otros casos especiales.
148
Versión Mayo 2021
Sintaxis.
deben seguirse al escribir el código fuente de los programas para considerarse como correctos
Java y C. Las normas básicas que definen la sintaxis de JavaScript son las siguientes:
• No se tienen en cuenta los espacios en blanco y las nuevas líneas: como sucede
entenderlo mejor (tabulando las líneas, añadiendo espacios, creando nuevas líneas,
etc.)
el tipo de dato que almacenará. De esta forma, una misma variable puede
tradición de terminar cada sentencia con el carácter del punto y coma (;).
149
Versión Mayo 2021
• Se pueden incluir comentarios: los comentarios se utilizan para añadir
junto con el resto del script, por lo que es necesario extremar las precauciones
JavaScript define dos tipos de comentarios: los de una sola línea y los que ocupan varias
líneas.
principio de la línea.
símbolos /* y */.
150
Versión Mayo 2021
Jueves – Semana V
Variables en JavaScript
Las variables en los lenguajes de programación siguen una lógica similar a las variables
utilizadas en otros ámbitos como las matemáticas. Una variable es un elemento que se emplea
Las variables en JavaScript se crean mediante la palabra reservada var. De esta forma, el
var numero_1 = 3;
var numero_2 = 1;
var resultado = numero_1 + numero_2;
La palabra reservada var solamente se debe indicar al definir por primera vez la variable,
lo que se denomina declarar una variable. Cuando se utilizan las variables en el resto de
Si cuando se declara una variable se le asigna también un valor, se dice que la variable ha
declarar por una parte y asignarles un valor posteriormente. Por tanto, el ejemplo anterior se
var numero_1;
var numero_2;
numero_1 = 3;
numero_2 = 1;
var resultado = numero_1 + numero_2;
Una de las características más sorprendentes de JavaSript para los programadores
habituados a otros lenguajes de programación es que tampoco es necesario declarar las variables.
En otras palabras, se pueden utilizar variables que no se han definido anteriormente mediante la
forma:
151
Versión Mayo 2021
var numero_1 = 3;
var numero_2 = 1;
La variable “resultado” no está declarada, por lo que JavaScript crea una variable global
(más adelante se verán las diferencias entre variables locales y globales) y le asigna el valor
numero_1 = 3;
numero_2 = 1;
En cualquier caso, se recomienda declarar todas las variables que se vayan a utilizar.
El nombre de una variable también se conoce como identificador y debe cumplir las
siguientes normas:
• Sólo puede estar formado por letras, números y los símbolos $ (dólar) y _ (guión
bajo).
Tipos de variables.
Aunque todas las variables de JavaScript se crean de la misma forma (mediante la palabra
reservada var), la forma en la que se les asigna un valor depende del tipo de valor que se quiere
Numéricas.
decimales (llamados float en inglés). En este caso, el valor se asigna indicando directamente el
152
Versión Mayo 2021
número entero o decimal. Los números decimales utilizan el carácter . (punto) en vez de , (coma)
Se utilizan para almacenar caracteres, palabras y/o frases de texto. Para asignar el valor a
la variable, se encierra el valor entre comillas dobles o simples, para delimitar su comienzo y su
final:
En ocasiones, a los arrays se les llama vectores, matrices e incluso arreglos. No obstante,
programación.
Un array es una colección de variables, que pueden ser todas del mismo tipo o cada una
de un tipo diferente. Su utilidad se comprende mejor con un ejemplo sencillo: si una aplicación
necesita manejar los días de la semana, se podrían crear siete variables de tipo texto:
la programación. Si en vez de los días de la semana se tuviera que guardar el nombre de los
meses del año, el nombre de todos los países del mundo o las mediciones diarias de temperatura
de los últimos 100 años, se tendrían que crear decenas o cientos de variables.
153
Versión Mayo 2021
En este tipo de casos, se pueden agrupar todas las variables relacionadas en una colección
en este caso los días de la semana. Para definir un array, se utilizan los caracteres [ y ] para
delimitar su comienzo y su final y se utiliza el carácter , (coma) para separar sus elementos:
elemento se accede indicando su posición dentro del array. La única complicación, que es
responsable de muchos errores cuando se empieza a programar, es que las posiciones de los
Para ello, se indica el nombre del array y entre corchetes la posición del elemento dentro del
array. Como se ha comentado, las posiciones se empiezan a contar en el 0, por lo que el primer
El valor dias[5] hace referencia al elemento que ocupa la sexta posición dentro del
array dias. Como las posiciones empiezan a contarse en 0, la posición 5 hace referencia al sexto
Booleanos.
Las variables de tipo boolean o booleano también se conocen con el nombre de variables
de tipo lógico. Una variable de tipo boolean almacena un tipo especial de valor que solamente
154
Versión Mayo 2021
puede tomar dos valores: true (verdadero) o false (falso). No se puede utilizar para almacenar
Los únicos valores que pueden almacenar estas variables son true y false, por lo que no
pueden utilizarse los valores verdadero y falso. A continuación se muestra un par de variables de
tipo booleano:
matemáticas con sus valores y comparar diferentes variables. De esta forma, los operadores
permiten a los programas realizar cálculos complejos y tomar decisiones lógicas en función de
Asignación.
var numero1 = 3;
A la izquierda del operador, siempre debe indicarse el nombre de una variable. A la
derecha del operador, se pueden indicar variables, valores, condiciones lógicas, etc:
var numero1 = 3;
var numero2 = 4;
Incremento y decremento
Estos dos operadores solamente son válidos para las variables numéricas y se utilizan
var numero = 5;
++numero;
alert(numero); // numero = 6
155
Versión Mayo 2021
El operador de incremento se indica mediante el prefijo ++ en el nombre de la variable.
El resultado es que el valor de esa variable se incrementa en una unidad. Por tanto, el anterior
ejemplo es equivalente a:
var numero = 5;
numero = numero + 1;
alert(numero); // numero = 6
De forma equivalente, el operador decremento (indicado como un prefijo -- en el nombre
var numero = 5;
--numero;
alert(numero); // numero = 4
El anterior ejemplo es equivalente a:
var numero = 5;
numero = numero - 1;
alert(numero); // numero = 4
Los operadores de incremento y decremento no solamente se pueden indicar como prefijo
del nombre de la variable, sino que también es posible utilizarlos como sufijo. En este caso, su
var numero = 5;
numero++;
alert(numero); // numero = 6
El resultado de ejecutar el script anterior es el mismo que cuando se utiliza el
operador ++numero, por lo que puede parecer que es equivalente indicar el operador ++ delante
o detrás del identificador de la variable. Sin embargo, el siguiente ejemplo muestra sus
diferencias:
var numero1 = 5;
var numero2 = 2;
numero3 = numero1++ + numero2;
// numero3 = 7, numero1 = 6
156
Versión Mayo 2021
var numero1 = 5;
var numero2 = 2;
numero3 = ++numero1 + numero2;
// numero3 = 8, numero1 = 6
Si el operador ++ se indica como prefijo del identificador de la variable, su valor se
incrementa antes de realizar cualquier otra operación. Si el operador ++ se indica como sufijo del
aparece.
incrementa el valor de numero1 y vale 6). Sin embargo, en la instrucción numero3 = ++numero1
(primero se incrementa numero1 y vale 6, después se realiza la suma y numero3 vale 8).
Lógicos.
Los operadores lógicos son imprescindibles para realizar aplicaciones complejas, ya que
se utilizan para tomar decisiones sobre las instrucciones que debería ejecutar el programa en
lógico o booleano.
Negación.
Uno de los operadores lógicos más utilizados es el de la negación. Se utiliza para obtener
157
Versión Mayo 2021
Si la variable original es de tipo booleano, es muy sencillo obtener su negación. Sin
embargo, ¿qué sucede cuando la variable es un número o una cadena de texto? Para obtener la
negación en este tipo de variables, se realiza en primer lugar su conversión a un valor booleano:
var cantidad = 0;
vacio = !cantidad; // vacio = true
cantidad = 2;
vacio = !cantidad; // vacio = false
mensaje = "Bienvenido";
mensajeVacio = !mensaje; // mensajeVacio = false
AND.
operador se indica mediante el símbolo && y su resultado solamente es true si los dos operandos
son true.
valor1 = true;
valor2 = true;
resultado = valor1 && valor2; // resultado = true
158
Versión Mayo 2021
OR.
valor1 = false;
valor2 = false;
resultado = valor1 || valor2; // resultado = false
Matemáticos.
numéricas. Los operadores definidos son: suma (+), resta (-), multiplicación (*) y división (/).
Ejemplo:
que no es sencillo de entender cuando se estudia por primera vez, pero que es muy útil en
algunas ocasiones.
Se trata del operador "módulo", que calcula el resto de la división entera de dos números.
159
Versión Mayo 2021
El operador módulo en JavaScript se indica mediante el símbolo %, que no debe
numero1 = 9;
numero2 = 5;
resultado = numero1 % numero2; // resultado = 4
Los operadores matemáticos también se pueden combinar con el operador de asignación
var numero1 = 5;
numero1 += 3; // numero1 = numero1 + 3 = 8
numero1 -= 1; // numero1 = numero1 - 1 = 4
numero1 *= 2; // numero1 = numero1 * 2 = 10
numero1 /= 5; // numero1 = numero1 / 5 = 1
numero1 %= 4; // numero1 = numero1 % 4 = 1
Relacionales.
Los operadores relacionales definidos por JavaScript son idénticos a los que definen las
matemáticas: mayor que (>), menor que (<), mayor o igual (>=), menor o igual (<=), igual que
Los operadores que relacionan variables son imprescindibles para realizar cualquier
var numero1 = 3;
var numero2 = 5;
resultado = numero1 > numero2; // resultado = false
resultado = numero1 < numero2; // resultado = true
numero1 = 5;
numero2 = 5;
160
Versión Mayo 2021
resultado = numero1 >= numero2; // resultado = true
resultado = numero1 <= numero2; // resultado = true
resultado = numero1 == numero2; // resultado = true
resultado = numero1 != numero2; // resultado = false
Se debe tener especial cuidado con el operador de igualdad (==), ya que es el origen de la
mayoría de errores de programación, incluso para los usuarios que ya tienen cierta experiencia
desarrollando scripts. El operador == se utiliza para comparar el valor de dos variables, por lo
que es muy diferente del operador =, que se utiliza para asignar un valor a una variable:
texto:
hasta que se encuentre una diferencia entre las dos cadenas de texto. Para determinar si una letra
es mayor o menor que otra, las mayúsculas se consideran menores que las minúsculas y las
primeras letras del alfabeto son menores que las últimas (a es menor que b, b es menor
161
Versión Mayo 2021
Estructuras de control de flujo
Las estructuras de control de flujo, que son instrucciones del tipo "si se cumple esta
condición, hazlo; si no se cumple, haz esto otro". También existen instrucciones del tipo "repite
Si se utilizan estructuras de control de flujo, los programas dejan de ser una sucesión
lineal de instrucciones para convertirse en programas inteligentes que pueden tomar decisiones
Estructura if.
es la estructura if. Se emplea para tomar decisiones en función de una condición. Su definición
formal es:
if(condicion) {
...
}
Si la condición se cumple (es decir, si su valor es true) se ejecutan todas las instrucciones
que se encuentran dentro de {...}. Si la condición no se cumple (es decir, si su valor es false) no
Ejemplo:
if(mostrarMensaje) {
alert("Hola Mundo");
}
162
Versión Mayo 2021
Estructura if...else.
En ocasiones, las decisiones que se deben realizar no son del tipo "si se cumple la
condición, hazlo; si no se cumple, no hagas nada". Normalmente las condiciones suelen ser del
tipo "si se cumple esta condición, hazlo; si no se cumple, haz esto otro".
if(condicion) {
...
}
else {
...
}
Si la condición se cumple (es decir, si su valor es true) se ejecutan todas las instrucciones
que se encuentran dentro del if(). Si la condición no se cumple (es decir, si su valor es false) se
decisiones complejas. Sin embargo, si todas las condiciones dependen siempre de la misma
if(numero == 5) {
...
}
163
Versión Mayo 2021
else if(numero == 8) {
...
}
else if(numero == 20) {
...
}
else {
...
}
En estos casos, la estructura switch es la más eficiente, ya que está especialmente
diseñada para manejar de forma sencilla múltiples condiciones sobre la misma variable. Su
switch(variable) {
case valor_1:
...
break;
case valor_2:
...
break;
...
case valor_n:
...
break;
default:
...
break;
}
El anterior ejemplo realizado con if...else se puede rehacer mediante switch:
switch(numero) {
case 5:
...
break;
case 8:
...
break;
164
Versión Mayo 2021
case 20:
...
break;
default:
...
break;
}
La estructura switch se define mediante la palabra reservada switch seguida, entre
paréntesis, del nombre de la variable que se va a utilizar en las comparaciones. Como es habitual,
las instrucciones que forman parte del switch se encierran entre las llaves { y }.
Dentro del switch se definen todas las comparaciones que se quieren realizar sobre el
valor de la variable. Cada comparación se indica mediante la palabra reservada case seguida del
valor con el que se realiza la comparación. Si el valor de la variable utilizada por switch coincide
con el valor indicado por case, se ejecutan las instrucciones definidas dentro de ese case.
sentencia break para terminar la ejecución del switch, aunque no es obligatorio. Las
comparaciones se realizan por orden, desde el primer case hasta el último, por lo que es muy
¿Qué sucede si ningún valor de la variable del switch coincide con los valores definidos
en los case? En este caso, se utiliza el valor default para indicar las instrucciones que se ejecutan
Aunque default es opcional, las estructuras switch suelen incluirlo para definir al menos
un valor por defecto para alguna variable o para mostrar algún mensaje por pantalla.
Estructura for.
Las estructuras if y if...else no son muy eficientes cuando se desea ejecutar de forma
165
Versión Mayo 2021
La estructura for permite realizar este tipo de repeticiones (también llamadas bucles) de
una forma muy sencilla. No obstante, su definición formal no es tan sencilla como la de if():
indicada se siga cumpliendo, repite la ejecución de las instrucciones definidas dentro del for.
Además, después de cada repetición, actualiza el valor de las variables que se utilizan en la
condición".
var i = 0;
Por tanto, en primer lugar se crea la variable i y se le asigna el valor de 0. Esta zona de
i < 5
166
Versión Mayo 2021
Los bucles se siguen ejecutando mientras se cumplan las condiciones y se dejan de
ejecutar justo después de comprobar que la condición no se cumple. En este caso, mientras la
que i sea menor que 5, si no se modifica el valor de i de alguna forma, el bucle se repetiría
indefinidamente.
i++
En este caso, el valor de la variable i se incrementa en una unidad después de cada
incluye el for.
ejecución, se actualiza el valor de i, que ahora valdrá 5. Como la condición es que i sea menor
que 5, la condición ya no se cumple y las instrucciones del for no se ejecutan una sexta vez.
Normalmente, la variable que controla los bucles for se llama i, ya que recuerda a la
El ejemplo anterior que mostraba los días de la semana contenidos en un array se puede
167
Versión Mayo 2021
Estructura for...in.
for(indice in array) {
...
}
Si se quieren recorrer todos los elementos que forman un array, la estructura for...in es la
for(i in dias) {
alert(dias[i]);
}
La variable que se indica como indice es la que se puede utilizar dentro del
bucle for...in para acceder a los elementos del array. De esta forma, en la primera repetición del
Esta estructura de control es la más adecuada para recorrer arrays (y objetos), ya que evita
tener que indicar la inicialización y las condiciones del bucle for simple y funciona
correctamente cualquiera que sea la longitud del array. De hecho, sigue funcionando igual
Estructura while.
La estructura while permite crear bucles que se ejecutan ninguna o más veces,
while(condicion) {
168
Versión Mayo 2021
...
}
El funcionamiento del bucle while se resume en: "mientras se cumpla la condición
condición se cumple, se ejecutan las instrucciones una vez y se vuelve a comprobar la condición.
Si se sigue cumpliendo la condición, se vuelve a ejecutar el bucle y así se continúa hasta que la
condición no se cumpla.
Evidentemente, las variables que controlan la condición deben modificarse dentro del
propio bucle, ya que de otra forma, la condición se cumpliría siempre y el bucle while se
repetiría indefinidamente.
El siguiente ejemplo utiliza el bucle while para sumar todos los números menores o
var resultado = 0;
var numero = 100;
var i = 0;
alert(resultado);
Estructura do...while.
El bucle de tipo do...while es muy similar al bucle while, salvo que en este
caso siempre se ejecutan las instrucciones del bucle al menos la primera vez. Su definición
formal es:
do {
...
169
Versión Mayo 2021
} while(condicion);
De esta forma, como la condición se comprueba después de cada repetición, la primera
vez siempre se ejecutan las instrucciones del bucle. Es importante no olvidar que después
del while() se debe añadir el carácter ; (al contrario de lo que sucede con el bucle while simple).
var resultado = 1;
var numero = 5;
do {
resultado *= numero; // resultado = resultado * numero
numero--;
} while(numero > 0);
alert(resultado);
170
Versión Mayo 2021
Actividades – Semana V
Actividad 1
Realice el código HTML y CSS necesario para obtener una tabla como el siguiente:
Actividad 2
Realice el código HTML y CSS necesario para obtener una tabla como el siguiente:
Actividad 3
171
Versión Mayo 2021
Actividad 4
Actividad 5
Actividad 6
Actividad 7
172
Versión Mayo 2021
Actividad 8
Crear un array llamado meses y que almacene el nombre de los doce meses del año.
Actividad 9
A partir del siguiente array que se proporciona: var valores = [true, 5, false, "hola",
"adios", 2];
• Utilizando exclusivamente los dos valores booleanos del array, determinar los
Actividad 10
multiplicar todos los factores n x (n-1) x (n-2) x ... x 1. Así, el factorial de 5 (escrito como 5!) es
173
Versión Mayo 2021
Recursos Semana V
Videos
https://www.youtube.com/watch?v=HDqJS5puXs4
https://www.youtube.com/watch?v=Rtk8Z_hObyY
Presentaciones
formularios-css-etc
condicional-ifelse
Lecturas complementarias
layout.html
5.html
174
Versión Mayo 2021
Semana VI
Contenido
175
Versión Mayo 2021
Panel de control XAMPP. ....................................................................................... 202
176
Versión Mayo 2021
Lunes – Semana VI
Funciones
Cuando se desarrolla una aplicación compleja, es muy habitual utilizar una y otra vez las
mismas instrucciones. Las funciones son la solución a todos estos problemas, tanto en JavaScript
que se agrupan para realizar una tarea concreta y que se pueden reutilizar fácilmente” (Eguiluz,
Introducción a JavaScript).
function nombre_funcion() {
...
}
El nombre de la función se utiliza para llamar a esa función cuando sea necesario. El
concepto es el mismo que con las variables, a las que se les asigna un nombre único para poder
utilizarlas dentro del código. Después del nombre de la función, se incluyen dos paréntesis y se
estable los parámetros, si es que recibe parámetros. Por último, los símbolos { y } se utilizan
para que se ejecuten sus instrucciones (además de "llamar a la función", también se suele utilizar
177
Versión Mayo 2021
La llamada a la función se realiza simplemente indicando su nombre, incluyendo los
suma_y_muestra(4,3);
178
Versión Mayo 2021
Martes – Semana VI
páginas web con los scripts o los lenguajes de programación (MDN Web Docs, 2020).
consiste en la manipulación de las páginas web. De esta forma, es habitual obtener el valor
almacenado por algunos elementos (por ejemplo los elementos de un formulario), crear un
elemento (párrafos, <div>, etc.) de forma dinámica y añadirlo a la página, aplicar una animación
Todas estas tareas habituales son muy sencillas de realizar gracias a DOM.
Árbol de nodos.
nodos, que están interconectados y que representan los contenidos de las páginas web y las
relaciones entre ellos. Por su aspecto, la unión de todos los nodos se llama "árbol de nodos".
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Página sencilla</title>
</head>
<body>
<p>Esta página es <strong>muy sencilla</strong></p>
</body>
</html>
179
Versión Mayo 2021
Se transforma en el siguiente árbol de nodos:
Figura 48. Árbol de nodos generado automáticamente por DOM a partir del código HTML de la página. Fuente:
(Eguiluz, Introducción a JavaScript)
En el esquema anterior, cada rectángulo representa un nodo DOM y las flechas indican
las relaciones entre nodos. Dentro de cada nodo, se ha incluido su tipo (que se verá más adelante)
y su contenido.
La raíz del árbol de nodos de cualquier página XHTML siempre es la misma: un nodo de
forma, del nodo raíz solamente pueden derivar los nodos HEAD y BODY. A partir de esta
derivación inicial, cada etiqueta XHTML se transforma en un nodo que deriva del nodo
180
Versión Mayo 2021
La transformación de las etiquetas HTML habituales genera dos nodos: el primero es el
de tipo "Texto" que contiene el texto encerrado por esa etiqueta HTML.
<title>Página sencilla</title>
Figura 49. Nodos generados automáticamente por DOM para una etiqueta HTML sencilla. Fuente: (Eguiluz,
Introducción a JavaScript)
• El contenido de la etiqueta <strong> genera a su vez otro nodo de tipo "Texto" que
181
Versión Mayo 2021
Figura 50. Nodos generados automáticamente por DOM para una etiqueta XHTML con otras etiquetas XHTML en
su interior. Fuente: (Eguiluz, Introducción a JavaScript)
mismas reglas:
anterior, pero los nodos generados serán nodos hijo de su etiqueta padre.
La especificación completa de DOM define 12 tipos de nodos, aunque las páginas HTML
• Document, nodo raíz del que derivan todos los demás nodos del árbol.
• Element, representa cada una de las etiquetas XHTML. Se trata del único nodo que
puede contener atributos y el único del que pueden derivar otros nodos.
• Attr, se define un nodo de este tipo para representar cada uno de los atributos de las
• Text, nodo que contiene el texto encerrado por una etiqueta XHTML.
182
Versión Mayo 2021
• Comment, representa los comentarios incluidos en la página XHTML.
utilizar las funciones DOM para acceder de forma directa a cualquier nodo del árbol. Como
acceder a un nodo del árbol es equivalente a acceder a "un trozo" de la página, una vez
getElementsByTagName().
Como sucede con todas las funciones que proporciona DOM, la función
página HTML cuya etiqueta sea igual que el parámetro que se le pasa a la función.
El siguiente ejemplo muestra cómo obtener todos los párrafos de una página HTML:
nodo a partir del cual se realiza la búsqueda de los elementos. En este caso, como se quieren
obtener todos los párrafos de la página, se utiliza el valor document como punto de partida de la
búsqueda.
El valor que devuelve la función es un array con todos los nodos que cumplen la
array de nodos DOM, no un array de cadenas de texto o un array de objetos normales. Por lo
tanto, se debe procesar cada valor del array de la forma que se muestra en las siguientes
secciones.
183
Versión Mayo 2021
De este modo, se puede obtener el primer párrafo de la página de la siguiente manera:
código:
de los nodos devueltos por la función. En el siguiente ejemplo, se obtienen todos los enlaces del
elementos cuyo atributo name sea igual al parámetro proporcionado. En el siguiente ejemplo, se
<p name="prueba">...</p>
<p name="especial">...</p>
<p>...</p>
Normalmente el atributo name es único para los elementos HTML que lo definen, por lo
que es un método muy práctico para acceder directamente al nodo deseado. En el caso de los
elementos HTML radiobutton, el atributo name es común a todos los radiobutton que están
184
Versión Mayo 2021
getElementById().
dinámicas. Se trata de la función preferida para acceder directamente a un nodo y poder leer o
el parámetro indicado en la función. Como el atributo id debe ser único para cada elemento de
<div id="cabecera">
<a href="/" id="logo">...</a>
</div>
La función getElementById() es tan importante y tan utilizada en todas las aplicaciones
web, que casi todos los ejemplos y ejercicios que siguen la utilizan constantemente.
Una vez que se ha accedido a un nodo, el siguiente paso natural consiste en acceder y/o
modificar sus atributos y propiedades. Mediante DOM, es posible acceder de forma sencilla a
todos los atributos HTML y todas las propiedades CSS de cualquier elemento de la página.
propiedades de los nodos. Para acceder a su valor, simplemente se indica el nombre del atributo
185
Versión Mayo 2021
En el ejemplo anterior, se obtiene el nodo DOM que representa el enlace mediante la
mediante enlace.href. Para obtener por ejemplo el atributo id, se utilizaría enlace.id.
Las propiedades CSS no son tan fáciles de obtener como los atributos HTML. Para
obtener el valor de cualquier propiedad CSS del nodo, se debe utilizar el atributo style. El
ligeramente su nombre:
todos los guiones medios (-) y escribir en mayúscula la letra siguiente a cada guión medio. A
DOM es el atributo class. Como la palabra class está reservada por JavaScript, no es posible
utilizarla para acceder al atributo class del elemento HTML. En su lugar, DOM utiliza el
186
Versión Mayo 2021
Miércoles – Semana VI
Eventos en Javascript
Hasta ahora, todas las aplicaciones y scripts que se han creado tienen algo en común: se
ejecutan desde la primera instrucción hasta la última de forma secuencial. Gracias a las
estructuras de control de flujo (if, for, while) es posible modificar ligeramente este
comportamiento y repetir algunos trozos del script y saltarse otros trozos en función de algunas
condiciones.
Este tipo de aplicaciones son poco útiles, ya que no interactúan con los usuarios y no
pueden responder a los diferentes eventos que se producen durante la ejecución de una
aplicación. Afortunadamente, las aplicaciones web creadas con el lenguaje JavaScript pueden
Los eventos hacen posible que los usuarios transmitan información a los programas.
JavaScript define numerosos eventos que permiten una interacción completa entre el usuario y
Tipos de eventos
En este modelo, cada elemento o etiqueta HTML define su propia lista de posibles
eventos que se le pueden asignar. En la siguiente tabla se obtiene el Modelo básico de eventos.
Tabla 3.
Modelo básico de eventos
Evento Descripción Elementos para los
que está definido
onblur Deseleccionar el elemento <button>, <input>,
<label>, <select>,
<textarea>, <body>
onchange Deseleccionar un elemento <input>, <select>,
que se ha modificado <textarea>
onclick Pinchar y soltar el ratón Todos los elementos
ondblclick Pinchar dos veces seguidas Todos los elementos
con el ratón
187
Versión Mayo 2021
onfocus Seleccionar un elemento <button>, <input>,
<label>, <select>,
<textarea>, <body>
onkeydown Pulsar una tecla (sin soltar) Elementos de
formulario y <body>
onkeypress Pulsar una tecla Elementos de
formulario y <body>
onkeyup Soltar una tecla pulsada Elementos de
formulario y <body>
onload La página se ha cargado <body>
completamente
onmousedown Pulsar (sin soltar) un botón Todos los elementos
del ratón
onmousemove Mover el ratón Todos los elementos
onmouseout El ratón "sale" del Todos los elementos
elemento (pasa por encima
de otro elemento)
onmouseover El ratón "entra" en el Todos los elementos
elemento (pasa por encima
del elemento)
onmouseup Soltar el botón que estaba Todos los elementos
pulsado en el ratón
onreset Inicializar el formulario <form>
(borrar todos sus datos)
onresize Se ha modificado el <body>
tamaño de la ventana del
navegador
onselect Seleccionar un texto <input>, <textarea>
onsubmit Enviar el formulario <form>
onunload Se abandona la página (por <body>
ejemplo al cerrar el
navegador)
188
Versión Mayo 2021
Jueves – Semana VI
Servidores web
comunicaciones que intermedia entre el servidor en el que están alojados los datos solicitados y
o asíncronas, con cualquier aplicación del cliente, incluso con los navegadores que traducen un
código traducible (renderizable) a una página web determinada. O sea, se trata de programas que
median entre el usuario de Internet y el servidor en donde está la información que solicita.
Los servidores web son programas de uso cotidiano en Internet, que emplean para
comunicarse diversos protocolos de datos, siendo el más común y de alguna manera estándar el
HTTP (HyperText Transfer Protocol). Sin embargo, es posible también usar el término para
referirse al computador en el que están guardados los archivos que componen un sitio web, junto
189
Versión Mayo 2021
Como se ha dicho, la función de los servidores web es la de mediar entre las solicitudes
que están almacenados. Por ende, se necesita uno para publicar un sitio web, y también para
tener acceso a los datos que componen una página web cualquiera. Este proceso ocurre de la
siguiente manera:
▪ El usuario introduce una dirección web (URL) en su navegador y éste envía una
▪ El servidor web (software) busca los archivos pertinentes ya sea en el propio servidor
muestra al usuario.
Entre los servidores web más utilizados del mundo podemos encontrar algunos como:
Apache fue, durante casi 2 décadas, el webserver más utilizado del mundo, aunque en los
últimos años ha perdido bastante terreno frente a rivales como Nginx o IIS. Aun así, sigue siendo
un servidor web sólido, seguro, eficaz y fácil de configurar, sin mencionar que sigue siendo la
opción predefinida para los servidores que corren cPanel, el panel de control más popular del
mercado.
años, al punto de que actualmente está por delante de Apache. Considerado por muchos como el
190
Versión Mayo 2021
web server más rápido hoy en día, su alta capacidad para despachar contenido, su seguridad y
bien se trata de un software de pago, este servidor web ha demostrado que tiene un gran
LiteSpeed se está abriendo camino como una alternativa muy sólida, rápida y segura. Su
compatibilidad con cPanel también hace que sea popular entre servidores que utilizan dicho
Desarrollado por Microsoft, IIS es el servidor web que viene integrado por defecto en servidores
que corren Windows Server. Si bien es muy diferente a sus rivales de Linux, no deja de ser un
Tipos de servidores.
Un servidor local se instala por medio de un programa para permitirnos probar y navegar
la página web que vayamos a crear desde nuestro equipo personal. Las páginas se acceden
siempre mediante una dirección o url, el acceso para navegar en nuestro equipo se conoce
como localhost. Éste es un nombre reservado que tienen todas las computadoras, router o
dispositivo que disponga de una tarjeta de red ethernet para referirse a sí mismo. El
generalmente residen en una red de dispositivos. Hablando de un servidor como un equipo, son
191
Versión Mayo 2021
las computadoras que se usan para tener a su vez programas servidores. Son mucho más grandes
y poseen mayores caraterísticas que los equipos normales. Éstos equipos son los que nos dan un
espacio para almacenar nuestro sitio web, es decir, nos permiten tener lo que llamamos
un Hosting, además de éste se necesita un nombre para el sitio web; es decir, un Dominio, por
medio del cual cualquier persona podrá acceder a nuestro sitio web a través de la red.
Hosting.
servidor donde puedes almacenar todos los archivos y datos necesarios para que tu sitio web
funcione correctamente.
sitio web esté disponible todo el tiempo para cualquier persona que quiera verlo. Tu proveedor
La mayoría de los proveedores de hosting ofrecen diferentes tipos de hosting web para
poder satisfacer las necesidades de diferentes clientes. Los tipos de hosting más comunes son:
Hosting Compartido.
excelente solución para la mayoría de las pequeñas empresas y blogs. Cuando escuchas la
palabra «hosting web», quien está hablando generalmente se refiere al hosting compartido. Con
el hosting compartido, compartes un servidor con otros clientes de tu proveedor de hosting. Los
192
Versión Mayo 2021
sitios web alojados en el mismo servidor comparten todos sus recursos, como memoria, potencia
Hosting VPS.
Con el hosting VPS (servidor privado virtual), aún compartes un servidor con otros
usuarios, sin embargo, el proveedor te asigna una partición separada en el servidor. Esto significa
que obtienes un espacio de servidor dedicado y una cantidad reservada de potencia de cómputo y
memoria. De hecho, el hosting VPS puede ser ideal para empresas medianas con sitios web en
rápido crecimiento.
Cuando uno de los servidores en la nube está ocupado o tiene algún problema, tu tráfico se dirige
Hosting WordPress.
El hosting para WordPress es una forma específica de hosting compartido, creada para los
WordPress y tu sitio viene con plugins preinstalados para cosas cruciales como el
sitio carga mucho más rápido y funciona con menos problemas. Los planes de hosting para
WordPress suelen incluir características adicionales relacionadas con WordPress, como plantillas
193
Versión Mayo 2021
Servidor dedicado.
Hosting con servidor dedicado significa que tienes tu propio servidor físico dedicado
exclusivamente para tu sitio. Por lo tanto, el hosting dedicado te brinda una flexibilidad increíble.
Puedes configurar tu servidor como quieras, elegir el sistema operativo y el software que quieres
Dominios.
Un dominio web está determinado por dos secciones: un dominio de primer nivel (TLD)
Dentro de las extensiones de dominio puedes identificar dos principales: las genéricas de
Como su nombre lo indica, las extensiones genéricas son las que se usan de manera
general y cualquier persona que desee comprar un dominio para su sitio web las puede solicitar
en su registro.
194
Versión Mayo 2021
Las tres gTLD más populares son:
.com (comercial). Es la extensión más común de internet y, por ende, la que inspira más
confianza.
.net (network, red). Aunque originalmente estaba destinada a sitios relacionados con
tecnologías de la información, los usuarios acuden a esta extensión como alternativa al .com
gubernamentales o sin fines de lucro. Igualmente se utiliza por empresas con actividades sociales
.biz (negocios)
.info (información)
.name (nombre)
respectivamente, y para cuyo registro se deben cumplir requisitos más estrictos por tratarse de
Nuevos gTLD.
organización responsable de coordinar y supervisar los dominios de sitios web, lanzó más de
1,000 nuevos dominios genéricos con el fin de diversificar los nombres de dominio, y que
195
Versión Mayo 2021
• Cerradas o de marca: Se utilizan para que las empresas puedan usar su propio nombre
y que ningún otro sitio pueda tenerla. Los casos más representativos son: .amazon, del
dores), etc.
196
Versión Mayo 2021
Dominios por país (ccTLD).
Estas extensiones se forman con las dos letras representativas del país de origen del
Los códigos de país son regulados por operadores nacionales (conocidos como Network
Information Centres, o NIC) quienes, además de administrar los dominios bajo su extensión,
Un servidor web local (instalado en nuestro propio equipo) suele ser una solución ideal
para realizar pruebas y/o tareas de administración, instalación o desarrollo. De esta forma,
podemos probar, configurar o programar nuestra aplicación web sin miedo a estropear la
funcionar una aplicación web en todas sus capas (servidor web, servidor de bases de datos,
lenguaje de programación, etc...) suele ser costoso, tanto en tiempo como en complejidad.
Existen packs de software llamados «stacks» que contienen todo lo necesario para hacer
XAMPP.
Uno de los más conocidos es XAMPP. Incorpora un servidor Apache, un sistema gestor
de bases de datos MySQL y lenguajes como PHP y Perl. Además, ofrece soporte para gestionar
cuentas FTP, acceso a bases de datos mediante PHPMyAdmin, bases de datos SQLite y varias
otras características.
197
Versión Mayo 2021
También incluye un servidor de correos Mercury para el envío de emails, un servidor
WAMPServer.
para Windows, en el que además se incluye PHPMyAdmin para gestionar las bases de datos
y webgrind como profiler para analizar el rendimiento de aplicaciones PHP5 en nuestro servidor.
MAMP.
PHP).
Laragon.
Laragon es una suite de desarrollo para PHP que funciona sobre Windows diseñado
especialmente para trabajar con Laravel. Similar a otras herramientas como Xampp o
Wampp, Laragon nos permite crear un entorno de desarrollo con estas características: Cmder
EasyPHP.
minimalista, ya que sólo muestra el control de los servidores y un registro de sucesos (log). Sin
embargo, en la página local principal, ofrece varias cosas interesantes, como un panel de
198
Versión Mayo 2021
BitNami.
Probablemente, una de las opciones más cómodas e interesantes sea BitNami. Se trata de
Cada paquete viene preparado independientemente, por lo que sólo tienes que descargarlo
e instalarlo. Fácil y rápido. También está preparado para instalar en entornos virtualizados o en
Instalación de XAMPP
https://www.apachefriends.org/es/index.html
2. Una vez obtenido el archivo de instalación de XAMPP, hay que hacer doble clic
botón "Next".
199
Versión Mayo 2021
4. Los componentes mínimos que instala XAMPP son el servidor Apache y el
lenguaje PHP, pero XAMPP también instala otros elementos. En la pantalla de selección
200
Versión Mayo 2021
6. La siguiente pantalla ofrece información sobre los instaladores de aplicaciones para
XAMPP creados por Bitnami. Haga clic en el botón "Next" para continuar. Si deja
7. Una vez elegidas las opciones de instalación en las pantallas anteriores, esta pantalla
201
Versión Mayo 2021
El proceso de copia de archivos puede durar unos minutos.
8. Una vez terminada la copia de archivos, la pantalla final confirma que XAMPP ha
Al panel de control de XAMPP se puede acceder mediante el menú de inicio "Todos los
programas > XAMPP > XAMPP Control Panel" o, si ya está iniciado, mediante el icono del área
de notificación.
La primera vez que se abre el panel de control de XAMPP, se muestra una ventana de
202
Versión Mayo 2021
El panel de control de XAMPP se divide en tres zonas:
• La zona de módulos, que indica para cada uno de los módulos de XAMPP: si está
incluye unos botones para iniciar y detener los procesos, administrarlos, editar los
• La zona de notificación, en la que XAMPP informa del éxito o fracaso de las acciones
realizadas.
Iniciar servidores.
Para poner en funcionamiento Apache (u otro servidor), hay que hacer clic en el botón
"Start" correspondiente:
203
Versión Mayo 2021
Figura 64. Iniciar servidores de XAMPP
Si el arranque de Apache tiene éxito, el panel de control mostrará el nombre del módulo
con fondo verde, su identificador de proceso, los puertos abiertos (http y https), el botón "Start"
operaciones realizadas.
Para detener Apache (u otro servidor), hay que hacer clic en el botón "Stop"
correspondiente a Apache.
204
Versión Mayo 2021
Actividades – Semana VI
Actividad 1
Realiza un script con una función que cuente el número de vocales que tiene un texto
dado.
Actividad 2
Realiza un script con una función que reciba una cadena de texto y la devuelva al revés.
Es decir, si tecleo “hola que tal” deberá mostrar “lat euq aloh”.
Actividad 3
<html>
<head>
</head>
<body>
<p align="justify"><b>Desarrollo web</b> Desarrollo web significa
construir y mantener
sitios web; es el trabajo que tiene lugar en un segundo plano y que
permite que una web tenga
una apariencia impecable, un funcionamiento rápido y un buen desempeño
para permitir la
mejor experiencia de usuario. Los desarrolladores web son como duendes
con poderes: nunca
los ves, pero son los que hacen que todo esté bien y funcione de
manera rápida y
eficiente.</p>
</body>
</html>
Actividad 4
A partir de la página web proporcionada y utilizando las funciones DOM, mostrar por
205
Versión Mayo 2021
• Dirección a la que enlaza el penúltimo enlace
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-
1" />
<title>DOM </title>
</head>
<body>
<p>Lorem ipsum dolor sit amet, <a href="http://prueba">consectetuer
adipiscing elit</a>. Sed mattis enim vitae orci. Phasellus libero.
Maecenas nisl arcu, consequat congue, commodo nec, commodo ultricies,
turpis. Quisque sapien nunc, posuere vitae, rutrum et, luctus at,
pede. Pellentesque massa ante, ornare id, aliquam vitae, ultrices
porttitor, pede. Nullam sit amet nisl elementum elit convallis
malesuada. Phasellus magna sem, semper quis, faucibus ut, rhoncus non,
mi. <a href="http://prueba2">Fusce porta</a>. Duis pellentesque, felis
eu adipiscing ullamcorper, odio urna consequat arcu, at posuere ante
quam non dolor. Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Duis scelerisque. Donec lacus neque, vehicula in, eleifend
vitae, venenatis ac, felis. Donec arcu. Nam sed tortor nec ipsum
aliquam ullamcorper. Duis accumsan metus eu urna. Aenean vitae enim.
Integer lacus. Vestibulum venenatis erat eu odio. Praesent id
metus.</p>
<p>Aenean at nisl. Maecenas egestas dapibus odio. Vestibulum ante
ipsum primis in faucibus orci luctus et ultrices posuere cubilia
Curae; Proin consequat auctor diam. <a href="http://prueba">Ut
bibendum blandit est</a>. Curabitur vestibulum. Nunc malesuada
porttitor sapien. Aenean a lacus et metus venenatis porta. Suspendisse
cursus, sem non dapibus tincidunt, lorem magna porttitor felis, id
sodales dolor dolor sed urna. Sed rutrum nulla vitae tellus. Sed quis
eros nec lectus tempor lacinia. Aliquam nec lectus nec neque aliquet
dictum. Etiam <a href="http://prueba3">consequat sem quis massa</a>.
Donec aliquam euismod diam. In magna massa, mattis id, pellentesque
sit amet, porta sit amet, lectus. Curabitur posuere. Aliquam in elit.
Fusce condimentum, arcu in scelerisque lobortis, ante arcu scelerisque
206
Versión Mayo 2021
mi, at cursus mi risus sed tellus.</p>
<p>Donec sagittis, nibh nec ullamcorper tristique, pede velit feugiat
massa, at sollicitudin justo tellus vitae justo. Vestibulum aliquet,
nulla sit amet imperdiet suscipit, nunc erat laoreet est, a <a
href="http://prueba">aliquam leo odio sed sem</a>. Quisque eget eros
vehicula diam euismod tristique. Ut dui. Donec in metus sed risus
laoreet sollicitudin. Proin et nisi non arcu sodales hendrerit. In
sem. Cras id augue eu lorem dictum interdum. Donec pretium. Proin <a
href="http://prueba4">egestas</a> adipiscing ligula. Duis iaculis
laoreet turpis. Mauris mollis est sit amet diam. Curabitur hendrerit,
eros quis malesuada tristique, ipsum odio euismod tortor, a vestibulum
nisl mi at odio. <a href="http://prueba5">Sed non lectus non est
pellentesque</a> auctor.</p>
<script src="https://ajax.cloudflare.com/cdn-
cgi/scripts/7089c43e/cloudflare-static/rocket-loader.min.js" data-cf-
settings="2edb08f66df0f5e127120689-|49" defer=""></script></body>
</html>
Actividad 5
• Cuando se vuelva a pinchar sobre el mismo enlace, se muestre otra vez esa sección de
contenidos.
• Cuando una sección se oculte, debe cambiar el mensaje del enlace asociado.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-
1" />
<title>DOM </title>
</head>
<body>
<p id="contenidos_1">Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Sed mattis enim vitae orci.
Phasellus libero. Maecenas nisl arcu, consequat congue, commodo nec,
commodo ultricies, turpis. Quisque
207
Versión Mayo 2021
sapien nunc, posuere vitae, rutrum et, luctus at, pede. Pellentesque
massa ante, ornare id, aliquam vitae, ultrices
porttitor, pede. Nullam sit amet nisl elementum elit convallis
malesuada. Phasellus magna sem, semper quis,
faucibus ut, rhoncus non, mi. Duis pellentesque, felis eu adipiscing
ullamcorper, odio urna consequat arcu, at
posuere ante quam non dolor. Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Duis scelerisque.</p>
<a id="enlace_1" href="#">Ocultar contenidos</a>
</body>
</html>
Actividad 6
Realice un input donde se introduce la cedula de una persona, valide que el campo solo
Actividad 7
Actividad 8
Actividad 9
Actividad 10
208
Versión Mayo 2021
Recursos – Semana VI
Videos
https://www.youtube.com/watch?v=UVGIZm6SOUo
https://www.youtube.com/watch?v=P44XEaO35O4
https://www.youtube.com/watch?v=xFzkqGLy9Qg
Presentaciones
62837056
manejo-de-eventos-en-javascript
Lecturas complementarias
• Funciones. https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Funciones
209
Versión Mayo 2021
Semana VII
Contenido
210
Versión Mayo 2021
Matrices en PHP.............................................................................................................. 222
211
Versión Mayo 2021
Lunes – Semana VII
PHP
PHP es el lenguaje de scripting más popular para el desarrollo web. Es gratis, de código
PHP (acronimo de Hypertext Preprocessor) es un lenguaje “del lado del servidor” (esto
significa que PHP funciona en un servidor remoto que procesa la página Web antes de
que sea abierta por el navegador del usuario) especialmente creado para el desarrollo de
paginas Web dinamicas. Puede ser incluido con facilidad dentro del codigo HTML, y
Caracteristicas de PHP.
encantados de ayudar.
• Enorme eficiencia. Con escaso mantenimiento y un servidor gratuito (en nuestro caso,
Apache), puede soportar sin problema millones de visitas diarias. Sencilla integracion
con multiples bases de datos. Esencial para una pagina Web verdaderamente
dinamica, es una correcta integracion con base de datos. Aunque MySQL es la base
212
Versión Mayo 2021
de datos que mejor trabaja con PHP (y la que, por tanto, estudiaremos en nuestra
• Versatilidad. PHP puede usarse con la mayoria de sistemas operativos, ya sea basados
Microsoft.
dinamicas. Por ello, esta dotado de un gran numero de funciones que nos
Brackets.
Todos 1os scripts (páginas) en PHPdeben guardarse con la extension .php para que
funcionen correctamente.
<?php
…
?>
Los caracteres a1 inicio (<?php) y a1 final de la linea (?>) indican donde empieza y
donde acaba el codigo PHP. Es imprescindible colocar estos caracteres de apertura y cierre a1
213
Versión Mayo 2021
principio y final de la parte del script escrita en PHP para que el navegador sea capaz de
La forma más comun, que sera muy familiar a 1os usuarios, consiste en incluirdos barras
una línea. Para comentarios multilineas se incluye barra asterisco (/*) para abrir el comentario, y
<?php
//comentario de una sola línea
/* comentario
De mas de una linea
*/
?>
Recuerde que los comentarios son notas que se deja por los programadores, estas no son
interpretadas.
Impresión en pantalla.
En PHP, existen varias funciones para imprimir contenido en pantalla. Las dos funciones
<?php
echo “Hola Mundo”;
?>
Imprime Hola Mundo en pantalla.
Una variable es elemento destinado a almacenar datos. Ésta, puede almacenar datos
numéricos (enteros o flotantes), cadenes de texto, booleano (verdadero [true] o falso [false]), etc.
Una variable se define (es decir, se crea), se le asigna un valor (es decir, se almacenan datos),
214
Versión Mayo 2021
Las variables en PHP se definen anteponiendo el sigo dólar ($) seguido del nombre que
$nombrevariable;
El nombre de éstas, debe guardar ciertas reglas:
• El nombre puede estar conformado por mayúsculas, minúsculas, guiones bajos (_)
y números
Asignación de valores.
Para asignar valor a una variable, se coloca el sigo igual (=) segudio del valor:
$nombrevariable = valor;
Tipos de datos.
Cuando el valor de una variable, es una cadena de texto, éste, debe escribirse entre
comillas dobles ("), aunque también entre comillas simples ('). Tanto los valores numéricos (ya
sean éstos, números enteros o de coma flotante) y los booleanos, no requieren ser entre-
comillados.
<?php
$codigo_de_producto = 1284;
$nombre_producto = "Agua Mineral Manantial x 500 ml";
$precio = 3.75;
$vence = False;
$hay_stock = True;
$stock_en_deposito_1 = 20;
$stock_en_deposito_27 = 5;
$stock_en_deposito_73A = 54;
?>
215
Versión Mayo 2021
En PHP, es posible concatenar variables mediante el operador de concatenación "punto"
(.):
<?php
$nombre_de_producto_por_defecto = "Producto";
$nombre_producto = $nombre_de_producto_por_defecto . " en oferta";
echo $nombre_producto; // imprime: Producto en oferta
?>
También es posible, insertar el valor de una variable, dentro de una cadena de texto
<?php
$nombre_de_producto_por_defecto = "Producto";
$nombre_producto = "$nombre_de_producto_por_defecto en oferta";
echo $nombre_producto; // imprime: Producto en oferta
?>
No solo es posible modificar el valor de una variable. También es posible:
<?php
$producto = "Coca-Cola x 1,5 Lts.";
$producto = "";
?>
Vaciarla sin conservar su tipo:
<?php
$producto = "Coca-Cola x 1,5 Lts.";
$producto = NULL;
?>
o, eliminarla (destruirla) por completo:
<?php
$producto = "Coca-Cola x 1,5 Lts.";
unset($producto);
?>
216
Versión Mayo 2021
Algunas funciones básicas.
var_dump() y gettype().
var_dump() imprimirá los resultados en pantalla (tipo y valor de una variable), pero
también, es posible conocer el tipo de una variable (no su valor), sin imprimirlo en pantalla, con
gettype():
<?php
$producto = "Coca-Cola x 1,5 Lts.";
var_dump($producto); //salida: string(20) "Coca-Cola x 1,5 Lts."
$a = 25;
$tipo_a = gettype($a);
echo $tipo_a; //imprimirá integer
?>
isset().
Es muy útil además, saber si una variable ha sido definida (y no se ha destruido con
unset()) y tiene un tipo asignado (es decir, no es NULL). Para ello, dispones de la función isset().
Esta función, devolverá True si ha sido definida y no es NULL, de lo contrario, retornará False:
<?php
$producto = "Coca-Cola x 1,5 Lts.";
echo isset($producto);
// retorna True
$producto = "";
echo isset($producto);
// retorna True
$producto = NULL;
echo isset($producto);
// retorna False
unset($producto);
echo isset($producto);
// retorna False
?>
217
Versión Mayo 2021
Operadores.
Artimeticos
Tabla 4.
Operadores artimeticos
Operador Nombre
+ Suma
- Resta
* Multiplicacion
/ División
% Modulo o resto de la división
-$variable Negacion
++ Incremento
-- Decremento
Relacionales
Tabla 5.
Operadores relacionales
Operador Nombre
== Igual
=== Identicos
!= | <> Diferente
!== No idéntico
> Mayor que
< Menor que
>= Mayor igual que
<= Menor igual que
La diferencia principal entre igualdad (==) e idéntico (===), es que el primero convierte
ambos elementos al mismo tipo (anulando así, la comparación de tipos, y arrojando que 10 será
igual que "10"), mientras que el segundo, compara además si ambos elementos pertenecen al
mismo tipo.
$a = 10;
$b = "10";
$a == $b // retorna True
$a === $b //retorna False
218
Versión Mayo 2021
$a != $b // retorna False
$a !== $b // retorna True
Lógicos
Tabla 6.
Operadores lógicos
Operador Nombre
!$variable No (not)
&& Y (and)
|| O (or)
Como se comentó, es posible "mezclar" código HTML con PHP, sin necesidad de
<?php
$alicuota_iva = 21;
$codigo_de_producto = 1284;
$nombre_producto = "Agua Mineral Manantial x 500 ml";
$precio_bruto = 3.75;
$iva = 3.75 * 21 / 100;
$precio_neto = $precio_bruto + $iva;
?>
<html>
<head>
<title>Detalles del producto <?php echo $nombre_producto;
?></title>
</head>
<body>
<p><b>Producto:</b> (<?php echo $codigo_de_producto; ?>)
<?php echo $nombre_producto; ?><br/>
<b>Precio:</b> USD <?php echo $precio_neto; ?>.- (IVA
incluido)</p>
</body>
</html>
219
Versión Mayo 2021
Martes – Semana VII
Una estructura de control es un bloque de código que permite tomar decisiones de manera
if (condición A)
{
// algoritmo si se cumple condición A
} else if (condición B)
{
// algoritmo si se cumple condición B
} else
{
// algoritmo si no se cumplen las condiciones anteriores
}
Ejemplo:
$a = 15;
if ($a == 10) {
echo "$a es igual a 10";
} else if ($a == 12) {
echo "$a es igual a 12";
} else if ($a == 15) {
echo "$a es igual a 15";
} else {
echo "$a NO es ni 10 ni 12 ni 15";
}
Estructura de control Switch.
switch ($variable) {
case "posible valor 1":
// algoritmo a ejecutar si $variable == "posible valor 1"
220
Versión Mayo 2021
break;
case "posible valor 2":
// algoritmo a ejecutar si $variable == "posible valor 2"
break;
default:
// algoritmo a ejecutar si valor no ha sido contemplado en ningúno de
los «case» anteriores
}
Ejemplo:
$a = 15;
switch ($a) {
case 10:
echo "$a es igual a 10";
break;
case 12:
echo "$a es igual a 12";
break;
case 15:
echo "$a es igual a 15";
break;
default:
echo "$a NO es ni 10 ni 12 ni 15";
}
Estructura While.
while (expresión) {
// algoritmo a ejecutar hasta expresión retorne False
}
Ejemplo:
$n=1;
while ($n<=10) {
echo $n;
$n++;
}
221
Versión Mayo 2021
Estructura Do…While.
do{
// algoritmo a ejecutar hasta expresión retorne False
}while (expresión);
Ejemplo:
$n=1;
do{
echo $n;
$n++;
} while ($n<=10);
Estructura for.
Una matriz (array) es un mapa de datos ordenado que asocia "claves" a sus valores
correspondientes. Es así, que estas matrices, nos son de gran utilidad para crear desde
222
Versión Mayo 2021
Y valor, cualquier tipo de dato:
$nombres_de_mujer = array('Ana','Gabriela','Cecilia');
La forma para declarar un array, es simplemente asignarlo a una variable, teniendo en
$mi_array = array();
Imprimir en pantalla con print_r.
print_r($array):
Para acceder a un item del array, se puede realizar haciendo una llamada a su clave, o por
Para modificar un elemento, basta con acceder a éste y asignare un nuevo valor:
223
Versión Mayo 2021
$array_frutas = array('Pera', 'Manzana', 'Uva', 'Durazno');
$array_frutas[]='Naranja';
print_r($array_frutas);
/*imprimirá Array ( [0] => Pera [1] => Manzana [2] => Uva [3] =>
Durazno [4] => Naranja )*/
Pero si se desea asociar dicho valor a una clave, ésta debe indicarse:
(cíclicas) con matrices, recorriendo uno a uno los elementos de una matriz, comenzando por el
primer elemento.
Sintaxis básica:
foreach($array as $valor_del_elemento) {
// algoritmo a realizar con cada uno de los elementos
}
Dónde $array será el nombre de la matriz a ser iterada y $valor_del_elemento, un nombre
224
Versión Mayo 2021
Es posible también, iterar obteniendo las claves de cada elemento, además de su valor.
225
Versión Mayo 2021
Miércoles – Semana VII
Una función, es una forma de agrupar expresiones y sentencias (algoritmos) que realicen
determinadas acciones, pero que éstas, solo se ejecuten cuando son llamadas (al igual que
function nombre_de_la_funcion(parametros) {
// algoritmo
}
Un parámetro es un valor, que la función espera a fin de ejecutar acciones en base al
mismo. Una función puede esperar uno o más parámetros (que irán separados por una coma) o
ninguno.
226
Versión Mayo 2021
Llamando a una función.
Para llamar a una función, simplemente debe especificarse su nombre, en el lugar preciso
donde se desea que ésta se ejecute. Siempre deben incluirse los paréntesis en las llamadas,
<?php
function hola_mundo() {
echo "Hola Mundo!";
}
hola_mundo();
?>
Las funciones también pueden incluir un return para retornar valores.
Tabla 7.
Funciones nativas de PHP
Nombre Descripción
strtolower($cadena) Convertir toda una cadena a minúsculas
227
Versión Mayo 2021
hash($algoritmo_cifrado, $cadena) Encriptación de cadenas
getdate() Información relativa a la fecha y hora actual
date() Fecha y hora actual con formato en una cadena
de texto
https://www.php.net/manual/es/function.date.php
floor($numero)
ceil($numero)
rand($min, $max); Obtener un número entero aleatorio
228
Versión Mayo 2021
Jueves – Semana VII
Se llaman variables superglobales ya que son variables internas que están disponibles
Lasa variables GET, POST y REQUEST son generalmente usadas para trabajar y
capturar datos de los formularios de HTML. Cuando un usuario pulsa el botón enviar de un
formulario, la información que contenían sus campos es enviada a una dirección URL desde
donde tendremos que recuperarla para tratarla de alguna manera. La información del formulario
Existen dos métodos con los que el navegador puede enviar información al servidor:
key1=value1&key2=value2&key3=value3...
Variable $_GET.
GET lleva los datos de forma "visible" al cliente (navegador web). El medio de envío es
la URL. Para recoger los datos que llegan en la url se usa $_GET.
229
Versión Mayo 2021
Formulario con método GET.
Capturar.php
<html>
<head>
<title>Formulario con GET</title>
</head>
<body>
<form action="mostrar.php" method="GET">
<label>Nombre:</label>
<input type="text" name="nombre" placeholder="Ingrese nombre">
<input type="submit" name="enviar">
</form>
</body>
</html>
Obtiene un resultado en el navegaor:
Al ingresar el nombre y pulsar enviar, los datos se envian a mostrar.php (action del form).
Mostrar.php
<?php
$nombre = $_GET['nombre'];
echo "El nombre ingresado fue: ".$nombre;
?>
Obtiene un resultado en el navegaor:
230
Versión Mayo 2021
Variable $_POST.
POST consiste en datos "ocultos" (porque el cliente no los ve) enviados por un formulario
cuyo método de envío es post. Es ideal para formularios. Para recoger los datos que llegan por
La ventaja de usar POST es que estos datos no son visibles al usuario de la web. En el
caso de usar get, el propio usuario podría modificar la URL escribiendo diferentes parámetros a
los reales en su navegador, dando lugar a que la información tratada no sea la prevista.
Capturar.php
<html>
<head>
<title>Formulario con POST</title>
</head>
<body>
<form action="mostrar.php" action="POST">
<label>Nombre:</label>
<input type="text" name="nombre" placeholder="Ingrese nombre">
<input type="submit" name="enviar">
</form>
</body>
</html>
Obtiene un resultado en el navegaor:
Al ingresar el nombre y pulsar enviar, los datos se envian a mostrar.php (action del form).
231
Versión Mayo 2021
Mostrar.php
<?php
$nombre = $_POST['nombre'];
echo "El nombre ingresado fue: ".$nombre;
?>
Obtiene un resultado en el navegaor:
Variabe $_REQUEST.
formulario HTML que el method sea REQUEST. Con la variable $_REQUEST recuperaremos
los datos de los formularios enviados tanto por GET como por POST.
tenemos que saber con cual método fue enviado. La desventaja principal, es que no podremos
$_REQUEST da prioridad a los valores enviados por POST antes que a los enviados por
GET.
232
Versión Mayo 2021
Actividades – Semana VII
Actividad 1
Actividad 2
Explique cómo se definen variables, los tipos de datos básicos y los operadores en PHP.
Actividad 3
x=10, y=50, z= -15 y muestre el valor por pantalla de las siguientes expresiones:
x>3 o x>z
Actividad 4
Actividad 5
Almacene en un array los 10 primeros números pares. Imprímalos cada uno en una línea.
Actividad 6
Imprima los valores del array asociativo siguientes, usando la estructura de control
foreach:
V[1]=90
V[30]=7
V[‘e’]=99
V[‘hola’]=43
233
Versión Mayo 2021
Actividad 7
Cree una función que reciba cinco números enteros como parámetros y devuelva el
resultado de sumar los cinco números. Asigna el resultado de una invocación a la función a una
Actividad 8
Actividad 9
luego mostrar en otra pagina si es mayor de edad (si la edad es mayor o igual a 18). Utilice el
Actividad 10
Solicitar que se ingrese por teclado el nombre de una persona y disponer tres controles de
tipo radio que nos permitan seleccionar si la persona: 1) no tiene estudios 2) estudios primarios
un mensaje indicando el tipo de estudios que posee. Utilice el método POST para el envío de
formulario.
234
Versión Mayo 2021
Recursos – Semana VII
Videos
https://www.youtube.com/watch?v=Or6UY0luwp8&list=PLpOqH6AE0tNiU09SztxZ
Xz1zuoyvqeLMH&index=4
https://www.youtube.com/watch?v=3RHcJ9-vHEU
https://www.youtube.com/watch?v=J3zrbJPhN3Y
Presentaciones
Lecturas complementarias
estructuras-control.html
https://www.php.net/manual/es/indexes.functions.php
235
Versión Mayo 2021
Semana VIII
Contenido
236
Versión Mayo 2021
Lunes – Semana VIII
Introducción a MySQL
distribuye en dos versiones: una versión GPL (Software Libre) y otra versión privativa, llamada
En nuestro caso, utilizaremos XAMPP para conectarnos con el gestor, por lo cual
Para trabajar con el gestor se usara PHPMyAdmin, solo para la creación de tablas.
phpMyAdmin.
phpMyAdmin, es un cliente de MySQL muy popular que se ofrece en muchos sitios web
de alojamiento (hosting).
http//localhost/phpmyadmin/
Y tendremos una interfaz como la siguiente (puede variar de acuerdo a la versión de
XAMPP):
237
Versión Mayo 2021
En el lado izquierdo aparece todas las bases de datos que se han creado, si queremos crear
Figura 67. Crear nueva base de datos phpMyAdmin. Fuente: elaboración propia (2020)
Se nos abre una ventana para indicar el nombre de la base de datos (escribir en
Figura 68. Nombre y cotejamiento de la nueva base de datos phpMyAdmin. Fuente: elaboración propia (2020)
238
Versión Mayo 2021
Crear una tabla en phpMyAdmin.
Cuando terminamos de crear nuestra base de datos, se nos abre una ventana para indiciar
la o las tablas que tendrá. Se nos pide un nombre y el número de columnas (cantidad de campos):
Recomendación: en las bases de datos siempre se utilizara un campo extra, cuyo valor
debe ser único en cada registro, siempre diferente, constituyéndose en un codigo que permitirá
identificar cada registro de forma inequivoca e irrepetible. A este campo extra se lo suele
autoincremental.
tendremos que escribir los nombres de cada uno de los cuatro campos o columnas que tendrá
nuestra tabla:
239
Versión Mayo 2021
En el primer campo de texto, justo debajo del titulo que dice "Nombre", escribiremos
el nombre de cada campo (id, cedula, nombres, fecha_nac, telefono, email), en ese orden, uno
almacenar cada uno de estos campos. Los tipos de datos normalmente mas utilizados
son INT (integer, es decir, números enteros, sin decimales, como los que precisa el campo
id), VARCHAR (variable carácter o caracteres variables, que almacena letras y números, hasta
un máximo de 255 caracteres, como los necesarios para los campos nombre y
email), TEXT (para textos mayores de 255 caracteres, como los de nuestro campo mensaje) y
DATE (para las fechas en formato AAA/MM/DD). Así que elegiremos estos tipos de datos en
la columna "Tipo":
240
Versión Mayo 2021
Figura 72. Columna Tipo en la creación de tabla. Fuente: elaboración propia (2020)
Si notan, tanto el campo cedula y teléfono los coloque como varchar y no como numero,
esto es para evitar problemas a la hora que estos campos empiecen con cero.
campo:
Figura 73. Columna Longitud/Valores en la creación de tabla. Fuente: elaboración propia (2020)
241
Versión Mayo 2021
Ahora nos desplazamos hacia la derecha de pantalla. En la columna Nulo, si dejamos de
sin marcar la casilla de selección, haremos que es campo sea NOT NULL; es decir, será
Si no queremos que esto sea obligatorio y que se pueda dejar vacio y que se añada igual
el registro completo con el resto de campos que si se hubieran completado, entonces marcamos
esa casilla de selección, lo que equivale a definir ese campo como potencialmente NULL, osea
Por ahora, determinamos todos los campos como NOT NULL, es decir, no se permitirá
valores nulos (vacios) en ninguno de los campos cuando pretendamos insertar un nuevo registro.
Para eso, no tenemos nada que hacer, ya que por defecto las casillas están desmarcadas:
Figura 74. Columna Nulo, Indice y A_I en la creación de tabla. Fuente: elaboración propia (2020)
elegir en la columna “Indice” la opción “Primary”, tal como vamos en la imagen anterior, lo que
indica que ese campo será el que identificara cada registro de forma única será su clave primaria.
Además de lado del menú de selección, marcaremos la casilla con la abreviatura A_I
(Auto Increment), que hace que el contenido o "valor" de este campo id, sea completado
242
Versión Mayo 2021
automáticamente cada vez que agreguemos un registro, con números que se iran incrementando
Eso es todo lo que modificaremos, los otros valores quedan por defecto. Pulsamos el
SQL
que nos permitirá crear, modificar, consultar y eliminar tanto bases de datos como sus
tablas y registros, desde el shell interactivo de MySQL y también desde PHP (Bahit,
2012).
Abordaremos los conceptos básicos sobre SQL que nos permitan desarrollar aplicaciones
de media complejidad, sin profundizar en el lenguaje en sí, sino solo en aquellos aspectos
La siguiente tabla, muestra los tipos de datos más comunes, aceptados por versiones la
243
Versión Mayo 2021
Tabla
Tipos de datos de MySQL
Tipo de dato Denominación Ejemplo
BOOL Booleano
DATE Fecha
TIME Hora
YEAR(D) Año
244
Versión Mayo 2021
Ejemplo:
cláusula WHERE nos permite filtrar registros en una sentencia SQL. Esta cláusula, funciona de
comparación:
= igual que
Por supuesto, tambien admite operadores lógicos: AND (y) NOT (negación) OR (o).
245
Versión Mayo 2021
Ejemplos:
246
Versión Mayo 2021
Martes – Semana VIII
No crearemos tablas ni bases de datos desde nuestros archivos PHP, sino que lo haremos
PHP cuenta con dos tipos de conectores MySQL: mysql y mysqli, disponible desde la
versión 5.
Lo primero que vamos a hacer es crear las variables para almacenar los datos de la base
de datos que utilizaremos más adelante (podemos hacerlo directamente sin utilizar variables pero
<?php
$servidor = "localhost"; //servidor que estamos utilizando.
$usuario = "root"; // usuario de la BD.
$contrasena = ""; //contraseña del usuario de la BD.
$basededatos = "estudiantes";
?>
Crear la conexión con el servidor de base de datos con mysqli_connect()
función mysqli_connect() y los datos o variables que hemos creado hace un momento. Para ello
Si ejecutamos el código que tenemos hasta ahora vemos nada y eso es bueno porque no
247
Versión Mayo 2021
Pero como no podemos estar seguros de que la conexión con el servidor de la base de
datos sea correcta, vamos a añadir para que muestre un mensaje en el caso de que la conexión
Tenemos que seleccionar la base de datos que vamos a utilizar. Para seleccionar la base
el objeto de conexión a la base de datos que hemos creado hace un momento ($conexion) y el
Por lo tanto:
$conexion=mysqli_connect($servidor,$usuario,$contrasena, $basededatos)
or die('Error de conexión: ' . mysqli_connect_error());
Enviar una consulta MySQL.
Para hacerlo un poco más limpio y ordenado vamos a guardar la consulta en una variable
248
Versión Mayo 2021
La consulta anterior nos devolverá todos los registros de la tabla “datos_personales”.
mysqli_query():
Para otros tipos de sentencias SQL, tales como INSERT, UPDATE, DELETE, DROP,
Para manejar los valores de la consulta realizada tenemos las siguientes funciones:
ambos.
249
Versión Mayo 2021
mysqli_num_rows: obtener el número de filas de un conjunto de resultados.
$número_filas = mysql_num_rows($resultado);
echo "$número_filas Filas\n";
mysqli_affected_rows: obtiene el número de filas afectadas en la anterior operación de
MySQL.
mysqli_close( $conexion );
250
Versión Mayo 2021
Miercoles – Semana VIII
base de datos.
Ahora bien, cuando realizamos inserción a base de datos, los datos que se alamacenan
generalmente son proporcionado por los usuarios, es decir son datos variables.
Para ello debemos tener un formulario que capture esos datos y los envie al servidor.
<!DOCTYPE html>
<html>
<head>
<title>Formulario de Ingreso</title>
<style type="text/css">
label {
display: block;
margin: .5em 0 0 0;
.btn {
251
Versión Mayo 2021
display: block;
margin: 1em 0;
</style>
</head>
<body>
<label for="cedula">Cedula</label>
maxlength="10" />
<label for="nombres">Nombre</label>
<label for="telefono">Telefono</label>
maxlength="10" />
<label for="email">Email</label>
</form>
</body>
</html>
En el form establecemos el atributo action indicando la pagina que recibirá los datos y el
método que utilizaremos para el envio. En nuestro caso enviaremos a registrar_datos.php a través
252
Versión Mayo 2021
Creamos el archivo registrar_datos.php:
<?php
//variables para la conexion
$servidor = "localhost"; //servidor que estamos utilizando.
$usuario = "root"; // usuario de la BD.
$contrasena = ""; //contraseña del usuario de la BD.
$basededatos = "estudiantes";
//conexion a BD
$conexion=mysqli_connect($servidor,$usuario,$contrasena, $basededatos)
or die('Error de conexión: ' . mysqli_connect_error());
//realizamos la consulta
$sql = "INSERT INTO
datos_personales(cedula,nombres,fecha_nac,telefono,email) VALUES
('$cedula',$nombres','$fecha','$telefono','$email')";
$query = mysqli_query($conexion,$sql);
253
Versión Mayo 2021
Para probar, llenamos el formulario:
254
Versión Mayo 2021
Jueves – Semana VIII
Para modificar datos creamos la consulta con mysql_query(), en nuestro caso tenemos
que ver primero cuales son los datos que vamos a modificar.
Primero se debe conocer cual son los datos que se desea modificar, para ellos se crea un
campo que capture un dato único, se hace la búsqueda en base de datos y se construye el
formulario de modificación:
<?php
if(isset($_GET['buscar'])) //si presionaron el botón de buscar
{
//variables para la conexion
$servidor = "localhost"; //servidor que estamos utilizando.
$usuario = "root"; // usuario de la BD.
$contrasena = ""; //contraseña del usuario de la BD.
$basededatos = "estudiantes";
//conexion a BD
$conexion=mysqli_connect($servidor,$usuario,$contrasena,
$basededatos) or die('Error de conexión: ' . mysqli_connect_error());
//capturamos el dato
$cedula = $_GET['dato'];
255
Versión Mayo 2021
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Formulario de Actualizacion</title>
<style type="text/css">
label {
display: block;
margin: .5em 0 0 0;
}
.btn {
display: block;
margin: 1em 0;
}
</style>
</head>
<body>
<form action="" method="GET">
<label for="dato">Cedula</label>
<input type="text" name="dato" id="dato" size="10"
maxlength="10"/>
<input class="btn" type="submit" name="buscar" value="BUSCAR" />
</form>
<label for="nombres">Nombre</label>
<input type="text" name="nombres" id="nombres" size="50"
value="<?php echo $row['nombres'] ?>"/>
256
Versión Mayo 2021
<input type="date" name="fecha" id="fecha" size="50" value="<?php
echo $row['fecha_nac'] ?>"/>
<label for="telefono">Telefono</label>
<input type="tel" name="telefono" id="telefono" size="10"
maxlength="10" value="<?php echo $row['telefono'] ?>"/>
<label for="email">Email</label>
<input type="text" name="email" id="email" size="50" value="<?php
echo $row['email'] ?>"/>
257
Versión Mayo 2021
Cambiamos los datos necesarios, y pulsamos “Enviar”. Si todo esta bien, veremos un
Para modificar datos creamos la consulta con mysql_query(), en nuestro caso tenemos
que ver primero cuales son los datos que vamos a eliminar.
Primero se debe conocer cual son los datos que se desea eliminar, para ellos se crea un
campo que capture un dato único, se hace la búsqueda en base de datos y se procede a eliminar
los datos:
<?php
if(isset($_GET['buscar']))
{
//variables para la conexion
$servidor = "localhost"; //servidor que estamos utilizando.
$usuario = "root"; // usuario de la BD.
$contrasena = ""; //contraseña del usuario de la BD.
$basededatos = "estudiantes";
//conexion a BD
$conexion=mysqli_connect($servidor,$usuario,$contrasena,
$basededatos) or die('Error de conexión: ' . mysqli_connect_error());
258
Versión Mayo 2021
//capturamos el dato
$cedula = $_GET['dato'];
259
Versión Mayo 2021
</body>
</html>
Para probar, buscamos el registro:
260
Versión Mayo 2021
Actividades – Semana VIII
Actividad 1
Actividad 2
Realice un cuadro comparativo sobre 3 gestores de base de datos que podemos conectar
Actividad 3
Cree la tabla libros con los campos id, nombre, autor, editorial, precio a través de
phpMyAdmin.
Actividad 4
Actividad 5
Actividad 6
Actividad 7
Cree el formulario de actualización de datos de los libros, utilice HTML y CSS necesario.
Actividad 8
Actividad 9
Actividad 10
Cree la tabla usuarios con los datos id, cedula, nombre, email y password.
261
Versión Mayo 2021
Recursos – Semana VIII
Videos
https://www.youtube.com/watch?v=f0yJDiKdsJc
https://www.youtube.com/watch?v=jPt8GTu2O7Y&feature=emb_logo
https://www.youtube.com/watch?v=1lpPGno6nVw
Presentaciones
• MYSQL. https://es.slideshare.net/anfelon/mysql-1503822
https://www.powershow.com/view/3ccbf5-
OWRlO/Desarrollo_de_sitios_web_con_PHP_y_MySQL_powerpoint_ppt_presentati
on
Lectura complementaria
mysql/
https://www.hostinger.es/tutoriales/como-usar-php-para-insertar-datos-en-mysql/
de-datos-mysql-en-php-7/actualizar-registros-de-base-de-datos-mysql-en-php-7/
262
Versión Mayo 2021
Semana IX
Contenido
263
Versión Mayo 2021
Lunes – Semana IX
Vamos a crear una tabla en HTML que se llenara con los datos cargados en una consulta
MySQL:
<?php
//se hace un consulta a base de datos de todos los datos registrados
//conexion a BD
$conexion=mysqli_connect($servidor,$usuario,$contrasena,
$basededatos) or die('Error de conexión: ' . mysqli_connect_error());
//realizamos la consulta
$sql = "SELECT * FROM datos_personales";
$query = mysqli_query($conexion,$sql) or die('Error de conexión:
');
mysqli_close($conexion);
264
Versión Mayo 2021
border-collapse: collapse;
}
.normal th, .normal td {
border: 1px solid #000;
}
</style>
</head>
<body>
<table class="normal">
<tr>
<th>ID</th>
<th>Cedula</th>
<th>Nombres</th>
<th>Telefono</th>
<th>Email</th>
</tr>
<?php while($row = mysqli_fetch_array($query)){ //mientras
hayas datos que mostrar ?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo$row['cedula']; ?></td>
<td><?php echo$row['nombres']; ?></td>
<td><?php echo$row['telefono']; ?></td>
<td><?php echo$row['email']; ?></td>
</tr>
<?php } ?>
</table>
</body>
</html>
Obtenmos:
Podemos agregar una columna con botones para modificar y eliminar datos.
265
Versión Mayo 2021
Para que los botones tengan funcionalidad, mandamos el id del campo que se quiere
<script type="text/javascript">
function verificar(id) {
if (confirm('Esta seguro que quiere eliminar?')) {
window.open(eliminar.php?id='+id)
}
}
</script>
266
Versión Mayo 2021
Martes – Semana IV
Cookie.
Una cookie es un archivo de texto plano, que se almacena remotamente -en la máquina
del cliente- a través del navegador. Cada cookie -archivo- es un conjunto de datos que
provienen del mismo servidor -más precisamente, del mismo dominio-. Básicamente,
cada cookie tendrá asociado a ella, un nombre que la identifique y un valor (Bahit, 2012).
Los datos que se almacenan remotamente en el ordenador del cliente, pueden ser de
De esta forma, podríamos pedirle a un usuario, que ingrese su nombre, almacenar ese
dato en una cookie, y así, cada vez que el usuario ingrese a nuestra aplicación o Sitio Web,
buscaríamos esa cookie, accederíamos a ella, leeríamos los datos y finalmente, podríamos
Sesiones de usuario.
Las sesiones de usuario, al igual que las cookies, son una forma de almacenar
información relativa al usuario, que permiten que dicha información se propague y mantenga
activa, con cada acción del usuario sobre nuestra App o Sitio Web. Las sesiones, también son
almacenadas remotamente mediante cookies, pero a la vez son retenidas localmente en memoria.
A diferencia de las cookies, las sesiones expiran pasado un período de tiempo prestablecido, de
267
Versión Mayo 2021
¿Qué es una sesión PHP?
Cuando trabaja con una aplicación, la abre, realiza algunos cambios y luego la
cierra. Esto es muy parecido a una sesión. La computadora sabe quién eres. Sabe cuándo inicia la
aplicación y cuándo finaliza. Pero en Internet hay un problema: el servidor web no sabe quién es
Las variables de sesión resuelven este problema almacenando la información del usuario
que se utilizará en varias páginas (por ejemplo, nombre de usuario, color favorito, etc.). Por
defecto, las variables de sesión duran hasta que el usuario cierra el navegador.
Entonces; Las variables de sesión contienen información sobre un solo usuario y están
Sesión PHP.
PHP nos provee de la función session_start(), la cual debe ser llamada siempre, antes de
session_start();
Las variables de sesión se establecen con la variable global PHP: $ _SESSION.
Ejemplo practico.
Supongamos que ya tenemos una tabla de usuario donde hemos registrado nombre, email
y password.
268
Versión Mayo 2021
Vamos a crear sesiones en PHP a través de formulario de inicio de sesión el cual envía
una petición al servidor y este responde de acuerdo de acuerdo a cada petición enviada por cada
usuario.
cuando pulsa sobre el botón de inicio de sesión, una sesión se creará en el servidor y se enviara a
la pagina de inicio:
<!DOCTYPE html>
<html>
<head>
<title>Iniciar Sesion</title>
<style type="text/css">
label {
display: block;
margin: .5em 0 0 0;
}
.btn {
display: block;
margin: 1em 0;
}
</style>
</head>
<body>
<form action="" method="POST">
269
Versión Mayo 2021
<?php
if (isset($_POST['enviar'])) {
//variables para la conexion
$servidor = "localhost"; //servidor que estamos utilizando.
$usuario = "root"; // usuario de la BD.
$contrasena = ""; //contraseña del usuario de la BD.
$basededatos = "estudiantes";
//conexion a BD
$conexion=mysqli_connect($servidor,$usuario,$contrasena,
$basededatos) or die('Error de conexión: ' . mysqli_connect_error());
//capturamos el dato
$email = $_POST['email'];
$password = $_POST['password'];
270
Versión Mayo 2021
En la página de inicio se abre la sesión y se muestra el nombre del usuario que ingreso:
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>INICIO</title>
</head>
<body>
<h1>BIENVENIDO</h1>
<p><?php echo $_SESSION['nombres'] ?></p>
<br>
<a href="logout.php">Cerrar Sesion</a>
</body>
</html>
Para cerrar sesión, se destruye las variables de sesión y la sesión creada:
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// eliminar todas las variabls de session
session_unset();
// destruye la session
session_destroy();
?>
</body>
</html>
271
Versión Mayo 2021
Probando el codigo.
272
Versión Mayo 2021
Miércoles – Semana IX
PHP nos permite insertar cualquier tipo de archivos con formato de texto, dentro de un
archivo PHP. Entre los tipos de archivos que podemos insertar dentro de un fichero .php, se
encuentran aquellos con las siguientes extensiones: .php, .txt, .htm, .html, entre otros con
formato de texto.
Es posible insertar el contenido de un archivo PHP en otro archivo PHP (antes de que el
servidor lo ejecute), con la instrucción include o require. Las declaraciones de incluir y exigir
Entonces, si desea que la ejecución continúe y muestre a los usuarios la salida, incluso si
Incluir archivos ahorra mucho trabajo. Esto significa que puede crear un encabezado, pie
de página o archivo de menú estándar para todas sus páginas web. Luego, cuando se necesita
Sintaxis.
include ('filename.ext');
or
require ('filename.ext');
273
Versión Mayo 2021
Include y require "_once".
existe entre include e include_once y require y require_once, es que si el archivo indicado con
Ejemplo de uso.
<?php
//variables para la conexion
$servidor = "localhost"; //servidor que estamos utilizando.
$usuario = "root"; // usuario de la BD.
$contrasena = ""; //contraseña del usuario de la BD.
$basededatos = "estudiantes";
//conexion a BD
$conexion=mysqli_connect($servidor,$usuario,$contrasena,
$basededatos) or die('Error de conexión: ' . mysqli_connect_error());
?>
<?php
if(isset($_GET['buscar']))
{
include('conexion.php');
//capturamos el dato
$cedula = $_GET['dato'];
274
Versión Mayo 2021
echo "<script>alert('Registro no encontrado');</script>";
}
mysqli_close($conexion);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Formulario de Eliminacion</title>
<style type="text/css">
label {
display: block;
margin: .5em 0 0 0;
}
.btn {
display: block;
margin: 1em 0;
}
</style>
</head>
<body>
<form action="" method="GET">
<label for="dato">Cedula</label>
<input type="text" name="dato" id="dato" size="10"
maxlength="10"/>
<input class="btn" type="submit" name="buscar" value="BUSCAR" />
</form>
</body>
</html>
275
Versión Mayo 2021
Actividades – Semana IX
Actividad 1
Actividad 2
Actividad 3
Actividad 4
Actividad 5
Actividad 6
Realice un resumen (200 palabras minimo) sobre las funciones include y requiere y su
diferencia.
276
Versión Mayo 2021
Recursos – Semana IX
Videos
https://www.youtube.com/watch?v=nPAp-gT5gPI
https://www.youtube.com/watch?v=Tb-_cEAsp4s
https://www.youtube.com/watch?v=0e0eSTZeE-A
Lecturas complementarias
https://disenowebakus.net/llevando-datos-de-la-base-mysql-a-las-paginas-php.php
https://codigosdeprogramacion.com/2016/12/20/sistema-de-usuarios-y-sesiones-en-
php-y-mysql-1-login-sesiones-y-logout/
277
Versión Mayo 2021
Referencias
Condor, E., & Soria, I. (2015). Programación Web con CSS, JavaScript, PHP y AJAX.
https://uniwebsidad.com/libros/css
https://uniwebsidad.com/libros/javascript
https://uniwebsidad.com/libros/xhtml
Gallego, J. (2003). Desarrollo Web con PHP y MySQL. Madrid: Anaya Multimedia.
278
Versión Mayo 2021