Sie sind auf Seite 1von 219

Módulo: Programación III Docencia Informática

UNIVERSIDAD TÉCNICA DE MACHALA


FACULTAD DE CIENCIAS SOCIALES
DOCENCIA INFORMÁTICA

PROGRAMACIÓN III
PHP  MySQL

Compiladores: Julio Encalada


Diana Granda

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

¿QUÉ ES PHP? ¿PARA QUÉ SIRVE PHP?

PHP es un lenguaje de código abierto muy popular, adecuado para desarrollo web y que puede ser
incrustado en HTML. Es popular porque un gran número de páginas y portales web están creadas con
PHP. Código abierto significa que es de uso libre y gratuito para todos los programadores que quieran
usarlo. Incrustado en HTML significa que en un mismo archivo vamos a poder combinar código PHP con
código HTML, siguiendo unas reglas.

PHP se utiliza para generar páginas web dinámicas. Recordar que llamamos página estática a aquella
cuyos contenidos permanecen siempre igual, mientras que llamamos páginas dinámicas a aquellas cuyo
contenido no es el mismo siempre. Por ejemplo, los contenidos pueden cambiar en base a los cambios
que haya en una base de datos, de búsquedas o aportaciones de los usuarios, etc.

¿Cómo trabaja PHP? El lenguaje PHP se procesa en servidores, que son potentes ordenadores con un
software y hardware especial. Cuando se escribe una dirección tipo
http://www.aprenderaprogramar.com/index.php en un navegador web como Internet Explorer, Firefox
o Chrome, ¿qué ocurre? Se envían los datos de la solicitud al servidor que los procesa, reúne los datos
(por eso decimos que es un proceso dinámico) y el servidor lo que devuelve es una página HTML como
si fuera estática.

El esquema es:

Petición de página web al servidor --> El servidor recibe la petición, reúne la información necesaria
consultando a bases de datos o a otras páginas webs, otros servidores, etc --> El servidor responde
enviando una página web “normal” (estática) pero cuya creación ha sido dinámica (realizando procesos
de modo que la página web devuelta no siempre es igual).

En resumen:

Páginas estáticas: Petición --> Respuesta


Páginas dinámicas: Petición --> Procesado y preparación --> Respuesta

En un sitio dinámico, la información generalmente está contenida en una base de datos. Cada vez que
mostramos la página, como por ejemplo una página de noticas, buscamos en la base de datos las
últimas noticias que tenemos ingresadas para mostrar en el navegador del visitante. Ahora bien, ¿cómo
se consigue que la página vaya mostrando noticias nuevas? Simplemente cargando las mismas en la
base de datos, por ejemplo, a través de un formulario que rellena una persona y que una vez relleno
cuando pulsa “Enviar” implica que lo que haya escrito se guarde en nuestra base de datos. De esta
manera, cuando solicitamos la página web y el servidor consulte la base de datos, encontrará esta
nueva información y mostrará nuestra página de forma distinta a como se veía anteriormente.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Por regla general este tipo de lenguaje suele ser utilizado para crear contenido dinámico y poder
interactuar con el usuario.

Veamos un ejemplo del contenido de una página web php, que habremos de almacenar en un archivo
que termina con la extensión .php y que contiene texto:

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


"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo</title>
</head>
<body> <?php echo "Bienvenidos
a aprenderaprogramar.com";
?>
</body>
</html>

Como podrás comprobar el contenido del archivo incluye código HTML y en un momento dado aparece
una etiqueta <?php que significa que ahí empieza el código PHP. Por eso decimos que el código PHP
está embebido (incluido o incrustado) en código HTML.

Por tanto las páginas PHP contienen HTML con código PHP incluido en ellas para hacer "algo" (en este
caso, mostrar Bienvenidos a aprenderaprogramar.com. El código PHP está comprendido entre etiquetas
de comienzo y final especiales: <?php y ?>

Estas etiquetas especiales nos permitirán entrar y salir del "modo PHP". Le sirven al servidor web para
saber que tiene que interpretar el código incluido entre esas etiquetas como PHP.

Lo que distingue a PHP de JavaScript es que el código es ejecutado en el servidor, generando HTML y
enviándolo al cliente como si fuera una página web estática. El cliente recibirá los resultados que el
servidor devuelve después de interpretar el código PHP, sin ninguna posibilidad de determinar qué
código ha producido el resultado recibido. Es decir, a través de nuestro navegador podríamos ver el
código HTML, pero nunca el código PHP que dio lugar al resultado HTML. El servidor web puede ser
incluso configurado para que los usuarios no puedan saber si estás o no utilizando PHP.

Lo mejor de usar PHP es que es extremadamente simple para el principiante, pero a su vez, ofrece
muchas características avanzadas para los programadores profesionales y más avanzados.

Con PHP puedes procesar la información de formularios, generar páginas con contenidos dinámicos, o
enviar y recibir cookies, entre muchas más cosas. PHP lo utilizan desde pequeñas páginas web hasta
grandes empresas. Muchas aplicaciones web están construidas usando PHP. Podemos citar Joomla y
Drupal (gestores de contenido de páginas web), osCommerce y Prestashop (tiendas on-line para
comercio electrónico), phpBB y SMF (sistemas de foros para páginas web), Moodle (plataforma
educativa para educación on-line), etc.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Entre las habilidades de PHP se incluye la creación de imágenes a partir de datos. Por ejemplo,
supongamos que tenemos una academia con 20 alumnos matriculados en un curso de informática, 50
alumnos matriculados en un curso de matemáticas y 30 alumnos matriculados en un curso de química.
Con PHP podemos generar automáticamente imágenes similares a esta:

PHP también puede utilizar y presentar resultados en otros estándares de datos o lenguajes propios de
los desarrollos web, como XHTML y cualquier otro tipo de ficheros XML. PHP puede autogenerar éstos
archivos y almacenarlos en el sistema de archivos en vez de presentarlos en la pantalla, utilizando estos
ficheros para generar contenido dinámico. Es decir, el contenido dinámico puede surgir de otros sitios
además de desde bases de datos.

También se puede interactuar con otros servidores usando cualquier protocolo. Por último, PHP puede
enlazarse con otros lenguajes muy potentes como Java.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

COMUNICACIÓN ENTRE EL CLIENTE Y EL SERVIDOR SIN PHP Y CON PHP

Intentaremos explicar ahora cuales son las diferencias entre una petición a un servidor sin PHP y con
PHP. Esto nos permitirá ver cuales son las principales diferencias entre una página web estática en
HTML y una página web dinámica en PHP.

Empezaremos recordando a qué llamamos servidor y a qué llamamos cliente, de forma muy
simplificada. Llamamos servidores a ordenadores generalmente potentes, con un software y hardware
especial, y que se encargan de resolver peticiones que le hacen decenas, cientos o miles de
ordenadores. Hablamos de cliente en general para referirnos a ordenadores tipo ordenador personal de
los que habitualmente tenemos en nuestra casa o en nuestra oficina de trabajo. Un cliente
normalmente trabaja combinando lo que es su entorno local (por ejemplo nuestro sistema de archivos
y programas instalados en nuestro ordenador) con peticiones a un servidor: por ejemplo cuando nos
conectamos a internet y tecleamos una dirección web (URL), lo que hacemos es realizar una petición a
un servidor. En este caso sería un servidor web, pero hay distintos tipos de servidores (de bases de
datos, xml, etc.). El servidor le responde al cliente entregándole lo que ha solicitado si es posible o, en
algunos casos, indicando que no tiene permisos para obtener lo solicitado, que lo que ha solicitado no
existe, etc.

Estas definiciones son definiciones simplificadas y muy someras, pero para los objetivos de este curso
nos resultarán suficientes.

COMUNICACIÓN ENTRE EL CLIENTE Y EL SERVIDOR SIN PHP

En primer lugar, lo que hacemos es escribir en la barra de direcciones del navegador, la url de la página
web que queremos ver. Después el navegador envía el mensaje a través de internet al ordenador
remoto (servidor), de acuerdo con un protocolo estandarizado, solicitando la página en cuestión
(ejemplo: www.aprenderaprogramar.com/index.html). El servidor comprueba que la petición es válida
y lee el archivo solicitado desde su disco duro. Todo ello es posible gracias al software instalado en el
servidor. Acto seguido, el servidor web envía el archivo solicitado por el navegador tal cual está en el
disco duro. Y, por último, el navegador muestra en pantalla el archivo que envió el servidor web.

Este proceso siempre es el mismo cuando hablamos de páginas estáticas (coloquialmente, “páginas que
no cambian”). Cualquiera que sea el cliente que solicita la página, el contenido devuelto siempre será el
mismo. La única forma de que el contenido del archivo cambie es que el administrador de ese sitio web
edite el contenido del archivo index.html y haga modificaciones.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

COMUNICACIÓN ENTRE EL CLIENTE Y EL SERVIDOR CON PHP. INTÉRPRETE PHP Y GESTORES DE BASES
DE DATOS.

Empezamos escribiendo en la barra de direcciones del navegador la url de la página web que queremos
ver. En segundo lugar, el navegador envía el mensaje a través de internet al ordenador remoto
(servidor), de acuerdo con un protocolo estandarizado, solicitando la página (archivo) index.php.
(ejemplo: www.aprenderaprogramar.com/index.php).

El servidor web recibe el mensaje, comprueba que se trata de una petición válida, y al ver que la
extension es "php" solicita al intérprete de PHP (que es otro programa que se ejecuta en el servidor
web) que le envíe el archivo.

En este caso la situación ha variado: no se trata de una simple extracción de un archivo desde el disco
duro, sino que está actuando un agente intermediario: el intérprete PHP. El intérprete PHP lee desde el
disco duro del servidor el archivo index.php y empieza a procesar las instrucciones (código de
programación) que contenga dicho archivo. Decimos que el intérprete PHP “ejecuta” los comandos
contenidos en el archivo y, eventualmente, se comunica con un gestor de base de datos (ejemplos de
ellos pueden ser MySql, Oracle, SQL Server, etc.). La comunicación con base de datos no siempre se
produce, pero es algo muy frecuente cuando trabajamos con PHP. Tenemos pues otra diferencia con las
webs estáticas: interviene otro agente más, el gestor de base de datos, que es capaz de devolver la
información contenida en lugares determinados de una base de datos. Y una base de datos podemos
verla simplemente como un gran almacén de información organizada en tablas.

Una vez el intérprete PHP termina de ejecutar el código contenido en el archivo y ha recibido toda la
información necesaria del gestor de base de datos, envía los resultados al servidor web. El servidor web
envía la página al cliente que la había solicitado y el navegador muestra en pantalla la información que
le envía el servidor web.

En lenguajes de programación como C o Java estamos acostumbrados a que cuando ejecutamos un


código, observamos unos resultados en la pantalla de nuestro ordenador. Sin embargo, en PHP el
resultado que se obtiene después de ejecutar código es código HTML que es el que utilizará el
navegador para mostrar la página web.

Una cuestión interesante, y curiosa, es preguntarnos sobre cuál es la diferencia entre el código HTML
que le llega al cliente cuando solicita una página estática y el código HTML que le llega cuando solicita
una página dinámica. La respuesta es que no hay diferencia: ambos son código HTML. ¿Cómo
podríamos saber si un código HTML proviene de un archivo html, estático, o si proviene de una
respuesta de un intérprete PHP? Pues digamos que si simplemente nos dan el código no podríamos
saber de dónde viene.

Y otra cuestión que se puede plantear: si tanto con PHP como sin PHP lo que obtenemos es código
HTML, ¿para qué nos sirve el PHP? Bien, PHP es un lenguaje de programación, mientras que HTML no lo
es. Con HTML podemos enviar cierta información siempre igual, pero no podemos hacer cálculos, no
podemos tomar decisiones, no podemos repetir procesos cierto número de veces. En definitiva, PHP
aporta toda la potencia que supone la programación de ordenadores al mundo de las páginas web.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Pongamos un ejemplo muy sencillo: queremos que en una página web se produzca un proceso de venta
a través de una tarjeta de crédito. Una vez el cliente elige el producto, número de unidades que quiere
y lugar de envío necesitaremos realizar unos cálculos: esto lo podemos hacer con PHP (también con
otros lenguajes, pero vamos a centrarnos en el objeto de este curso). Una vez realizados los cálculos, le
mostraremos al cliente el importe total y los datos de su compra y le pediremos que introduzca el
número de su tarjeta de crédito y su clave personal. Ahora hay que tomar una decisión: para esto no
nos sirve el HTML. Sin embargo, usando PHP podemos consultar a una base de datos donde estén
almacenados los números de tarjetas de crédito válidas del banco y sus claves. Una vez hecha esta
consulta, usando PHP podemos mostrar al usuario un resultado distinto según la situación que se haya
producido, por ejemplo:

- Los datos no son válidos. La compra no ha podido realizarse.


- Los datos son válidos. Se ha realizado satisfactoriamente la compra. Recibirá su pedido en su
domicilio en un plazo de 10 días. Gracias por confiar en nosotros.

Php es un lenguaje de programación y HTML no lo es, esta es una gran diferencia. ¿Si PHP es mucho
más potente, por qué no prescindir de HTML? Digamos que cada lenguaje cumple su función: HTML es
un lenguaje muy ordenado que permite enviar información de forma rápida para que se muestre algo
en un ordenador. En este sentido, es más rápido enviar la información en formato HTML que de otra
manera (por ejemplo un archivo ejecutable que se tuviera que ejecutar en el cliente). Por eso HTML
sigue siendo relevante dentro del mundo de internet: es un formato muy usado para el envío de
información. Cómo se haya generado esa información es otra cuestión.

En el siguiente esquema podemos ver el proceso completo.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO

Responde a las siguientes preguntas indicando verdadero o falso y justicando brevemente tu respuesta:

a) Todos los servidores web trabajan con PHP, ya que es la única manera de conseguir que se
muestre una página web en el computador cliente.

b) El código HTML generado con PHP no es distinguible del código HTML generado manualmente,
a no ser que contemos con alguna información adicional.

c) HTML es un lenguaje de programación que permite decidir y repetir, pero carece de


funcionalidades de acceso a bases de datos.

d) Para crear páginas web dinámicas HTML es un lenguaje obsoleto. Para su creación usaremos
PHP u otro lenguaje de última generación.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

DIFERENCIA ENTRE PÁGINAS WEB ESTÁTICAS Y PÁGINAS WEB DINÁMICAS CON PHP

Vamos a repasar algunos conceptos que ya hemos mencionado y que es importante que queden claros.
Las páginas web estáticas o “planas” son aquellas en las que la información se presenta en forma
predefinida y sin cambios. No hay manera de que pueda cambiar el contenido de la página. En caso de
que se quiera actualizar una pagina estática, se tendrá que acceder directamente al servidor en el que
se encuentra alojada para hacer la edición del archivo correspondiente.

A la información contenida en una página estática se le puede dar un determinado formato de


presentación, así como incluirle imágenes, enlaces a otras páginas, animaciones, videos, sonidos, etc.
En general, todo se hace a través de etiquetas HTML y esto es lo único que puede ofrecerse a través de
este tipo de páginas.
En los inicios de Internet predominaban las páginas estáticas, pero con el paso del tiempo y ante la
necesidad de agilizar el manejo de la información, surge un nuevo concepto de páginas web que hoy
sobresale y es el más utilizado. Estas son denominadas páginas dinámicas: dentro de la programación
dinámica para páginas web hay distintos lenguajes (entre los que cabe destacar PHP, ASP y JSP), siendo
php uno de los más usados.
Normalmente, las páginas estáticas están compuestas por código HTML. Cuando la página (archivo) es
solicitada por el navegador, el servidor la envía y no realiza ninguna operación más. Todos los visitantes
verán el mismo contenido.
Las páginas web dinámicas son aquellas en que la información que presentan se genera a partir de
alguna acción o petición del usuario en la página o mediante consultas al contenido de bases de datos
que normalmente cambian con frecuencia. Contrariamente a las páginas estáticas, en las que su
contenido se encuentra predeterminado, en las dinámicas la información aparece inmediatamente
después de una solicitud hecha por el usuario o de una consulta a bases de datos. Una página dinámica
permite visualizar la información contenida en una base de datos, así como almacenar y hacer
actualizaciones de cierta información en bases de datos a través de formularios donde el usuario
introduce contenidos. Piensa por ejemplo en una red social como FaceBook: cuando se escribe en una
casilla de texto y se pulsa enter, la información introducida se almacena en una base de datos. Ahora
cuando otro usuario entra en FaceBook, esa información introducida por un usuario se le muestra a
otro usuario gracias a que se está rescatando de una base de datos. La programación dinámica tiene
múltiples aplicaciones, entre las que podemos citar los sistemas de foros (los mensajes, imágenes, etc.
se almacenan en bases de datos). Otra aplicación consiste en que el usuario tiene la posibilidad de
cambiar a su gusto el diseño y el contenido de una página, por ejemplo la página de inicio personalizada
de Google, gracias a que sus opciones se almacenan en una base de datos.
Queda claro entonces que para la creación de este tipo de páginas dinámicas, además de etiquetas
HTML es necesaria la utilización de algún lenguaje de programación que se ejecute del lado del servidor
(es decir, que el servidor realice un proceso antes de enviar la información al usuario de modo que a

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

cada usuario le puede enviar distintas informaciones como resultado de ese proceso), así como la
existencia de una o varias bases de datos.
Si creamos un sitio web que usa páginas webs dinámicas, estas páginas son procesadas por el servidor
antes de ser enviadas al navegador.
Una página .php contiene código PHP que al ser ejecutado generará código HTML. En ese proceso de
ejecución de código, pueden hacerse consultas a bases de datos u otros archivos. Además, pueden
realizarse cálculos o tomarse decisiones gracias a la potencia de la programación.
El resultado final es que se envía al navegador código HTML, que es generado para cada visitante en
particular dependiendo por ejemplo del contenido de la base de datos en ese momento o de las
opciones de configuración o solicitudes específicas del usuario. Otras personas podrán obtener
diferentes resultados si acceden en un momento en que la base de datos haya cambiado, o si tienen
opciones de configuración o realizan una solicitud distinta. Ten en cuenta que aunque la URL nos
muestre una extensión .php, lo que recibe el usuario es código HTML. Por ejemplo la URL siguiente:
http://www.aprenderaprogramar.com/index.php
Siempre devuelve código HTML. Pero no siempre devuelve el mismo código HTML porque para generar
ese código existen procesos en el servidor que hacen que los resultados puedan variar.
¿Cómo reconocer si una web que visitamos es dinámica o estática? En general, es dinámica aquella que
puede interactuar con el visitante y/o administrador web, pudiéndose modificar el contenido de la
página según el momento u opciones escogidas. Ejemplos de esto son: cuando el usuario puede escribir
un comentario, escoger los productos y ponerlos en un carrito de compras, subir archivos o fotografías,
etc. En este caso SI se utilizan bases de datos y se requiere programación web dinámica.
Las páginas web dinámicas ofrecen muchas ventajas en comparación con las páginas web estáticas,
como una mayor interactividad con el usuario y facilidad para el cambio y actualización de contenidos.
A las personas que administran las páginas web (webmasters, programadores, gestores de contenidos),
la programación dinámica les permite una reducción en tiempo y costos, así como una mayor facilidad
en el mantenimiento de un sitio web.

RESULTADOS EN BUSCADORES USANDO PÁGINAS WEB DINÁMICAS

Ante todas las ventajas de este tipo de páginas cabe citar una desventaja “histórica” en cuanto a los
resultados obtenidos en buscadores como Bing, Google o Yahoo. Hasta hace unos años, los buscadores
consideraban que una web dinámica era no indexable (no registrables sus contenidos de cara a
búsquedas) debido a que no se podía ofrecer como resultado de un buscador algo que cambiaba con
frecuencia. Es frecuente oir el término “URL amigable” en referencia a una dirección web que es
sencilla y recuerda un texto simple, por ejemplo:
http://www.aprenderaprogramar.com/cursos/cursophp/paginas-dinamicas-y-estaticas.htm

Por el contrario, muchas veces se dice que cuando las páginas contienen .php y numerosos parámetros
con caracteres como "?", "&" y "=" la URL no es amigable. Por ejemplo:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=57&Itemid=8

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Esta situación en la actualidad puede considerarse superada: los buscadores se han sofisticado y son
capaces de indexar URL´s dinámicas sin problemas. Algunas aplicaciones de software libre como
Joomla, Drupal, WordPress, etc. siguen manteniendo sistemas que permiten convertir las URL´s
dinámicas en URL´s amigables, pero en general podemos decir que esto es cada vez menos necesario.
Desde nuestro punto de vista, es más importante tener una página web con un buen diseño, bien
estructurada en cuanto a menús y contenidos, que se actualice con frecuencia y que ofrezca contenidos
de calidad, más que tener o no tener URL´s amigables.

EJERCICIO

Responde a las siguientes preguntas indicando verdadero o falso y justicando brevemente tu respuesta:
a) Hoy día ya no tiene sentido crear una página web estática, ya que los navegadores dejarán de
admitirlas en un futuro próximo.

b) Podemos reconocer si una página web es dinámica en base a si es capaz de almacenar


información que el usuario proporciona y rescatarla posteriormente. Por ejemplo: los comentarios en
un blog.

c) La mayor parte de los sitios web y gestores de contenidos hoy día se basan en páginas web
dinámicas, pero muchos sitios siguen siendo webs estáticas.

d) Si creamos un sitio web dinámico no podremos ser indexados por buscadores como Bing,
Google o Yahoo.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

¿ES PHP UN BUEN LENGUAJE DE PROGRAMACIÓN?

Los orígenes de PHP están fechados en torno al año 1995. Sin embargo, fue a partir del año 1999 con la
publicación de PHP 4 cuando este lenguaje de programación tomó un verdadero auge. En sus primeros
estadios de desarrollo, PHP se denominaba también “Zend Engine”, nombre que provenía del nombre
de sus creadores: Zeev Suraski y Andi Gutmans.

En el año 2004 fue lanzada la versión 5 de PHP basada en el nuevo motor Zend Engine 2.0. Esta nueva
versión ofrecía mejoras para aplicaciones en servidores dedicados como por ejemplo un mejor soporte
para la programación orientada a objetos y una extensión completamente nueva para el uso de MySQL,
una de las bases de datos más usadas en servidores.
La versión 6 de PHP ha estado en preparación durante largo tiempo en formato de borrador, sin llegar a
publicarse. Por ello se propuso que la nueva versión de PHP se llamara PHP 7, dejando PHP 6 como una
versión no publicada.
Algunas estadísticas indican que alrededor del 60% de los sitios Web en Internet utilizan PHP. Este dato
realmente no es comprobable a ciencia cierta, lo que sí es cierto es que PHP es un lenguaje de
programación que goza de gran popularidad y difusión. A esta circunstancia hay que añadir el hecho de
que páginas web de mucha importancia como Wikipedia o Yahoo se apoyan en este lenguaje, lo cual
demuestra que es un lenguaje muy potente que puede servir desde para pequeñas páginas web hasta
para grandes portales.

Muchas de las aplicaciones que se generan en comunidades de programadores y usuarios de software


libre usan PHP porque está disponible gratuitamente y es potente. Gracias a eso, grandes proyectos
como Wordpress, Joomla o Drupal han basado su desarrollo en el lenguaje de programación PHP.

En lo referente a si PHP es un “buen” lenguaje de programación hay que tener en cuenta muchos
factores ya que el resultado final de un desarrollo web o de una aplicación web no sólo depende de la
herramienta sino de quién la maneja y cómo la maneja. Podemos afirmar que PHP utilizado
correctamente es un muy buen lenguaje de programación.

Lo que está claro es que, aunque tiene ventajas e inconvenientes, es uno de los lenguajes de
programación más difundidos en Internet y se encuentra disponible en prácticamente la totalidad de los
servidores dedicados. Cuando algo tiene éxito y amplia difusión, “por algo será”.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

LA EVOLUCIÓN DE PHP EN EL TIEMPO. LAS VERSIONES.

PHP 3

PHP 3.0, liberada en 1998, era la primera versión que se parecía fielmente al PHP tal y como lo
conocemos hoy en día.
Una de las mejores características de PHP 3.0 era su gran extensibilidad. Cuando hablamos de
extensibilidad nos referimos a la existencia de un núcleo o core al que se le pueden ir añadiendo
fragmentos de código que permiten hacer más cosas. Se trataría de algo parecido a tener una base
sobre la que podemos ir añadiendo piezas. Veamos una imagen:

En esta imagen, correspondiente a los juegos de niños armables “Lego”, vemos cómo existe una base
verde. Esa base sería el core o núcleo de PHP. Luego, aprovechando que esa base tiene preparados los
anclajes para seguir poniendo piezas, vemos que se le han añadido extensiones. Por ejemplo, la primera
extensión que tiene una base azul podría ser una extensión que permita la gestión de correos
electrónicos. La segunda extensión, que tiene una base verde, podría ser una extensión para gestionar
imágenes, y así sucesivamente…
Además de facilitar el trabajo con muchas bases de datos, protocolos y sistemas informáticos, las
características de extensibilidad de PHP 3.0 atrajeron a muchos programadores a unirse al proyecto y
enviar nuevos módulos de extensión. Esta fue la clave del enorme éxito de PHP 3.0: que fue un proyecto
abierto al que se unieron muchos programadores formando una comunidad.

Todo el nuevo lenguaje fue liberado con el nombre de 'PHP', con el significado de ser un acrónimo juego
de las letras iniciales de “Hypertext Preprocessor”.
A partir de su lanzamiento, PHP creció pasando a ser usado por miles de programadores y cientos de
miles de sitios Web. Se estima que PHP 3.0 conquistó una fracción del total de servidores mundiales de
en torno al 10 %, lo cual fue un éxito rotundo.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

PHP 4

La principal novedad de PHP 4 está en el intérprete del lenguaje PHP. Con la nueva versión se lograron
aumentos de entre 5 y 10 veces en la velocidad de ejecución de páginas PHP respecto a la versión
anterior, lo cual fue un salto muy importante.
Además del aumento en rendimiento, se introdujeron novedades relacionadas con el soporte de
objetos en PHP. La programación orientada a objetos es una forma avanzada de programación y gracias
a estas características PHP se encuentra entre los lenguajes de vanguardia.
Otra nueva característica de PHP 4 fue que podía soportar hilos cosa que en PHP 3 no era posible. Un
hilo es básicamente una tarea que puede ser ejecutada en paralelo con otra tarea. La principal ventaja
que podemos obtener de esta funcionalidad es que se pueden estar haciendo varias cosas al mismo
tiempo sin tener que esperar a que se termine una tarea para empezar otra.
Para los programadores, PHP 4 incluía un depurador. Un depurador viene siendo un asistente que nos
ayuda a detectar dónde se encuentran los errores en los programas o código de desarrollo. Esto ayuda
mucho al programador y le evita quebraderos de cabeza por no poder localizar errores. Gracias al
depurador, se podían seguir con mayor profundidad esos errores “misteriosos” que hacían perder
mucho tiempo.

PHP 5, PHP 6 Y PHP 7

La principal característica de PHP 5 con respecto a PHP 4 es la mejora en la programación orientada a


objetos (POO). Aunque este tipo de programación ya se había introducido en el lenguaje desde PHP 3,
las versiones anteriores a PHP 5 tenían bastantes limitaciones para el uso de este tipo de programación.

La orientación a objetos es una manera de programar que es muy usada hoy en día. No entraremos en
detalles sobre ella de momento, porque es algo avanzado dentro de la programación y en este curso
trataremos de avanzar poco a poco desde lo más básico hasta lo más complejo.
El principal objetivo de PHP 5 ha sido mejorar los mecanismos de programación orientada a objetos
para solucionar las carencias de las anteriores versiones. El resultado ha sido un lenguaje más potente,
que cada vez es más popular y que cada vez se usa más, tanto a nivel profesional en empresas como a
nivel de usuarios que quieren construir pequeñas páginas o portales web.
Algunas personas dicen que PHP se parece cada vez más a Java, que es quizás el lenguaje de
programación más usado en el mundo, y que también es un lenguaje de programación orientado a
objetos.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

¿QUÉ VERSIÓN DE PHP USAR?

La versión de PHP a usar depende en gran medida de qué desarrollo queramos hacer. Por ejemplo, si
vamos a usar PHP para el gestor de contenidos Joomla 1.0, no es lo mismo que si vamos a usarlo para
Joomla 1.5 porque cada uno tiene sus propias necesidades en cuanto a la versión de PHP a usar. Es
decir, cada aplicación debe ir con su versión de PHP adecuada al igual que a un vehículo a motor
debemos echarle el tipo de combustible adecuado. Si a un coche diesel le echamos gasolina, no
funcionará bien. Si una aplicación que fue concebida para PHP 4 la intentamos ejecutar usando PHP 5,
probablemente ocurra lo mismo: no funcionará bien.
También debemos tener en cuenta que usar siempre la última versión de algo tiene sus riesgos. Por
ejemplo las últimas versiones no suelen estar tan testeadas como las anteriores y se pueden producir
‘agujeros de seguridad’ que tendremos que tapar con algún parche.
En nuestra opinión la versión de PHP que debemos usar es la que mejor se adapte a nuestras
necesidades y, dentro de ésta, la que sea más estable. Para este curso recomendaremos usar PHP 5.x (al
escribir 5.x nos referimos a cualquier versión de PHP 5). También es posible seguirlo usando PHP 4.x No
te preocupes ahora por la versión pues de cara al aprendizaje básico no es importante. En cambio, sí
deberás prestar atención a la versión si tratas de instalar aplicaciones como Joomla, Drupal o
WordPress en un servidor, pues hay que asegurarse de que la versión de la aplicación sea compatible
con la versión de PHP en el servidor.

EJERCICIO

Busca información en internet sobre el actual estado de desarrollo de las versiones PHP. ¿Cuál es la
última versión estable publicada? ¿En qué versiones se está trabajando como borrador?

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

¿QUÉ NECESITO PARA ESCRIBIR CÓDIGO PHP Y CREAR PÁGINAS WEB DINÁMICAS?

Los requisitos indispensables para poder escribir y crear páginas PHP son los siguientes:

• Disponer de un editor de textos con el que escribir el código de la página PHP. Por ejemplo el
Notepad++ es más que suficiente (el “Bloc de notas” de Windows también valdría pero es
mucho más limitado).

En vez de un editor de textos podríamos usar un programa más avanzado (entorno de desarrollo), pero
en este curso vamos a centrarnos en el manejo básico de PHP, por lo que utilizaremos un editor de
textos.

• Un servidor dónde nuestras páginas PHP sean interpretadas y devueltas después de dicha
interpretación.

• Una base de datos donde guardaremos, recuperaremos y consultaremos nuestros datos.

• Un navegador web, como por ejemplo Google Chrome. Puede valer cualquier otro como
Mozilla Firefox, Internet Explorer, Safari, etc.

Podemos destacar dos opciones:

OPCIÓN 1 OPCIÓN 2

Otra posible opción sería la de utilizar un servidor


La primera opción sería la de trabajar en local. remoto. Alguno gratuito podría valer sin más
Para ello podemos hacer uso de un paquete problemas. Para ello, nos registraríamos en
personal como WAMP SERVER que nos cualquier servicio hosting que ofrezca alojamiento
ahorrará tiempo y quebraderos de cabeza. gratuito y a partir de hay con un cliente ftp, como
FileZilla, crearíamos nuestras páginas webs
Este paquete instalará un servidor Apache, un dinámicas.
servidor de base de datos MySQL, con el
gestor phpMyAdmin y , por supuesto, PHP. Es
decir, instalando un programa en nuestro
ordenador podemos simular un servidor
dentro de él.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

TIPOS DE PAQUETES DE SERVIDOR PARA INSTALACIÓN EN NUESTRO ORDENADOR.

Entre los paquetes más populares, podemos destacar y nombrar.

Nombre Descripción Logo

Wamp Server utiliza las siguientes


herramientas: Windows como Sistema
Operativo, Apache, como servidor
WAMP SERVER
web, MySQL, como gestor de bases de
datos y PHP como intérprete del
lenguaje de programación PHP.

Lamp Server es un sistema análogo


LAMP SERVER pero que funciona bajo el Sistema
Operativo Linux.

Mamp Server es un sistema análogo


MAMP SERVER pero que funciona bajo el Sistema
Operativo Macintosh.

Este paquete tiene la característica


principal que se puede instalar para
cualquiera de los diferentes sistemas
XAMPP SERVER operativos, es decir, existen versiones
tanto para Windows como para Linux,
Macinstosh. Siendo, también, un
sistema análogo al Wamp Server.

¿Cuál de estos paquetes es mejor? Esta pregunta es de difícil respuesta. Si usamos Linux o Macintosh y
queremos instalar un paquete de este tipo, hemos de usar el propio de nuestro sistema operativo. Si
usamos Windows, nosotros recomendamos Wamp, pero Xampp puede ser igualmente válido.
Más importante que elegir entre uno de estos paquetes, es elegir si trabajar en local o en remoto.
Nosotros vamos a recomendar trabajar en remoto. Los motivos para ello y cómo hacerlo se expondrán
en próximas entregas. Por ahora, debemos conocer simplemente las alternativas.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO

Responde a las siguientes preguntas indicando verdadero o falso y justicando brevemente tu respuesta:
a) Para escribir código PHP necesitamos un IDE con un compilador, por ejemplo Aptana Studio.

b) No es posible visualizar páginas php en local a no ser que utilicemos un emulador de servidor como
Wamp, Xampp o similar.

c) Trabajar en local quizás sea más rápido si tenemos una conexión a internet lenta, pero por el
contrario no emulamos de forma exacta las condiciones de un servidor real.

d) Si trabajamos en local sólo podremos crear código HTML, teniendo que posponer la creación de
código PHP a un momento posterior.

e) Trabajar en remoto nos obliga a pagar la contratación de un servicio de hosting.

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

PREPARANDO EL ENTORNO DE DESARROLLO. DESCARGAR E INSTALAR NOTEPAD++.

Vamos a comenzar a preparar el entorno con el que vamos a trabajar para poder crear páginas web
durante este curso. Lo primero que debemos hacer es descargar el editor de texto Notepad++ e
instalarlo. Para ello nos vamos a ir a la dirección siguiente: http://notepad-plus-plus.org

Cuando la página haya terminado de cargar, hacemos click en la sección download del menú. Ten en
cuenta que la apariencia de la página web puede cambiar cada pocos meses.

En la página web que nos aparecerá, descargamos la versión “Installer” actual. El installer es el paquete
de instalación automática más fácil y rápido para instalar Notepad++.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Una vez descargado el archivo, lo ejecutamos para instalarlo en nuestro ordenador haciendo doble
click sobre él. El proceso de instalación es muy simple y no entraremos a explicarlo con más detalle,
simplemente vete aceptando para ir cumpliendo los pasos de la instalación.

Cuando tengamos instalado el programa, ya dispondremos del editor de texto Notepad++, con el que
podremos abrir y editar cualquier fichero HTML. Podremos acceder al programa desde Inicio -- >
Programas -- > Notepad++ ó desde el icono de acceso directo en el escritorio si se ha creado.

EJEMPLO: COMENZAR A USAR NOTEPAD++

Desde el explorador de archivos de Windows, creamos una carpeta llamada curso_php_apr2 en la


unidad C.

Una vez creada la carpeta, entramos en ella. Abrimos Notepad++ y pulsamos en Archivo -- > Guardar.
Como nombre de archivo escibimos CU00808B.php (este nombre de archivo es solo un ejemplo,
puedes ponerle el que tú quieras) y lo guardamos dentro de la carpeta creada. Paso seguido, cierra el
programa. Para editar este archivo (o cualquier otro) con el programa Notepad++, podemos hacer dos
cosas. Bien abrir Notepad++ y elegir Archivo -- > Abrir y seleccionar el archivo, o bien hacemos lo
siguiente:

Clickamos sobre el archivo con el botón derecho del ratón y se mostrará un menu similar a éste (Nota:
en algunos casos aparecen conflictos entre la versión de Notepad++ y la versión de Windows y este
menú contextual no se muestra. En este caso, tendremos que abrir primero Notepad++ y luego la
opción Abrir del menú Archivo.)

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

En el menú desplegado seleccionamos “Edit with Notepad++”.


De una forma u otra, habremos abierto el archivo php con nuestro editor Notepad++.

Ahora escribimos el siguiente código PHP y guardamos el archivo.

<?php echo "Curso básico de PHP. ";


?>

Una vez realizados los pasos anteriores debemos seguir preparando el entorno de desarrollo antes de
poder visualizar la página PHP creada porque todavía no disponemos de un servidor PHP que interprete
nuestro código PHP. Es decir, no podrás ver la página web simplemente haciendo doble click sobre el
archivo.

Ten cuidado porque si copias el código en vez de escribirlo es posible que tengas problemas: hay
muchos tipos de comillas: “curvadas”, “sin curvar”, etc. En el código las comillas son simples, si tú las
has copiado de otro sitio es posible que el formato de las comillas no sea el correcto. Esto puede pasar

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

también con otros caracteres. Esto no significa que no puedas cortar y copiar código de otro sitio, sino
que debes tener presente que se te pueden presentar problemas con el juego de caracteres (ten
cuidado especialmente si pretendes copiar algo desde Microsoft Word porque es habitual que haya
problemas con los caracteres).

Si has seguido paso a paso todo lo que hemos expuesto y has llegado a visualizar en pantalla el texto, es
que has completado correctamente la instalación de Notepad++, que es el editor que vamos a usar
durante el curso (aunque si lo deseas también puedes seguir el curso usando otro editor). Si no has
podido instalarlo, revisa las instrucciones y comprueba que las hayas seguido correctamente, consulta
la ayuda de Notepad++ ó consulta en los foros de aprenderaprogramar.com para obtener ayuda.

EJERCICIO

Cuando instalamos Notepad++, éste se instala dentro de una carpeta en nuestro computador, y dentro
de esa carpeta habrá un archivo ejecutable (normalmente Notepad++.exe) que es el que se invoca cada
vez que se quiere ejecutar el programa. Responde a la siguiente pregunta: ¿Cuál es la ruta del archivo
ejecutable de Notepad++ dentro de tu computador?

La respuesta depende del computador y sistema operativo que estés utilizando. Un ejemplo de
respuesta puede ser la siguiente: C:\Program Files\Notepad++\Notepad++.exe

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

CONFIGURACIÓN BÁSICA DE NOTEPAD++ PARA CREAR PÁGINAS PHP

Antes de poder comenzar a crear páginas PHP, necesitaremos realizar una configuración básica de
nuestro entorno de desarrollo. En nuestro caso, la configuración será bastante simple y consistirá en
elegir la codificación con la que guardaremos nuestros ficheros PHP y seleccionar el lenguaje con el que
vamos a trabajar.

Lo primero que vamos a hacer es abrir el programa Notepad++. Para esto, nos vamos a Inicio -- >
Programas -- > Notepad++ -- > Notepad++. Se nos abrirá el programa, mostrando una pantalla similar a
la siguiente.

Para seleccionar la codificación con la que trabajaremos durante todo el curso, en la pestaña Formato,
hacemos click sobre “Codificar en UTF-8 sin BOM”, tal y como se indica en la imagen siguiente.

Comprueba periódicamente que la opción de codificación sea siempre “Codificar en UTF-8 sin BOM”. Si
no es así, puedes tener problemas y no obtener los resultados deseados.

Ahora tendremos que indicar que vamos a utilizar el lenguaje de etiquetas PHP. Para ello, en la pestaña
lenguaje abrimos P y seleccionamos PHP de entre todas las opciones posibles. Sería algo similar a lo que
se muestra en la imagen siguiente.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Ya tenemos todo listo para poder empezar a crear nuestras páginas PHP.

AUTOCOMPLETAR. UNA VENTAJA DE NOTEPAD++

Para facilitar la escritura de código Notepad++ cuenta con una opción de autocompletar, la cual se
activa en la pestaña Configurar --> Preferencias. En la ventana que nos aparecerá, dentro de la pestaña
Copia de seguridad/Autocompletar ó Autocompletar (autocompletion) debemos activar la casilla
“Habilitar autocompletar en cada entrada” (Enable autocompletion on each input) y “Pistas para los
parámetros de la función” (Function parameters hint on input). Ten en cuenta que la situación de los
menús y opciones puede variar de una versión a otra de Notepad++, por lo que no siempre encontrarás
estas opciones en el mismo sitio que las estamos describiendo.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

AUTOCERRADO DE ETIQUETAS. OTRA VENTAJA DE NOTEPAD++

Para activar el autocerrado inteligente de etiquetas HTML, en menú superior seleccionamos TextFX -->
TextFX Settigns --> Autoclose XHTML/XML tag

En algunas versiones de Notepad++ no aparece TextFX en el menú superior. En este caso, debemos:

a) En el menú Configurar -- > Preferencias. En la ventana que nos aparecerá, tenemos que buscar
la opción Autocompletar (autocompletion) como hicimos anteriormente y marcar la opción “html/xml
close tag”

b) O bien instalar el plugin TextFX Characters accediendo a Plugins, elegir TextFX Characters y
pulsar Install. Una vez instalado el plugin, activar Autoclose XHTML/XML tag.

También es de interés activar TextFX --> TextFX Settigns --> Autoclose {([.

En caso de no tener TextFX usaríamos en el menú Configurar - > Preferencias, Activar autoinsert {([.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Estas opciones nos permiten en general una escritura más rápida, aunque si en algún momento nos
resultan molestas las podemos desactivar.
OTRAS VENTAJAS DE NOTEPAD++

Quizás te preguntes por qué hemos elegido Notepad++ para este curso. La respuesta es que tiene
diversas ventajas, por ejemplo:

- Consume pocos recursos del sistema. No sobrecargarás tu ordenador porque el programa es al mismo
tiempo que potente, ligero.
- Dispone de la función autocompletar que ya hemos citado, que nos facilita ayuda mientras estamos
escribiendo el código.
- Permite abrir múltiples archivos simultáneamente, y reemplazar un texto en todos los archivos
abiertos a la vez si así lo deseamos.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

- Permite abrir dos archivos y realizar una comparación línea a línea entre ellos, indicándonos en qué
líneas existen diferencias entre un archivo y otro.
- El código se nos muestra con un conjunto de colores que permite ver con claridad las etiquetas de
apertura y cierre y otros elementos especiales de la codificación.
- Permite ampliar sus posibilidades mediante la instalación de plugins gratuitos disponibles en internet.
- Tiene muchísimas más posibilidades, pero no podemos citarlas todas. En conjunto, es un buen editor
útil para programadores a nivel profesional y para principiantes.
- Es software libre que podemos descargar gratuitamente desde internet.

Como verás Notepad++ nos parece un buen editor de código para programación. Esto no quiere decir
que no haya otras editores igual de buenos y potentes. De hecho, si ya eres usuario de algún otro editor
puedes seguir este curso usándolo.

EJERCICIO

En el menú Ayuda (?) aparecerá una opción “Acerca de Notepad…” (About Notepad++). Consulta la
información sobre Notepad++ y responde a esta pregunta: ¿Qué versión de Notepad++ tienes instalada
en tu computador?

Una opción interesante de Notepad++ es que dispone de numerosos plugins. Busca algún plugin que te
resulte de interés, instálalo (consulta antes la documentación sobre el plugin y comprueba que sea un
plugin actualizado y compatible con tu versión de Notepad++) y prúebalo. Para la instalación puedes
utilizar el menú Plugins - > Plugins Manager o hacerlo de otras maneras. Una vez instalado y probado el
plugin responde:

a) ¿Cuál es el nombre del plugin?


b) ¿Quiénes son el autor o autores? ¿Cuál es su página web?
c) ¿Cuál es la utilidad del plugin?

Nota: no es recomendable instalar plugins antiguos.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

DESCARGAR E INSTALAR EL CLIENTE FTP FILEZILLA. TRABAJAR REMOTAMENTE

Una forma de trabajar en desarrollos webs es remotamente. Es decir, modificando directamente en el


servidor, donde tengamos nuestro sitio web, los archivos necesarios. La otra forma de trabajo sería el
trabajo en local, es decir, manteniendo los archivos en nuestro propio ordenador.

En general, los desarrollos web se hacen sobre servidores remotos y para trabajar con ellos tenemos
que trabajar remotamente. Para esto, lo que tenemos que hacer en primer lugar es instalar un cliente
FTP. Un cliente FTP es un programa que nos permite conectarnos a un servidor FTP para transferir
archivos y realizar otras tareas (renombrar archivos, crear directorios, asignar permisos, etc.).

Nosotros vamos a usar en este curso un cliente ftp gratuito y de gran popularidad porque es muy útil y
potente. Para descargar este programa gratuito, lo primeros que vamos a hacer es ir a la dirección web
siguiente: http://filezilla-project.org/

Aparecerá una web similar a la que se muestra en la siguiente imagen (aunque ten en cuenta que el
aspecto puede ir variando cada pocos meses).

Ahora tendremos que descargar el cliente haciendo click en Download FileZilla Client. Busca el link de
descarga y ten cuidado de elegir Filezilla Client y no Filezilla Server, ya que es el client el que buscamos.
Tras realizar este paso, se nos abrirá una nueva página web con los links de descarga (el aspecto de la
web puede cambiar cada pocos meses).

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Para que comience la descarga del programa, haremos click en Download Now comprobando que sea la
versión adecuada para nuestro sistema operativo (lee lo que indica junto al link de descarga).

Una vez descargado, si usamos Windows lo instalaremos como cualquier otro programa de Windows.
Tener en cuenta que si en vez de Windows estamos usando Linux o Macintosh, existen versiones de
Filezilla propias de estos sistemas y debemos elegir la adecuada según el sistema que estemos usando.
Una vez instalado el programa lo abrimos visualizando una imagen que será similar a la siguiente.

Ahora tendremos que crear una conexión con nuestro servidor FTP y conectarnos. Para ello hacemos
click en Archivo -> Gestor de Sitios

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Y en la pantalla que se nos mostrará, seleccionamos nuevo sitio. Aquí sería donde introduciríamos los
datos de acceso si los tuviéramos. Como ahora no los tenemos, cerramos la ventana.

Para establecer una conexión con un servidor remoto en general tendremos que:

- Especificar el nombre de servidor: para conocerlo tenemos que consultar al proveedor que
ofrece el servicio del servidor, o que nos hayan facilitado este dato.
- Especificar como modo de acceso “Normal”
- Introducir un nombre de usuario que nos habrá facilitado el proveedor que ofrece el servicio
del servidor (o que habremos establecido nosotros mismos).
- Introducir una contraseña que nos habrá facilitado el proveedor que ofrece el servicio del
servidor (o que habremos establecido nosotros mismos).
Ten en cuenta que en algunos servidores antes de establecer una conexión ftp hay que dar un paso
previo que consiste en “crear una cuenta ftp”. Si no sabes si dispones de una cuenta ftp, consulta a tu
proveedor.

Una vez introducidos los datos de la conexión le daríamos a conectar y aparecería una pantalla similar a
la siguiente, donde, como podemos observar, tenemos un explorador de archivos.

Esto nos permitirá modificar directamente en el propio servidor los archivos deseados (antes de hacer
modificaciones en el servidor es conveniente hacer copia de seguridad y guardarla en local de modo
que si cometemos algún error o borrado accidental podamos recuperar los archivos) y subir o descargar
los archivos locales que queramos.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Nota: explicaremos más adelante dentro de este mismo curso cómo crear una cuenta de hosting en un
servidor, lo que nos permitirá conectar con el servidor usando Filezilla. Si no dispones de una cuenta
con nombre de servidor, nombre de usuario y password no intentes conectarte usando Filezilla porque
no podrás. En este momento del curso, lo único necesario es que compruebes que tienes Filezilla
instalado en tu computador y que puedas abrir el programa sin problemas.

EJERCICIO

Si has instalado Filezilla, éste se ejecuta gracias a que existe un archivo ejecutable localizado en una
carpeta de nuestro computador. Responde a las siguientes preguntas:

a) ¿En qué ruta se encuentra el archivo ejecutable de FileZilla en tu computador? La respuesta


depende del computador y sistema operativo que estés empleando. Un ejemplo de respuesta puede
ser este: C:\Program Files\FileZilla FTP Client\filezilla.exe

b) Consulta la opción de menú Ayuda (Help) y responde a las siguientes preguntas. ¿Cuál es la
versión de Filezilla que has instalado? ¿Cuáles son los datos de tu sistema operativo? Puedes usar la
opción <<Copy to clipboard>> para recuperar estos datos desde la ventana de la ayuda de Filezilla.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

LAS VENTAJAS DE GOOGLE CHROME. ¿POR QUÉ USAR CHROME?

En este curso vamos a usar Google Chrome, pero si lo prefieres por algún motivo como tenerlo ya
instalado, Mozilla Firefox también nos parece una opción recomendable, y puedes seguir este curso
también con este navegador.

Otros navegadores como Internet Explorer también se pueden usar, pero en principio no es lo más
recomendable por diversos motivos. Uno de ellos es que no dispone de las mismas herramientas que
Chrome o Firefox, que son los navegadores más usados por programadores y desarrolladores web.

Vamos a citar algunas ventajas de Google Chrome:

a) El navegador se abre muy rápidamente en comparación con otros navegadores. Google


Chrome es muy ligero, por eso tarda poco en abrirse.
b) El navegador tiene una buena velocidad de carga de las páginas web por las que vamos
navegando. Esto se debe a su estructura interna, que también es ligera.
c) Por el mero hecho de instalarlo, ya disponimos de una potente herramienta de análisis y
depuración de páginas web o “Inspeccionador de elementos”. Mozilla Firefox también viene con
herramientas de análisis incorporadas, y además dispone de la extensión “Firebug”, muy valorada por
los programadores.
d) Si tenemos abiertas varias pestañas y una de ellas se tiene que cerrar debido a algún error o
bloqueo, no se nos quedará colgado el programa al completo, sino únicamente la pestaña o pestañas
afectadas.

DESCARGAR E INSTALAR EL NAVEGADOR GOOGLE CHROME. VISUALIZAR PÁGINAS HTML.

Para poder visualizar nuestras páginas web, vamos a instalar el navegador Google Chrome. Lo primero
que tenemos que hacer para instalar dicho navegador, es descargarlo de la web oficial de Google en la
dirección: http://www.google.com/chrome?hl=es

También puedes acceder simplemente escribiendo “descargar google chrome” en un buscador (Google,
Yahoo, Bing, etc.) Una vez accedamos hemos de buscar el link de descarga.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Hacemos click en ‘Descargar Google Chrome’. Nos aparecerá una página donde se nos pide que
aceptemos las condiciones. Aceptamos para instalar el navegador.

El proceso normalmente comienza mostrando una pantalla que indica “Gracias por probar Google
Chrome” y de forma automática, comienza a su vez el proceso de instalación en nuestro ordenador (si
te pide permiso para la instalación acepta para permitir el proceso).

Una vez descargardo e instalado, ya podremos ver páginas web con éste navegador. Para acceder a
Google Chrome, nos iremos a Inicio --> Todos los programas --> Google Chrome. También podremos
acceder desde el escritorio a través de un enlace directo.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

LAS CUESTIONES MÁS BÁSICAS EN GOOGLE CHROME (Y EN GENERAL PARA CUALQUIER NAVEGADOR)

Al abrir el navegador Google Chrome se nos mostrará una ventana similar a la siguiente. Ten en cuenta
que el aspecto puede variar según la versión de Chrome que estemos usando, por tanto tendremos
que buscar las opciones según aparezcan en nuestro computador, que puede diferir en algunos detalles
de lo que indicamos aquí.

Una vez abierto Chrome podremos abrir tantas pestañas como queramos, introducir una dirección URL
en la barra de direcciones, recargar la página actual (también podremos pulsar F5 como atajo de
teclado para conseguir recargar una página) y acceder al menú de opciones de Google Chrome entre
otras operaciones.
Para cambiar la página web de inicio que viene por defecto en nuestro navegador Google Chrome (la
que aparece cada vez que abrimos el navegador), procederemos de la siguiente forma:

a) En algunas versiones de Chrome, tendremos que hacer click en ‘Llave inglesa’ y dentro del
menú desplegable que nos aparece en la opción ‘opciones’. Se nos abrirá una nueva pestaña donde en
la opción ‘Pagina de inicio’ pondremos por ejemplo http://aprenderaprogramar.com ( o la página que
queramos). Otras versiones no traen llave inglesa.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

b) En otras versiones de Chrome, haremos click en el icono a la derecha de la barra de direcciones


para desplegar el menú y elegimos “Configuración”. En la opción “Iniciar sesión”, elegimos la opción
“Abrir una página específica o un conjunto de páginas -- > Establecer páginas”, introducimos la URL de
la queramos sea nuestra página de inicio, por ejemplo http://aprenderaprogramar.com ( o la página
que queramos) y pulsamos aceptar.

c) Otra opción para acceder a la configuración es escribir en la barra de direcciones lo siguiente


(como si fuera una dirección web): chrome://settings/

LIMPIAR LA CACHÉ Y OTRAS OPERACIONES ÚTILES QUE USAREMOS CON FRECUENCIA

Llamamos “caché” o “cache” a contenidos que se almacenan en nuestro navegador y que no se


descargan desde internet, sino que los tenemos localmente en nuestro equipo. Estos contenidos

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

pueden ser texto o imágenes y permite que cuando navegamos por una web las páginas se muestren
más rápido ya que parte de la información no se descarga de internet (o no se actualiza desde los
archivos fuente) sino que se mantiene en nuestro navegador. Sin embargo, cuando estamos creando
páginas web esto puede dar lugar a resultados engañosos, ya que tras hacer una modificación puede
que el navegador no la muestre por estar utilizando contenidos de la caché. Por tanto una operación
que va a ser de gran utilidad, es limpiar la caché cuando deseemos que todo el contenido venga
directamente de internet. Si no eliminamos la cache puede que lo que estemos visualizando en nuestra
pantalla de ordenador sea información cacheada y, por lo tanto, no actualizada.

Para limpiar la caché del navegador tenemos que hacer lo siguiente: Llave inglesa o icono para
desplegar el menú --> Herramientas --> Eliminar (borrar) datos de navegación. También podemos
acceder escribiendo directamente en la barra de direcciones chrome://settings/clearBrowserData
como si se tratara de una dirección web.

En la pantalla que se nos muestra a continuación seleccionamos todas las opciones, y para definir
desde cuándo en la opción “Eliminar elementos almacenados desde:” elegimos ‘el origen de los
tiempos’ (es decir, borrarlo todo sin dejar nada).

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Para guardar una página web en local debemos simplemente ir a llave inglesa o icono de despliegue de
menú y seleccionar ‘Guardar página como…’ y seleccionar el nombre y ubicación donde queremos
guardar la página HTML.

Para añadir una página a favoritos debemos clickar sobre marcadores (normalmente un icono con
forma de estrella a la derecha de la barra de direcciones) y elegir el nombre y carpeta donde
guardaremos el nuevo marcador favorito. Esto sirve para ir manteniendo una colección de enlaces a
páginas web que visitamos con frecuencia, de forma que pulsando sobre el enlace accedemos
directamente a la web sin necesidad de escribir la url en la barra de direcciones. Para visualizar esa
colección de enlaces tenemos que desplegar el menú y elegir la opción Marcadores -- > Mostrar barra
de marcadores.

Si queremos ver las propiedades de una imagen clickamos sobre la imagen con el botón derecho del
ratón y pulsamos en ‘Inspeccionar elemento’ en el menú desplegable que se nos abre. Así veremos el
tamaño de la imagen.
Para hacer zoom basta con utilizar los siguientes atajos de teclado: ‘Ctrl’ + ‘+’ (más zoom, es decir,
pulsando la tecla CTRL y al mismo tiempo la tecla +, logramos acercar la vista), ‘Ctrl’ + ‘-‘ (menos zoom,
es decir, alejar la vista). O si lo preferimos usar ‘Ctrl’ + ‘ruleta o rueda del ratón’ hacia arriba o hacia
abajo, para acercar o alejar la vista.

En cualquier caso, para volver a ver la página con su tamaño original sólo tenemos que pulsar ‘Ctrl’ +
‘0’.

CÓMO ACTUALIZAR GOOGLE CHROME

Google Chrome se actualiza automáticamente cuando detecta que hay una nueva versión del
navegador. El proceso de actualización se produce en segundo plano y no es necesario que realices
ninguna acción. No obstante, puedes comprobar si el navegador está actualizado pulsando sobre llave
inglesa o icono para desplegar el menú --> Información de Google Chrome. Ahí te aparecerá un
mensaje con la versión que estás usando actualmente, y te indicará si el navegador está actualizado o
no. También puedes acceder a esta información escribiendo chrome://chrome/ en la barra de
direcciones como si fuera una dirección web. Que el navegador se mantenga actualizado sirve para
tratar de evitar posibles fallos de seguridad y ataques de virus o programas maliciosos.

EJERCICIO

Consulta la opción de menú Ayuda (Help) de tu navegador y responde a las siguientes preguntas. ¿Qué
navegador y qué versión de navegador estás empleando?

Indica si las siguientes afirmaciones son verdaderas o falsas y justifica brevemente tu respuesta:

a) Cuando creamos una página web con php y la visualizamos, al guardar la página con la opción
Guardar como del navegador, guardaremos el código PHP que la generó.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

b) Cuando creamos una página web con php y la visualizamos, al guardar la página con la opción
Guardar como del navegador, guardaremos el código HTML que la generó.

c) Con la opción Guardar como del navegador no podemos guardar una página web debido a que
el código PHP llega encriptado al navegador y éste no lo muestra al usuario.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

TRABAJAR EN LOCAL O CON UN SERVIDOR REMOTO PHP. ¿QUÉ ES MEJOR?

En este artículo vamos a intentar mostrar las diferencias entre trabajar en local (en nuestro
computador) o trabajar en un servidor remoto. Ambas opciones pueden ser válidas, aunque nosotros
vamos a recomendar seguir este curso trabajando en remoto.

La principal diferencia se encuentra en que en un servidor remoto, ya dispondremos de las


herramientas necesarias e instaladas. En el trabajo en local, tendremos que instalar las herramientas de
trabajo necesarias: servidor web, PHP, MySQL, etc. (Las herramientas no tienen que ser exactamente
las indicadas, sólo se muestran a modo de ejemplo).

En un primer planteamiento podríamos pensar que sería mucho mejor trabajar en remoto porque el
trabajo de la instalación de las herramientas y tecnologías necesarias ya estaría hecho. Pero esto puede
ser algo no deseado porque no tendremos control total sobre esas herramientas y tecnologías, siendo
el proveedor del hosting el que controlará las actualizaciones, configuraciones y herramientas
instaladas. Aunque siempre podremos ponernos en contacto con dicho proveedor y indicarle que
deseamos unas u otras configuraciones y ver si es posible el cambio por su parte.

Además de las anteriores, otra de las diferencias entre estas dos formas de trabajar, es la actualización
de los cambios en el servidor. Si trabajamos en remoto directamente sobre nuestro sitio web, los
cambios se hacen instantáneamente ya que los archivos que modificamos son los que un usuario que
navega por Internet puede observar. Esto tiene unos pros y unos contras. Como ventaja podemos
indicar que, sabiendo lo que estamos haciendo y no cometiendo errores, tendremos una página
actualizada al instante. Si cometemos errores y la página, con esos errores, no puede visualizarse, los
usuarios de Internet tampoco podrán verla y esto es una desventaja.

¿Qué pasaría si trabajamos en local? Pues si trabajamos en local tendremos la ventaja de poder probar
y visualizar todos los cambios en nuestro computador y hasta que esos cambios no sean de nuestro
agrado, nadie más tendrá acceso a ellos, teniendo siempre nuestro servidor sin cambios. De esta
manera, la página web no se vería modificada hasta que nosotros lo decidamos una vez hayamos
probado los cambios. Ahora bien, cuando estos cambios sean de nuestro agrado y quedemos
totalmente conformes, para que éstos sean visibles en Internet, tendremos que sobrescribir los
archivos modificados localmente al servidor remoto. Es decir, hacemos un trabajo extra: primero, hacer
las modificaciones en local, luego, trasladar esas modificaciones al servidor remoto.

Si no tienes una buena conexión a Internet, lo más recomendable es trabajar en local y subir la página
cuando esté terminada, ya que trabajar en remoto requiere una buena conexión a internet para poder
guardar nuestro trabajo en el servidor remoto a medida que lo vayamos desarrollando.

Estas diferencias que hemos comentado serían las diferencias más claras entre estas dos formas de
trabajar.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

¿QUÉ ES MEJOR, TRABAJAR EN LOCAL O EN REMOTO?

La mejor forma de trabajo es la que mejor se adapta a nuestras necesidades y/o conocimientos. Las
personas que están dando sus primeros pasos en programación PHP pueden elegir entre una opción u
otra, y quizás ambas sean válidas. Nosotros vamos a recomendar que se trabaje en remoto por las
siguientes razones:

a) Se asemeja más a lo que va a ser el trabajo con desarrollos web reales. Aunque ahora se trate
de aprendizaje, será un aprendizaje más cercano a lo que es la realidad.

b) Nos podemos despreocupar (en cierta medida) de cuestiones de configuración del servidor e
instalación de herramientas.

c) Existen proveedores que ofrecen hosting gratuito, por lo que no habremos de contar con un
dominio de internet propio ni una cuenta de hosting (alojamiento de archivos, bases de datos, etc.) de
pago. Es cierto que las ofertas de servicio de hosting gratuito tienen limitaciones importantes, pero de
cara al aprendizaje nos resultarán suficiente.

Las grandes empresas no suelen hacer modificaciones sustanciales de sus sitios web directamente
sobre el sitio, sino que disponen de un servidor de pruebas (al que se denomina servidor de desarrollo)
donde ensayan los cambios que, una vez contrastados, son trasladados al servidor de acceso público al
que se suele denominar servidor de producción. Es decir, las grandes empresas no suelen trabajar en
local (alojando todo en sus propios computadores) entre otras cosas porque buscan emular con la
mayor fiabilidad posible lo que van a ser los ambientes y circunstancias de los servidores donde
finalmente se van a alojar sus sitios web.

En este curso vamos a explicar cómo trabajar sobre un servidor remoto. No obstante, si ya tienes
instalado un servidor local (como Wamp ó Xampp) y estás acostumbrado a él también podrás seguir el
curso usando cualquiera de estas plataformas.

EJERCICIO

Indica si las siguientes afirmaciones son verdaderas o falsas y justifica brevemente tu respuesta:

a) Trabajar en remoto en desarrollos web alude a que la persona que crea la página web realiza el
trabajo desde distintos puntos de conexión, lo que permite por ejemplo que cree una página web
mientras está viajando.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

b) Hoy día es posible disponer de forma gratuita de una dirección web y servicio de hosting
gratuito, con lo cual podemos crear páginas web basadas en PHP sin necesidad de contratar un servicio
de hosting.

c) Las grandes empresas siempre trabajan en local (en sus propios computadores) antes de
trasladar los cambios a los servidores de producción, con el fin de evitar caídas del servicio.

d) WampServer permite emular un servidor en nuestro propio computador. También haría posible
que nuestro computador funcionara como servidor remoto para servir contenidos a través de internet.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

CREAR UNA CUENTA DE HOSTING GRATUITA EN UN SERVIDOR PHP Y ACCEDER VÍA CPANEL Y VÍA FTP

En esta entrega vamos a crear una cuenta de hosting gratuita en un servidor web que nos permita
trabajar con PHP y accederemos a éste vía Panel de Control (Cpanel) y vía FTP.

CREAR CUENTA DE HOSTING GRATUITA

En Internet hay muchas páginas web que permiten crear una cuenta de hosting gratuito en un servidor
php: por ejemplo www.000webhost.com, www.byethost.com, www.agilityhoster.com y varios más.
Creando una cuenta en un hosting gratuito, disponemos de un servidor (que compartimos con otros
usuarios) donde podemos alojar una página web. Para este curso, vamos a utilizar un servidor gratuito
porque es adecuado para aprender. En concreto usaremos el servidor de Byethost (byethost.com),
aunque podríamos usar cualquier otro porque todos ellos son similares. También, si dispones de una
cuenta de hosting de pago y de un dominio, puedes utilizar cualquier servidor siempre que ofrezca
soporte php y base de datos MySql.

En nuestro caso, en primer lugar crearemos la cuenta de hosting gratuita. Para ello, accedemos a la
página web de Byethost, introduciendo en nuestro navegador la siguiente dirección:
www.byethost.com. Hazlo y vete siguiendo los pasos que indicamos.

Nos aparecerá una página que ofrece diferentes opciones (ten en cuenta que el aspecto puede variar
cada pocos meses):

Buscamos el enlace donde diga “Free hosting” (alojamiento gratuito) y pulsamos sobre él. Ahora
debemos buscar la opción para crear una cuenta (sign up):

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Una vez accedemos a la página de creación de una cuenta, se nos mostrará un formulario donde
tendremos que rellenar una serie de datos. Aquí tendremos que tener en cuenta que el nombre de
usuario que insertemos, estará ligado a la url de acceso a nuestro sitio. Es decir, si como nombre de
usuario (username) introducimos ‘lacocinademarco’, la dirección de nuestro sitio Web será similar a la
siguiente ‘http://lacocinademarco.byethost31.com’:

En nuestro caso introduciremos una serie de datos a modo de ejemplo tal y como podemos ver en la
imagen que se muestra a continuación.

Una vez hayamos finalizado de introducir los datos solicitados, haremos click sobre el botón Registrar
(Register) y nos aparecerá una página Web indicándonos que se nos ha enviado un correo electrónico a
la dirección de correo que hayamos facilitado en el formulario y en ese correo nos indicarán un enlace
web (dirección url) donde debemos activar nuestra cuenta.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

El último paso que nos quedaría para crear nuestra cuenta de hosting gratuita sería entrar a nuestro
correo y hacer click en el enlace de activación del correo de Byethost que nos acaba de llegar.

Dear byethost7.com's Member, Thank you for registering with byethost7.com.

Please click on the link below to activate your account. If the page does not display, you may copy and paste the link to your
browser.
http://securesignup.net/activate.php?user=b7_1022999&email=contacto@aprenderaprogramar.com&hash=8ggfg8sfdfd17c9
8efdghj99638c764&token=-576345454

While you wait for your account to activate, please 'like' us at http://www.facebook.com/free.byethost

best regards byethost7.com

Acto seguido se nos indicará que la activación fue realizada con éxito y se nos enviará un nuevo correo
electrónico con la información detallada de nuestros datos de acceso.

El correo que nos envía Byethost con la información de acceso detallada tiene más o menos el siguiente
contenido:

“Dear Valued Customer, Thank you for registering at byethost7.com. We are…”

Además nos envían los datos de acceso (los que ponemos aquí son a modo de ejemplo, tú debes haber
recibido tus propios datos de acceso):

Cpanel Username: b7_datos

Cpanel Password: elpassword

Your url: http://apr2.byethost7.com or http://www.apr2.byethost7.com

FTP Server: ftp.byethost7.com

FTP Loging: b7_datos

FTP Password: elpassword

MySQL Database Name: must create in Cpanel

MySQL Username: b7_datos

MySQL Password: elpassword

MySQL Server: see CPanel

Cpanel URL: http://cpanel.byethost7.com

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Estos datos son importantes pues son los que nos permitirán gestionar todo lo necesario relativo a
nuestra página web. Conviene imprimirlos además de mantenerlos bien localizados en un archivo de
texto dentro de nuestro ordenador.

ACCEDER VÍA PANEL DE CONTROL (CPANEL)

Para acceder vía Cpanel, debemos ir a la url que nos hayan facilitando, en este ejemplo
http://cpanel.byethost7.com, e introducir el nombre de usuario y la contraseña.

Una vez comprobados que los datos sean correctos, se nos abrirá el Panel de Control (Cpanel en este
hosting, pero puede ser otro panel similar si estamos usando otro hosting)

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Dentro de Cpanel existen distintas áreas. Podemos ver un área de información de la cuenta, un área de
administrador de archivos que nos proporciona un explorador de archivos parecido al de Windows o
Filezilla pero que además nos permitirá descomprimir archivos .zip y, una tercera área con el que
podremos acceder a las bases de datos previamente creadas.
ACCEDER VÍA FTP CON FILEZILLA

El proceso es el explicado en la anterior entrega del curso dedicada a Filezilla, con la salvedad que los
datos necesarios son los que encontraremos en el Cpanel en el área marcada de información del
sistema, que serán los mismos que hayamos recibido por correo electrónico. Una vez abierto Filezilla,
introducimos nombre de servidor, nombre de usuario y contraseña y de esta manera accedemos al
sistema de archivos de nuestro servidor. Te recomendamos que guardes los datos de la conexión, para
ello accede a FileZilla y haz en Archivo -> Gestor de Sitios para almacenar el acceso.

Accede al servidor usando FileZilla para comprobar que esté todo correcto.

Si logras acceder debes ser capaz de visualizar el sistema de carpetas y archivos en el servidor:

Si no logras acceder a Cpanel o no logras acceder al sistema de archivos remoto usando FileZilla, escribe
una consulta en los foros aprenderaprogramar.com.

EJERCICIO

Cuando se trabaja con un servidor es importante saber cómo visualizar el sistema de archivos en el
servidor, cómo subir, bajar y borrar archivos:

a) Crea un archivo en tu computador denominado prueba.txt y súbelo al servidor remoto usando


FileZilla. Para ello, desde el explorador de Windows arrastra el archivo hasta la ventana de FileZilla

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

donde se encuentran los archivos remotos. Una vez subido (transferido de tu computador al
servidor) en la parte inferior te aparecerá Transferencias Satisfactorias (1) que indica que se ha
transferido un archivo. Pincha sobre la ventana del sistema de archivos en remoto y pulsa F5 para
refrescar la vista, ahí debe aparecer el archivo prueba.txt.
b) Borra el archivo del servidor remoto usando FileZilla. Para ello pincha encima del nombre de archivo
y pulsa la tecla Supr (borrar ó Del).

c) También se puede acceder al sistema de archivos mediante un file manager o similar desde el panel
de control (Cpanel o similar) del servidor. Accede al file manager y sube el archivo prueba.txt al
servidor.

d) Borra el archivo prueba.txt del servidor usando el file manager.

PREPARAR EL ENTORNO PARA TRABAJAR EN REMOTO

En entregas anteriores ya se indicó como acceder vía FTP al servidor remoto. Por lo tanto, no vamos a
volver a explicar como conectarnos a nuestro servidor mediante FTP y daremos por supuesto que ya
estamos conectados.

Una vez estemos conectados, nos aparecerá una imagen similar a la siguiente

Ahora debemos entrar en el directorio remoto htdocs (en otros servidores el nombre del directorio de
trabajo suele ser public_html ó www). Este directorio es en el que debemos crear nuestras páginas en
PHP ya que será el directorio que el servidor use para servir las páginas web. Los archivos en este

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

directorio serán accesibles escribiendo la dirección web raíz de nuestro sitio. Si tenemos un dominio
propio, accederemos escribiendo http://www.nombreDominio/index.php. Si hemos creado una cuenta
de hosting gratuito será accesible desde el navegador escribiendo la dirección web que nos haya
indicado el proveedor del servicio, por ejemplo: http://apr2.byethost7.com/index.php

Esta dirección nos la indica el proveedor del servicio de hosting gratuito: recordar la entrega donde
explicamos la creación de la cuenta de hosting gratuito donde indicábamos que el dominio una vez
registrada nuestra cuenta en el hosting era http://apr2.byethost7.com. (Esta dirección es un ejemplo.
En tu caso, si has creado tu cuenta gratutita, tendrás tu propia dirección que te permita acceder).

Esto indica que dentro del directorio htdocs, tenemos creado un fichero en PHP llamado index.php y su
contenido será el mostrado en el navegador al acceder a la URL anteriormente indicada.

Nota: Si no ponemos el nombre del fichero en la ruta del navegador, es decir, si simplemente
escribimos http://apr2.byethost7.com, por defecto el servidor buscará un fichero llamado index.php,
index.html ó index.htm para enviar la respuesta html al navegador. Es decir, si se escribe
http://apr2.byethost7.com/miarchivo.php se buscará el archivo miarchivo.php, pero si se escribe
http://apr2.byethost7.com el servidor buscará el archivo index existente y ese será el que devuelva.

MI PRIMERA PÁGINA EN PHP

Al entrar en el directorio htdocs, es posible que veamos que ya existe una página index.htm (ó
index.html ó similar). La razón de esto es que en algunos servidores cuando creamos una cuenta
gratuita, el proveedor de hosting automáticamente nos crea dicho fichero que por ejemplo puede
contener un mensaje de bienvenida.

Antes de crear nuestra primera página en PHP, borraremos la página index.html ya que su contenido no
nos interesa. Para esto, haremos click con el botón derecho del ratón sobre el fichero que deseamos
borrar y en el menú desplegable, que nos aparecerá, pulsaremos en borrar.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Una vez borrado el archivo, crearemos en local (en nuestro ordenador) un archivo al que llamaremos
index.php. Para ello usaremos Notepad++. Una vez creado el archivo, lo subiremos al servidor remoto,
arrastrándolo desde el directorio local donde lo hayamos creado, al directorio remoto actual, es decir,
trasladamos el archivo desde nuestro ordenador hasta el servidor.

Una vez realizados estos pasos, tendremos en el servidor remoto un archivo llamado index.php que
estará vacío y que editaremos haciendo click con el botón derecho del ratón sobre el archivo que
deseamos editar.

Hay que aclarar que el archivo index.php lo podemos editar tanto en local como en remoto. Se puede
hacer de ambas maneras, siendo ambas correctas. La diferencia radicará en que si trabajamos en local
cada vez que queramos ver los cambios en la página web tendremos que subir el archivo al servidor, y
cada vez que lo subamos “sobreescribir” el archivo.
Si trabajamos editando en remoto, una vez editado el archivo y guardados los cambios, directamente
quedará modificado el archivo en el servidor, con lo cual directamente veremos los cambios en la
página web.

Supongamos que hemos hecho click sobre el archivo en remoto y pulsado el botón derecho, y a su vez
la opción “Ver/Editar” (View/Edit):

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Ahora, normalmente, al ser la primera vez que editamos con FileZilla un archivo con extensión PHP, nos
dará la opción de seleccionar el programa con el que queremos abrir dicho archivo. Indicaremos que
queremos abrirlo con el Notepad++. Si no nos pide el programa con el que queremos editar, podemos
establecerlo manualmente de la siguiente manera: desplegar el menú “Edición” (Edit) de Filezilla y
pulsar sobre “Opciones” (Settings). En la ventana que se abre, en el lateral izquierdo seleccionamos
“Edición de archivo -- > Asociaciones de tipo de archivo” (File editing -- > Filetype associations), y en el
lado derecho en el cajetín de texto escribimos: php “C:\Program Files\Notepad++\Notepad++.exe”,
donde la ruta entre comillas representa la ruta donde se encuentra el fichero ejecutable del
Notepad++. Esta ruta puede ser diferente según el sistema operativo e instalación que hayamos hecho.
Comprueba cuál es la ruta en tu computaor e introduce la ruta correcta para tu caso.

Una vez establecido Notepad++ como editor para trabajar en remoto con Filezilla, cuando pulsamos
sobre un archivo en remoto y con botón derecho elegimos “Ver/Editar” (View/Edit), se nos abrirá
Notepad++ para editar el archivo correspondiente. En nuestro caso vamos a editar el archivo index.php
que habíamos subido al servidor anteriormente.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Ahora sólo nos falta crear nuestra primera página PHP. Para ello simplemente añadiremos este código
en el archivo index.php (más adelante se explicarán los conceptos propios de PHP y entenderemos
mejor lo que hacemos ahora mismo; no te preocupes ahora si tienes dudas, las iremos solucionando
poco a poco).

<?php echo "Mi primera página en PHP - aprenderaprogramar.com";


?>

Cuando terminemos de editar el archivo, lo guardamos (para ello podemos usar la combinación de
teclas Ctrl + s ó hacerlo a través del Menú archivo --> Guardar de Notepad++). Una vez guardado en
Notepad++ hacemos click sobre el programa FTP FileZilla que teníamos en segundo plano.
Automáticamente nos indicará que el archivo ha cambiado (a file previosly opened has been changed) y
nos preguntará si deseamos subir los cambios (¿Volve a subir este archivo al servidor? ó Upload this file
back to the server?). Contestaremos que sí (yes).

Y ahora visualizaremos nuestra página en el navegador escribiendo la dirección web que es nuestro
dominio raíz. Si hemos creado una cuenta gratuita, esta dirección web nos la habrá facilitado el
proveedor del servidio de hosting gratuito y podrá ser (esto es un ejemplo) similar a:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

http://apr2.byethost7.com/index.php o http://apr2.byethost7.com. Recordar que en el segundo caso,


cuando no especificamos el archivo que hay que abrir, es el propio servidor el que se encarga
automáticamente de buscar el archivo index.html ó index.php.

Con este sencillo ejemplo hemos creado nuestra primera página web usando el lenguaje de
programación PHP.

EJERCICIO

Crea los siguientes archivos y súbelos mediante ftp al directorio raíz de tu sitio web:

a) Crea un archivo denominado curso.php donde aparezca el siguiente texto. <<Curso php de
aprenderaprogramar.com comenzado el 24/09/2083>> donde la fecha a incluir sea la fecha en que
hayas subido el archivo. Comprueba que el archivo se visualiza al escribir la dirección web correcta que
será similar a http://apr2.byethost7.com/curso.php (en tu caso, tendrás que utilizar la dirección web
que vayas a utilizar para el curso). Responde a esta pregunta: ¿Cuál es el código que contiene el
archivo? ¿Cuál es la dirección web para acceder al archivo y visualizar el texto?

b) Crea un archivo denominado alumno.php donde aparezca el siguiente texto. <<Curso php de
aprenderaprogramar.com alumno Juan Perez desde el país: Colombia>> donde el nombre a incluir será
tu nombre y el país tu país. Comprueba que el archivo se visualiza al escribir la dirección web correcta
que será similar a http://apr2.byethost7.com/alumno.php (en tu caso, tendrás que utilizar la dirección
web que vayas a utilizar para el curso). Responde a esta pregunta: ¿Cuál es el código que contiene el
archivo? ¿Cuál es la dirección web para acceder al archivo y visualizar el texto?

CONCEPTOS BÁSICOS DE PHP

Un archivo PHP normalmente suele contener HTML y trozos de código PHP. Por ello antes de estudiar
PHP es necesario haber estudiado HTML. A veces, se dice que PHP es un lenguaje “embebido” en
HTML, es decir, incrustado en código HTML. Todos los fragmentos de código PHP deben comenzar con
la siguiente cadena de caracteres: <?php ,y finalizar con ?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Los símbolos <?php y ?> se dice que son los delimitadores del código PHP. Normalmente, una página
PHP básica sería algo así:

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

"http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<title>Ejemplo de una web con PHP - aprenderaprogramar.com</title>

<meta charset="utf-8">
</head>

<body>

<?php
/* Aquí vendría el código PHP */

/* Este código PHP podría ser una consulta a base de datos */


/* Y además podríamos mostrar esos datos */
?>

</body>
</html>

En este código podemos identificar los siguientes elementos:

- La primera línea es una etiqueta relativa a la versión/variante de HTML que declaramos usar.
Esta primera etiqueta no es estrictamente necesaria. Sirve únicamente para indicar qué
estándar de HTML es el que declaramos usar.
- Las etiquetas de apertura y cierre de html que delimitan el código HTML.
- Las etiquetas de apertura y cierre head que delimitan la cabecera del código HTML.
- Las etiquetas body que delimitan el cuerpo del código HTML y que es donde suele ir el
contenido central de un documento HTML (texto, imágenes, formularios, etc.).
- Dentro de las etiquetas body, además de código HTML, podemos tener código PHP embebido.
En este caso hemos incluido únicamente un fragmento de código PHP, pero en el cuerpo del
documento HTML podríamos incluir diversos fragmentos de código HTML mezclados con
diversos fragmentos de código PHP. Cada fragmento de código PHP tiene que ir escrito con sus
delimitadores.

Esta estructura no se repite siempre. De hecho, más adelante veremos que el código PHP puede ir en
más lugares además de dentro de las etiquetas body. Por otro lado, decir que es habitual que el código
PHP vaya embebido dentro de código HTML en un archivo con extensión .php, pero como ya hemos
visto, un archivo con extensión .php podría contener exclusivamente código PHP.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Escribe el código que mostramos a continuación en el editor Notepad++ y guárdalo con el nombre
prueba1.php.

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

"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>Ejemplo de una web con PHP - aprenderaprogramar.com</title>

<meta charset="utf-8">

</head>
<body>
<?php

echo "Mi primera página con PHP embebido en HTML -


aprenderaprogramar.com";

?>
</body>
</html>

A continuación súbelo al servidor como ya explicamos en una entrega anterior, y ahora escribe en tu
navegador la dirección web correspondiente al archivo (que será similar a
http://apr2.byethost7.com/prueba1.php). Debes de visualizar algo parecido a esto.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO

Crea el siguiente archivo y súbelo mediante ftp al directorio raíz de tu sitio web. El archivo llevará por
nombre curso2.php y en él debe existir la estructura de un documento HTML, aparecer en la parte
superior de la página un título h1 con el texto <<Cursos aprenderaprogramar.com>>, seguido de un
título h2 con el texto <<Curso php desde cero>>, y a continuación hacer que se muestre insertando php
el siguiente texto. <<Curso php de aprenderaprogramar.com comenzado el 24/09/2083>> donde la
fecha a incluir sea la fecha en que hayas subido el archivo. Debajo de este texto debes crear un
contenedor div con color de fondo amarillo donde pueda leerse “Este es el pie de página”. Comprueba
que el archivo se visualiza al escribir la dirección web correcta que será similar a
http://apr2.byethost7.com/curso2.php (en tu caso, tendrás que escribir la dirección web que vayas a
utilizar para el curso). Responde a esta pregunta: ¿Cuál es el código que contiene el archivo? ¿Cuál es la
dirección web para acceder al archivo y visualizar el texto?

VARIABLES EN PHP

Las variables en PHP son representadas con un signo de dólar ($) seguido por el nombre de la variable.
El nombre de la variable es sensible a minúsculas y mayúsculas. Es decir, las siguientes declaraciones de
variables son distintas entre ellas:

$variable, $Variable, $variAble, $VariAble, etc. representan a distintas variables.

Recordar que una variable es un espacio de la memoria del ordenador (en este caso del servidor) a la
que asignamos un contenido que a grandes rasgos puede ser un valor numérico (sólo números, con su
valor de cálculo) o alfanumérico (sólo texto o texto con números, sin valor de cálculo).

Para declarar un nombre de variable válido, éste tiene que empezar con una letra (o si no empieza con
una letra, tendrá que hacerlo con un carácter de subrayado), seguido de cualquier número de letras,
números y caracteres de subrayado, sin espacios. Veamos algunos ejemplos:

Posible nombre de variable Validez

$4variable
Nombre de variable inválido.

$_4variable
Nombre de variable válido.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

$variable4
Nombre de variable válido.

$otra
Nombre de variable válido.

$1_otra
Nombre de variable inválido.

$variable_de_nombre_muy_largo
Nombre de variable válido.

$ABC
Nombre de variable válido.

$ABC
Nombre de variable inválido.

$A_y_B_x_C
Nombre de variable válido.

Cuando el intérprete PHP detecta un error en la sintaxis al declarar una variable, cuando tratamos de
accecer a la página php nos aparecerá un mensaje de error. Por ejemplo si en un archivo php incluimos
una línea como $ A B C = 5; donde el nombre de variable es inválido ya que tiene espacios intermedios,
nos aparecerá un mensaje de error:
Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$' in
/home/miraiz/domains/midominio.com/public_html/prueba.php on line 3. Este mensaje nos informa
de que hay un problema en el archivo php y nos indica la línea donde el intérprete considera que está el
problema.

DIFERENCIAS ENTRE LOS OPERADORES DE ASIGNACIÓN E IGUALDAD

Asignación (=)

El operador de asignación es "=". Se podría pensar que es como un "igual a". No lo es. El operador igual
en programación no tiene el mismo sentido que en matemáticas. En programación, significa que el
valor de la expresión de la derecha se establece en el operando de la izquierda.

Fíjate en este ejemplo y en los comentarios.


<?php
$a = 3; // asignamos el valor 3 a la variable $a
$b = "cadena"; // asignamos el valor "cadena" a la variable $b
?>

Igualdad (==)

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

El comparador de igualdad es ==. Como su propio nombre indica, sirve para comparar dos valores o
variables y no para asignar valores. Este operador devuelve el resultado de la operación lógica de 'igual
a' tal y como podemos apreciar en el siguiente ejemplo.

Ejemplo

<?php
$a = 3;
$b = 3;
$a == $b; // El resultado de la comparación es TRUE porque $a es igual a $b
$a = 3;
$b = 4;
$a == $b; // El resultado de la comparación es FALSE porque $a no es igual a $b
?>

TIPOS DE DATOS

En PHP no es obligatorio indicar el tipo de datos al que pertenece una variable como en otros lenguajes,
sino que los tipos de datos son establecidos directamente por el intérprete PHP, que es el encargado de
interpretar el código.

Ahora veremos en una tabla los distintos tipos de datos que se pueden usar en PHP.
TIPO DE DATO DEFINICIÓN

Los integers, o enteros, pueden tener distintos valores numéricos enteros que se expresan
con diferentes notaciones.

integer $variable = 18; // Número entero positivo

$variable = -18; // Número entero negativo

$variable = 0x12; // Notación hexadecimal, en principio no la utilizaremos.

Este tipo de datos son los números de punto flotante a los que normalmente llamamos
“números decimales”, por ejemplo, 9.876. Ambos tienen mucha precisión, pero double es el
float o double
más preciso (con más decimales). La sintaxis para utilizarlos es bastante simple: $variable =
9.876;

El tipo de datos string, también conocido como cadena de caracteres, se expresa con la
string siguiente sintaxis:

$variable = "Yo soy una cadena";

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Se trata de un tipo lógico. Sus posibles valores son true (verdadero) o false (falso).

boolean $variable = true;

$variable = false;

INSTRUCCIÓN ECHO

Esta instrucción muchas veces se dice que sirve para que se muestre por pantalla un texto, una variable,
o una combinación de texto y variables. Pero realmente no es así: echo no es una instrucción que sirva
para mostrar algo por pantalla (aunque podemos usarla para esto), sino que sirve para insertar texto
dentro del documento HTML subyacente al código PHP.

Por ejemplo: echo "salida por pantalla. "; hará que se inserte este texto en el documento html. Si lo
hacemos entre las etiquetas <body> y </body> lo veremos por pantalla porque cualquier texto
insertado en ese lugar se mostrará por pantalla, no porque la instrucción echo dé lugar a que se
muestre por pantalla.

Sin embargo echo "<h1>Salida por pantalla. </h1> "; no hará que se muestren por pantalla las etiquetas
h1 y el texto, sino que introducirá en el documento HTML las etiquetas con el texto, éstas etiquetas
funcionarán como código HTML y lo que se mostrará por pantalla será Salida por pantalla con
formato de título h1 (letras más grandes de lo normal).

En general en php son válidas tanto las comillas dobles como las comillas simples, por lo que se puede
escribir tanto echo "<h1>Salida por pantalla. </h1> "; como echo '<h1>Salida por pantalla. </h1>';
Los paréntesis no son necesarios (echo en realidad no es una función sino que es lo que se denomina
una <<construcción del lenguaje>>, de ahí que no sean estrictamente necesarios los paréntesis), pero
se pueden incluir si se desea. Ejemplo:

echo ('con paréntesis y comillas simples');

Crea un archivo php con el siguiente código, ponle un nombre como usoDeEcho.php y súbelo al
servidor. Luego invócalo usando la ruta adecuada según la dirección web con la que estés trabajando
(será similar a http://apr2.byethost7.com/usoDeEcho.php.)

<?php echo "salida por pantalla. ";

$a = 5; echo $a; echo " El

valor de a es $a.";

?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

La visualización en tu navegador deberá ser similar a esta. Puede variar ligeramente dependiendo del
navegador que uses.

Ten en cuenta que $a se muestra por pantalla como 5 porque el intérprete de PHP considera que debe
mostrarse siempre el valor de la variable, incluso si va dentro de un texto. Prueba a escribir la siguiente
línea: echo " El valor de la variable \$a es $a.";

Comprobarás que se muestra por pantalla “salida por pantalla. 5 El valor de la variable $a es 5.”

Cuando antecedemos un nombre de variable del carácter \ hacemos que se interprete como texto en
lugar de como una variable. El carácter \ se suele llamar “carácter de escape” porque permite que se
considere texto algo que en principio se iba a interpretar como otra cosa (como una variable por
ejemplo).

Crea ahora un archivo php con el siguiente código, ponle un nombre como usoDeEcho2.php y súbelo al
servidor. Luego invócalo usando la ruta adecuada según la dirección web con la que estés trabajando
(será similar a http://apr2.byethost7.com/usoDeEcho2.php.)

<html>
<head>
<title> Ejemplo php aprenderaprogramar.com </title>
<meta charset="utf-8">
</head>
<body> <?php echo 'con comillas simples<br/>';
echo ('con paréntesis y comillas simples<br/>');
echo ("con paréntesis y comillas dobles<br/>");
echo '<h1>Salida por pantalla</h1><br/>'; echo
"salida por pantalla. ";
$a = 5; echo $a; echo " El
valor de a es $a.";
?>
</body>
</html>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

La visualización en tu navegador deberá ser similar a:

con comillas simples con


paréntesis y comillas simples con
paréntesis y comillas dobles

Salida por pantalla


salida por pantalla. 5 El valor de a es 5.

Puedes comprobar que <br/> no se muestra por pantalla porque es código HTML, y el navegador
cuando detecta este código HTML introduce un salto de línea en lugar de mostrarlo por pantalla.

Para comprender bien la utilidad de la instrucción echo piensa en esta equivalencia:

<body>
<? php - - - - - - - - Equivale a - - - - - - - > <body>
echo '<h1>Cuzco</h1>' <h1>Cuzco</h1>
?> </body>
</body>

El navegador recibe el HTML “equivalente” generado y lo interpreta, dando lugar a los resultados que
se mostrarán por pantalla.

EJERCICIO 1

Crea el siguiente archivo y súbelo mediante ftp al directorio raíz de tu sitio web. El archivo llevará por
nombre curso3.php y en él debe existir la estructura de un documento HTML, aparecer en la parte
superior de la página un título h1 con el texto <<Cursos aprenderaprogramar.com>>, seguido de un
título h2 con el texto <<Curso php desde cero>>, y a continuación hacer que se muestre usando echo el
siguiente texto dentro de un div con color de fondo amarillo: <<Curso php de aprenderaprogramar.com
usando la instrucción echo>>. Debajo de este texto debes usar echo para crear un contenedor div con
color de gris donde pueda leerse “Este es el pie de página”. Comprueba que el archivo se visualiza al
escribir la dirección web correcta que será similar a http://apr2.byethost7.com/curso3.php (en tu caso,
tendrás que escribir la dirección web que estés utilizando para el curso). Responde a esta pregunta:
¿Cuál es el código que contiene el archivo? ¿Cuál es la dirección web para acceder al archivo y visualizar
el texto?

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO 2

Crea un archivo php donde no exista html directamente pero que genere una página web con todo el
código html que lleva normalmente (introduce las etiquetas html, head, title, meta charset, body,
algunos párrafos de texto y algunas imágenes). Para hacer esto toda la estructura de la página web
debe ser insertada a través de instrucciones echo. Responde a esta pregunta: ¿Cuál es el código que
contiene el archivo? ¿Cuál es la dirección web para acceder al archivo y visualizar el texto?

ESTRUCTURAS CONDICIONALES

En PHP existen una serie de instrucciones que permiten tomar decisiones lógicas cuando programamos:

• if...else
• if...elseif...else
• switch

CONDICIONAL IF…ELSE EN PHP

Estas instrucciones son quizás las más usadas de todos los lenguajes de programación, ya que son las
más básicas. IF (en español: si…) ELSE (en español: sino…).

Estructura general de un condicional if else

if(expresión) {
... sentencias 1, 2, 3 … ;
} else {
... sentencias A, B, C …;
}

En este trozo de código estaríamos diciendo que si la expresión se cumple se ejecutan las sentencias 1,
2, 3…, y en caso de que no se cumpliese la expresión se ejecutarían las sentencias que están dentro del
else, es decir, las sentencias A, B, C …

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como
ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

<?php
$galletas = true;
if($galletas == true){

echo 'Hay galletas';


} else {
echo 'No hay galletas';

?>

En este ejemplo, estamos dando un valor $galletas y comprobamos si el valor de esta variable es true o
no, introduciéndolo en la expresión del condicional. Tal cual está, este ejemplo produciría el resultado
'Hay galletas', aunque si cambiásemos $galletas = true; por $galletas = false daría como resultado la
segunda sentencia.

Escribe ahora este otro código guárdalo con un nombre de archivo como ejemplo2.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php
$galletas = true;
if($galletas == true){

?>

<br/>

<p>&nbsp;&nbsp;&nbsp;&nbsp;---------------------------------</p>

<?php echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hay


galletas'; echo '<br/>'; echo '<br/>'; echo '&nbsp;&nbsp;&nbsp;&nbsp;------------------------
---------';

} else { echo 'No hay


galletas';

?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Como podrás comprobar, el código produce el mismo resultado. Unicamente hemos introducido
algunos caracteres para mejorar la forma en que se ve (recordar que &nbsp; equivale a un espacio en
blanco en HTML). Compara las similitudes y diferencias entre los dos códigos que hemos escrito. En
nuestro ejemplo2 podrás comprobar que hemos escrito un fragmento de código php, luego un
fragmento de código html y luego otro fragmento en php. Si te fijas, no hemos utilizado las etiquetas de
apertura y cierre de html, aunque hubiera sido quizás más correcto hacerlo, es decir, escribir:

<html>

<?php
$galletas = true;
if($galletas == true){

?>

<br/>
<p>&nbsp;&nbsp;&nbsp;&nbsp;---------------------------------</p>

<?php echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hay


galletas'; echo '<br/>'; echo '<br/>'; echo '&nbsp;&nbsp;&nbsp;&nbsp;------------------------
---------';

} else { echo 'No hay


galletas';

?>

</html>

Como comprobarás, a veces los navegadores son capaces de interpretar el código aunque falten
algunas etiquetas o contenga algunos errores. Esta es una de las cuestiones que diferencia HTML de
lenguajes de programación en sentido estricto como C, Java o Visual Basic, donde la sintaxis es mucho
más estricta.

En este código además podemos señalar:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

• Usamos el código &nbsp; que en HTML significa “un espacio”. Recuerda que HTML omite los
espacios antes y después de una cadena de texto. Por ello hemos de especificar que se
introduzcan espacios con &nbsp;.
• Un salto de línea, que introducimos gracias a la etiqueta <br/>, podemos escribirlo tanto fuera
del código php como dentro de él. Para introducirlo dentro de php, hemos de ponerlo dentro
de un echo, que es la forma que tenemos de indicarle a php de que dé salida a esa etiqueta
como código html.

¿Qué pasaría si introdujéramos una etiqueta html como <br/> directamente dentro del código php?
Pruébalo y comprobarás que en el navegador se muestra un mensaje de error de este tipo:

Parse error: syntax error, unexpected '<' in /home/m/dom/mi.com/public_html/prueba.php on line 11

Esta es una cuestión que debes de tener en cuenta: para introducir html debes de cerrar un bloque php
o usar una instrucción echo dentro del bloque php. La instrucción echo viene significando “dar salida
html a lo que va a continuación”.

CONDICIONALES IF...ELSE IF...ELSE EN PHP

La estructura de estas instrucciones viene a ser muy similar que la anterior. Su significado: “Si ocurre
esto, haz esto, sino si ocurre esta otra cosa, haz esto otro, sino si ocurre esta otro cosa, haz …”

Estructura general de un condicional if else if else

<?php
if(expresión) {
... sentencias 1, 2, 3, …;
} else if(expresión) {
... sentencias A, B, C, …;
} else {
... sentencias M, N, O, …;
}
?>

Esta es la síntaxis con la que debe ser usada else if. Un else if se ejecutará, siempre y cuando, no haya
alguna respuesta verdadera en el if o else if anterior; luego de que se llega al final de los else if, y
ninguno ha sido verdadero, se ejecutará lo que está dentro del else final.

Pueden haber varios else if, pero estos están siempre dentro de un if y terminarán con un else (sólo
uno) final.

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como
ejemplo3.php. A continuación, sube el fichero al servidor y visualiza el resultado.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

<?php $test = 33;


if ($test > 40) {

echo "Sí, $test es mayor que 40.";


} else if ($test > 35) {

echo "Sí, $test es mayor que 35.";


} else if ($test > 30) {

echo "Sí, $test es mayor que 30.";

} else {
echo "No, $test es menor que 40, 35 y 30.";

}
?>

En este caso la respuesta sería: Sí, 33 es mayor que 30.

Si el valor de $test se cambia a 22, la respuesta sería: No, 22 es menor que 40, 35 y 30.

OPERADOR CONDICIONAL TERNARIO


Para escribir condicionales la estructura básica de lenguajes como PHP, JavaScript, Java, y otros es la
sentencia if. Otro tipo de condicionales como el switch o el else if pueden ser reemplazados por if. Hay
otra sintaxis de condicional que se denomina operador condicional ternario y que se escribe con
expresiones que incluyen una interrogación y dos puntos como: a ? b : c;

La sintaxis y significado del operador condicional ternario (válida para diferentes lenguajes, como PHP,
JavaScript, Java, etc.) es la siguiente:

expresiónConValorBooleano ? expresión1 : expresión2;

Interpretación: si la expresiónConValorBooleano es cierta se ejecuta la expresión1, y en caso contrario


se ejecuta la expresión2.

Ejemplos. Supongamos que tenemos cuatro variables: A = 5, B = 3, C = -7 y D = 5

Expresión
Resultado

A==5 ? dispara(): espera();


Se ejecuta dispara()
A<B ? dispara(): espera();

Se ejecuta espera()

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

B<C ? dispara(): espera();


Se ejecuta espera()

A<B && B>C ? dispara(): espera();


Se ejecuta espera()
A<B && B>C || B==3 ? dispara(): espera();

Se ejecuta dispara()
A==5 ? A=20: A=1;

B = B==3 ? B*10: B*100; Si A valía 5 ahora vale 20, caso contrario ahora vale 1.

Se trata de una asignación: si B valía 3, ahora B vale 10 veces lo


que valía, caso contrario ahora B vale 100 veces lo que valía.

El operador ternario puede ser insertado en sentencias de ejecución donde no se permite la inserción
de if, por ejemplo en una operación de asignación o en la variable de control de un bucle. Usar el
operador condicional ternario tiene ventajas e inconvenientes.

VENTAJAS E INCONVENIENTES DEL OPERADOR CONDICIONAL TERNARIO


En la siguiente tabla resumimos las ventajas e inconvenientes del operador condicional ternario
comparándolo con el if tradicional.

Condicional ternario If tradicional

Permite la escritura compacta, permitiendo Obliga a escribir más sentencias para conseguir el mismo
ahorrar escritura de código. resultado.

Resulta más difícil de leer, entender y depurar Resulta más fácil de leer, entender y depurar

Todos los programadores lo usan y lo conocen.


No todos los programadores lo usan, algunos ni
siquiera lo conocen.

Se admite en la sintaxis de los lenguajes en


No es válido en ciertas ubicaciones donde sólo se admiten
lugares donde no se admite la sentencia if
expresiones, pero puede hacerse la evaluación antes del
punto donde sea necesario el condicional.

Uso y aceptación cuasi-universal


Criticado por algunos expertos, adorado por
otros

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJEMPLOS DE USO EN PHP


Escribe este código, guárdalo como archivo php y comprueba los resultados de ejecución. Razona sobre
los resultados obtenidos y trata de explicar paso a paso la lógica de todo lo que hace el código.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8"> </head>
<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos PHP</h3></div>
<?php
$A=5; $B=3; $C=-7; $D=5;
$msg = '';
$A==5 ? $msg='A es 5<br/>': $msg='A no es 5<br/>';
echo $msg;
$A<$B ? $msg='A es menor que B<br/>': $msg='A es mayor o igual que B<br/>'; echo
$msg;
$B<$C ? $msg='B es menor que C<br/>': $msg='B es mayor o igual que C<br/>';
echo $msg; ?>
</body>
</html>

El resultado esperado es que se muestre por pantalla:

Cursos aprenderaprogramar.com
Ejemplos PHP
A es 5
A es mayor o igual que B
B es mayor o igual que C

EJERCICIO 1
Ejecuta este código y responde:

a) ¿Qué resultado se obtiene por pantalla?

b) Modifica el código sustituyendo el operador ternario por if else para que el resultado obtenido sea el
mismo.

<?php
$haceFrio = 15;
$respuesta ="";
$temperatura = ($haceFrio<20) ? $respuesta = "Hace frio" : $respuesta = "No hace frio"; echo
$respuesta;
?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

EJERCICIO 2
Define las variables $tipo, $grosor, $diametro y $marca. Establece que el tipo sea “Rueda de camión”, el
grosor 0.33, el diámetro 1.25 y la marca “Kimashuki”. Crea el código PHP donde a través de
condicionales if realices la siguiente comprobación: si el diámetro es superior a 1.4 debe mostrarse por
pantalla el mensaje “La rueda es para un vehículo grande”. Si es menor o igual a 1.4 debe mostrarse por
pantalla el mensaje “La rueda es para un vehículo pequeño”. En otro caso, debe mostrarse “No existe
un tamaño de rueda válido”.

Modifica los valores de diámetro y comprueba que los resultados obtenidos por pantalla sean
correctos. Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP

Los operadores de comparación permiten comparar dos valores, tal y como su nombre indica. En
general, esto nos servirá para tomar decisiones. Por ejemplo, quizás tenemos que decidir si autorizar
una operación según exista saldo suficiente en su cuenta bancaria o no. Para ello en PHP disponemos
de los operadores que se indican en la siguiente tabla.

Nombre Ejemplo Resultado

true si $a es mayor que $b false en


Mayor que $a > $b
caso contrario

true si $a es menor que $b false en


Menor que $a < $b
caso contrario

true si $a es mayor o igual que $b false en


Mayor o igual que $a >= $b
caso contrario

true si $a es menor o igual que $b false en


Menor o igual que $a <= $b
caso contrario

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

$a <> $b ó true si $a es diferente a $b false en


Diferente
$a != $b caso contrario

Idéntico o true si $a es igual a $b y son del mismo tipo


$a === $b
estrictamente igual false en caso contrario

No idéntico ó true si $a no es igual a $b o no son del mismo tipo


$a ¡== $b
estrictamente distinto false en caso contrario

true si $a es igual a $b false en


Igual $a == $b
caso contrario

La sintaxis coincide con la empleada en otros lenguajes de programación.


Además de los operadores habituales existen los operadores === que se interpreta como “es
estrictamente igual” y !== que se interpreta como “no es estrictamente igual”. Estos operadores
resultan un poco más complejos de comprender por lo que volveremos a hablar de ellos más adelante.
De momento tener en cuenta que si una variable contiene $texto1= “1” y hacemos la comparación
$texto1 === 1 , obtendremos false, es decir, que no es igual (porque un texto no es igual a un número).
Sin embargo una comparación como $texto == 1 devolverá true ya que esta comparación no es estricta
y trata de realizar automáticamente conversiones para comprobar si se puede establecer una
equivalencia entre los dos valores. En este caso se busca el equivalente numérico del texto y luego se
hace la comparación, motivo por el cual se obtiene true.
Es decir, si se compara un número con una cadena de caracteres o la comparación implica cadenas de
caracteres numéricas, cada cadena de caracteres es convertida en un número y la comparación se
realizará numéricamente excepto cuando el operador utilizado es === o ¡== porque, en estos casos,
también comparamos el tipo.

OPERADORES LÓGICOS EN PHP

Los operadores lógicos, nos permiten crear condiciones para las distintas estructuras en PHP, tanto en
estructuras condicionales como en estructuras repetitivas. Los operadores lógicos más importantes son
and (en español: y) y or (en español: o)

Nombre Ejemplo Resultado

true si $a es true y $b es true false en


and ó && $a and $b
caso contrario

true si $a o $b es true, o ambos false en


or ó || $a or $b
caso contrario

true si $a o $b es true, pero no ambos


xor $a xor $b
false en caso contrario

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

true si $a no es true false en


not ó ! !$a
caso contrario

Una condición puede ser tan larga como se quiera o necesite y usar tantos operadores lógicos como se
quiera o necesiten. El uso de los paréntesis otorgará la prioridad de la ejecución de unas operaciones y
otras (como en matemáticas).
Las expresiones donde se utilizan operadores lógicos y relacionales devuelven un valor booleano, es
decir, verdadero (true) o falso (false). Por ejemplo si $a = 7 y $b = 5 la expresión $a < $b devuelve false
(es falsa). Si $a = true y $b = false la expresión $a && $b devuelve false (es falsa porque no se cumple
que $a y $b sean verdaderas). Si $a = true y $b = false la expresión $a || $b devuelve true porque uno
de los dos operandos es verdadero. Si $a = true la expresión !a devuelve false (el opuesto o contrario).
El operador || se obtiene en la mayoría de los teclados pulsando ALT GR + 1, es decir, la tecla ALT GR y
el número 1 simultáneamente.
Los operadores && y || se llaman operadores en cortocircuito porque si no se cumple la condición de
un término no se evalúa el resto de la operación. Por ejemplo: ($a == $b && $c != $d && $h >= $k) tiene
tres evaluaciones: la primera comprueba si la variable a es igual a b. Si no se cumple esta condición, el
resultado de la expresión es falso y no se evalúan las otras dos condiciones posteriores.
En un caso como ( $a < $b || $c != $d || $h <= $k) se evalúa si a es menor que b. Si se cumple esta
condición el resultado de la expresión es verdadero y no se evalúan las otras dos condiciones
posteriores.
El operador ! recomendamos no usarlo hasta que se tenga una cierta destreza en programación. Una
expresión como (!$esVisible) devuelve false si ($esVisible == true), o true si ($esVisible == false). En
general existen expresiones equivalentes que permiten evitar el uso de este operador cuando se desea.

OPERADOR DE NEGACIÓN APLICADO SOBRE NÚMEROS O TEXTO

Si $a = true su negación !$a devuelve false. ¿Pero qué ocurre si $a es un número o un texto? Si $a es un
número se considera que equivale a false si su valor numérico es 0, o que equivale a true si su valor
numérico es distinto de cero. Seguidamente se aplica la negación. Por tanto si $a = 7, a se considera
equivalente a true y !$a es false. Si $a = 0, a se considera equivalente a false y !$a es true.
Para cadenas de texto, la cadena vacía se considera equivale a false y cualquier otra cadena se
considera que equivale a true. Si $texto1 = "" (cadena vacía) entonces !$texto1 vale true.

ORDEN DE PRIORIDAD, PRELACIÓN O PRECEDENCIA


Los operadores lógicos y matemáticos tienen un orden de prioridad o precedencia. Este es un esquema
general que indica el orden en que deben evaluarse en la mayoría de los lenguajes de programación:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

()

*,/

+,–

Mod , \ (div)

= , <> , > , < , >= , <=

No (Not)

y (And)

o (Or)

Una expresión como $A+$B == 8 && $A-$B == 1 siendo $A = 3 y $B = 5 supondrá que se evalúa primero
$A+$B que vale 8, luego se evalúa $A-$B que vale -2. Luego se evalúa si se cumple que la primera
operación es cierta y luego si la segunda también es cierta, resultando que no, por lo que la expresión
es falsa.

COMPARACIÓN DE CADENAS DE TEXTO CON OPERADORES RELACIONALES

Dos cadenas de texto se pueden comparar resultando que se comparan letra a letra por el valor del
equivalente numérico de cada letra. Cada letra tiene un número asociado: por ejemplo la a es el
número 97, la b el 98, etc.
Si comparamos "avellana" < "sandia" obtenemos true.
Sin embargo, los códigos numéricos pueden generar resultados no previstos. Por ejemplo, ¿qué código
numérico es menor, el de la a ó el de la A? Aún más, resulta que todos los códigos numéricos de
mayúsculas son menores que los de minúsculas, con lo cual podemos obtener que ‘Zulú’ < ‘avellano’
devuelve true (cosa que a priori nos resultará ciertamente extraña).
Para comparar cadenas en base a un orden alfabético necesitaremos usar entonces otras técnicas que
comentaremos más adelante.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJEMPLO

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como
ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.
<?php
$a = 3;

$b = 9;
$result = ($a <= 3 and $b <> 9);
if ( $result == true) {

echo "Se cumple la condición";


}else {

echo "No se cumple la condición";


}

?>

EJERCICIO

Dadas las variables de tipo entero con valores $A = 5, $B = 3, $C = -12 indicar si la evaluación de estas
expresiones daría como resultado verdadero o falso:
a) $A > 3 i) $C / $B < $A

b) $A > $C j) $C / $B == -10

c) $A < $C k) $C / $B == -4

d) $B < $C l) $A + $B + $C == 5

e) $B != $C m) ($A+$B == 8) && ($A-$B == 2)

f) $A == 3 n) ($A+$B == 8) || ($A-$B == 6)

g) $A * $B == 15 o) $A > 3 && $B > 3 && $C < 3

h) $A * $B == -30 p) $A > 3 && $B >= 3 && $C < -3

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Crea el código PHP donde declares estas variables, les asignes valores y muestres por pantalla el valor
de verdad que tienen cada una de las expresiones antes indicadas. ¿Coincide lo que se muestra con
pantalla con lo que tú esperarías que se mostrara?

OPERADORES ARITMÉTICOS BÁSICOS EN PHP

En PHP disponemos de los operadores habituales en los distintos lenguajes de programación. Estos
operadores nos permiten realizar operaciones aritméticas: suma, resta, multiplicación, división, etc. así
como obtener el módulo o resto de una división entre dos enteros.

Ejemplo con $a
Nombre Ejemplo Resultado = 8 y $b = 4

Suma $a + $b El resultado de la suma. 12

Resta $a - $b El resultado de la resta. 4

Multiplicación $a * $b El resultado de la multiplicación. 32

División $a / $b El resultado de la división. 2

Resto o módulo $a % $b El resto de la división de $a entre $b (1) 0


(1)
Nota: Los números se convierten a enteros antes de efectuar la operación. Es decir, 9 % 4.5 da como resultado 1 y no 0 porque calcula el
resto de 9 entre 4, no de 9 entre 4.5

El operador resto o módulo es un operador útil en algunos procesos repetitivos en programación. Fíjate
en los valores que toma cuando van progresando los valores que toma una variable. En el ejemplo que
mostramos a continuación sirve para contar hasta dos y empezar de nuevo repetitivamente.

$a $a % 3

1 1

2 2

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

3 0

4 1

5 2

6 0

7 1

8 2

Destacar que el operador % es de uso exclusivo entre enteros. 7%3 devuelve 1 ya que el resto de dividir
7 entre 3 es 1. 8%2 devuelve 0 ya que el resto de dividir 8 entre 2 es cero. Al valor obtenido lo
denominamos módulo (en otros lenguajes en vez del símbolo % se usa la palabra clave mod) y a este
operador a veces se le denomina “operador módulo”.

Aunque en otros lenguajes existe un operador de exponenciación para calcular potencias, en PHP no es
así. Para calcular una potencia podemos hacer varias cosas:

a) Recurrir a multiplicar n veces el término. Por ejemplo min3 lo podemos calcular como
min*min*min. Obviamente esto no es práctico para potencias de exponentes grandes.

b) Usar un bucle que dé lugar a la repetición de la operación multiplicación n veces. Estas opciones
las comentaremos más adelante.

c) Usar herramientas propias del lenguaje que permiten realizar esta operación. Esta opción es la
más sencilla. Basta con escribir pow(base, exponente) para que PHP realice el cálculo de la
potencia. Por ejemplo pow(2, 3) devuelve dos elevado a 3 que resulta 8.

Las operaciones con operadores siguen un orden de prelación o de precedencia que determinan el
orden con el que se ejecutan. Con los operadores matemáticos la multiplicación y división tienen
precedencia sobre la suma y la resta. Si existen expresiones con varios operadores del mismo nivel, la
operación se ejecuta de izquierda a derecha. Para evitar resultados no deseados, en casos donde pueda
existir duda se recomienda el uso de paréntesis para dejar claro con qué orden deben ejecutarse las
operaciones. Por ejemplo, si dudas si la expresión 3 * a / 7 + 2 se ejecutará en el orden que tú deseas,
especifica el orden deseado utilizando paréntesis: por ejemplo 3 * ( ( a / 7 ) + 2 ).

OPERADORES DE INCREMENTO Y DECREMENTO

Nombre Ejemplo Resultado

Pre-incremento ++$a Incrementa $a en uno y luego devuelve $a

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Post-incremento $a++ Devuelve $a y luego incrementa $a en uno

Pre-decremento --$a Decrementa $a en uno y luego devuelve $a

Post-decremento $a-- Devuelve $a y luego decrementa $a en uno.

++ y -- son sólo válidos para variables numéricas y sirven para incrementar una unidad el valor de la
variable. Dependiendo de dónde se coloquen (antes o después de la variable) el resultado del cálculo
puede diferir debido al momento en que se ejecuta la adición de la unidad.

Tener en cuenta que ++, --, +=, -= y *= son expresiones que siempre se aplican sobre variables. Por
ejemplo no es válido escribir 2++ porque 2 no es una variable. Todas estas operaciones pueden
sustituirse por otra equivalente más evidente. Muchos programadores prefieren no usar estos
operadores porque hacen menos legible el código. A otros programadores les gusta usarlos porque les
ahorra escribir. Nosotros preferimos no usarlos, pero es cierto que los puedes encontrar cuando tengas
que revisar el código escrito por otra persona.

EJEMPLO

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como
ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.
<?php $a = 8;
echo ++$a;
echo "<br />";
echo $a;

?>

Escribe este otro código y guárdalo con un nombre de archivo como ejemplo2.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php $a = 8;
echo $a++;

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

echo "<br />";


echo $a;

?>

En los dos ejemplos anteriores podemos observar claramente la diferencia entre el pre-incremento y el
post-incremento. Lo mismo ocurre con el pre-decremento y post-decremento.

OPERADORES DE ASIGNACIÓN

Con el uso de los operadores de asignación, podremos simplificar (escribir abreviadamente) algunas
expresiones de asignación. No te recomendamos que utilices expresiones abreviadas durante el
aprendizaje básico de php. No obstante, es adecuado conocer el significado de estas expresiones por si
te enfrentas a tener que interpretar código escrito por otras personas.

Nombre Ejemplo Resultado

Suma $a += $b; $a = $a + $b;

Resta $a -= $b; $a = $a - $b;

Multiplicación $a *= $b; $a = $a * $b;

División $a /= $b; $a = $a / $b;

Resto o módulo $a %= $b; $a = $a % $b;

Los operadores +=, -= y *= son formas abreviadas de escribir operaciones habituales. Tener en cuenta
que ++, --, +=, -= y *= son expresiones que siempre se aplican sobre variables.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO 1

Crea un código PHP donde crees las variables $primerNumero y $segundoNumero y asigna valor 8 al
primer número y 5 al segundo número:

a) El resto de dividir el primer número entre 5.

b) El resultado de dividir el primer número entre el segundo.

c) El resultado de sumar los dos números.

Para comprobar si tu código y respuestas son correctas puedes consultar en los foros
aprenderaprogramar.com.

EJERCICIO 2

Crea un código PHP donde crees las variables $a y $b y usando los operadores adecuados haz que se
muestren los siguientes mensajes por pantalla. Nota: para mantener los valores iniciales de las
variables y poder volver a emplearlos usa variables auxiliares, por ejemplo $inicio = $a; te permitirá
mantener en %inicio el valor original de $a y volver a recuperar el valor inicial de $a antes de hacer una
nueva operación.

Mensajes a mostrar por pantalla:

Operadores de incremento

Valores iniciales: a = 4, b = 2
Operador ++ (anterior): ++a * b == 10
(Ahora el valor de a es: 5)
Operador ++ (posterior): a++ * b == 8
(Ahora el valor de a es: 5)
Operador -- (anterior): --a * b == 6
(Ahora el valor de a es: 3)
Operador -- (posterior): a-- * b == 8
(Ahora el valor de a es: 3)

Operadores de asignación compuestos

Valores iniciales: a = 4, b = 2
Asignación compuesta de suma: a += b equivale a = a + b
(Ahora el valor de a es: 6)
Asignación compuesta de resta: a -= b equivale a = a - b
(Ahora el valor de a es: 2)

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Asignación compuesta de multiplicación: a *= b equivale a = a * b


(Ahora el valor de a es: 8)
Asignación compuesta de división: a /= b equivale a = a / b
(Ahora el valor de a es: 2)
Asignación compuesta de módulo: a %= b equivale a = a % b
(Ahora el valor de a es: 0)

SWITCH PHP

Las instrucciones if...else if...else if permiten resolver prácticamente todas las decisiones que haya que
tomar en programación, pero en ocasiones nos encontraremos con casos en que queremos evaluar
condiciones con una estructura que hacen más cómodo usar una instrucción alternativa: switch.

Supongamos una evaluación de este tipo:

if ($variable == Valor1) {
... sentencias;
} else if( $variable == Valor2) {
... sentencias;
} else if ($variable == Valor3) {
... sentencias; }
else {
... sentencias;
}

Se trata de un caso en que tenemos varias alternativas para realizar una acción determinada según el
valor tomado por una variable. Para estos casos la mayoría de los lenguajes de programación incluyen
una instrucción que permite "seleccionar" entre los posibles valores de una variable: la instrucción
switch (en español: seleccionar).

La instrucción switch es una forma de expresión de un anidamiento múltiple de instrucciones if ... else.
Su uso no puede considerarse, por tanto, estrictamente necesario, puesto que siempre podrá ser
sustituida por el uso de if. No obstante, a veces resulta útil al introducir eficiencia y mayor claridad en el
código.

ESTRUCTURA GENERAL DE UNA EXPRESIÓN SWITCH

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

La sintaxis será (expresión será normalmente una variable cuyo contenido queremos evaluar, pero
puede ser una operación matemática, una expresión booleana, etc.):

switch (expresión) {

case valor1: instrucciones;


break;

case valor2: instrucciones; break;

.
.
.
default:
sentencias
;
break;

switch (expresión) {
case valor1:
case valor2:
case valor3:
instrucciones;
break;

case valor4:
instrucciones;
break;
.
.
.
default:
sentencias
;
break;

Esquemáticamente a modo de diagrama de flujo:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

break es opcional (pero en general recomendable) y provoca que una vez encontrada una coincidencia
termine la evaluación de casos (provoca un salto pasando el control del programa o flujo de ejecución a
la instrucción inmediata siguiente fuera del switch). Si no se incluye, se evaluarían el resto de casos
(ejecutándose si fueran ciertos). De no incluirse break, podría producirse que se ejecuten dos o más
casos.

La cláusula default es opcional y representa las instrucciones que se ejecutarán en caso de que no se
verifique ninguno de los casos evaluados. El último break dentro de un switch (en default si existe esta
cláusula, o en el último caso evaluado si no existe default) también es opcional, pero lo incluiremos
siempre para ser metódicos.

Se permite evaluar tanto números como cadenas de texto o valores booleanos. switch solo permite
evaluar valores concretos de la expresión: no permite evaluar intervalos (pertenencia de la expresión a
un intervalo o rango) ni expresiones compuestas.

EJEMPLO

Vamos a ver ahora cómo podemos obtener un mismo resultado usando if o usando switch. Escribe
ahora el código de ejemplo de uso de if que mostramos a continuación y guárdalo con un nombre de
archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

<?php

//Ejemplo uso if else aprenderaprogramar.com <?php


$variable=2; if($variable==1) { $variable=2; switch($variable) {
echo '$variable es igual a 1.'; case 1: echo '$variable es
igual a 1.'; break; case 2:
} else if($variable==2) { echo
echo '$variable es igual a 2.';
'$variable es igual a 2.';
break; case 3: echo
} else if($variable==3) { echo '$variable es igual a 3.';
'$variable es igual a 3.'; break; default:

} else { echo '$variable no es igual a 1, echo '$variable no es igual a 1, 2 o 3.';


2 o 3.'; }

} ?>

?>

Escribe ahora el código de ejemplo de uso de switch hemos mostrado y guárdalo con un nombre de
archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado.

El resultado comprobamos que en ambos casos es: $variable es igual a 2.

Si cambiamos $variable=2 por $variable=5 al inicio de código el resultado sería: $Variable no es igual a
1, 2 o 3.

Una diferencia importante respecto a las instrucciones if ... else if ... else es que se requiere de la
instrucción break para salir del switch al terminar las instrucciones correspondientes a un case. Sólo
podemos especificar un valor en cada case, no se admite indicar más de un valor. Sin embargo, si
dejamos un case en blanco y omitimos el break, damos lugar a que se ejecuten ciertas instrucciones si
el valor coincide con alguno de los case en juego. Esto lo veremos más claro con un ejemplo.

Escribe ahora estos otros códigos y guárdalos con nombres de archivo como ejemplo3.php y
ejemplo4.php. A continuación, sube los ficheros al servidor y visualiza el resultado.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

<?php
$variable=2;
<?php switch($variable) {
case 1:
//Ejemplo uso if else aprenderaprogramar.com

$variable=2; if($variable==1) { //Se ejecuta si $variable vale 1


echo '$Variable es igual a 1.'; echo '$Variable es igual a 1.';
break; case 2: case 3:
} else if($variable==2 OR $variable==3) {
echo '$Variable es igual a 2 o 3.'; //Se ejecuta si $variable vale 2 o 3
echo '$Variable es igual a 2 o 3.';
}else { echo '$Variable no es igual a 1,
break; default:
2 o 3.';
//Se ejecuta en cualquier otro caso
}
echo '$Variable no es igual a 1, 2 o 3.';
?>
}

?>

En cualquiera de las dos formas mostradas, la salida obtenida sería: $variable es igual a 2 o 3.

En este caso, al evaluarse la segunda instrucción case no se encuentra ningún break por lo que se
siguen ejecutando las instrucciones siguientes al tercer case, aún cuando $variable es diferente de 3, ya
que al no existir un break anterior los casos 2 y 3 quedan “agrupados”. Más aún, si borramos el break
del tercer case también se ejecutarán las instrucciones siguientes a default, y la salida sería entonces:

$variable es igual a 2 o 3.

$variable no es igual a 1, 2 o 3.

Por ello es muy importante que cuando escribas una instrucción switch pongas break en todos los case,
o bien que si dejas algún break sin escribir sea porque conscientemente quieras hacerlo y no por olvido.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO 1

Analiza el siguiente código PHP:

//Ejemplo de uso switch PHP aprenderaprogramar.com


switch ($mes) { case 1:
echo ("El mes es enero");
break;
case 2: echo ("El mes es febrero"); break;
case 10: echo ("El mes es octubre"); break;
default: echo ("El mes no es enero, febrero ni octubre"); break;
}

Responde a las siguientes cuestiones:

a) ¿Qué es lo que hace este código?

b) Completa el código de forma que añadas las etiquetas y definas el valor de $mes = 1. Sube el fichero
al servidor y comprueba el resultado. ¿Cuál es el código completo? ¿Cuál es el resultado obtenido por
pantalla?

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

EJERCICIO 2

Considera estás desarrollando una web donde trabajas con tipos de motor (suponemos que se trata del
tipo de motor de una bomba para mover fluidos). Define una variable $tipoMotor y asígnale valor 3. Los
valores posibles son 1, 2, 3, 4. A través de un condicional switch haz lo siguiente:

a) Si el tipo de motor es 0, mostrar un mensaje indicando “No hay establecido un valor definido
para el tipo de bomba”.

b) Si el tipo de motor es 1, mostrar un mensaje indicando “La bomba es una bomba de agua”.

c) Si el tipo de motor es 2, mostrar un mensaje indicando “La bomba es una bomba de gasolina”.

d) Si el tipo de motor es 3, mostrar un mensaje indicando “La bomba es una bomba de hormigón”.

e) Si el tipo de motor es 4, mostrar un mensaje indicando “La bomba es una bomba de pasta
alimenticia”.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

f) Si no se cumple ninguno de los valores anteriores mostrar el mensaje “No existe un valor válido
para tipo de bomba”.

¿Cuál es el código completo? ¿Cuál es el resultado obtenido por pantalla?

FUNCIONES CON CADENAS DE CARACTERES EN PHP

Las cadenas de caracteres en PHP se definen, como ya sabemos, entre comillas dobles o simples
(podemos usar dobles o simples indistintamente). Es decir, podemos definir una variable como cadena
de caracteres de la siguiente forma: $cadena = "George Washington"; o también $cadena = 'George
Wasington';

Para la manipulación de estas variables o cadenas de caracteres nos será útil conocer las funciones
básicas de manipulación. No vamos a entrar a describir cada una de las funciones para cadenas de
caracteres que PHP posee, que son muchas. Simplemente veremos las más básicas y de uso más
común.

FUNCIÓN STRLEN

La función strlen obtiene la longitud de una cadena y devuelve un número entero. Es decir, obtenemos
el número de caracteres que forman la cadena completa.

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como
ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php
$cad = "cadena"; //Prueba a cambiar el texto cadena por otro

$n = strlen($cad); echo "La longitud de


la cadena es: $n";

?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

FUNCIÓN SUBSTR

La función substr devuelve una subcadena de la cadena original, es decir, una parte de la cadena
original. Esta función tiene 3 parámetros:

1. La variable que contiene la cadena.


2. Número que representa la posición (inclusive) en la que comenzará a ser extraída la subcadena.
3. Número que indica la cantidad de caracteres que serán extraídos. Este argumento es opcional.
Si se omite se tomará hasta el final de la cadena original.

Tener en cuenta que la numeración de la posición de los caracteres empieza por cero. Por ejemplo para
la cadena 'GPS', que tiene 3 caracteres, el carácter en posición 0 es G, en posición 1 es P y en posición 2
es S. No existe la posición 3 debido a que se comienza a contar por el cero.

Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como
ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php

$cad = "cadena";
$sub1 = substr($cad, 2); $sub2 = substr($cad, 2, 2); echo "La subcadena número
uno es la siguiente: $sub1 <br />"; echo "La subcadena número dos es la
siguiente: $sub2"; ?>

Escribe este otro ejemplo y visualízalo en tu navegador (nota: & nbsp representa un espacio en blanco):

<?php $cad = "aprenderaprogramar.com";

$sub1 = substr($cad, 0); //La cadena completa

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

$sub2 = substr($cad, 0, 8); //La subcadena aprender

$sub3 = substr($cad, 8, 1 ); //La subcadena a $sub4 = substr($cad, 9); //La subcadena


programar echo "&nbsp; &nbsp; La subcadena número uno es la siguiente: $sub1 <br />";
echo "&nbsp; &nbsp; La subcadena número dos es la siguiente: $sub2 <br />"; echo
"&nbsp; &nbsp; La subcadena número tres es la siguiente: $sub3 <br />"; echo "&nbsp;
&nbsp;La subcadena número cuatro es la siguiente: $sub4"; ?>

Fíjate en las siguientes cuestiones:

a) La numeración de caracteres empieza en cero y no en uno. Así en este último ejemplo el


caracter 0 es la a, el 1 la p, el 2 la r,el 3 la e y así sucesivamente.

b) La posición en que comienza la extracción va incluida en la subcadena extraida. Esto significa


que substr ($cad, 0, 1) significa que sólo se extrae el primer caracter de la cadena.

OPERADOR DE CONCATENACIÓN

La concatenación es el proceso de unir varias porciones de texto en una sola cadena. Este operador se
expresa como un punto '.'

Escribe el siguiente código, súbelo al servidor y visualízalo en tu navegador.

<?php

$cad1 = "aprendera";

$cad2 = "programar"; $cadt = $cad1 . $cad2; echo "La cadena número uno concatenada con
la cadena número 2 es: $cadt <br />"; // Ahora concatenaremos la cadena ejemplo con la
concatenación de $cad2 y $cad1 echo "Ejemplo: " . ($cad2 . $cad1);

?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

En este ejemplo vemos cómo las cadenas se pueden concatener en el orden que nosotros deseemos.

EJERCICIO

Crea el código PHP que cumpla con lo que se indica a continuación:

a) Declara una variable cuyo contenido sea la cadena "Didáctica y divulgación de la programación"

b) Usando la función substr extrae cada una de las palabras de la cadena anterior a una variable. Como
tenemos 6 palabras, debes tener 6 variables con las subcadenas.

c) Usando la concatenación muestra por pantalla lo siguiente: <<Las palabras primera, tercera y sexta
son:
Didáctica, divulgación, programación>>

d) Usando strlen muestra por pantalla lo siguiente: <<La palabra primera es Didáctica y tiene 9
caracteres, la palabra tercera es divulgación y tiene 11 caracteres. La palabra sexta es programación y
tiene 12 caracteres>>

ESTRUCTURAS REPETITIVAS O BUCLES EN PHP


Las estructuras repetitivas (bucles) son aquellas que reiteran una o un grupo de instrucciones "n" veces
y dependen de una variable de control del ciclo. Es decir, ejecutan una o varias instrucciones un
número de veces definido. Las instrucciones básicas que permiten construir este tipo de estructuras
son while, do ... while y for.

LA INSTRUCCIÓN WHILE
La instrucción while (que en castellano se traduciría como “mientras…”) ejecuta una porción de
programa mientras se cumpla una cierta condición.
Mientras la condición sea verdadera, se ejecutan las instrucciones contenidas en el while. Cuando deja
de cumplirse la condición, se sale del ciclo y se continúa ejecutando el resto del programa.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Si la condición no se cumple ni la primera vez que se comprueba, las líneas en el interior del while no se
ejecutarán ni una vez.
La estructura general o sintaxis habitual de un bucle while es la siguiente:

<?php
while (condición) {
... sentencias;
}
?>

En este fragmento de código estaríamos indicando que mientras se cumpla la condición se realizan las
sentencias, y en este caso si no se cumpliese la condición se seguiría ejecutando el programa o
mostrando los contenidos de la página web justo después del cierre de la instrucción while (que queda
determinado por el símbolo de cierre } ).
Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo1.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php

$galletas = 0; while
($galletas < 10){

echo "$galletas, ";


$galletas++;

}
?>

En este ejemplo, las instrucciones dentro del while se ejecutarían 10 veces, mostrando los números de
0 a 9 separados por coma. Hay que tener especial cuidado en no crear estructuras repetitivas que se
ejecuten infinitamente (bucles infinitos). En el ejemplo anterior, si no incrementamos el valor de la
variable $galletas, la condición del while se cumpliría siempre y tendríamos un problema porque
habríamos creado un bucle infinito, quedando el programa ‘atascado’ en dicho while.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO 1
Crea el código PHP donde generes:

a) Un bucle while que cuente desde 50 hasta 40 (fíjate que en este caso es decreciente)

b) Un bucle while que a partir de una variable $contador que toma valores de 1 a 5, muestre por
pantalla el doble del valor de $contador, es decir, que muestre 2, 4, 6, 8, 10.

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

LA INSTRUCCIÓN DO … WHILE
La estructura repetitiva do-while (en castellano equivaldría a hacer… mientras) es muy similar a la
estructura while, excepto que la expresión verdadera es verificada al final de cada iteración en lugar de
al principio. La diferencia principal con los bucles while es que está garantizado que se ejecuten las
instrucciones que contienen, al menos una vez (la verificación de si se tiene que repetir el proceso se
realiza al final de la repetición de la estructura.
La estructura general o sintaxis habitual de un bucle do … while es la siguiente:

<?php
do {
…sentencias
} while(condición);
?>
En este fragmento de código estaríamos indicando que se ejecute una primera vez “sí o sí” las
sentencias, y que después se evalúe la condición para comprobar si se deben ejecutar nuevamente las
sentencias. Como vemos, aunque no se cumpla la condición las sentencias se ejecutarían al menos una
primera vez.
Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2.php. A continuación,
sube el fichero al servidor y visualiza el resultado.
<?php
$galletas = 0;
do {

echo "$galletas, ";


$galletas++;

} while ($galletas < 10);

?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO 2
Crea el código PHP donde generes:

a) Un bucle do…while que cuente desde 50 hasta 40 (fíjate que en este caso es decreciente)

b) Un bucle do…while que a partir de una variable $contador que toma valores de 1 a 5, muestre por
pantalla el doble del valor de $contador, es decir, que muestre 2, 4, 6, 8, 10.

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

LA INSTRUCCIÓN FOR
La estructura repetitiva for (en castellano se traduciría como “desde…”) se utiliza generalmente cuando
tenemos bien determinada la cantidad de repeticiones a realizar. Se diferencia de las anteriores en que
se debe incluir en la propia instrucción una variable de control, la cual se incrementa o decrementa de
forma automática. La estructura de estas instrucciones viene a ser muy similar a la anterior.
La estructura general o sintaxis habitual de un bucle for es la siguiente:

<?php for ($variable=valor_inicial; condición;


incremento) { ... sentencias;
}
?>

En este fragmento de código estaríamos indicando que mientras se cumpla la condición se realizan las
sentencias, y en este caso si no se cumpliese la condición se seguiría ejecutando el programa justo
después del cierre de la instrucción for (}). Todo esto es igual a la instrucción while anteriormente
citada, salvo que en la propia declaración de la estructura se encuentra la variable de control, que en
cada repetición se incrementa automáticamente.
Esta instrucción consta, por tanto, de tres parámetros:
• Inicialización de la variable que se utilizará en la condición.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

• Condición que se debe cumplir para permanecer en el ciclo.


• Modificación de la variable utilizada en la condición.

Escribe ahora este otro código guárdalo con un nombre de archivo como ejemplo3.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php for ($galletas = 0; $galletas < 10;


$galletas++){

echo "$galletas, ";


}
?>

Este ejemplo muestra a la salida, la misma información que mostraba la instrucción while. Como
podemos observar, el valor inicial y el incremento de la variable $galletas, van en la propia instrucción.

EJERCICIO 3
Crea el código PHP donde generes:

a) Un bucle for que cuente desde 50 hasta 40 (fíjate que en este caso es decreciente y que por
tanto la variable deberá operar como $galletas– –).

b) Un bucle for que a partir de una variable $contador que toma valores de 1 a 5, muestre por
pantalla el doble del valor de $contador, es decir, que muestre 2, 4, 6, 8, 10.

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

MODIFICAR EL PASO O STEP DE LA VARIABLE CONTADORA


Crea el siguiente código, guárdalo con un nombre de archivo como ejemplo4.php y visualiza los
resultados en tu navegador.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

<?php for ( $i = 0; $i < 50;


$i+=5 ){

echo "&nbsp;&nbsp; $i <br/> ";


}
?>

Fíjate que en este caso a la variable contador la hemos denominado i. Es habitual usar nombres como i,
j, k para las variables contadoras en bucles.

Otra cosa interesante es que usando la instrucción += conseguimos que la variable contadora no vaya
de uno en uno, sino que el paso (step) de la variable sea el número que nosotros deseemos. En este
caso, hemos utilizado un incremento de 5 unidades en cada repetición del bucle. También podemos
lograr el mismo efecto pero con decrementos usando – =.

EJERCICIO 4
Crea el código PHP donde generes:

a) Un bucle for que cuente desde 50 hasta 500 de 25 en 25.

b) Un bucle for que a partir de una variable de control $j que toma valores de 100 a 500 de 100 en 100,
muestre por pantalla el resultado de dividir la variable de control por 20. En este caso, el resultado
será 5 (que es 100/20…), 10 (que es 200/20…), 15, 20, 25.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

CONCEPTOS BÁSICOS DE PHP

Un archivo PHP normalmente suele contener HTML y trozos de código PHP. Por ello antes de estudiar
PHP es necesario haber estudiado HTML. A veces, se dice que PHP es un lenguaje “embebido” en
HTML, es decir, incrustado en código HTML. Todos los fragmentos de código PHP deben comenzar con
la siguiente cadena de caracteres: <?php ,y finalizar con ?>

Los símbolos <?php y ?> se dice que son los delimitadores del código PHP. Normalmente, una página
PHP básica sería algo así:

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


"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
<title>Ejemplo de una web con PHP - aprenderaprogramar.com</title>

<meta charset="utf-8">
</head>

<body>

<?php
/* Aquí vendría el código PHP */
/* Este código PHP podría ser una consulta a base de datos */
/* Y además podríamos mostrar esos datos */

?>

</body>
</html>

En este código podemos identificar los siguientes elementos:

- La primera línea es una etiqueta relativa a la versión/variante de HTML que declaramos usar.
Esta primera etiqueta no es estrictamente necesaria. Sirve únicamente para indicar qué
estándar de HTML es el que declaramos usar.
- Las etiquetas de apertura y cierre de html que delimitan el código HTML.
- Las etiquetas de apertura y cierre head que delimitan la cabecera del código HTML.
- Las etiquetas body que delimitan el cuerpo del código HTML y que es donde suele ir el
contenido central de un documento HTML (texto, imágenes, formularios, etc.).
- Dentro de las etiquetas body, además de código HTML, podemos tener código PHP embebido.
En este caso hemos incluido únicamente un fragmento de código PHP, pero en el cuerpo del
documento HTML podríamos incluir diversos fragmentos de código HTML mezclados con

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

diversos fragmentos de código PHP. Cada fragmento de código PHP tiene que ir escrito con sus
delimitadores.

Esta estructura no se repite siempre. De hecho, más adelante veremos que el código PHP puede ir en
más lugares además de dentro de las etiquetas body. Por otro lado, decir que es habitual que el código
PHP vaya embebido dentro de código HTML en un archivo con extensión .php, pero como ya hemos
visto, un archivo con extensión .php podría contener exclusivamente código PHP.

Escribe el código que mostramos a continuación en el editor Notepad++ y guárdalo con el nombre
prueba1.php.

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


"http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>

<title>Ejemplo de una web con PHP - aprenderaprogramar.com</title>


<meta charset="utf-8">

</head>
<body>

<?php

echo "Mi primera página con PHP embebido en HTML -


aprenderaprogramar.com";

?>
</body>

</html>

A continuación súbelo al servidor como ya explicamos en una entrega anterior, y ahora escribe en tu
navegador la dirección web correspondiente al archivo (que será similar a
http://apr2.byethost7.com/prueba1.php). Debes de visualizar algo parecido a esto.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO

Crea el siguiente archivo y súbelo mediante ftp al directorio raíz de tu sitio web. El archivo llevará por
nombre curso2.php y en él debe existir la estructura de un documento HTML, aparecer en la parte
superior de la página un título h1 con el texto <<Cursos aprenderaprogramar.com>>, seguido de un
título h2 con el texto <<Curso php desde cero>>, y a continuación hacer que se muestre insertando php
el siguiente texto. <<Curso php de aprenderaprogramar.com comenzado el 24/09/2083>> donde la
fecha a incluir sea la fecha en que hayas subido el archivo. Debajo de este texto debes crear un
contenedor div con color de fondo amarillo donde pueda leerse “Este es el pie de página”. Comprueba
que el archivo se visualiza al escribir la dirección web correcta que será similar a
http://apr2.byethost7.com/curso2.php (en tu caso, tendrás que escribir la dirección web que vayas a
utilizar para el curso). Responde a esta pregunta: ¿Cuál es el código que contiene el archivo? ¿Cuál es la
dirección web para acceder al archivo y visualizar el texto?

MATRICES O ARRAYS DE DOS DIMENSIONES

Las matrices decimos que son arrays (arreglos) de dos dimensiones. También podemos verlas como
tablas donde cada elemento tiene una fila y una columna. Para comprenderlas mejor podemos
recordar las matrices matemáticas de 2 dimensiones. Un ejemplo de matriz en matemáticas podría ser
esta:

1 14 8 3

6 19 7 2

3 13 4 1

En una matriz normalmente hablamos de filas y columnas y decimos que la matriz tiene m filas y n
columnas. Así, cada elemento queda identificado por su fila i y su columna j. Por ejemplo, en la matriz
que hemos mostrado anteriormente podríamos decir que tenemos 3 filas (fila 0, fila 1 y fila 2) y cuatro

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

columnas (columna 0, columna 1, columna 2, columna 3). Podríamos decir que el elemento de la fila 1,
columna 3 es igual a 2. De la misma manera podríamos decir:

$valor [0] [0] = 1; $valor [0] [1] = 14; $valor [0] [2] = 8; $valor [0] [3] = 3;

$valor [1] [0] = 6; $valor [1] [1] = 19; $valor [1] [2] = 7; $valor [1] [3] = 2;

$valor [2] [0] = 3; $valor [2] [1] = 13; $valor [2] [2] = 4; $valor [2] [3] = 1;

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo3.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php

$animal[0][0] = "Perro";

$animal[0][1] = "Gato";

$animal[1][0] = "Lombriz";

$animal[1][1] = "Burro";

$animal[2][0] = "Murciélago"; $animal[2][1] = "Cocodrilo"; echo


$animal[2][1]; echo $animal[0][0];

?>

El resultado esperado es que se muestre por pantalla lo siguiente:

Hay que recordar que los arrays siempre comienzan numerándose desde cero.

Otra forma de asignar valores a un array matriz es similar a la que ya describimos para los vectores.
Escribe este código y guárdalo con un nombre de archivo como ejemplo4.php. A continuación, sube el
fichero al servidor y visualiza el resultado.

<?php

$animal = array(

array("Perro", "Gato"),

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

array("Lombriz", "Burro"),
array("Murciélago", "Cocodrilo")

);

echo $animal[2][1]; echo


$animal[0][0];

?>

La sintaxis que hemos empleado equivale a lo siguiente:

$animal [0] [0] = "Perro"; $animal [0] [1] = "Gato";

$animal [1] [0] = "Lombriz"; $animal [1] [1] = "Burro";

$animal [2] [0] = "Murciélago"; $animal [2] [1] = "Cocodrilo";

De ahí que por pantalla se muestre "Cocodrilo" y "Perro", al igual que en el ejemplo anterior.

También obtenemos el mismo resultado usando este código, que es una mezcla de ambos tipos de
sintaxis:
<?php

$animal[0] = array("Perro", "Gato");

$animal[1] = array("Lombriz", "Burro"); $animal[2] = array("Murciélago",


"Cocodrilo"); echo $animal[2][1]; echo $animal[0][0];

?>

La visualización obtenida es la misma: por pantalla se muestra "Cocodrilo" y "Perro", al igual que en el
ejemplo anterior..
ARRAYS MULTIDIMENSIONALES

Los arrays multidimensionales son los que tienen más de dos dimensiones. Estos tipos de arrays se
definen como las matrices pero añadiendo más índices.

Escribe este código, guarda el archivo php, súbelo al servidor y visualiza el resultado en tu navegador.

<?php

$animal[0][0][0] = "Perro";
$animal[0][0][1] = "Gato";
$animal[0][0][2] = "Lombriz";

$animal[1][0][0] = "Burro";

$animal[1][0][1] = "Murciélago"; $animal[1][0][2]

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

= "Cocodrilo"; echo "<br/>&nbsp;&nbsp;&nbsp;" .


$animal[1][0][1]; echo "<br/>&nbsp;&nbsp;&nbsp;" .
$animal[0][0][3];

?>

En este ejemplo hemos incluido una línea que tiene poco sentido, o podría interpretarse como un error:

echo "<br/>&nbsp;&nbsp;&nbsp;" . $animal[0][0][3];

Fíjate que estamos invocando un localizador [0][0][3] que no existe, o al que aún no le hemos asignado
valor. Dependiendo del lenguaje y de la versión el resultado puede ser uno u otro. En principio, debe
tratar de evitarse invocar a una variable tipo array a la que no se haya asignado valor, ya que esto
supone una inconsistencia o incoherencia. En general, si esto ocurre, PHP devolverá un valor “vacío”,
que en este caso supondría que en la pantalla no se muestra nada asociado a esta variable. Por eso en
la pantalla vemos únicamente “Murciélago” y nada más.

Escribe el código que incluimos más abajo y visualiza el resultado. Si te fijas, cuando declaramos un
array dentro de otro array lo que hacemos es añadir una dimensión más al array. Por ejemplo, si
quisiéramos declarar un array de tres dimensiones de nombre $miFecha podríamos escribir:

<?php

$miFecha = array( //Declara array

array( //Dimensión [0][…][…]


array("13 de enero de 2015", "11 de febrero de 2018"),//[0][0][…]
array("13 de enero de 2020", "11 de febrero de 2015"),//[0][1][…]

),
array( //Dimensión [1][…][…]

array("3 de agosto de 2017", "1 de octubre de 2016"),//[1][0][…]


array("3 de agosto de 2013", "1 de octubre de 2019"),//[1][1][…]

),

array( //Dimensión [2][…][…]


array("10 de junio de 2020", "11 de marzo de 2019"), //[2][0][…]

),

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

array(//Dimensión [3][…][…]
array("22 de marzo de 2020", "28 de mayo de 2019"), //[3][0][…]
array("22 de marzo de 2019", "28 de mayo de 2018"), //[3][1][…]
array("22 de marzo de 2018", "28 de mayo de 2017"), //[3][2][…]
array("22 de marzo de 2017", "28 de mayo de 2016"), //[3][3][…] )

);
echo "<br/>&nbsp;&nbsp;&nbsp;" . $miFecha[3][2][0];

?>

En este ejemplo hemos definido valores para los siguientes índices de array:

$miFecha [0] [0] [0], $miFecha [0] [0] [1]


$miFecha [0] [1] [0], $miFecha [0] [1] [1]
$miFecha [1] [0] [0], $miFecha [1] [0] [1]
$miFecha [1] [1] [0], $miFecha [1] [1] [1]
$miFecha [2] [0] [0], $miFecha [2] [0] [1]
$miFecha [3] [0] [0], $miFecha [3] [0] [1]
$miFecha [3] [1] [0], $miFecha [3] [1] [1]
$miFecha [3] [2] [0], $miFecha [3] [2] [1]
$miFecha [3] [3] [0], $miFecha [3] [3] [1]

Compruébalo solicitando la visualización de todas estas variables, como vemos en este ejemplo.

<?php

$miFecha = array(
array(

array("13 de enero de 2015", "11 de febrero de 2018"),


array("13 de enero de 2020", "11 de febrero de 2015"),

),
array(

array("3 de agosto de 2017", "1 de octubre de 2016"),


array("3 de agosto de 2013", "1 de octubre de 2019"),

),

array(

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

array("10 de junio de 2020", "11 de marzo de 2019"),


),

array(
array("22 de marzo de 2020", "28 de mayo de 2019"),
array("22 de marzo de 2019", "28 de mayo de 2018"),
array("22 de marzo de 2018", "28 de mayo de 2017"),
array("22 de marzo de 2017", "28 de mayo de 2016"), )

);
echo "<br/>&nbsp;&nbsp;&nbsp;" . $miFecha[3][2][0]; echo $miFecha [0]
[0] [0]. "<br>"; echo $miFecha [0] [0] [1]. "<br>"; echo $miFecha [0]
[1] [0]. "<br>"; echo $miFecha [0] [1] [1]. "<br>"; echo $miFecha [1]
[0] [0]. "<br>"; echo $miFecha [1] [0] [1]. "<br>"; echo $miFecha [1]
[1] [0]. "<br>"; echo $miFecha [1] [1] [1]. "<br>"; echo $miFecha [2]
[0] [0]. "<br>"; echo $miFecha [2] [0] [1]. "<br>"; echo $miFecha [3]
[0] [0]. "<br>"; echo $miFecha [3] [0] [1]. "<br>"; echo $miFecha [3]
[1] [0]. "<br>"; echo $miFecha [3] [1] [1]. "<br>"; echo $miFecha [3]
[2] [0]. "<br>"; echo $miFecha [3] [2] [1]. "<br>"; echo $miFecha [3]
[3] [0]. "<br>"; echo $miFecha [3] [3] [1]. "<br>"; ?>

EJERCICIO

Crea el código PHP de 3 archivos que den respuesta al siguiente planteamiento:

Queremos almacenar en una matriz el número de alumnos con el que cuenta una academia, ordenados
en función del nivel y del idioma que se estudia. Tendremos 3 filas que representarán al Nivel básico,
medio y de perfeccionamiento y 4 columnas en las que figurarán los idiomas (0 = Inglés, 1 = Francés, 2 =
Alemán y 3 = Ruso). Se pide realizar la declaración de la matriz y asignarle los valores indicados en la
siguiente imagen a cada elemento de las siguientes maneras (crea un archivo php por cada una de estas
maneras):

1 14 8 3

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

6 19 7 2

3 13 4 1

a) Con una sintaxis basada exclusivamente en índices, y mostrar por pantalla los alumnos que
existen en cada nivel e idioma.

b) Con una sintaxis basada en el uso anidado de la palabra array, y mostrar por pantalla los
alumnos que existen en cada nivel e idioma.

c) Con una sintaxis que combine el uso de array y el uso de índices, y mostrar por pantalla los
alumnos que existen en cada nivel e idioma.

Nota: por ejemplo, debe mostrarse por pantalla que el número de alumnos en el nivel básico, idioma
inglés, hay 1 alumno; en el nivel básico, idioma francés, hay 14 alumnos, etc.

ARRAYS ASOCIATIVOS EN PHP

Anteriormente hemos visto lo que son los arrays tradicionales en PHP y cómo operar con ellos de forma
muy elemental. Hemos aprendido que los arrays pueden denominarse “variables con localizador” o
“variables con índice”.

Por tanto los elementos del array son datos que están asociados, a su vez, a un elemento del array
llamado índice. Supongamos el array nombre[0], nombre[1], nombre[2]. El nombre de variable para el
array es “nombre” mientras que los índices son 0, 1 y 2.

El índice se caracteriza por conectar los elementos del array por medio de una numeración que empieza
por cero. Así, el primer elemento del array tiene índice cero, el segundo tiene índice uno, y así
sucesivamente.

Pero en realidad, resulta que este índice es numérico solo por defecto; es decir, tenemos la posibilidad
de crear nuestro propio índice dentro de un array. Cuando hacemos esto, estamos convirtiendo el array
en lo que se denomina un array asociativo.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo1.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo arrays aprenderaprogramar.com

$colores_vehiculos = array(

'coche' => 'Rojo',


'moto' => 'verde',
'avion' => 'amarillo'

);

echo
$colores_vehiculos['moto'];

?>

Si te fijas en el código, hemos asignado a la variable $colores_vehiculos un array asociativo. Al ser


asociativo tenemos que especificar un índice. Los índices que hemos especificado son: coche, moto y
avion. Es decir, en vez de usar 0, 1 y 2 hemos usado coche, moto y avion.

Para declarar arrays asociativos, en el paréntesis de definición del array, tenemos que asociar el índice
con el valor por medio del operador =>. Fíjate que el índice debe ir escrito entre comillas simples.
Después, para acceder a un elemento del array asociativo tenemos que escribir la variable asignada al
array, y posteriormente escribir entre corchetes el índice que hemos asignado a dicho elemento.

Tenemos la posibilidad de utilizar cualquier tipo de dato para especificar un índice. Por defecto es un
número, pero también podemos poner cadenas de texto, como en el ejemplo anterior e incluso
variables. Escribe este código y comprueba el resultado en tu servidor.

<?php //Ejemplo arrays aprenderaprogramar.com

$indice = 'coche';

$colores_vehiculos = array(

$indice => 'Rojo',


'moto' => 'verde',
'avion' => 'amarillo'

);

echo
$colores_vehiculos[$indice];

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

?>

Como ves en este ejemplo hemos usado una variable tipo cadena de texto como índice de un array.

Finalmente, los arrays asociativos también pueden usarse en la forma de declaración habitual
escribiendo $nombreVariable [indice] = valor. Escribe este ejemplo de código, guárdalo con un nombre
de archivo y súbelo al servidor.

<?php //Ejemplo arrays aprenderaprogramar.com

$colores_vehiculos ['coche'] = 'Rojo';


$colores_vehiculos ['moto'] = 'verde'; $colores_vehiculos ['avion'] =
'amarillo'; echo $colores_vehiculos['moto'];

?>

Comprobarás que en la pantalla del navegador se muestra el texto “verde”.


EJERCICIO

Crea el código PHP de dos archivos que den respuesta al siguiente planteamiento:

Queremos almacenar en una matriz el número de alumnos con el que cuenta una academia, ordenados
en función del nivel y del idioma que se estudia. Tendremos 3 niveles: Nivel básico, medio y de
perfeccionamiento, que se corresponden con las filas de la matriz, y 4 idiomas (Inglés, Francés, Alemán
y Ruso), que se corresponden con las columnas de la matriz. Se pide realizar la declaración de la matriz
y asignarle los valores indicados en la siguiente imagen cumpliendo con:

1 14 8 3

6 19 7 2

3 13 4 1

a) Con una sintaxis ejemplo de uso de arrays asociativos donde el primer índice del array (niveles)
es un número y el segundo un texto indicativo del idioma. Se debe mostrar por pantalla los alumnos

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

que existen en cada nivel e idioma. Ejemplo: numeroAlumnos[0]['frances'] representará el número de


alumnos que existen en el nivel básico, idioma francés.

b) Con una sintaxis ejemplo de uso de arrays asociativos donde tanto el primer índice del array
(niveles) como el segundo (idiomas) sea un texto indicativo. Se debe mostrar por pantalla los alumnos
que existen en cada nivel e idioma. Ejemplo: numeroAlumnos['basico']['frances'] representará el
número de alumnos que existen en el nivel básico, idioma francés.

Nota: en ambos casos debe mostrarse por pantalla que el número de alumnos en el nivel básico, idioma
inglés, hay 1 alumno; en el nivel básico, idioma francés, hay 14 alumnos, etc.

FUNCIÓN COUNT

Antes de poder recorrer un array, debemos saber cuál es su tamaño para poder recorrerlo.
Supongamos que un array tiene tres elementos: tenemos que dar una instrucción para que se extraiga
el valor asociado a cada uno de los elementos del array, que normalmente será algo similar a “para
cada uno de los tres elementos del array, extraer su valor”.

Sin embargo, si el array tiene 24 elementos, la instrucción será del tipo “para cada uno de los
veinticuatro elementos del array, extraer su valor”. Como vemos, muchas veces nos es necesario saber
el número de elementos que hay en el array para poder recorrerlo, y para ello nos va a resultar útil la
función count.

La función count devuelve el número de elementos que hay en el array. Es decir para un array de 4
elementos, la función count devolverá el número 4. Recuerda que si se trata de valores numéricos de
índices, los cuatro valores numéricos serán normalmente 0, 1, 2 y 3 en lugar de 1, 2, 3 y 4.

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo count aprenderaprogramar.com

$estacion[0] = "Primavera";
$estacion[1] = "Verano";

$estacion[2] = "Otoño";
$estacion[3] = "Invierno";

echo

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

count($estacion);

?>

Puedes comprobar que se muestra el número 4 porque el array tiene 4 elementos.

RECORRIDOS DE ARRAYS UNIDIMENSIONALES

Ahora que ya conocemos qué son los arrays, debemos conocer cómo recorrerlos para extraer o
comprobar los valores que contiene cada uno de los elementos del array. Esta es una tarea habitual en
programación que en general va a tener gran utilidad para nosotros.

Lo arrays se pueden recorrer de muchas formas, nosotros no las explicaremos todas. Trataremos de ver
en principio las más habituales y sencillas.

Recorrido de arrays mediante for

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo3.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo arrays aprenderaprogramar.com

$array[0] = "Uno";
$array[1] = "Dos";

$array[2] = "Tres";

$array[3] = "Cuatro";
$array[4] = "Cinco";

$array[5] = "Seis";

$array[6] = "Siete";

$array[7] = "Ocho";
for($i=0;$i<count($array);$i++)
{

echo $array[$i].'<br />';

}
?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Como ejercicio y teniendo en cuenta lo explicado en las entregas anteriores sobre los distintos tipos de
instrucciones de repetición, escribe el código que dé lugar al mismo resultado que el ejemplo anterior
pero usando la instrucción while y comprueba que obtienes el mismo resultado.
CONOCER COUNT

Ejecuta este código:

<?php //Ejemplo arrays aprenderaprogramar.com

$array[5] = "Uno";

$array[6] = "Dos";
$array[7] = "Tres";
$array[8] = "Cuatro";

$array[9] = "Cinco";

$array[10] = "Seis";

$array[11] = "Siete"; $array[12] = "Ocho"; echo 'Elementos


inicializados en el array: '.count($array).'<br/>';
for($i=0;$i<count($array);$i++) {

echo $array[$i].'...<br/>';

} echo $array[15].'aaa<br/>'; echo


count($otroArray[14][33]).' elementos<br/>';

?>

El resultado obtenido será el siguiente:

Elementos inicializados en el array: 8


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

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Uno...
Dos...
Tres... aaa
0 elementos

Analicemos lo que está ocurriendo. El array $array no tiene definidos cuáles son sus elementos de
índice 0, 1, 2, 3 y 4. En cambio sí tiene definidos valores para sus elementos de índice 5, 6, 7, 8, 9, 10, 11
y 12. Hay 8 elementos con valores definidos pero sus índices no son 0, 1, 2, 3, 4, 5, 6, 7 como es lo
habitual, sino que son 5, 6, 7, 8, 9, 10, 11 y 12.

Al ejecutar el for comenzando con un valor de la variable de control igual a cero, se ejecuta echo
$array[0].’…<br/>’; Al no tener un valor asignado, $array[0] devuelve vacío y simplemente se muestran
tres puntos por pantalla. Lo mismo ocurre con los índices 1, 2, 3, 4 y sólo es al llegar al índice cinco
cuando se muestran valores por pantalla.
Sin embargo, sólo se mostrarán los elementos con índice 5 a 8 del array, quedando el resto de
elementos sin ser mostrado.

Además comprobamos que podemos invocar a elementos del array por encima del índice máximo
definido sin obtener error, y que incluso podemos invocar a un nombre de array que no hemos
declarado ni utilizado, con cualquier índice, sin obtener error.

En este ejemplo podríamos mostrar todos los elementos del array realizando un “pequeño cambio”:

for($i=5;$i<count($array)+5;$i++)

Sin embargo esta solución no es satisfactoria porque no la podemos aplicar como solución para
recorrer cualquier array.

A modo de resumen diremos lo siguiente:

count nos devuelve el número de elementos inicializados del array.

Si los índices del array no son secuencialmente 0, 1, 2, 3 , etc. el recorrido con un for tradicional puede
resultar no satisfactorio, por lo que habremos de pensar en otras alternativas para recorrer el array.
Hablaremos de esto más adelante.

COUNT CON ARRAYS MULTIDIMENSIONALES

En el caso de arrays de más de una dimensión, la función count devuelve el número de elementos que
hay en un nivel del array definido y para un índice definido. Llamamos nivel del array a cada uno de los
corchetes existentes en el array. Por ejemplo si hemos definido $ejem[2][5][1][6][2] = 33; y

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

$ejem[2][5][3][1][9] = 55; decimos que en el primer nivel del array, correspondiente al primer índice,
hay un solo índice: el 2. En el segundo nivel del array para índice 2 hay un solo índice: el 5. En el tercer
nivel del array con índice 1 hay un solo índice: el 6. En el tercer nivel del array con índice 3 hay un solo
índice: el 1. En el cuarto nivel del array con índice 6 hay un solo índice: el 2. En el cuarto nivel del array
con índice 1 hay un solo indice: el 9.

Con un ejemplo comprenderemos mejor el funcionamiento de count en arrays multidimensionales.

Ejecuta este código:

<?php //Ejemplo arrays aprenderaprogramar.com

$miEspArray[6]=99; $miEspArray[22]=87; echo 'Numero de elementos de


miEspArray es '.count($miEspArray).'<br/>'; echo "--------------------";
$array2[0][0][0] = "Prueba1";

$array2[0][0][1] = "Prueba2";
$array2[0][0][2] = "Prueba3";

$array2[0][1][0] = "Prueba4";

$array2[0][1][1] = "Prueba5";

$array2[1][0][1] = "Prueba6";

$array2[1][1][2] = "Prueba7";

$array2[1][2][1] = "Prueba8";

$array2[2][0][0] = "Prueba9";

$array2[2][0][1] = "Prueba10"; $array2[5][0][1] = "Prueba11"; echo '<br/>Numero de indices en


el primer nivel: '.count($array2); echo '<br/>Numero de indices en el segundo nivel de
array[0]: '.count($array2[0]); echo '<br/>Numero de indices en el segundo nivel de array[1]:
'.count($array2[1]); echo '<br/>Numero de indices en el segundo nivel de array[2]:
'.count($array2[2]); echo '<br/>Numero de indices en el segundo nivel de array[3]:
'.count($array2[3]); echo '<br/>Numero de indices en el segundo nivel de array[5]:
'.count($array2[5]); echo '<br/>Numero de indices en el tercer nivel de array[0][0]:
'.count($array2[0][0]); echo '<br/>Numero de indices en el tercer nivel de array[0][1]:
'.count($array2[0][1]); echo '<br/>Numero de indices en el tercer nivel de array[1][0]:
'.count($array2[1][0]); echo '<br/>Numero de indices en el tercer nivel de array[1][1]:
'.count($array2[1][1]); echo '<br/>Numero de indices en el tercer nivel de array[1][2]:
'.count($array2[0][0]); echo '<br/>Numero de indices en el tercer nivel de array[2][0]:
'.count($array2[2][0]); echo '<br/>Numero de indices en el tercer nivel de array[5][0]:
'.count($array2[5][0]); ?>

El resultado obtenido será el siguiente:

Numero de elementos de miEspArray es 2


--------------------
Numero de indices en el primer nivel: 4

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Numero de indices en el segundo nivel de array[0]: 2


Numero de indices en el segundo nivel de array[1]: 3
Numero de indices en el segundo nivel de array[2]: 1
Numero de indices en el segundo nivel de array[3]: 0
Numero de indices en el segundo nivel de array[5]: 1
Numero de indices en el tercer nivel de array[0][0]: 3
Numero de indices en el tercer nivel de array[0][1]: 2
Numero de indices en el tercer nivel de array[1][0]: 1
Numero de indices en el tercer nivel de array[1][1]: 1
Numero de indices en el tercer nivel de array[1][2]: 3
Numero de indices en el tercer nivel de array[2][0]: 2 Numero
de indices en el tercer nivel de array[5][0]: 1

Fíjate que por ejemplo count($array2[0][1]) nos devuelve el número de elementos existentes de tipo
$array2[0][1][x] donde x es cualquier índice, es decir, el número de elementos de tercer nivel del array
para los índices iniciales 0 y 1.
RECORRIDO DE ARRAYS MULTIDIMENSIONALES

Para recorrer un array multidimensional, tendremos que ir anidando tantas estructuras repetitivas
como dimensiones tenga el array. Con un ejemplo se verá todo mucho más claro.

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo4.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo arrays aprenderaprogramar.com

$array[0][0] = "Uno";
$array[0][1] = "Dos";
$array[1][0] = "Tres"; $array[1][1]
= "Cuatro";
for($i=0;$i<count($array);$i++) {

for($j=0;$j<count($array[$i]);$j++) {
echo $array[$i][$j].'<br />';

} } echo "-----------
---------"; $array2[0][0][0]
= "Cinco";

$array2[0][0][1] = "Seis";
$array2[0][0][2] = "Siete";

$array2[0][1][0] = "Ocho"; $array2[0][1][1]


= "Nueve"; for($i=0;$i<count($array);$i++) {

for($j=0;$j<count($array[$i]);$j++) {

for($k=0;$k<count($array[$i][$j]);$k++) {
echo $array[$i][$j][$k].'<br />';

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

}
}

}
?>

Fíjate que para poder obtener el resultado deseado los elementos de los arrays deben estar definidos
usando índices que comiencen en 0 y sean progresivamente 1, 2, 3, 4… Si no fuera así estos bucles, al
estar definidos partiendo de 0, no funcionarían.
Fíjate también en la lógica de los bucles, por ejemplo el primer bucle lo podríamos leer así: para cada
elemento desde 0 hasta el número de elementos de primer nivel, y para cada elemento desde 0 hasta
el número de elementos de segundo nivel con el índice extraido previamente, mostrar el contenido del
array. Si por ejemplo en el primer nivel tenemos dos índices que son 0 y 1, comenzaremos con el índice
0 y se verá para el índice 0 cuántos índices hay en el segundo nivel (son 2). De este modo lo primero
que se mostrará son los índices [0][0] y [0][1]. Una vez completado el recorrido del índice 0 se pasa al
índice 1 y se sigue el mismo proceso.

Nota: en algunas versiones o situaciones pedir un elemento no definido de un array puede dar lugar a
que aparezca un error. Por ejemplo, si el elemento $array[2][3] no existe e hiciéramos una llamada a
ese elemento como echo $array[2][3] podría aparecer un error tipo “undefined offset…” similar a éste:

Recorrido de arrays mediante foreach

PHP incorpora una forma “cómoda” para poder recorrer todos los elementos de un array. Esta forma se
basa en el uso de la instrucción foreach.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Este tipo de recorridos se suele usar cuando obtenemos datos de una base de datos.

El tipo de array que nos suele devolver una consulta a la base de datos es similar al siguiente:

$datosArray = array( array('nombre' => 'Antonio', 'apellidos' => 'Gómez Gómez', 'telefono' =>
'675832145'), array('nombre' => 'Pedro', 'apellidos' => 'Guillén Gastón', 'telefono' =>
'674562178'), array('nombre' => 'Dolores', 'apellidos' => 'Candela Quema', 'telefono' =>
'689765432'),
.
.
.
.
array('nombre' => 'Rubén', 'apellidos' => 'Guardia Jurado', 'telefono' => '654213896'),
);

Recuerda que la anterior forma de expresión es equivalente a esta otra:


$datosArray[0] ['nombre'] = 'Antonio'
$datosArray[0] ['apellidos'] = 'Gómez Gómez'
$datosArray[0] ['telefono'] = '675832145'
$datosArray[1] ['nombre'] = 'Pedro'
$datosArray[1] ['apellidos'] = 'Guillén Gastón'
$datosArray[1] ['telefono'] = '674562178'
$datosArray[2] ['nombre'] = 'Dolores'
$datosArray[2] ['apellidos'] = 'Candela Quema'
$datosArray[2] ['telefono'] = '689765432'

La diferencia está en que en el primer caso los índices del array son en algunos casos cadenas (se trata
de arrays asociativos) mientras que en el segundo caso los índices del array son números (se trata de
arrays tradicionales). En el primer caso los valores 0, 1 y 2 son asignados automáticamente por php
porque no se ha especificado otra cosa.

Para recorrer arrays de forma cómoda se usa la instrucción foreach.

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo5.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo foreach aprenderaprogramar.com

$rows = array(

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

array(
'nombre' => 'Antonio', 'apellidos' => 'Gómez Gómez', 'telefono' => '675832145'),

array(
'nombre' => 'Pedro', 'apellidos' => 'Guillén Gastón', 'telefono' => '674562178'),

array(

'nombre' => 'Dolores', 'apellidos' => 'Candela Quema', 'telefono' => '689765432'),
array(

'nombre' => 'Rubén', 'apellidos' => 'Guardia Jurado', 'telefono' => '654213896')
); foreach($rows as $valor) { echo 'Nombre: ' .
$valor['nombre'] . '<br />';

?>

Como podemos observar, vamos a ir recorriendo todas las filas y mostrando el nombre.
$valor es una variable temporal que sólo existe durante la ejecución de la instrucción foreach, y esta
variable va tomando en cada repetición o iteración el valor del siguiente elemento dentro del array
principal. En este caso, el elemento que hay dentro del array es otro array. A su vez, indicamos que para
cada uno de los arrays extraidos en el recorrido, se nos muestre el item del array cuyo índice es
‘nombre’.

En este caso podríamos obtener el mismo resultado usando este código:

echo $rows[0]['nombre']. '<br />';


echo $rows[1]['nombre']. '<br />';
echo $rows[2]['nombre']. '<br />';
echo $rows[3]['nombre']. '<br />';

Pero piensa que para recorrer un array de varios cientos de elementos no resultará práctico escribirlos
uno a uno…

Como ejercicio escribe el código que muestre los nombres y apellidos del array anterior.

Si te resulta un poco complicado el ejercicio anterior, prueba con este código que es más sencillo, y
luego vuelve a revisar el código anterior.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

<?php

$estacion[0] = "Primavera";

$estacion[1] = "Verano";

$estacion[2] = "Otoño";

$estacion[3] = "Invierno";

foreach($estacion as $valor) { echo '&nbsp; &nbsp; &nbsp;'.


$valor.'<br/>';

?>

El resultado que obtenemos es similar al que se ve en la siguiente imagen. Como puedes comprobar, la
variable $valor (variable transitoria) va tomando en cada repetición del bucle el contenido de los
elementos o items del array que estamos recorriendo.

EJERCICIO 1

Crea un array con nombre paisLimitrofe donde los elementos del array serán cadenas de texto con los
países limítrofes (con frontera) con el tuyo. Por ejemplo si vivimos en Perú tenemos como países
limítrofes Ecuador, Colombia, Brasil, Bolivia y Chile.

a) Utilizando un bucle for, muestra por pantalla los países limítrofes.

b) Utilizando un bucle for each, muestra por pantalla los países limítrofes.

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO 2

Escribe y ejecuta el siguiente código y responde a las siguientes preguntas:

$equipo = array(portero=>'Casillas', defensa=>'Hierro', medio=>'Ces', delantero=>'Ronaldo');

foreach($equipo as $posicion=>$jugador) {
echo "El " . $posicion . " es " . $jugador;

a) ¿$equipo es una variable normal, un array tradicional ó un array asociativo?

b) ¿portero es un índice de un array, un contenido de un elemento de un array o un contenido de una


variable simple?

c) ¿Al ejecutar el código obtienes un resultado por pantalla u obtienes un error? ¿Qué es lo que hace el
código?

EJERCICIO 3

Supón que quieres representar lo siguiente: hay 2 equipos españoles, en el primero el portero es Frank,
el defensa Pepe, el medio Luis y el delantero Raul. En el segundo, el portero es Tiger, el defensa
Mourin, el medio Katz y el delantero Alberto. Hay 1 equipo mexicano, donde el portero es Suarez, el
defensa Koltz, el medio Fernandez y el delantero Ramirez. Hay 2 equipos argentinos. En el primero el
portero es Higuita, el defensa Mel, el medio Rubens y el delantero Messi. En el segundo el portero es
Kostenmeiner, el defensa Lenkins, el medio Marash y el delantero Juanes.

a) Representa los datos usando un array de tres dimensiones con índices numéricos donde el
primer índice indica el país, el segundo el equipo y el tercero la posición del jugador. Presenta la
información del país, equipo, posiciones y jugadores de cada equipo usando un bucle for.

b) Representa los datos usando un array de tres dimensiones con índices numéricos donde el
primer índice indica el país, el segundo el equipo y el tercero la posición del jugador. Presenta la
información del país, equipo, posiciones y jugadores de cada equipo usando un bucle for each.

c) Representa los datos usando arrays arrays asociativos donde el primer índice indica el país, el
segundo el equipo y el tercero la posición del jugador (un ejemplo de cómo declarar un elemento sería
por ejemplo: $equipos['Mexico']['Equipo1']['defensa']="koltz"; ). A continuación usando un bucle
foreach recorre los elementos del array mostrando la información del país, equipo, posiciones y
jugadores de cada equipo.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

FUNCIONES EN PHP

Una de las herramientas más importantes en cualquier lenguaje de programación son las funciones.
Una función es un conjunto de instrucciones que a lo largo del programa van a ser ejecutadas multitud
de veces. Es por ello, que este conjunto de instrucciones se agrupan en una función. Las funciones
pueden ser llamadas y ejecutadas desde cualquier punto del programa.

Además, una función puede recibir parámetros externos de los cuales dependa el resultado de dicha
función. Es decir, según el parámetro o parámetros con los que se invoque a la función, ésta devolverá
un resultado u otro.

Las funciones deben estar definidas antes de realizar la llamada a la función (como es lógico).

Sintaxis general para declarar una función en PHP:

function nombre (parámetro1, parámetro2, …, parámetroN) {


instrucción1 instrucción2
.
.
.
instrucciónN
}

Para llamar (hacer que se ejecute) la función usaremos esta sintaxis: nombre(par1, par2, par3, …, parN);
donde par1, par2, par3, …, parN son los parámetros (información) que le pasamos a la función. Una
función puede necesitar de ningún, uno o varios parámetros para ejecutarse.

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo1.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo funciones aprenderaprogramar.com

//Declaración de funciones function mostrarTexto($texto) {


echo "<strong>El texto a mostrar es el siguiente: </strong>";

echo $texto;
}

//Fin de la declaración de funciones

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

mostrarTexto("Me gusta mucho la web de


aprenderaprogramar.com");

?>

En este ejemplo hemos visto cómo hemos definido una función cuyo nombre es mostrarTexto. Esta
función espera un parámetro cuando es invocada (parámetro que se ha denominado $texto). Una vez
se ejecuta, la función ejecuta una serie de instrucciones y devuelve el control al punto desde el que fue
invocada.

Podemos hacer varios comentarios:

a) En algunos lenguajes de programación se distinguen los términos “procedimiento” cuando un


fragmento de código de este tipo ejecuta una serie de instrucciones sin devolver un valor,
frente al término “función” que se aplica cuando un fragmento de código de este tipo ejecuta
una serie de instrucciones y devuelve un valor. En PHP no se distingue entre una cosa y otra,
simplemente se habla de “función” en general.

b) En algunos lenguajes de programación como Java el tipado o especificación de tipos que se van
a recibir por parte de la función (o el tipo de dato que va a devolver la función) es mucho más
fuerte. Si te fijas, la función mostrarTexto recibe un parámetro denominado $texto, pero en
ningún lado se especifica si dicho parámetro es tipo integer, float, double ó string. ¿De qué tipo
es? Realmente no lo sabemos: el intérprete PHP se encarga de automáticamente reconocer el
tipo que se le pasa a la función. Además, intentará ejecutar el código sea como sea el tipo del
parámetro pasado. Si le resultara imposible ejecutar el código, devolvería un error.

La utilidad fundamental de las funciones es no tener que repetir partes de código comunes, que sería
necesario repetir varias veces. Esas partes de código comunes se agrupan en funciones y simplemente
llamaremos a la función cada vez que necesitamos ejecutar ese código. De esta manera, evitamos la
repetición que hace más largo y difícil de entender un programa o desarrollo web.

También podemos crear funciones que devuelvan datos (valores concretos). Estas funciones, que
podríamos denominar “funciones en sentido estricto”, son aquellas que ejecutan un código y como
punto final de dicho código incluyen una sentencia return seguida del resultado de la función. La
sentencia return indica que cuando se alcanza se ha llegado al final de la función y se devuelve como
resultado de la misma el contenido especificado a continuación del return. Después de un return puede
devolverse una variable, un número, una cadena de texto, etc.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Por ejemplo return "No dispone de permisos" significa que la función devuelve esta cadena de texto.
Otro ejemplo: return $calculo; indica que la función devuelve el contenido que se encuentre
almacenado en la variable $calculo. Otro ejemplo: return "Lo sentimos ".$usuario." pero no dispone de
permisos. Para solicitar información puede escribir a ".$emailAdministrador; haría que la función
devuelva una cadena de texto donde intervienen diversas variables.
Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php // Ejemplo funciones aprenderaprogramar.com


function operaciones($n1, $n2, $operacion) {

$resultado = 0;
if($operacion == "Sumar") {

$resultado = $n1 + $n2;

}else if($operacion == "Restar") {

$resultado = $n1 - $n2;

}else if($operacion == "Multiplicar") {


$resultado = $n1 * $n2;
}

return $resultado; // Devolver el resultado

// Llamar a la función operaciones


$r = operaciones(5, 7, "Sumar");
echo $r . "<br>";

// O podemos imprimir directamente echo


operaciones(15, 8, "Restar");

?>

Fíjate que a diferencia de la función mostrarTexto, la función operaciones nos devuelve un valor
concreto, de forma que se sustituye su invocación allí donde aparece por el valor que devuelve. Así, la
instrucción echo operaciones(15, 8, "Restar"); equivale a lo que sería escribir echo <<aquí el valor
devuelto por la función operaciones invocada con los parámetros 15, 8 y “Restar” >>, es decir, sería lo
mismo que escribir echo (15-8); ó echo 7;

Además, fíjate que la función mostrarTexto requería un parámetro, mientras que la función
operaciones requiere tres parámetros. Si invocas la función sin pasarle el número de parámetros
adecuado obtendrás un error del tipo <<Warning: Missing argument 3 for operaciones()>>.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Por último, tener en cuenta que una función puede ser invocada sin parámetros.

<?php //Ejemplo funciones aprenderaprogramar.com function


mostrarTextoError { echo "<strong>Se ha producido un
error </strong>";

// Aquí pueden venir varias líneas de instrucciones

}
?>
Esta función carece de parámetros. Para invocarla escribiríamos mostrarTextoError(). Cada vez que
realizáramos la invocación se ejecutaría el código dentro de la función. Esta función podemos decir que
es “tipo procedimiento” porque no devuelve un resultado (no tiene sentencia return).

EJERCICIO

Crear las siguientes funciones en PHP y código para comprobar su funcionamiento:

a) Una función que reciba cinco números enteros como parámetros y muestre por pantalla el
resultado de sumar los cinco números (tipo procedimiento, no hay valor devuelto).

b) Una función que reciba cinco números enteros como parámetros y devuelva el resultado de
sumar los cinco números (tipo función, hay un valor devuelto). Asigna el resultado de una invocación a
la función con los números 2, 5, 1, 8, 10 a una variable de nombre $tmp y muestra por pantalla el valor
de la variable.

c) Una función que reciba como parámetros el valor del radio de la base y la altura de un cilindro y
devuelva el volumen del cilindro, teniendo en cuenta que el volumen de un cilindro se calcula como
Volumen = númeroPi * radio * radio * Altura siendo númeroPi = 3.1416 aproximadamente.

FUNCIONES BÁSICAS EN PHP

PHP además de permitirnos definir nuestras propias funciones, dispone de una gran cantidad de
funciones propias del lenguaje a las que se denomina “funciones nativas” o “funciones del core o
núcleo php”. Ya conocemos algunas de ellas como strlen y substr. Vamos a ver otras funciones muy
usadas relacionadas con el manejo de cadenas de caracteres (texto).

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

FUNCIÓN STR_REPLACE

Esta función se utiliza para reemplazar caracteres dentro de una cadena de caracteres. Es decir, nos
permite definir una cadena que debe ser reemplazada con otra dentro de una frase o palabra. La
función devuelve la frase original con todas las apariciones de la cadena a buscar reemplazadas con una
cadena de reemplazo especificada.

La sintaxis básica habitual para esta función es:

str_replace ("cadena a buscar", "cadena de reemplazo", $variableOFraseOriginal)

Veámoslo con un ejemplo para entenderla mejor. Escribe este código y guárdalo con un nombre de
archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo funciones básicas aprenderaprogramar.com

$texto = "Donde dije digo digo Diego."; echo


str_replace("Diego", "recortes", $texto); echo
"<br />"; echo $texto;

?>

Como podemos observar, en la cadena de caracteres $texto, hemos sustituido la palabra o conjunto de
caracteres "Diego" por "Recortes" y hemos devuelto el resultado sin modificar la variable de entrada.
Fíjate que en el código que hemos escrito no hemos reemplazado el valor de la variable $texto por un
nuevo contenido. Unicamente hemos impreso por pantalla el resultado que nos devuelve la función. Si
hubiéramos escrito lo siguiente sí hubiéramos cambiado el contenido de la variable: $texto =
str_replace("Diego", "recortes", $texto);

La función permite pasar opcionalmente un parámetro adicional que permite saber a posteriori el
número de reemplazos que se han realizado:

str_replace ("cadena a buscar", "cadena de reemplazo", $variableOFraseOriginal, $numReemplazos)

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Veámoslo con un ejemplo para entenderlo mejor:

<?php //Ejemplo funciones básicas aprenderaprogramar.com $texto


= "El dijo: es tarde ahora, pero es mejor si hay tres"; echo
str_replace("es", "**", $texto, $reemplazos ); echo '<br/>Se
han realizado: '.$reemplazos. ' reemplazos<br/>'; echo $texto;

?>

El resultado esperado es:

El dijo: ** tarde ahora, pero ** mejor si hay tr**


Se han realizado: 3 reemplazos
El dijo: es tarde ahora, pero es mejor si hay tres

Fíjate que se reemplaza la cadena "es" indistintamente según esté separada por espacios o dentro de
una palabra. Si sólo quisiéramos reemplazar la cadena si está separada por espacios podríamos indicar
los espacios dentro de la cadena: echo str_replace(" es ", " ** ", $texto, $reemplazos );

Aquí hemos indicado que se reemplace espacio-e-s-espacio con espacio-*-*-espacio.

Si fuera necesario establecer reglas complejas de reemplazo, por ejemplo “reemplazar todas las
palabras que empiecen por a y terminen por a con otra palabra, tendríamos que usar lo que se
denominan expresiones regulares, pero no vamos a estudiar ahora la forma de definir y emplear
expresiones regulares con PHP.

FUNCIONES STRTOLOWER Y STRTOUPPER

Las funciones strtolower y strtoupper transforman una cadena de caracteres en la misma cadena en
minúsculas o mayúsculas respectivamente. Escribe ahora este código y guárdalo con un nombre de
archivo como ejemplo4.php. A continuación, sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo funciones básicas aprenderaprogramar.com

$cadena = "EstO eS UnA cadeNA de CARActeres";


echo strtolower($cadena); echo "<br />"; echo
strtoupper($cadena);

?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Como vemos el comportamiento de las funciones es sencillo. Simplemente devuelven la cadena de


caracteres pasada como argumento en minúsculas o mayúsculas respectivamente.

Ten en cuenta que muchas veces para realizar comparaciones o para almacenar datos será interesante
uniformizar la información que se almacena. Por ejemplo, si se pide una ciudad, un usuario puede
introducir Buenos Aires, otro Buenos aires, otro BUENOS AIRES. Si usamos estas funciones, podemos
uniformizar y hacer que siempre se muestren o guarden de una misma manera, lo cual facilitará el
trabajo posterior.

FUNCIÓN COUNT_CHARS Y SUBSTR_COUNT

La función count_chars sirve para contar el número de apariciones de un carácter en una cadena.
La sintaxis a emplear es la siguiente:

count_chars ( $cadena, $opcModo)

$opcModo es un entero opcional. Si no se especifica vale 0 por defecto. Sus valores admitidos son:

0: se devolverá un array con el valor numérico ascii como índice y la frecuencia de cada carácter ascii
como valor.

1: se devolverá un array con el valor numérico ascii como índice y la frecuencia de cada carácter que
aparezca al menos una vez como valor.

2: se devolverá un array de caracteres que no aparecen en la cadena, con el valor numérico ascii como
índice y la frecuencia de cada carácter ascii que no aparece como valor.

3: devuelve una cadena que contiene todos los caracteres únicos.

4: devuelve una cadena que contiene todos los caracteres no utilizados.

Nota: los códigos numéricos ascii van de 0 a 255 y no todos son visibles por pantalla.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Ejemplo:

<?php //Ejemplo count_chars aprenderaprogramar.com


$cadena = 'es jueves';
$miArray = count_chars ( $cadena, 1); foreach ($miArray as $indiceNum =>
$veces) { echo 'Letra: '.chr($indiceNum).' , encontrada '. $veces.'
veces<br/>';

}
?>

El resultado esperado es: Letra: , encontrada 1 veces. Letra: e , encontrada 3 veces. Letra: j , encontrada
1 veces. Letra: s , encontrada 2 veces. Letra: u , encontrada 1 veces. Letra: v , encontrada 1 veces

Otra función útil es substr_count($cadena, $subcadena). Esta función nos devuelve el número de veces
que aparece la subcadena dentro de la cadena. Por ejemplo:

<meta charset="utf-8">
<?php //Ejemplo curso PHP aprenderaprogramar.com

$cadena1 = 'Pedro Juan Luis Marco Luis Pedro Juan Luis Pedro';
$cadena2 = 'Luis'; echo 'Luis aparece '.substr_count($cadena1,
$cadena2). ' veces' ?>

El resultado esperado es <<Luis aparece 3 veces>>

OTRAS FUNCIONES PARA CADENAS DE TEXTO

PHP define numerosas funciones nativas para el manejo de cadenas de texto. Vamos a ver algunas:

FUNCIÓN UTILIDAD EJEMPLOS aprenderaprogramar.com

Devuelve la longitud o número de caracteres de la


strlen($cadena) Ver entregas anteriores del curso
cadena

Si no se especifica $opcNumCar devuelve la subcadena


substr ($cadena, entre la posición $inicio y el fin de cadena siendo la
$inicio, posición inicial la cero. Si se especifica $opcNumCar Ver entregas anteriores del curso
$opcNumCar) extrae $opcNumCar caracteres desde la posición $inicio
(inclusive).

FUNCIÓN UTILIDAD EJEMPLOS


aprenderaprogramar.com

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

ucfirst($cadena); Devuelve la cadena con la primera letra en $saludo = "hoy es viernes";


mayúsculas ucfirst($saludo);

//Hoy es viernes
$saludo = "hoy es viernes";
Devuelve la cadena con cada una de sus palabras con echo ucwords($saludo);
ucwords($cadena);
la primera letra en mayúsculas
//Hoy Es Viernes

Devuelve la posición en que comienza la subcadena a


strpos ($cadena $saludo = "hoy es viernes";
, partir de la posición inicial (cero) si no se especifica
$opcPosInicio, o a partir de la posición $opcPosInicio echo strpos($saludo, "es");
$subCadena,
si se especifica. Si no se encuentra la subcadena
$opcPosInicio ) //4
devuelve false.

$saludo = "*** hoy es viernes ***";


Si no se especifica $opcCaracteres, devuelve la echo trim($saludo, "*");
cadena eliminando espacios en blanco, tabuladores,
trim ($cadena,
saltos de línea y retornos de carro del principio y final //hoy es viernes
$opcCaracteres)
de la cadena. Si se especifica $opcCaracteres, se Nota: puede no funcionar como se espera
eliminan los caracteres especificados. debido a juego de caracteres, configuración
local y configuración del servidor.
$saludo = "*** hoy es viernes ***";
Si no se especifica $opcCaracteres, devuelve la echo ltrim($saludo, "*");
cadena eliminando espacios en blanco, tabuladores,
ltrim ($cadena,
saltos de línea y retornos de carro del principio de la //hoy es viernes ***
$opcCaracteres)
cadena. Si se especifica $opcCaracteres, se eliminan Nota: puede no funcionar como se espera
los caracteres especificados. debido a juego de caracteres, configuración
local y configuración del servidor.
$saludo = "*** hoy es viernes ***";
Si no se especifica $opcCaracteres, devuelve la echo rtrim($saludo, "*");
cadena eliminando espacios en blanco, tabuladores,
rtrim ($cadena,
saltos de línea y retornos de carro del final de la //*** hoy es viernes
$opcCaracteres)
cadena. Si se especifica $opcCaracteres, se eliminan Nota: puede no funcionar como se espera
los caracteres especificados. debido a juego de caracteres, configuración
local y configuración del servidor.

chop Igual que rtrim

$saludo = 'hola ';


str_repeat($cadena, Devuelve la cadena repetida $numVeces siendo éste str_repeat($saludo, 3);
$numVeces) un número entero.
//hola hola hola

Devuelve la subcadena desde la primera aparición de


$saludo = "hoy es viernes";
strstr ($cadena, $desde (incluida) hasta el final si no se especifica
$desde, opcBoolean ó este es false. Si $opcBoolean es true echo strstr($saludo, "es", false);
$opcBoolean) devuelve la subcadena desde el inicio hasta la
//es viernes
primera aparición de $desde (excluida).

strchr Igual que strstr

Devuelve el carácter correspondiente al código echo chr(65). ' es la salida';


chr ( $ascii )
numérico entero $ascii según el código ascii // A es la salida

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Existen más funciones para cadenas en PHP pero los programadores no las suelen conocer todas, ya
que algunas son para tareas muy específicas. No te preocupes por memorizar las funciones ni por
conocerlas todas, simplemente sé consciente de su existencia y aprende a buscarlas cuando te resulten
necearias. Si en algún momento necesitas realizar tareas muy específicas con cadenas en PHP puedes
conocer todas las funciones existentes sobre cadenas acudiendo a la documentación oficial de PHP
sobre funciones de cadenas, disponible en http://php.net/manual/es/ref.strings.php

EJERCICIO

Crear archivos php que ejecuten la tarea indicada:

a) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso",
indicar cuántas veces aparece cada vocal usando funciones para cadenas PHP.

b) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso",
indicar qué consonantes son las que aparecen y cuántas veces aparecen usando funciones para cadenas
PHP.

c) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso",
mostrar la cadena donde todas las a hayan sido sustituídas por el símbolo *. Por ejemplo en lugar de
<<El abecedario…>> se habrá de mostrar <<El *beced*rio…>>

d) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso",
mostrar la subcadena desde la primera aparición de <<completo>> excluyendo completo, es decir,
deberá mostrarse << es algo largo y detallarlo exhaustivamente es costoso>>. Para ello usa una o varias
funciones para cadenas PHP.

COMPARACIÓN DE CADENAS PHP

Cuando tengamos que comparar cadenas en PHP, se recomienda hacer uso de las funciones nativas del
lenguaje previstas para ello. Si se tratan de hacer comparaciones usando el operador == se pueden
obtener resultados extraños. Usar el operador === puede dar mejores resultados, pero en general
trataremos de usar funciones como strcmp previstas específicamente para esto.

FUNCIÓN STRCMP

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Esta función realiza la comparación segura de Strings y devuelve un valor numérico. Su sintaxis habitual
es la siguiente:

if (strcmp ($cadena1 , $cadena2 ) == 0) { … }

strcmp es sensible a mayúsculas y minúsculas, es decir, no considera igual Martes que martes.
La función devuelve un valor numérico que puede ser:
0: cuando ambas cadenas son iguales. En caso contrario el valor devuelto es distinto de cero, por lo que
si queremos saber si dos cadenas son distintas podemos usar if (strcmp ($cadena1 , $cadena2 ) !== 0) { … }
Un valor numérico menor que 0 si la cadena 1 es menor que la cadena 2
Un valor numérico mayor que cero si la cadena 2 es mayor que la cadena 1.

¿Qué significa que una cadena sea mayor que otra? La comparación se hace en función de los códigos
numéricos equivalentes de cada carácter. Por ejemplo la letra A tiene código numérico 65 y la letra a
código numérico 97. Debido a que los códigos numéricos no permiten una ordenación alfabética
precisa (al no ordenar correctamente mayúsculas y minúsculas, palabras con tilde, caracteres como la
ñ, etc.), éste no es un buen medio para ordenar alfabéticamente palabras y sólo tiene una utilidad
limitada.

Los parámetros aportados a la función deben ser Strings. En caso de que algún parámetro no sea una
cadena de texto, el resultado que devuelve la función puede ser impredecible.
Escribe este código y visualiza los resultados que produce:
<meta charset="utf-8">

<?php //Ejemplos curso PHP aprenderaprogramar.com


$cadena1 = '1e3'; $cadena2 = '1000'; if ($cadena1 == $cadena2) {echo 'Según == las dos
cadenas son iguales';} else {echo 'Según == las dos cadenas NO son iguales'; } echo
'<br/>'; if ($cadena1 === $cadena2) {echo 'Según === las dos cadenas son iguales';}
else {echo 'Según === las dos cadenas NO son iguales'; } echo '<br/>'; if
(strcmp($cadena1, $cadena2) == 0) {echo 'Según strcmp las dos cadenas son iguales';}
else {echo 'Según strcmp las dos cadenas NO son iguales'; } ?>

El resultado será similar a este: Según == las dos cadenas son iguales, Según === las dos cadenas NO son
iguales, Según strcmp las dos cadenas NO son iguales.
Recordar que para hacer comparaciones seguras de cadenas de texto usaremos strcmp u otra función
PHP prevista para ello en lugar de los operadores == ó ===.

OTRAS FUNCIONES PARA COMPARAR CADENAS CON PHP

PHP define otras funciones nativas para comparar de cadenas de texto. Vamos a ver algunas de ellas:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

FUNCIÓN EJEMPLOS aprenderaprogramar.com


UTILIDAD
$cadena1 = 'martes'; $cadena2
Devuelve como resultado 0 si ambas cadenas son
strcasecmp ($cadena1 = 'Martes';
iguales, o un valor numérico menor o mayor de
, $cadena2 )
cero en caso contrario. No diferencia entre strcasecmp ($cadena1, $cadena2)
mayúsculas y minúsculas.
// Devuelve 0, son iguales

$cadena1 = 'martes';
strncmp ($cadena1, Compara el número de caracteres numCaract entre $cadena2 = 'Martes de feria'; strncmp
$cadena2, la cadena 1 y la cadena 2 teniendo en cuenta
($cadena1 , $cadena2 , 6)==0
$numCaract) mayúsculas y minúsculas como diferentes.
// Devuelve false, no son iguales

$cadena1 = 'martes';
strncasecmp Compara el número de caracteres numCaract entre $cadena2 = 'Martes de feria'; strncasecmp
($cadena1 , $cadena2, la cadena 1 y la cadena 2 sin tener en cuenta
($cadena1 , $cadena2 , 6)
$numCaract) mayúsculas y minúsculas.
// Devuelve 0, son iguales

Compara una subcadena de cadena 1 que comienza


$cadena1 = 'martes';
substr_compare en posición posicionCad. Se compara hasta que una
($cadena1, $cadena2, cadena termina si no se especifica opcLongitud, o el $cadena2 = 'Martes de feria';
$posicionCad1, número de caracteres indicado si sí se especifica. substr_compare ($cadena1 , $cadena2 , 0,
$opcLongitud, Por defecto diferencia mayúsculas y minúsculas, strlen($cadena1), true)
$opcBoolDiferencia) pero estableciendo opcBoolDiferencia true no
// Devuelve 0, son iguales
distinguirá entre mayúsculas y minúsculas.

RELLENO DE CADENAS CON STR_PAD

Esta función realiza un relleno de cadenas ampliando la cadena hasta una longitud especificada y
rellenándola con el carácter o caracteres especificados hasta dicha longitud. La sintaxis es:

str_pad ( string $cadnea , int $nuevaLongitud $opcCarRelleno, opcTipoDeRelleno)

Donde opcCarRelleno es opcional e indica el carácter o caracteres de relleno que se emplearán. Si no se


especifica, se tomará el espacio en blanco como carácter de relleno.
opcTipoDeRelleno es opcional e indica cómo se rellenará hasta alcanzar la nueva longitud: por la
derecha, por la izquierda o por ambos lados. Los valores que puede tomar son: STR_PAD_RIGHT,
STR_PAD_LEFT, o STR_PAD_BOTH. Si no se especifica por defecto se rellenará usando STR_PAD_RIGHT
(por la derecha).
Escribe este código y comprueba los resultados:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

<?php
$cadena='aprenderaprogramar.com'; echo
'<p>'.str_pad($cadena,28,'*').'</p>'; echo
'<p>'.str_pad($cadena,48,'cool!').'</p>'; echo
'<p>'.str_pad($cadena,2,'a').'</p>'; echo
'<p>'.str_pad($cadena,28,'*',STR_PAD_RIGHT).'</p>'; echo
'<p>'.str_pad($cadena,29,'@',STR_PAD_BOTH).'</p>'; ?>

El resultado esperado es:

aprenderaprogramar.com******
aprenderaprogramar.comcool!cool!cool!cool!cool!c
aprenderaprogramar.com
aprenderaprogramar.com******
@@@aprenderaprogramar.com@@@@

Fíjate que en este caso la longitud de la cadena es de 22 caracteres. Si le ponemos que la nueva
longitud es 29 y que rellene a ambos lados comienza colocando un carácter a derecha y otro a
izquierda, pero tras colocar 6 sólo le queda 1 por colocar y éste carácter queda a derecha.

Existen más funciones para cadenas en PHP pero los programadores no las suelen conocer todas, ya
que algunas son para tareas muy específicas. Si en algún momento necesitas realizar tareas muy
específicas con cadenas en PHP puedes conocer todas las funciones existentes acudiendo a la
documentación oficial de PHP sobre funciones de cadenas,
disponible en http://php.net/manual/es/ref.strings.php
EJERCICIO

Crear archivos php que ejecuten la tarea indicada:


a) Dadas las cadenas "aprender" y "aprende", mostrar por pantalla la cadena rellena con * a
derecha e izquierda en un número de asteriscos que será siempre 5 a cada lado aunque se cambien las
cadenas.

b) Dadas las cadenas "aprender" y "aprende", mostrar por pantalla si sus tres primeros caracteres
son iguales o no usando una función de comparación de subcadenas.

c) Dada la cadena "ApRendEr A proGraMar.cOm" transformar la cadena a minúsculas y rellenarla


a derecha e izquierda con una longitud de asteriscos igual a la mitad de su longitud si es par ó igual a la
mitad de (su longitud más 1) si es impar. Mostrar por pantalla la cadena en minúsculas y con el relleno
indicado.

FUNCIONES PARA MANEJO DEL TIEMPO, FECHA Y HORAS PHP

Con frecuencia cuando creamos webs o apps tenemos que trabajar con fechas y calendarios. Por
ejemplo en la página web de un hotel o un restaurante es posible que trabajemos con fechas y horas de

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

comienzo de reserva, de fin de reserva, etc. PHP dispone de funciones nativas para facilitar el trabajo
con fechas, horas y tiempos.

El manejo del “tiempo” es un aspecto controvertido en la programación. La primera dificultad y más


obvia es que existen cientos de dispositivos electrónicos y no todos manejan la misma fecha. Por
ejemplo mi computador personal puede indicar que hoy es lunes 25 de enero de 2048 y la hora es las
12:35:44 mientras que el servidor al que estoy conectado, suponiendo que está en mi misma ciudad,
puede indicar que hoy es lunes 25 de enero de 2048 y la hora es las 12:33:21. Otro servidor, en otro
país, puede indicar que la fecha es domingo 24 de enero de 2048 y la hora es las 23:51:15 debido a la
diferencia horaria entre países. Aquí, claro está, nos estaríamos refiriendo a horas locales. Para poder
disponer de horas de referencia globales para todo el mundo se crearon estándares como:

a) GMT o tiempo medio de Greenwich: ha sido un estándar ampliamente usado. GMT era el
tiempo medido en el observatorio británico de Greenwich, que se definió como meridiano cero de la
tierra. Así cada país podía expresar su hora en función de la hora del meridiano de Greenwich. Por
ejemplo GMT+0 indicaba que la hora era la misma que la hora oficial en el meridiano de Greenwich,
mientras que GMT+3 indicaba que la hora eran 3 horas más que en el meridiano de Greenwich (es
decir, si es Greenwich eran las 09:00 en un país cuya hora fuera GMT+3 serían las 12:00).

b) UTC o tiempo universal coordinado: es el estándar que se ha adoptado como referencia que
indica un tiempo único independientemente de en qué lugar del planeta nos encontremos, basado en
las mediciones de relojes atómicos distribuidos por distintos países. Es el estándar que se está
imponiendo en los sistemas informáticos.

La circunferencia terrestre se dividió en 24 husos horarios de modo que cada huso quedaba
referenciado a un tiempo común (lo que se denominaba el tiempo de Greenwich).

Aunque desde el punto de vista de su definición técnica UTC y GMT no son lo mismo, a efectos
prácticos hablar de GMT+3 es lo mismo que hablar de UTC+3.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

A pesar de este gran avance, el trabajo con el tiempo sigue presentando grandes dificultades en los
sistemas informáticos, tanto por la falta de sincronización entre dispositivos como por la disparidad en
cuanto a cómo medir el tiempo y con qué grado de precisión, existencia de horarios de verano e
invierno, etc. Por ello encontrarás que es relativamente frecuente encontrar que a medida que los
lenguajes de programación evolucionan vayan introduciendo cambios en la forma de manejar el
tiempo.

Una cuestión a tener en cuenta es que el tiempo oficial de Greenwich, tiempo GMT ó UTC, no se
corresponde con el tiempo local en Greenwich debido a la existencia del horario de verano. Por
ejemplo, Lisboa se encuentra en el huso horario de Greenwich, pero en verano la hora local está
adelantada una hora respecto al tiempo oficial de Greenwich por motivos de ahorro energético. Esto da
lugar a que el 5 de agosto a las 21:00 en Lisboa se corresponda con el 5 de agosto 20:00 UTC debido al
horario de verano, a pesar de que Lisboa se encuentre en el mismo huso horaria que Greenwich.

FUNCIONES TIME Y DATE

Estas dos funciones nos permitirán mostrar o capturar la fecha y hora, lo cual tiene una gran cantidad
de aplicaciones. Por ejemplo, supón que tienes una tienda on-line y para cada operación de venta
tienes que registrar la fecha y hora de la venta. Estas funciones resultarán útiles para ello.

La función time devuelve la hora GMT actual medida como el número de segundos desde el 1 de Enero
de 1970 00:00:00 GMT (hora del meridiano de Greenwich) obtenidos a partir de la hora actual local del
servidor. Cuando hablamos de “hora actual del servidor” nos referimos a una hora local, que es distinta
según el país donde nos encontremos. En cambio la hora GMT es única y no depende del país. Hay que
tener cuidado con esta circunstancia. Por ejemplo, si trabajas con un servidor localizado en Estados
Unidos lo más probable es que el servidor trabaje con la hora de Estados Unidos. Si quieres obtener la
hora local de tu país, tendrás que tenerlo en cuenta para restarle o sumarle cierto número de horas a la
hora que te devuelva el servidor.

Por otro lado, la función date muestra la fecha en el formato que le indiquemos.

En general, te recomendamos que hagas pruebas para comprobar que los resultados de fecha y hora
obtenidos son los adecuados, ya que la configuración de cada servidor y la versión de PHP empleada
puede afectar a los resultados.

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo curso PHP aprenderaprogramar.com

$time = time(); echo date("d-m-Y


(H:i:s)", $time);

?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

En este ejemplo hemos especificado como formato para mostrar la fecha d-m-Y (H:i:s) (donde d
representa día, m representa mes, Y representa año, H representa hora, i representa minutos y s
representa segundos) desde el valor de time u otra fecha dada en segundos desde el 1 de Enero de
1970 00:00:00 GMT.

Como podemos observar, la función date da formato a la variable en segundos $time. Hay distintos
formatos para la función date, a continuación indicaremos los más importantes.

La función time() devuelve un valor numérico entero largo, por ejemplo 1335169779. Este número
representa el número de segundos transcurridos desde el 1 de enero de 1970 00:00:00 GMT.

Para transformar ese número en una fecha “entendible por las personas” usamos la función date, cuya
sintaxis general es: date (“formato de salida”, valorTimeValido)

En cuanto a valorTimeValido, será un número entero, generalmente contenido en una variable.

En cuanto a “formato de salida”, disponemos de las siguientes equivalencias:

Para representar el día de la semana:

Carácter de formato Significado aprenderaprogramar.com Valores que devuelve

Día del mes, con 2 dígitos. Si es menor de 10, lleva


d (minúscula) un 0 inicial. 01 a 31

Texto representativo del día, con 3 letras y en Mon (lunes) hasta Sun
D (mayúscula) inglés (domingo)

j (minúscula) Día del mes con un dígito (sin ceros iniciales) 1 a 31

Texto representativo del día, con todas las letras y Monday (lunes) hasta Sunday
l (letra ele minúscula) en inglés (domingo)

Representación numérica del día de la semana


N (mayúscula) según ISO-8601, siendo 1 el lunes y 7 el domingo 1 (lunes) a 7 (domingo)

S (mayúscula) Sufijo para el día del mes en inglés st, nd, rd ó th

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Representación numérica del día de la semana


w (minúscula) siendo 0 domingo y 6 el sábado 0a6

Día del año desde 0 hasta 365 (un año normal irá
z (minúscula) de 0 a 364 y uno bisiesto de 0 a 365) 0 a 365

Para representar el mes:

Carácter de formato Significado aprenderaprogramar.com Valores que devuelve

Texto representativo del mes, con todas las letras January (enero) a December
F (mayúscula) y en inglés (diciembre)

Mes en formato numérico con dos dígitos,


m (minúscula) incluyendo cero inicial si es menor que 10 01 hasta 12

Texto representativo del mes, con tres letras Jan (enero) hasta Dec
M (mayúscula) iniciales en inglés (diciembre)

Mes en formato numérico con un dígito, sin ceros


n (minúscula) iniciales 1 hasta 12

t (minúscula) Número de días que tiene el mes 28 hasta 31

Para representar el año:

Carácter de formato Significado aprenderaprogramar.com Valores que devuelve

Indica si un año es bisiesto o no (1 si es bisiesto, 0


L (mayúscula) si no lo es) 0ó1

Y (mayúscula) Año en formato numérico de 4 dígitos 1000 a 9999

Año en formato numérico de 2 dígitos (los dos


y (minúscula) últimos del año) El que corresponda, p.ej. 78

Número de año según ISO-8601. En general


o (minúscula) devuelve el mismo resultado que Y mayúscula 1000 a 9999

Para representar la hora:

Carácter de formato Significado aprenderaprogramar.com Valores que devuelve

Incluye am ó pm en minúsculas detrás de la hora para


a (minúscula) indicar antes del meridiano o pasado el meridiano am ó pm

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

A (mayúscula) Igual que a pero en mayúsculas AM ó PM

Hora internet, también llamada Swatch Internet Time


B (mayúscula) o Biel Mean Time (BMT), poco usada. 000 a 999

g (minúscula) Número de hora desde 1 hasta 12 sin ceros iniciales 1 a 12

G (mayúscula) Número de hora desde 0 hasta 23 sin ceros iniciales 0 a 23

h (minúscula) Número de hora desde 01 hasta 12, con ceros iniciales 01 a 12

H (mayúscula) Número de hora desde 00 hasta 23, con ceros iniciales 00 hasta 23

i (minúscula) Minutos desde 00 hasta 59, con ceros iniciales 00 a 59

s (minúscula) Segundos desde 00 hasta 59, con ceros iniciales 00 a 59

Para representar la zona horaria:

Carácter de formato Significado aprenderaprogramar.com Valores que devuelve

Representa la zona horaria en inglés (p.ej. GMT,


e (minúscula) Según corresponda
Atlantic/Azores, America/Denver)

Indica si se está en horario de verano (0 indica que


I (letra i mayúscula) no se está en horario de verano, 1 que sí se está en 0ó1
horario de verano).

Indica la diferencia respecto a la zona horaria de


O (letra o mayúscula) Greenwich u hora GMT, en horas con cuatro Por ejemplo +0300 ó -0500
dígitos y símbolo.

Indica la diferencia respecto a la zona horaria de


P (mayúscula) Greenwich u hora GMT, en horas con cuatro Por ejemplo +03:00 ó -05:00
dígitos con separador dos puntos y símbolo.

Abreviatura de la zona horaria (abreviatura en


T (mayúscula) inglés) Según corresponda

Diferencia en segundos entre la hora utilizada y la


Z (mayúscula) hora UTC, con signo positivo o negativo -43200 hasta 50400

Además disponemos de:

La letra W mayúscula para representar la semana del año según ISO-8601, considerando que las
semanas comienzan en lunes. Por ejemplo, un año tiene 52 semanas y con este formato podemos
obtener que estamos en la semana 24 del año.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

La letra c minúscula para representar la fecha y hora completa en formato ISO-8601 (tipo 2089-
0312T12:19:21+03:00).

La letra r minúscula para representar la fecha y hora completa con formato RFC-2822 (tipo Mon, 21 Jan
2089 11:41:05 -0300).

Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2bis.php. A continuación,
sube el fichero al servidor y visualiza el resultado.

<?php //Ejemplo curso PHP aprenderaprogramar.com


$time = time(); echo "<br/>"; echo
$time; echo "<br/>"; echo date("d-
m-Y (H:i:s)", -3600); echo
"<br/>"; echo date("d-m-Y
(H:i:s)", 0); echo "<br/>";
echo date("d-m-Y (H:i:s)", 3600); echo "<br/>"; echo date("Y-m-d (H:i:s)", $time);
echo "<br/>"; echo date("Y-m-d ", $time); echo "<br/>"; echo ("Según el servidor la
hora actual es: ". date("H:i:s", $time));

?>

?>

Con este ejemplo podemos comprobar algunas cosas. En primer lugar, que la función time() devuelve
un número, mientras que la función date devuelve un String o cadena de texto.

En segundo lugar, que para obtener fechas anteriores al 1 de enero de 1970 debemos usar números
negativos.

En tercer lugar, que el momento 0 que es el 01-01-1970 00:00:00 GMT, cuando es mostrado por un
servidor concreto, es adaptado a su horario local. En el servidor del ejemplo, el horario local es GMT +

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

01:00, es decir, su hora es la hora GMT +01:00, por eso nos devuelve como hora cero la una de la
mañana del 1 de enero de 1970. No te preocupes si te resulta un poco confuso, simplemente ten en
cuenta que debes hacer pruebas para ver cómo responde el servidor con el que estés trabajando.

En cuarto lugar, que podemos hacer que la fecha se muestre en el formato u orden que queramos,
usando los términos clave “ d, m, Y, H, i, s” en el orden que queramos.

En quinto lugar, que podemos concatenar cómo se muestra una fecha (o almacenarla en otra variable si
quisiéramos) concatenando el resultado de la función date con una cadena de texto cualquiera.

OTRAS FUNCIONES PARA FECHA, HORA Y TIEMPO PHP

PHP define otras funciones nativas para manejo de fechas, horas y tiempo. Vamos a ver algunas de
ellas:

FUNCIÓN UTILIDAD EJEMPLOS aprenderaprogramar.com

Devuelve la hora UTC (GMT) para una fecha


local indicada, expresada esta hora GMT en echo "Tiempo Unix para el 15-Enero-2089 a
segundos (el número de segundos las 12h 0m 0s = " . mktime(12,0,0,1,15,2089);
mktime(hora,min,seg,mes, transcurridos desde el 1 de enero de 1970 // Tiempo Unix para el 15-Enero-2089 a las
dia,ano) hora: 0 a 23 min y 00:00:00 GMT, valores negativos indican 12h 0m 0s = 3753975600 (el resultado variará
seg: 0 a 59 mes: 1 a 12 dia: momentos anteriores a esta fecha). Si faltan según dónde esté localizado el servidor,
1 a 31 año: cuatro dígitos uno o más parámetros se tomarán los de la porque las 12 h del 15 de enero de 2089
fecha local actual de derecha a izquierda. El corresponden a distintas fechas-horas GMT
valor obtenido depende de la hora local del según dónde se encuentre el servidor.
servidor con el que estemos trabajando.

Devuelve la hora UTC (GMT) expresada en


segundos para una fecha GMT indicada en los
argumentos recibidos. El valor devuelto es el
gmmktime(hora,min,seg, gmmktime(12,0,0,1,15,2089)
número de segundos transcurridos desde el 1
mes,dia,ano) hora: 0 a
de enero de 1970 00:00:00 GMT, valores // 3756628800 independientemente de la
23 min y seg: 0 a 59 mes:
negativos indican momentos anteriores a esta hora local del servidor
1 a 12 dia: 1 a 31 año:
fecha. Si faltan uno o más parámetros se
cuatro dígitos
tomarán los de la fecha GMT actual de derecha
a izquierda. El valor obtenido no depende del
servidor, ya que la hora GMT es única.

Nota: tener en cuenta que usamos UTC ó GMT como si fueran equivalentes.

Para entender cómo las funciones time y mktime trabajan con tiempo local hemos realizado la
siguiente prueba. Hemos colocado el siguiente código en un servidor en Denver (USA), y en un servidor
en Madrid (España):

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

echo "Tiempo Unix para el 15-Enero-2089 a las 12h 0m 0s = " . mktime(12,0,0,1,15,2089);

El resultado obtenido en Denver (USA) es 3756654000

El resultado obtenido en Madrid (España) es 3756625200

¿Por qué obtenemos un resultado diferente?

La diferencia entre uno y otro tiempo es de 28800 segundos, que equivalen a 8 horas.

Hemos comprobado la hora en Denver en el momento de realizar el test y eran las 06:20:00 de la
mañana, mientras que en Madrid eran las 14:20:00 horas. Como vemos, tenemos una diferencia
horaria de 8 horas entre Denver y Madrid.
Cuando en Madrid son las 12:00 horas del 15 de enero de 2089, en Denver serán las 04:00 horas del 15
de enero de 2089. Las 12:00 horas de un día tienen lugar en distintos instantes de tiempo en Denver y
en Madrid, por eso los resultados indican que cuando son las 12 horas en Denver ha transcurrido más
tiempo desde las 0 horas del 1 de enero de 1970 GMT que cuando son las 12 horas en Madrid, o dicho
de otra manera, las 12 horas de un día tienen lugar antes en Madrid que en Denver. El tiempo Unix sí
será igual si pedimos el valor mktime(4,0,0,1,15,2089) en Denver: obtendremos 3756625200, el mismo
resultado que en Madrid a las 12 del mediodía. Esto indica que ese instante de tiempo (4 de la mañana
de 15 de enero de 2089 en Denver y 12 de la mañana de la misma fecha en Madrid) es el mismo
instante, es decir, podríamos estar hablando por teléfono dos personas en ese momento, siendo las 4
de la mañana en Denver y las 12 en Madrid.

Si pedimos la hora en Madrid para el 1 de enero de 1970 a las 00:00:00 de 1970 nos devuelve <<Tiempo
Unix para el 1 de enero de 1970 a las 00:00:00 = -3600>> ¿Qué significa -3600? Este valor está referido
al tiempo UTC e indica qué adelanto o atraso (en segundos) tiene la hora local respecto al tiempo UTC.
O dicho de otro modo, cuánto tiempo ha transcurrido desde las 00:00 horas del 1 de enero de 1970
UTC dada una fecha local. Cuando en Madrid son las 00:00:00 del 1 de enero de 1970 en el tiempo UTC
de referencia (podemos pensar que es la hora en Greenwich, meridiano de referencia, aunque esto no
es exacto) decimos que faltan 3600 segundos (1 hora) para llegar al 1 de enero de 1970. El valor
negativo indica que la fecha es anterior al 1 de enero de 1970 00:00:00 GMT, y en concreto en este
caso serían las 23 horas del 31 de diciembre de 1969 GMT cuando en Madrid son las 00:00:00 horas del
1 de enero de 1970.

Si pedimos la hora en Denver para el 1 de enero de 1970 a las 00:00:00 de 1970 nos devuelve <<Tiempo
Unix para el 1 de enero de 1970 a las 00:00:00 = 25200>> ¿Qué significa 25200? Este valor está referido
al tiempo UTC e indica que cuando en Denver son las 00:00:00 del 1 de enero de 1970 el tiempo UTC
de referencia está 7 horas por delante, es decir, a las 0 horas en Denver son las 7 horas UTC.

-3600 segundos equivalen a 1 hora por delante de GMT. En invierno en Madrid la hora local es
GMT+0100

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

25200 segundos equivalen a 7 horas por detrás de GMT. En invierno en Denver la hora local es
GMT0700

Tener en cuenta que la hora UTC (GMT) es única (la indicada por los organismos internacionales
encargados), mientras que las hora locales varían según el país, e incluso según la zona de un país en
que nos encontremos.

Existen más funciones para fechas y tiempo en PHP pero los programadores no las suelen conocer
todas, ya que algunas son para tareas muy específicas. No te preocupes por memorizar las funciones ni
por conocerlas todas, simplemente sé consciente de su existencia y aprende a buscarlas cuando te
resulten necearias. Si en algún momento necesitas realizar tareas muy específicas con tiempo y fechas
en PHP puedes conocer todas las funciones existentes sobre esta materia acudiendo a la
documentación oficial de PHP sobre fecha y hora, disponible en
http://php.net/manual/es/ref.datetime.php

EJERCICIO

Crea un documento HTML que conste de un título h1 con el texto <<Calendario>>. En la página deberá
mostrarse el mes y año actuales (en el momento en que hagas el ejercicio) y para cada día del mes,
indicar si es lunes, martes, miércoles, jueves, viernes, sábado o domingo.

Ejemplo: suponiendo que hagas el ejercicio en mayo de 2050, debería mostrarse:

Día 1: Domingo, Día 2: Lunes, Día 3: Martes, Día 4: Miércoles, … etc. hasta Día 31: Martes.

Ampliación voluntaria del ejercicio: si tienes conocimiento de maquetación con HTML y CSS te
proponemos que cambies el aspecto para que en lugar de mostrarse como texto, el calendario se
muestre con aspecto de calendario habitual. Para la maquetación puedes usar una tabla de 7 columnas
por 7 filas (total 49 celdas) con ancho de tabla 300 píxeles y tamaño de fuente en la tabla 24 píxeles. La
primera columna corresponderá a lunes y la última a domingo como mostramos en el siguiente
ejemplo.

El aspecto, suponiendo que te encuentras en el mes de mayo de 2050, sería el siguiente:

MAYO DE 2050
Lu Ma Mi Ju Vi Sa Do
1
2 3 4 5 6 7 8
9 10 11 12 13 14
15
16 17 18 19 20 21
22
23 24 25 26 27 28
29

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

30 31

Ten en cuenta que debe generarse el calendario del mes en que te encuentres según la hora local del
sistema (de tu servidor).

FUNCIONES PARA EXPRESAR FECHAS EN UN LENGUAJE

PHP es un lenguaje con marcada influencia anglosajona debido a sus orígenes y desarrollo. Pero cuando
estamos creando páginas web es frecuente que queremos obtener fechas expresadas en el lenguaje
con el que estamos desarrollando la web. Vamos a estudiar cómo hacerlo.

SETLOCALE
La función setlocale es una función PHP utilizada para indicar la configuración regional que debe ser
usada para realizar determinadas tareas. Su sintaxis es la siguiente:

setlocale ( $procesosAfectados, $codConfiguracion1, $ codConfiguracion2, … , $ codConfiguracionN);

También se admite: setlocale ( $procesosAfectados, $arrayDeCodigosDeConfiguracion);

Esta función pretende que por ejemplo en lugar de 2089 July, Mon 21st pueda aparecer algo como “21
de julio de 2089” si lo deseamos. Para ello indicaríamos que el proceso afectado es la fecha y que la
configuración es el español: setlocale (LC_TIME, "es_ES");
Esta idea, aparentemente buena, se topa con numerosas dificultades en la práctica:
a) No todos los servidores admiten todo tipo de cambios.

b) Según el servidor que estemos utilizando, será posible usar unos lenguajes o no.

c) La comunicación entre las aplicaciones web y otros entornos como bases de datos se puede ver
afectada y pueden surgir problemas.

d) No todos los servidores admiten el mismo nombre – código de configuración

e) Más problemas que no vamos a citar aquí.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

En resumen, debes tener presente que el cambio de la configuración local del servidor puede ser
compleja o no responder como cabría esperar: podrás ver miles de consultas en foros sobre este tipo
de problemas, y muchas de ellas sin respuesta. Es recomendable hacer pruebas y si es necesario
programar pequeños scripts o funciones para lograr el funcionamiento que nosotros deseamos. Con
esto queremos decir que puede resultar más sencillo trabajar del modo natural tal y como esté
configurado el servidor, en lugar de tratar de alterar esta configuración para que el servidor trabaje en
nuestro idioma.
Los valores posibles para $procesosAfectados son los siguientes:

Valor $procesosAfectados Aplicación

LC_ALL Para todos los procesos

LC_COLLATE Para la comparación de strings

Para la clasificación y conversión de caracteres, por ejemplo cuando se use


LC_CTYPE strtoupper()

LC_MONETARY Afecta a aspectos como el símbolo de moneda, separador de miles, etc.

LC_NUMERIC Para el separador decimal y otros aspectos como signos.

Para el formato de fecha y hora que se mostrará al usar la función strftime()


LC_TIME

LC_MESSAGES Para las respuestas del sistema.

Nosotros en este curso vamos a limitarnos a estudiar y ver un ejemplo de uso para mostrar fechas
usando la función de php strftime que estudiaremos a continuación combinada con el uso de setlocale
con LC_TIME. El uso de setlocale puede tener efectos colaterales (afectar a otros procesos) por lo que
recomendamos no usarlo sin hacer pruebas exhaustivas para verificar la respuesta esperada.
Los códigos de países dependen del sistema operativo con el que estemos trabajando. La función
setLocale admite que se introduzca una lista de códigos de países con la esperanza de que algunos de
ellos sea reconocido por el sistema (lo cual habla ya de las dificultades que se encuentran para realizar
este tipo de operaciones).
A continuación señalamos algunas formas de códigos de algunos países:

País Código (*) Otro código (*)

México es_MX.UTF-8 es_MX

España es_ES.UTF-8 es_ES

Argentina es_RA.UTF-8 es_RA

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Colombia es_CO.UTF-8 es_CO

Venezuela es_VE.UTF-8 es_VE

Perú es_PE.UTF-8 es_PE

Chile es_CL.UTF-8 es_CL

Guatemala es_GT.UTF-8 es_GT

Ecuador es_EC.UTF-8 es_EC

Cuba es_CU.UTF-8 es_CU

Bolivia es_RB.UTF-8 es_RB

País Código (*) Otro código (*)

República Dominicana es_DO.UTF-8 es_DO

Honduras es_HN.UTF-8 es_HN

El Salvador es_SV.UTF-8 es_SV

Paraguay es_PY.UTF-8 es_PY

Nicaragua es_NI.UTF-8 es_NI

Costa Rica es_CR.UTF-8 es_CR

Puerto Rico es_PR.UTF-8 es_PR

Panamá es_PA.UTF-8 es_PA

Uruguay es_UY.UTF-8 es_UY

Guinea Ecuatorial es_GQ.UTF-8 es_GQ

(*) Tener en cuenta que no todos los códigos funcionarán, ya que depende del servidor con el que
estemos trabajando el que sean reconocidos o no. Recomendamos usar es_ES.UTF-8. Hay más códigos
aparte de los aquí indicados.
El ejemplo de uso de setlocale lo veremos a continuación junto al de la función strftime.

FUNCIÓN STRFTIME PHP


La función strftime es una función PHP utilizada para obtener una cadena de texto expresada en el
lenguaje de la configuración local del servidor (por defecto o establecida a través de setlocale). Su
sintaxis es la siguiente:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

strftime ($cadenaConMarcas, $valorTiempoEnSegundos)

$valorTiempoEnSegundos indica los segundos transcurridos desde el 1 de enero de 1970 00:00:00 GMT.
Si se omite $valorTiempoEnSegundos se toma el valor correspondiente a la hora actual local del
servidor.
El valor $cadenaConMarcas hace referencia al uso de códigos especiales que devuelven un
determinado resultado. Por ejemplo echo strftime (Hoy es %A); nos devolverá “Hoy es lunes” si la
configuración de idioma del servidor es español, ó “Hoy es monday" si la configuración de idioma del
servidor es inglés, ya que el código %A equivale a “día de la semana”.
Otro ejemplo: echo 'Fecha actual: '.strftime("%A, %d de %B de %Y").'<br/>'; devolverá algo similar a
<<jueves, 04 de septiembre de 2089>> si la configuración de idioma del servidor es español.
En la siguiente tabla se resumen los códigos disponibles:
Uso para Código Descripción Ejemplo valores devueltos
Día %a Día, en forma abreviada Dom hasta Sab
Día %A Día, completo Domingo hasta Sábado
Día %d El día del mes con dos dígitos (con ceros iniciales) 01 a 31
Día %e El día del mes, con un espacio precediendo si < 10. 1 a 31
Día %j Día del año, 3 dígitos con ceros iniciales 001 a 366
Día %u Representación numérica ISO-8601 del día de 1 (para Lunes) hasta 7 (para Domingo)
semana
Día %w Representación numérica del día de la semana 0 (para Domingo) hasta 6 (para Sábado)
Número de semana del año dado, comenzando con el
Semana %U 13 (para la 13ª semana del año)
primer Domingo como primera semana
Semana %V Número de semana según ISO-8601 01 hasta 53
Número de semana del año, comenzando con el
Semana %W 46 (para la 46ª semana del año)
primer Lunes como la primera semana
Mes %b Nombre del mes abreviado Ene hasta Dic
Mes %B Nombre del mes completo Enero hasta Diciembre
Mes %h Nombre del mes abreviado, igual que %b Ene hasta Dic
Mes %m Representación de dos dígitos del mes 01 (para Enero) hasta 12 (para Diciembre)
Representación de dos dígitos del siglo (año dividido
Año %C 19 para el Siglo XX
entre 100, truncado a un entero)
Representación de dos dígitos del año según ISO8601
Año %g Ejemplo: 89 para 6 de Enero de 2089

Año %G La versión de cuatro dígitos completa de %g Ejemplo: 2089 para 13 de Enero de 2089
Año %y Representación de dos dígitos del año Ejemplo: 09 para 2009, 79 para 1979
Año %Y Representación de cuatro dígitos del año Ejemplo: 2038
Hora %H Representación de dos dígitos de la hora 00 hasta 23
Representación de dos dígitos de la hora, con un
Hora %k 0 hasta 23
espacio precediendo a los dígitos simples
Hora %I Representación de dos dígitos de la hora 01 hasta 12
La hora en formato de 12 horas, con un espacio si <
Hora %l (ele) 1 hasta 12
10

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Hora %M Representación de dos dígitos de los minutos 00 hasta 59


Hora %p 'AM' o 'PM' en MAYÚSCULAS basados en la hora dada Ejemplo: AM para 00:31, PM para 22:23
Hora %P 'am' o 'pm' en minúsculas basados en la hora dada Ejemplo: am para 00:31, pm para 22:23
Hora %r Lo mismo que "%I:%M:%S %p" Ejemplo: 09:34:17 PM para 21:34:17
Hora %R Lo mismo que "%H:%M" Ejemplo: 16:44 para 4:44 PM
Hora %S Representación de dos dígitos de los segundos 00 hasta 59
Hora %T Lo mismo que "%H:%M:%S" Ejemplo: 21:34:17 para 09:34:17 PM
Representación preferida de la hora basada en la
Hora %X Ejemplo: 03:59:16 o 15:59:16
configuración regional, sin la fecha
Hora %z El índice de la zona horaria. Ejemplo: -0500 para Hora Este de EEUU
Hora %Z La abreviatura de la zona horaria Ejemplo: EST para Hora del Este de EEUU
Fecha y Marca preferida de la fecha y hora basadas en la Ejemplo: Tue Feb 5 00:45:10 2009 para el
%c
hora configuración regional 5 de Febrero de 2009 a las 12:45:10 AM
Fecha y %D Lo mismo que "%m/%d/%y" Ejemplo: 02/05/89, 5 de Febrero de 2089
hora
Fecha y Lo mismo que "%Y-%m-%d" (normalmente usado en
%F Ejemplo: 2089-02-05 para 5 Febrero 2089
hora las marcas de fecha de bases de datos)
Fecha y Representación preferida de la fecha basada en la Ejemplo: 02/05/09 para el 5 de Febrero
%x
hora configuración local, sin la hora de 2009
Además de las marcas indicadas existen otras como %n para insertar un salto de línea ó %t para insertar
una tabulación.
Ten en cuenta que no todos los servidores disponen de todos los códigos ni todos los servidores
responderán como se espera cuando trates de hacer que muestren una fecha en un formato dado. Por
ejemplo algunos servidores no admiten %p ni %P, en este caso si intentas que se muestre AM/PM no se
mostrará nada. Tendrás que resolverlo escribiendo código específico para lograrlo.
Para probar el funcionamiento de esta función, en combinación con setlocale, escribe este código y
comprueba qué resultados obtienes:

<meta charset='utf-8'>

<?php

$miFecha= gmmktime(12,0,0,1,15,2089); echo 'Antes de setlocale strftime devuelve:


'.strftime("%A, %d de %B de %Y",

$miFecha).'<br/>'; echo 'Antes de setlocale date devuelve: '.date("l, d-m-Y (H:i:s)",


$miFecha).'<br/>'; setlocale(LC_TIME,"es_ES"); echo 'Después de setlocale es_ES date
devuelve: '.date("l, d-m-Y (H:i:s)",

$miFecha).'<br/>'; echo 'Después de setlocale es_ES strftime devuelve: '.strftime("%A, %d de


%B de %Y",

$miFecha).'<br/>'; setlocale(LC_TIME, 'es_ES.UTF-8'); echo 'Después de setlocale es_ES.UTF-8


date devuelve: '.date("l, d-m-Y (H:i:s)",

$miFecha).'<br/>'; echo 'Después de setlocale es_ES.UTF-8 strftime devuelve: '.strftime("%A,


%d de %B de %Y",

$miFecha).'<br/>'; setlocale(LC_TIME, 'de_DE.UTF-8'); echo 'Después de setlocale de_DE.UTF-8


date devuelve: '.date("l, d-m-Y (H:i:s)",

$miFecha).'<br/>'; echo 'Después de setlocale de_DE.UTF-8 strftime devuelve: '.strftime("%A,


%d de %B de %Y",

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

$miFecha).'<br/>';

?>

El resultado que nosotros hemos obtenido con un servidor ubicado en Denver (USA) es el siguiente:

Antes de setlocale strftime devuelve: Saturday, 15 de January de 2089


Antes de setlocale date devuelve: Saturday, 15-01-2089 (05:00:00)
Después de setlocale es_ES date devuelve: Saturday, 15-01-2089 (05:00:00)

Después de setlocale es_ES strftime devuelve: s�bado, 15 de enero de 2089


Después de setlocale es_ES.UTF-8 date devuelve: Saturday, 15-01-2089 (05:00:00)
Después de setlocale es_ES.UTF-8 strftime devuelve: sábado, 15 de enero de 2089
Después de setlocale de_DE.UTF-8 date devuelve: Saturday, 15-01-2089 (05:00:00)
Después de setlocale de_DE.UTF-8 strftime devuelve: Samstag, 15 de Januar de 2089

Nota: comprueba que usas como codificación para tu archivo php “Codificación UTF-8 sin BOM”. Ten en
cuenta que los resultados que obtengas pueden ser distintos a estos ya que dependen de la
configuración que tenga establecida tu servidor.
Vamos a comentar los resultados obtenidos:
Hemos creado la variable $miFecha cuyo contenido es el número de segundos desde el 1 de enero de
1970 00:00:00 GMT para la fecha 15 de enero de 2089 12:00:00 GMT. Como la hora local tiene un
retraso de 7 horas respecto de la hora GMT, al pedir que se muestre por pantalla la fecha y hora con
strftime se nos muestra <<Saturday, 15 de January de 2089>>. Este valor nos viene en inglés porque la
configuración local del servidor es “idioma inglés”.
Al cambiar la configuración local de idioma con setlocale a es_ES obtenemos la fecha en español, pero
en lugar de sábado se nos muestra s?bado. La función date sigue devolviendo la fecha en inglés porque
esta función no es sensible a la configuración local de idioma.
Al cambiar la configuración local de idioma con setlocale a 'es_ES.UTF-8' ya obtenemos la fecha
correctamente escrita en español.
A modo de ejemplo, hemos cambiado la configuración a alemán para comprobar lo que se visualiza (la
fecha escrita en alemán).
Podríamos haber escrito setlocale(LC_TIME, 'es_ES','es_ES.UTF-8'); ¿Qué ocurrirá en este caso? Se
tomará el primer código reconocido dentro de la lista de códigos. En este caso es_ES es un código
reconocido, aunque no es el que nos da los resultados deseados.
Como vemos, el trabajo relacionado con fecha, hora e idioma puede resultar problemático y no
tenemos más remedio que realizar pruebas hasta obtener el resultado deseado.

FUNCIÓN DATE_DEFAULT_TIMEZONE_SET PHP


La función date_default_timezone_set es una función PHP utilizada para establecer una zona horaria
específica como configuración local para el servidor. De esta manera, podemos hacer que al pedir la

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

fecha y hora actual nos muestre la fecha y hora de un país (o región de un país) concreto. Su sintaxis es
la siguiente:

date_default_timezone_set ($valorDeTimezone);

La configuración así establecida afectará a todas las funciones de fecha y hora.


Los valores de $valorDeTimezone han de escogerse entre los valores admitidos. En la siguiente tabla se
muestran algunos de ellos (nota: algunos valores pueden no ser reconocidos, recomendamos hacer
pruebas para comprobarlo):

Zonas horarias para México, España y Argentina:

País Zona Zona Zona

México America/Mexico_City America/Hermosillo America/Matamoros

America/Cancun America/Tijuana America/Mazatlan

America/Merida America/Santa_Isabel America/Chihuahua

America/Monterrey America/Bahia_Banderas America/Ojinaga

España Europe/Madrid Atlantic/Canary

Argentina America/Argentina/Buenos_Aires America/Argentina/Tucuman America/Argentina/Mendoza

America/Argentina/Cordoba America/Argentina/Catamarca America/Argentina/San_Luis

America/Argentina/Salta America/Argentina/La_Rioja America/Argentina/Rio_Gallegos

America/Argentina/Jujuy America/Argentina/San_Juan America/Argentina/Ushuaia

Zonas horarias para otros países:

País Zona País Zona

Colombia America/Bogota Honduras America/Tegucigalpa

Venezuela America/Caracas El Salvador America/El_Salvador

Perú America/Lima Paraguay America/Asuncion

Chile America/Santiago ó Nicaragua America/Managua


Pacific/Easter

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Guatemala America/Guatemala Costa Rica America/Costa_Rica

Ecuador America/Guayaquil ó Puerto Rico America/Puerto_Rico


Pacific/Galapagos

Cuba America/Havana Panamá America/Panama

Bolivia America/La_Paz Uruguay America/Montevideo

República America/Santo_Domingo Guinea Ecuatorial Africa/Malabo


Dominicana

Para probar el funcionamiento de esta función, en combinación con setlocale, escribe este código y
comprueba qué resultados obtienes:

<meta charset='utf-8'>

<?php

$miFecha= gmmktime(12,0,0,1,15,2089); setlocale(LC_TIME, 'es_ES.UTF-8'); echo 'Después de


setlocale es_ES.UTF-8 strftime devuelve: '.strftime("%A, %d de %B de %Y

%H:%M", $miFecha).'<br/>';
echo 'Fecha actual: '.strftime("%A, %d de %B de %Y %H:%M").'<br/>'; date_default_timezone_set
('Europe/Madrid'); echo 'Establecida zona horaria Europe/Madrid obtenemos: '.strftime("%A, %d
de %B de %Y

%H:%M", $miFecha).'<br/>'; echo 'Ahora fecha actual es: '.strftime("%A, %d


de %B de %Y %H:%M").'<br/>'; ?>

El resultado que nosotros hemos obtenido con un servidor ubicado en Denver (USA) es el siguiente:
Después de setlocale es_ES.UTF-8 strftime devuelve: sábado, 15 de enero de 2089 05:00
Fecha actual: jueves, 04 de septiembre de 2044 04:31
Establecida zona horaria Europe/Madrid obtenemos: sábado, 15 de enero de 2089 13:00 Ahora
fecha actual es: jueves, 04 de septiembre de 2044 12:31
Fíjate cómo de obtener la hora local en Denver hemos pasado a obtener la hora local en Madrid (8
horas adelantada respecto a la de Denver) gracias al uso de date_default_timezone_set.
No siempre se obtienen los resultados deseados, por lo que es imprescindible realizar pruebas.

EJERCICIO 1
Crea una función php de nombre mostrarDiasMes que reciba como argumentos un mes (valor
numérico de 1 a 12) y un año (valor numérico de 4 dígitos) y muestre por pantalla el texto “extendido”
correspondiente a la fecha en idioma español. Por ejemplo mostrarDiasMes(1, 2089) deberá devolver:
1 de enero de 2089, 2 de enero de 2089, 3 de enero de 2089, 4 de enero de 2089… hasta 31 de enero
de 2089”.
Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO 2
Repite el ejercicio anterior, pero en esta ocasión mostrando la fecha en formato de hora tal y como se
usa en Holanda y en idioma holandés.

FORMAS DE ENVÍO DE LOS DATOS DE UN FORMULARIO. MÉTODOS GET Y POST. EJEMPLOS

Cuando un usuario rellena un formulario en una página web los datos hay que enviarlos de alguna
manera. Vamos a considerar las dos formas de envío de datos posibles: usando el método POST o
usando el método GET. Debes conocer cómo se generan formularios HTML antes de leer esta entrega.

Por ejemplo: <form action="http://aprenderaprogramar.com/prog/newuser.php" method="get">


podría ser el encabezado de un formulario donde se usa el método get.

En el ejemplo anterior la acción que se ejecutará cuando el usuario pulse el botón “Enviar” (submit)
será el envío de los datos a la url especificada usando el método get.

Veamos el aspecto de un formulario cualquiera para hacernos una idea general.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Este formulario consta de varios campos que al usuario se le solicitan como Nombre, Apellidos, Correo
electrónico, País y Mensaje. Posiblemente los nombres de los campos en el código HTML sean del tipo
nombre_user, apellidos_user, email_user, pais_user y msg.

Un formulario se escribe en HTML. Si no tienes claro cómo se generan formularios HTML, te


recomendamos leas el curso HTML desde cero de aprenderaprogramar.com. Por ejemplo, este es el
código de un formulario:

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

"http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<title>Ejemplo del uso de formularios - aprenderaprogramar.com</title>

</head>

<body>
<form method="get" action="action.php">
Selecciona tus intereses:

<br />

<input name="cbipeliculas" type="checkbox" />Películas

<br />

<input name="cbilibros" type="checkbox" checked="checked" />Libros

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

<br />

<input name="cbiinternet" type="checkbox" />Internet


</form>

</body>
</html>

La diferencia entre los métodos get y post radica en la forma de enviar los datos a la página cuando se
pulsa el botón “Enviar”. Mientras que el método GET envía los datos usando la URL, el método POST los
envía de forma que no podemos verlos.

Un resultado usando el método GET sería el siguiente:

http://www.aprenderaprogramar.com/newuser.php?nombre=Pepe&apellido=Flores&email=h52turam
%40uco.es&sexo=Mujer

En esta URL podemos distinguir varias partes:

http://www.aprenderaprogramar.com/newuser.php es la dirección web en sí.

El símbolo ? indica dónde empiezan los parámetros que se reciben desde el formulario que ha enviado
los datos a la página.

Las parejas dato1=valor1, dato2=valor2, dato3=valor3… reflejan son el nombre y el valor de los campos
enviados por el formulario.

Por ejemplo: nombre=Pepe, apellidos=Flores, etc. nos dice que el campo del formulario que se
denomina nombre llega con valor “Pepe” mientras que el campo del formulario que se denomina
apellidos llega con valor “Flores”

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Tener en cuenta que para separar la primera pareja se usa el símbolo ‘?’ y para las restantes el símbolo
‘&’.

Otro aspecto a tener en cuenta es que determinados caracteres no son recibidos en la URL de la misma
forma exactamente en que fueron escritos en el formulario. Por ejemplo, el valor del campo email que
se recibe en la URL es h52turam%40uco.es, mientras que el usuario en el formulario habrá introducido
con toda seguridad h52turam@uco.es. Como vemos, el carácter @ ha sido sustituido por los caracteres
%40. Estas equivalencias se introducen automáticamente en la transmisión de datos debido a que las
URLs no admiten determinados caracteres como letras con tildes, arrobas y otros. No debes
preocuparte por esta codificación, ya que si posteriormente rescatamos los valores mediante otros
mecanismos volveremos a obtener el texto original. Simplemente, conviene conocer esta circunstancia
para no pensar que están ocurriendo cosas extrañas o errores.

Hemos visto el resultado de un envío por el método get. En el caso de un envío de datos usando el
método POST, aunque estos datos también serán enviados (de una forma que podemos denominar
“oculta”), no los podremos ver en la URL. Para poder recuperar los valores de los campos en el caso de
un envío con el método post necesitaríamos otras herramientas (por ejemplo valernos del lenguaje PHP
para recuperar el valor de esos campos).

El resultado final con ambos métodos podemos decir que es el mismo: la información se transmite de
un lado a otro. La diferencia radica en que con el método GET podemos ver directamente los
parámetros pasados ya que están dentro de la URL mientras que con el método POST los parámetros
quedan ocultos y para rescatarlos hay que usar otras herramientas.

Un ejemplo de uso del método post sería este:


<form action="http://aprenderaprogramar.com/prog/newuser.php" method="post">
Cuando usamos el método post los datos enviados desde el formulario no son visibles, pero sí son
recuperables usando las instrucciones adecuadas.
EJERCICIO
Crea un archivo HTML que contenga un formulario que contenga un checkbox (¿Desea recibir factura?),
dos input radio (Varón/Mujer), tres input tipo texto (Nombre, Dirección, Email) y un combobox para
forma de envío (normal, por avión o urgente), junto con un botón de envío. Establece como url de envío
la dirección recibe.php y método de envío get y comprueba que se recuperan los datos enviados
correctamente a través de la url.

RECUPERANDO DATOS DEL FORMULARIO. VARIABLES $_REQUEST, $_GET y $_POST

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.
Por ejemplo, si realiza una compra, tendremos que recuperar los datos para completar el proceso de
pago. La información del formulario “viaja” almacenada en variables que podremos recuperar y utilizar
mediante PHP.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

La recuperación de variables con PHP es bastante fácil, ya sean datos de un formulario enviado por el
método post (parámetros no visibles) o por el método get (parámetros en la URL sí visibles). Antes que
nada hay que aclarar que hay varios métodos para recuperar variables con PHP. Para los formularios
tenemos los métodos GET, POST, y REQUEST.

RECUPERAR VARIABLES CON GET

GET nos permite recuperar parámetros desde la URL o desde formularios enviados con el método GET.

Escribe este código y guárdalo con un nombre de archivo como ejemplo1.html. A continuación, sube el
fichero al servidor, introduce un nombre en el campo del formulario y visualiza el resultado.

<form name="formulario" method="get" action="ejemploGet.php">

Nombre: <input type="text" name="nombre" value="">


<input type="submit" />

</form>

Antes de pulsar sobre el botón enviar, debemos crear el fichero ejemploGet.php que es el indicado en
el formulario para el envío de los datos.

Escribe este código y guárdalo con un nombre de archivo como ejemploGet.php. A continuación, sube
el fichero al servidor en la misma carpeta donde subiste el ejemplo1.html

<?php //Ejemplo aprenderaprogramar.com


$nombre = $_GET['nombre']; echo $nombre;

?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Fíjate que la instrucción $_GET['nombreDelParametro'] sirve para recuperar la información recibida.


Una vez completemos el paso anterior, pulsaremos sobre el botón enviar del ejemplo1.html y veremos
una imagen similar a la siguiente.

Vamos a explicar el proceso que ha tenido lugar.

El primer archivo es un documento HTML. Para ser más correctos, deberíamos haberlo escrito de esta
manera:

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


"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
</head>
<body>
<form name="formulario" method="get" action="ejemploGet.php">

Nombre: <input type="text" name="nombre" value="">


<input type="submit" />
</form>
</body>
</html>

Sin embargo, comprobamos que los navegadores tratan de interpretar y mostrar el resultado de un
código HTML (o PHP) incluso cuando la sintaxis o la definición del documento no es del todo correcta.
Esto debemos conocerlo, sin embargo recomendamos que siempre se trate de ser lo más correctos
posibles a la hora de escribir código web.

Vemos que hemos definido un formulario en cuya cabecera hemos puesto que el método de envío de
los datos va a ser el método get y que la URL de destino va a ser ejemploGet.php. A su vez, el
formulario tiene un campo cuyo atributo name es “nombre”. Ese atributo define el nombre de la
variable que vamos a poder recuperar en la URL de destino.

En el archivo php hemos incluido la línea $nombre = $_GET['nombre']; que significa que creamos una
variable php denominada $nombre donde almacenamos la información del campo ‘nombre’ que recibe
la URL a través del método get proviniente del formulario. Si tuviéramos otros campos que hubiéramos
definido como apellidos, teléfono, edad, el tratamiento sería similar. Por ejemplo:
$apellidos = $_GET['apellidos'];
$telefono = $_GET['celular'];
$edadPersona = $_GET['edad'];

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Fíjate en que una cosa es la variable en la que almacenamos la información recuperada, y otra cosa es
el nombre del campo del formulario de donde proviene. Por ejemplo en $apellidos = $_GET['apellidos'];
coinciden el nombre de la variable que utilizamos con el nombre del campo del formulario. Sin
embargo, en $telefono = $_GET['celular']; no coinciden. En este caso, el campo que proviene del
formulario se llama ‘celular’ mientras que la información que venga en ese campo la almacenamos en
una variable a la que hemos llamado $telefono. Finalmente, en $edadPersona = $_GET['edad']; estamos
almacenando en una variable a la que hemos llamado $edadPersona la información proviniente de un
campo del formulario denominado ‘edad’.

Con frecuencia los nombres de las variables y de los campos del formulario se hacen coincidir, pero en
otras ocasiones no. Esto queda a elección del programador.

Como podemos observar, recuperar datos enviados por un formulario con el método GET es bastante
simple usando PHP.

EJERCICIO RESUELTO Nº 1

Diseñar un formulario web que pida la altura y el diámetro de un cilindro en metros. Una vez el usuario
introduzca los datos y pulse el botón calcular, deberá calcularse el volumen del cilindro y mostrarse el
resultado en el navegador.

SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

1. Inicio
2. Mostrar “Introduzca el diámetro, en metros” : Pedir
D
3. Mostrar “Introduzca la altura, en metros” : Pedir H
4. R = D/2 : Pi = 3,141593
5. V = Pi * (R ^ 2) * H
6. Mostrar “El volumen del cilindro es de”, V, “metros
cúbicos” 7. Fin

Esquematizar la solución en pseudocódigo es una buena idea antes de realizar la programación, pues
nos permite definir conceptualmente cómo va a ser nuestro código antes de escribirlo. Es sobre todo
adecuado para personas que se están iniciando en la programación.

En primer lugar, crearemos el archivo html con el formulario.

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

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<form name="formularioDatos" method="get" action="ejemploGet1.php">

<p> CÁLCULO DEL VOLUMEN DE UN CILINDRO </p>

<br/>
Introduzca el diámetro en metros: <input type="text" name="diam" value="">

<br/> <br/>
Introduzca la altura en metros: <input type="text" name="altu" value="">
<br/> <br/>

<input value="Calcular" type="submit" />


</form>
</body>
</html>

Por otro lado, crearemos el archivo php con el tratamiento de datos:

<?php //Ejemplo aprenderaprogramar.com

$diametro = $_GET['diam'];

$altura = $_GET['altu'];

$radio = $diametro/2;

$Pi = 3.141593;

$volumen = $Pi*$radio*$radio*$altura;

echo "<br/> &nbsp; El volumen del cilindro es de". $volumen. "metros cúbicos"; ?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Fíjate que hemos escrito la potencia del radio como $radio * $radio. En otros lenguajes existe el
operador de exponenciación, pero en php esta operación se tiene que realizar recurriendo a una
función matemática. Esta función la estudiaremos en otro momento.

Finalmente obtenemos un resultado. Haz pruebas introduciendo como valores de diámetro y altura
2,15 y 1,75 en vez de 2.15 y 1.75. Posiblemente no obtengas un resultado adecuado si usas las comas,
ya que en PHP el separador de la parte decimal de un número es el punto.

EJERCICIO RESUELTO Nº 2

Diseñar un desarrollo web simple con php que pida al usuario el precio de tres productos en tres
establecimientos distintos denominados “Tienda 1”, “Tienda 2” y “Tienda 3”. Una vez se introduzca
esta información se debe calcular y mostrar el precio medio del producto.

SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

1. Inicio
2. Mostrar “Introduzca el precio del producto en el establecimiento número 1, en
euros” : Pedir Precio1

3. Mostrar “Introduzca el precio del producto en el establecimiento número 2, en


euros” : Pedir Precio2

4. Mostrar “Introduzca el precio del producto en el establecimiento número 3, en


euros” : Pedir Precio3

5. Media = (Precio1 + Precio2 + Precio3) / 3


6. Mostrar “El precio medio del producto es”, Media, “euros”

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

7. Fin

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

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Ejemplo aprenderaprogramar.com</title>

<meta charset="utf-8">

</head>

<body>

<form name="formularioDatos" method="get" action="ejemploGet2.php">

<p> CÁLCULO DEL PRECIO MEDIO DE UN PRODUCTO </p>

<br/>

Introduzca el precio del producto en el establecimiento número 1, en euros:

<input type="text" name="precio1" value="">

<br/> <br/>

Introduzca el precio del producto en el establecimiento número 1, en euros:

<input type="text" name="precio2" value="">

<br/> <br/>

Introduzca el precio del producto en el establecimiento número 3, en euros:

<input type="text" name="precio3" value="">

<br/> <br/>

<input value="Calcular" type="submit" />

</form>

</body>

</html>

Es posible que durante el desarrollo del curso te encuentres visualizaciones de este tipo, donde podrás
comprobar que los acentos o tildes no se ven bien.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Recordarte que la solución a esto es, cuando estamos trabajando con Notepad++, elegir en el menú
Formato la opción “Codificar en UTF-8 sin BOM”. En caso de que por error el archivo esté en otro
formato, elige la opción “Convertir en UTF-8 sin BOM” para dejar correctamente la codificación del
archivo. También puede ser necesario introducir la etiqueta: <meta charset="utf-8"> entre las etiquetas
<head> … </head> para lograr que la visualización sea correcta.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Por otro lado necesitamos el archivo php para mostrar los resultados:

<?php //Ejemplo aprenderaprogramar.com

$precio1 = $_GET['precio1'];
$precio2 = $_GET['precio2'];
$precio3 = $_GET['precio3'];

$media = ($precio1+$precio2+$precio3)/3; echo "<br/> &nbsp; DATOS RECIBIDOS";


echo "<br/> &nbsp; Precio producto establecimiento 1: ". $precio1. " euros";
echo "<br/> &nbsp; Precio producto establecimiento 2: ". $precio2. " euros";
echo "<br/> &nbsp; Precio producto establecimiento 2: ". $precio3. " euros <br/>";

echo "<br/> &nbsp; El precio medio del producto es de ". $media. " euros";
?>

¿DESDE DÓNDE SE RECUPERAN LOS DATOS?

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Si has realizado el ejercicio anterior habrás comprobado que la URL una vez se pulsa el botón de envío
del formulario es de este tipo:

http://www.aprenderaprogramar.com/ejemploGet2.php?precio1=18.55&precio2=21&precio3=27.55

Aquí podemos comprobar que los datos están en la URL. Ahora bien, los datos venían del formulario.
¿Desde dónde se están recuperando los datos? Para responder a esta pregunta escribe una URL de este
tipo:

http://www.aprenderaprogramar.com/ejemploGet2.php?precio1=10&precio2=15&precio3=20

DATOS RECIBIDOS
Precio producto establecimiento 1: 10 euros
Precio producto establecimiento 2: 15 euros
Precio producto establecimiento 2: 20 euros

El precio medio del producto es de 15 euros

Llegamos a una conclusión: los datos pasan del formulario a la URL, y desde la URL son recuperados por
el intérprete PHP usando $_GET[‘nombreDelParametro’]. Por tanto los datos no vienen directamente
del formulario, sino que son recuperados a través de la URL.

EJERCICIO PROPUESTO

Diseñar un desarrollo web simple con PHP que dé respuesta a la necesidad que se plantea a
continuación.

Un operario de una fábrica recibe cada cierto tiempo un depósito cilíndrico de dimensiones variables,
que debe llenar de aceite a través de una toma con cierto caudal disponible. Se desea crear una
aplicación web que le indique cuánto tiempo transcurrirá hasta el llenado del depósito. El caudal
disponible se considera estable para los tiempos que tardan los llenados de depósitos y lo facilita el
propio operario, aportando el dato en litros por minuto.

ORIENTACIÓN PARA LA SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

1. Inicio
2. Mostrar “Introduzca el caudal disponible en litros / minuto”: Pedir Q

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

3. Mostrar “Introduzca el diámetro del depósito, en metros” : Pedir D


4. Mostrar “Introduzca la altura del depósito, en metros” : Pedir H
5. Pi = 3,141593
6. R=D/2
7. V = Pi * (R ^ 2) * H : Vlitros = V * 1000
8. tminutos = Vlitros / Q
9. Mostrar “El tiempo que transcurrirá hasta el llenado del depósito es de”, tminutos,
“minutos” 10. Fin

Realiza el ejercicio y comprueba los resultados. Para que tengas una referencia, si el caudal disponible
es de 125 litros por minuto y los valores de diámetro y altura del cilindro son 2.15 y 1.75, el resultado
que debes obtener es que el depósito tarda en llenarse será de aproximadamente 50 minutos.

RECUPERANDO DATOS DEL FORMULARIO. VARIABLES $_POST

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.
Por ejemplo, si realiza una compra, tendremos que recuperar los datos para completar el proceso de
pago. La información del formulario “viaja” almacenada en variables que podremos recuperar y utilizar
mediante PHP. Una de las formas de recuperación consiste en usar $_POST.

RECUPERAR VARIABLES CON POST

POST nos permite recuperar datos enviados desde formularios con el método POST. Escribe este código
y guárdalo con un nombre de archivo como ejemplo1.html. A continuación, sube el fichero al servidor,
introduce un nombre en el campo y visualiza el resultado.

<form name="formulario" method="post" action="ejemploPost.php">

Nombre: <input type="text" name="nombre" value="">

<input type="submit" />


</form>

Antes de pulsar sobre el botón enviar, debemos crear el fichero ejemploPost.php que es el indicado en
el formulario para el envío de los datos.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Escribe este código y guárdalo con un nombre de archivo como ejemploPost.php. A continuación, sube
el fichero al servidor en la misma carpeta donde subiste el fichero html.

<?php

$nombre = $_POST['nombre']; echo $nombre;

?>

Una vez completemos el paso anterior, pulsaremos sobre el botón enviar del ejemplo1.html y veremos
una imagen similar a la siguiente.

Vamos a explicar el proceso que ha tenido lugar. El primer archivo es un documento HTML. Para ser
más correctos, deberíamos haberlo escrito de esta manera:

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


"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<form name="formulario" method="post" action="ejemploPost.php">
Nombre: <input type="text" name="nombre" value="">
<input type="submit" />

</form>
</body>
</html>

Sin embargo, comprobamos que los navegadores tratan de interpretar y mostrar el resultado de un
código HTML (o PHP) incluso cuando la sintaxis o la definición del documento no es del todo correcta.
Esto debemos conocerlo, sin embargo recomendamos que siempre se trate de ser lo más correctos
posibles a la hora de escribir código web.

Vemos que hemos definido un formulario en cuya cabecera hemos puesto que el método de envío de
los datos va a ser el método post y que la URL de destino va a ser ejemploPost.php. A su vez, el
formulario tiene un campo cuyo atributo name es “nombre”. Ese atributo define el nombre de la
variable que vamos a poder recuperar en la URL de destino.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

En el archivo php hemos incluido la línea $nombre = $_POST['nombre']; que significa que creamos una
variable php denominada $nombre donde almacenamos la información del campo ‘nombre’ a través
del método post proveniente del formulario. Si tuviéramos otros campos que hubiéramos definido
como apellidos, teléfono, edad, el tratamiento sería similar. Por ejemplo:

$apellidos = $_POST['apellidos'];
$telefono = $_POST['celular'];
$edadPersona = $_POST['edad'];

Fíjate en que una cosa es la variable en la que almacenamos la información recuperada, y otra cosa es
el nombre del campo del formulario de donde proviene. Por ejemplo en $apellidos =
$_POST['apellidos']; coinciden el nombre de la variable que utilizamos con el nombre del campo del
formulario. Sin embargo, en $telefono = $_POST['celular']; no coinciden. En este caso, el campo que
proviene del formulario se llama ‘celular’ mientras que la información que venga en ese campo la
almacenamos en una variable a la que hemos llamado $telefono. Finalmente, en $edadPersona =
$_POST['edad']; estamos almacenando en una variable a la que hemos llamado $edadPersona la
información proveniente de un campo del formulario denominado ‘edad’.
Con frecuencia los nombres de las variables y de los campos del formulario se hacen coincidir, pero en
otras ocasiones no. Esto queda a elección del programador.
Como podemos observar, recuperar datos enviados por un formulario con el método POST es bastante
simple usando PHP.

EJERCICIO RESUELTO Nº 1

Diseñar un formulario web que pida la altura y el diámetro de un cilindro en metros. Una vez el usuario
introduzca los datos y pulse el botón calcular, deberá calcularse el volumen del cilindro y mostrarse el
resultado en el navegador.

SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

1. Inicio
2. Mostrar “Introduzca el diámetro, en metros” : Pedir
D
3. Mostrar “Introduzca la altura, en metros” : Pedir H
4. R = D/2 : Pi = 3,141593
5. V = Pi * (R ^ 2) * H
6. Mostrar “El volumen del cilindro es de”, V, “metros
cúbicos” 7. Fin

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Esquematizar la solución en pseudocódigo es una buena idea antes de realizar la programación, pues
nos permite definir conceptualmente cómo va a ser nuestro código antes de escribirlo. Es sobre todo
adecuado para personas que se están iniciando en la programación.

En primer lugar, crearemos el archivo html con el formulario.

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


"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<form name="formularioDatos" method="post" action="ejemploPost1.php">

<p> CÁLCULO DEL VOLUMEN DE UN CILINDRO </p>


<br/>
Introduzca el diámetro en metros: <input type="text" name="diam" value="">
<br/> <br/>
Introduzca la altura en metros: <input type="text" name="altu" value="">

<br/> <br/>

<input value="Calcular" type="submit" />


</form>
</body>
</html>

Por otro lado, crearemos el archivo php con el tratamiento de datos:

<?php //Ejemplo aprenderaprogramar.com

$diametro = $_POST['diam'];

$altura = $_POST['altu'];

$radio = $diametro/2;

$Pi = 3.141593;

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

$volumen = $Pi*$radio*$radio*$altura;

echo "<br/> &nbsp; El volumen del cilindro es de". $volumen. "metros cúbicos"; ?>

Fíjate que hemos escrito la potencia del radio como $radio * $radio. En otros lenguajes existe el
operador de exponenciación, pero en php esta operación se tiene que realizar recurriendo a una
función matemática. Esta función la estudiaremos en otro momento.

Finalmente obtenemos un resultado. Haz pruebas introduciendo como valores de diámetro y altura
2,15 y 1,75 en vez de 2.15 y 1.75. Posiblemente no obtengas un resultado adecuado si usas las comas,
ya que en PHP el separador de la parte decimal de un número es el punto.

EJERCICIO RESUELTO Nº 2

Diseñar un desarrollo web simple con php que pida al usuario el precio de tres productos en tres
establecimientos distintos denominados “Tienda 1”, “Tienda 2” y “Tienda 3”. Una vez se introduzca
esta información se debe calcular y mostrar el precio medio del producto.

SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

1. Inicio
2. Mostrar “Introduzca el precio del producto en el
establecimiento número 1, en euros” : Pedir Precio1
3. Mostrar “Introduzca el precio del producto en el
establecimiento número 2, en euros” : Pedir Precio2
4. Mostrar “Introduzca el precio del producto en el
establecimiento número 3, en euros” : Pedir Precio3

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

5. Media = (Precio1 + Precio2 + Precio3) / 3


6. Mostrar “El precio medio del producto es”, Media, “euros”
7. Fin

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

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
<title>Ejemplo aprenderaprogramar.com</title>

<meta charset="utf-8">
</head>

<body>

<form name="formularioDatos" method="post" action="ejemploPost2.php">

<p> CÁLCULO DEL PRECIO MEDIO DE UN PRODUCTO </p>

<br/>

Introduzca el precio del producto en el establecimiento número 1, en euros:

<input type="text" name="precio1" value="">

<br/> <br/>

Introduzca el precio del producto en el establecimiento número 1, en euros:

<input type="text" name="precio2" value="">

<br/> <br/>

Introduzca el precio del producto en el establecimiento número 3, en euros:

<input type="text" name="precio3" value="">

<br/> <br/>

<input value="Calcular" type="submit" />

</form>

</body>

</html>
Es posible que durante el desarrollo del curso te encuentres visualizaciones de este tipo, donde podrás
comprobar que los acentos o tildes no se ven bien.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Recordarte que la solución a esto es, cuando estamos trabajando con Notepad++, elegir en el menú
Formato la opción “Codificar en UTF-8 sin BOM”. En caso de que por error el archivo esté en otro
formato, elige la opción “Convertir en UTF-8 sin BOM” para dejar correctamente la codificación del
archivo. También puede ser necesario introducir la etiqueta: <meta charset="utf-8"> entre las etiquetas
<head> … </head> para lograr que la visualización sea correcta.

Por otro lado necesitamos el archivo php.

<?php //Ejemplo aprenderaprogramar.com

$precio1 = $_POST['precio1'];

$precio2 = $_POST['precio2'];

$precio3 = $_POST['precio3'];

$media = ($precio1+$precio2+$precio3)/3; echo "<br/> &nbsp; DATOS RECIBIDOS";


echo "<br/> &nbsp; Precio producto establecimiento 1: ". $precio1. " euros"; echo
"<br/> &nbsp; Precio producto establecimiento 2: ". $precio2. " euros"; echo "<br/>
&nbsp; Precio producto establecimiento 2: ". $precio3. " euros <br/>"; echo "<br/>
&nbsp; El precio medio del producto es de ". $media. " euros"; ?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO PROPUESTO

Diseñar un desarrollo web simple con PHP que dé respuesta a la necesidad que se plantea a
continuación.

Un operario de una fábrica recibe cada cierto tiempo un depósito cilíndrico de dimensiones variables,
que debe llenar de aceite a través de una toma con cierto caudal disponible. Se desea crear una
aplicación web que le indique cuánto tiempo transcurrirá hasta el llenado del depósito. El caudal
disponible se considera estable para los tiempos que tardan los llenados de depósitos y lo facilita el
propio operario, aportando el dato en litros por minuto.

ORIENTACIÓN PARA LA SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

1. Inicio
2. Mostrar “Introduzca el caudal disponible en litros / minuto”: Pedir Q
3. Mostrar “Introduzca el diámetro del depósito, en metros” : Pedir D
4. Mostrar “Introduzca la altura del depósito, en metros” : Pedir H
5. Pi = 3,141593
6. R=D/2
7. V = Pi * (R ^ 2) * H : Vlitros = V * 1000
8. tminutos = Vlitros / Q
9. Mostrar “El tiempo que transcurrirá hasta el llenado del depósito es de”, tminutos,
“minutos” 10. Fin

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Realiza el ejercicio y comprueba los resultados. Para que tengas una referencia, si el caudal disponible
es de 125 litros por minuto y los valores de diámetro y altura del cilindro son 2.15 y 1.75, el resultado
que debes obtener es que el depósito tarda en llenarse será de aproximadamente 50 minutos.

RECUPERANDO DATOS DE FORMULARIOS. VARIABLES $_REQUEST

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.
Por ejemplo, si realiza una compra, tendremos que recuperar los datos para completar el proceso de
pago. La información del formulario “viaja” almacenada en variables que podremos recuperar y utilizar
mediante PHP. Una de las formas de recuperación consiste en usar $_REQUEST.

RECUPERAR VARIABLES CON REQUEST

REQUEST nos permite capturar variables enviadas desde formularios con los métodos GET o POST.
Vamos a ver dos ejemplos de formularios (ejemplo1.html y ejemplo2.html), que en un caso se enviarán
usando GET y en otro usando POST. Ambos formularios enviarán la información (action) a una página
común desde donde recuperaremos los datos usando $_REQUEST.

El código de los archivos html sería el siguiente para ejemplo1.html y ejemplo2.html. Escribe el código
en un editor de texto como Notepad++ y visualízalos en tu navegador:

<form name="formulario" method="get" action="ejemploRequest.php">

Nombre: <input type="text" name="nombre" value="">

<input type="submit" />

</form>

<form name="formulario" method="post" action="ejemploRequest.php">

Nombre: <input type="text" name="nombre" value="">

<input type="submit" />


</form>

Como podemos observar, el ejemplo1.html envía los datos por GET mientras que el ejemplo2.html
envía los datos por POST. Ahora bien, la acción o destino donde se enviarán los datos es la misma en los
dos casos, la dirección ejemploRequest.php.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Escribe este código y guárdalo con un nombre de archivo como ejemploRequest.php. A continuación,
sube el fichero al servidor en la misma carpeta donde subiste el ejemplo1.html y ejemplo2.html

<?phpn //Ejemplo aprenderaprogramar.com


$nombre = $_REQUEST['nombre']; echo
$nombre;

?>
A continuación, observa el resultado obtenido al introducir el nombre tanto en el ejemplo1.html como
en el ejemplo2.html, y verás que es el mismo.

Vamos a explicar el proceso que ha tenido lugar. El primer archivo es un documento HTML. Para ser
más correctos, deberíamos haberlo escrito de esta manera:

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


"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<form name="formulario" method="get" action="ejemploRequest.php">

Nombre: <input type="text" name="nombre" value="">


<input type="submit" />
</form>
</body>
</html>

Sin embargo, comprobamos que los navegadores tratan de interpretar y mostrar el resultado de un
código HTML (o PHP) incluso cuando la sintaxis o la definición del documento no es del todo correcta.
Esto debemos conocerlo, sin embargo recomendamos que siempre se trate de ser lo más correctos
posibles a la hora de escribir código web.

Vemos que hemos definido un formulario en cuya cabecera hemos puesto que el método de envío de
los datos va a ser el método GET y que la URL de destino va a ser ejemploRequest.php. A su vez, el
formulario tiene un campo cuyo atributo name es “nombre”. Ese atributo define el nombre de la
variable que vamos a poder recuperar en la URL de destino. En el archivo php hemos incluido la línea
$nombre = $_REQUEST['nombre']; que significa que creamos una variable php denominada $nombre
donde almacenamos la información del campo ‘nombre’ que recibe la URL a través del método GET

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

proviniente del formulario. Si tuviéramos otros campos que hubiéramos definido como apellidos,
teléfono, edad, el tratamiento sería similar. Por ejemplo:

$apellidos = $_REQUEST['apellidos'];
$telefono = $_REQUEST['celular'];
$edadPersona = $_REQUEST['edad'];

Fíjate en que una cosa es la variable en la que almacenamos la información recuperada, y otra cosa es
el nombre del campo del formulario de donde proviene. Por ejemplo en $apellidos =
$_REQUEST['apellidos']; coinciden el nombre de la variable que utilizamos con el nombre del campo del
formulario. Sin embargo, en $telefono = $_REQUEST['celular']; no coinciden. En este caso, el campo
que proviene del formulario se llama ‘celular’ mientras que la información que venga en ese campo la
almacenamos en una variable a la que hemos llamado $telefono. Finalmente, en $edadPersona =
$_REQUEST['edad']; estamos almacenando en una variable a la que hemos llamado $edadPersona la
información proviniente de un campo del formulario denominado ‘edad’.

Con frecuencia los nombres de las variables y de los campos del formulario se hacen coincidir, pero en
otras ocasiones no. Esto queda a elección del programador.

EJERCICIO RESUELTO Nº 1

Diseñar un formulario web que pida la altura y el diámetro de un cilindro en metros. Una vez el usuario
introduzca los datos y pulse el botón calcular, deberá calcularse el volumen del cilindro y mostrarse el
resultado en el navegador. El envío de datos debe hacerse por GET y la recuperación con REQUEST.

SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

1. Inicio
2. Mostrar “Introduzca el diámetro, en metros” : Pedir
D
3. Mostrar “Introduzca la altura, en metros” : Pedir H
4. R = D/2 : Pi = 3,141593
5. V = Pi * (R ^ 2) * H
6. Mostrar “El volumen del cilindro es de”, V, “metros
cúbicos” 7. Fin

Esquematizar la solución en pseudocódigo es una buena idea antes de realizar la programación, pues
nos permite definir conceptualmente cómo va a ser nuestro código antes de escribirlo. Es sobre todo
adecuado para personas que se están iniciando en la programación. Crearemos el archivo html:

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

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

"http://www.w3.org/TR/html4/loose.dtd">
<html><head> <title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
</head>
<body>
<form name="formularioDatos" method="get" action="ejemploRequest1.php">

<p> CÁLCULO DEL VOLUMEN DE UN CILINDRO </p>


<br/>

Introduzca el diámetro en metros: <input type="text" name="diam" value="">


<br/> <br/>

Introduzca la altura en metros: <input type="text" name="altu" value="">

<br/> <br/>
<input value="Calcular" type="submit" />
</form>
</body>
</html>

Por otro lado, crearemos el archivo php con el tratamiento de datos:

<?php //Ejemplo aprenderaprogramar.com

$diametro = $_REQUEST['diam'];

$altura = $_REQUEST['altu'];

$radio = $diametro/2;

$Pi = 3.141593;

$volumen = $Pi*$radio*$radio*$altura;

echo "<br/> &nbsp; El volumen del cilindro es de". $volumen. "metros cúbicos"; ?>

Fíjate que hemos escrito la potencia del radio como $radio * $radio. En otros lenguajes existe el
operador de exponenciación, pero en php esta operación se tiene que realizar recurriendo a una
función matemática. Esta función la estudiaremos en otro momento.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Finalmente obtenemos un resultado. Haz pruebas introduciendo como valores de diámetro y altura
2,15 y 1,75 en vez de 2.15 y 1.75. Posiblemente no obtengas un resultado adecuado si usas las comas,
ya que en PHP el separador de la parte decimal de un número es el punto.

EJERCICIO RESUELTO Nº 2

Diseñar un desarrollo web simple con php que pida al usuario el precio de tres productos en tres
establecimientos distintos denominados “Tienda 1”, “Tienda 2” y “Tienda 3”. Una vez se introduzca
esta información se debe calcular y mostrar el precio medio del producto. El envío de datos debe
hacerse por POST y la recuperación con REQUEST.

SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

1. Inicio
2. Mostrar “Introduzca el precio del producto en el
establecimiento número 1, en euros” : Pedir Precio1
3. Mostrar “Introduzca el precio del producto en el
establecimiento número 2, en euros” : Pedir Precio2
4. Mostrar “Introduzca el precio del producto en el
establecimiento número 3, en euros” : Pedir Precio3
5. Media = (Precio1 + Precio2 + Precio3) / 3
6. Mostrar “El precio medio del producto es”, Media, “euros”
7. Fin

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

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Ejemplo aprenderaprogramar.com</title>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

<meta charset="utf-8">
</head>

<body>

<form name="formularioDatos" method="post" action="ejemploRequest2.php">

<p> CÁLCULO DEL PRECIO MEDIO DE UN PRODUCTO </p>

<br/>
Introduzca el precio del producto en el establecimiento número 1, en euros:

<input type="text" name="precio1" value="">

<br/> <br/>

Introduzca el precio del producto en el establecimiento número 1, en euros:


<input type="text" name="precio2" value="">

<br/> <br/>

Introduzca el precio del producto en el establecimiento número 3, en euros:

<input type="text" name="precio3" value="">


<br/> <br/>

<input value="Calcular" type="submit" />

</form>
</body>

</html>
Es posible que durante el desarrollo del curso te encuentres visualizaciones de este tipo, donde podrás
comprobar que los acentos o tildes no se ven bien.

Recordarte que la solución a esto es, cuando estamos trabajando con Notepad++, elegir en el menú
Formato la opción “Codificar en UTF-8 sin BOM”. En caso de que por error el archivo esté en otro
formato, elige la opción “Convertir en UTF-8 sin BOM” para dejar correctamente la codificación del
archivo. También puede ser necesario introducir la etiqueta: <meta charset="utf-8"> entre las etiquetas
<head> … </head> para lograr que la visualización sea correcta.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Por otro lado necesitamos el archivo php.

<?php //Ejemplo aprenderaprogramar.com

$precio1 = $_REQUEST['precio1'];
$precio2 = $_ REQUEST ['precio2'];

$precio3 = $_ REQUEST ['precio3']; $media = ($precio1+$precio2+$precio3)/3; echo


"<br/> &nbsp; DATOS RECIBIDOS"; echo "<br/> &nbsp; Precio producto establecimiento 1: ".
$precio1. " euros"; echo "<br/> &nbsp; Precio producto establecimiento 2: ". $precio2.
" euros"; echo "<br/> &nbsp; Precio producto establecimiento 2: ". $precio3. " euros <br/>";
echo "<br/> &nbsp; El precio medio del producto es de ". $media. " euros";

?>

EJERCICIO PROPUESTO

Diseñar un desarrollo web simple con PHP que dé respuesta a la necesidad que se plantea a
continuación. Un operario de una fábrica recibe cada cierto tiempo un depósito cilíndrico de
dimensiones variables, que debe llenar de aceite a través de una toma con cierto caudal disponible. Se
desea crear una aplicación web que le indique cuánto tiempo transcurrirá hasta el llenado del depósito.
El caudal disponible se considera estable para los tiempos que tardan los llenados de depósitos y lo
facilita el propio operario, aportando el dato en litros por minuto.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

ORIENTACIÓN PARA LA SOLUCIÓN

La solución esquematizada en pseudocódigo es la siguiente:

1. Inicio
2. Mostrar “Introduzca el caudal disponible en litros / minuto”: Pedir Q
3. Mostrar “Introduzca el diámetro del depósito, en metros” : Pedir D
4. Mostrar “Introduzca la altura del depósito, en metros” : Pedir H
5. Pi = 3,141593
6. R=D/2
7. V = Pi * (R ^ 2) * H : Vlitros = V * 1000
8. tminutos = Vlitros / Q
9. Mostrar “El tiempo que transcurrirá hasta el llenado del depósito es de”, tminutos,
“minutos” 10. Fin

Realiza el ejercicio y comprueba los resultados. Para que tengas una referencia, si el caudal disponible
es de 125 litros por minuto y los valores de diámetro y altura del cilindro son 2.15 y 1.75, el resultado
que debes obtener es que el depósito tarda en llenarse será de aproximadamente 50 minutos.

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

RESUMEN DE LAS DIFERENCIAS ENTRE $GET, $POST Y $REQUEST

MÉTODO CONCEPTO OBSERVACIONES


GET lleva los datos de forma "visible" al cliente Los datos son visibles por la URL, por ejemplo:
(navegador web). El medio de envío es la URL. www.aprenderaprogramar.com/
GET Para recoger los datos que llegan en la url se usa action.php?nombre=pedro&apellidos1=
$_GET. gomez
La ventaja de usar POST es que estos datos no
POST consiste en datos "ocultos" (porque el
son visibles al usuario de la web. En el caso de
cliente no los ve) enviados por un formulario
usar get, el propio usuario podría modificar la
POST cuyo método de envío es post. Es ideal para
URL escribiendo diferentes parámetros a los
formularios. Para recoger los datos que llegan
reales en su navegador, dando lugar a que la
por este método se usa $_POST.
información tratada no sea la prevista.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

La ventaja principal de esta forma de


No es un método de envío propiamente dicho,
recuperar los datos de un formulario es que no
es decir, no podemos poner en un formulario
tenemos que saber con cual método fue
HTML que el method sea REQUEST. Con la
REQUEST enviado. La desventaja principal, como
variable $_REQUEST recuperaremos los datos de
veremos en el siguiente ejemplo, es que no
los formularios enviados tanto por GET como
podremos diferenciar una variable enviada por
por POST.
GET o por POST.

Ahora nos podemos estar preguntado: ¿Qué pasaría si envío una variable nombre con un formulario
por método post y además en la página de recuperación de datos también está definida dicha variable
en la url y obtengo dicho variable con $_REQUEST? ¿Cuál me devolvería?

Pues bien, para contestar a esta cuestión planteemos el siguiente ejercicio.

Escribe este código y guárdalo con un nombre de archivo como ejemploPostGetRequest.html. A


continuación, sube el fichero al servidor.

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


"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title>
<meta charset="utf-8">
</head>
<body>
<form name="formularioDatos" method="post"
action="ejemploGetPostRequest.php?nombre=pepito">

Introduzca su nombre: <input type="text" name="nombre" value="">


<br/> <br/>

<input value="Enviar" type="submit" />


</form>
</body>
</html>

Introduciremos un nombre diferente a pepito, con lo que en la página de recuperación de datos,


tendremos dos valores para 'nombre'. Y ahora comprobaremos cuál nos devuelve
$_REQUEST['nombre']. Para ello escribe este código y guárdalo con un nombre de archivo como

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

ejemploPostGetRequest.php. A continuación, sube el fichero al servidor en la misma carpeta donde


subiste el ejemploPostGetRequest.html

<?php //Ejemplo aprenderaprogramar.com


echo "nombre = " . $_REQUEST['nombre'];

?>

Como podemos observar, el valor que toma $_REQUEST es primero el valor enviado por POST y
después el enviado por GET (si no viniera en POST). Luego, como hemos observado, $_REQUEST da
prioridad a los valores enviados por POST antes que a los enviados por GET.

Recuerda también que una URL es modificable por el usuario fácilmente. Por ejemplo si un formulario
envía datos así: www.aprenderaprogramar.com/action.php?nombre=pedro, el usuario podría modificar la
URL escribiendo directamente en su navegador www.aprenderaprogramar.com/action.php?nombre=barack.
Esto puede tener cierta importancia, sobre todo en el caso de transmisión de datos relativos a precios,
ya que si el precio se transmite por get será manipulable por el usuario (algo indeseable). Get tiene la
ventaja de que los datos son visibles y más fáciles de seguir y localizar, y el inconveniente de que puede
ser manipulado más fácilmente.

INTRODUCCIÓN AL MANEJO DE ARCHIVOS CON PHP.

Cuando necesitamos crear, guardar, leer o escribir archivos en la creación de sitios web, el manejo de
éstos se convierte en una prioridad. Para ello, vamos a ver una serie de funciones y algunos ejemplos
para familiarizarnos con el manejo de archivos a nivel básico en php.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

FUNCIÓN FOPEN

La función fopen() sirve para abrir ficheros (archivos). Su sintaxis general:

<?php //Ejemplo aprenderaprogramar.com

$fp = fopen(fichero, modoDeApertura);


?>

Donde $fp es el descriptor o identificador del fichero abierto que necesitaremos más tarde.

fichero puede ser un archivo de texto, un archivo con extensión .php, o incluso la URL de una página
web (por ejemplo http://www.paginaweb.com/). “Abrir” una web con fopen() puede ser muy útil
cuando queremos comprobar si la web existe, o si está activa.

Si fichero empieza con "http://", se abre una conexión hacia la web especificada. Siempre debe
ponérsele una barra ( / ) al final.

Si fichero empieza con “ftp://", se abre una conexión al servidor especificado.

Si fichero no empieza con ninguna de las cosas anteriormente dichas, se abre una conexión "directa"
con el archivo especificado. Si no existe el archivo o dirección especificadas, se devuelve un error.

Hay distintos modos de apertura de archivos, vamos a ver los más habituales.

A la hora de abrir un archivo, hay que saber de qué forma queremos abrirlo. Podemos abrirlo para
escritura y lectura, pero de distintas formas:

Modo Observaciones

r Abre el archivo sólo para lectura. La lectura comienza al inicio del archivo.

r+
Abre el archivo para lectura y escritura. La lectura o escritura comienza al inicio del
archivo.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

w
Abre el archivo sólo para escritura. La escritura comienza al inicio del archivo, y
elimina el contenido previo. Si el archivo no existe, intenta crearlo.

w+
Abre el archivo para escritura y lectura. La lectura o escritura comienza al inicio del
archivo, y elimina el contenido previo. Si el archivo no existe, intenta crearlo.

a
Abre el archivo para sólo escritura. La escritura comenzará al final del archivo, sin
afectar al contenido previo. Si el fichero no existe se intenta crear.

a+
Abre el archivo para lectura y escritura. La lectura o escritura comenzará al final del
fichero, sin afectar al contenido previo. Si el fichero no existe se intenta crear.

Ejemplos

<?php //Ejemplo aprenderaprogramar.com


$fp = fopen("/apr2/fichero.txt", "r");
$fp = fopen("/apr2/fichero2.txt", "w");
$fp = fopen("http://www.aprenderaprogramar.com/texto.txt", "a+");
$fp = fopen("ftp://ftp.elmundo.es/fichero.txt", "w");

?>

Ahora bien, con esta simple instrucción sólo tendremos el archivo abierto para leer, escribir, o leer y
escribir. Pero ahora tendremos que hacer uso de las otras instrucciones para escribir o recuperar los
datos que estimemos oportunos.

FUNCIÓN FCLOSE

La función fclose(identificadorDelFichero) cierra un archivo abierto.

Esta función debe ser utilizada después de abrir y manipular el archivo como veremos en los siguientes
ejemplos.

FUNCIONES FGETS Y FEOF

La función fgets() recupera el contenido de una línea de un archivo. Su sintaxis general es:

<?php //Ejemplo aprenderaprogramar.com

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

fgets(descriptorDelFichero);
?>

Ejemplo

<?php // Ejemplo aprenderaprogramar.com

// Leemos la primera línea de fichero.txt

// fichero.txt tienen que estar en la misma carpeta que el fichero php //


fichero.txt es un archivo de texto normal creado con notepad, por ejemplo.

$fp = fopen("fichero.txt", "r");

$linea = fgets($fp);
fclose($fp);

?>

Ahora bien, con esto sólo leeremos la primera línea del fichero de texto, si quisiéramos leer línea a línea
hasta el final necesitaríamos el uso de un bucle while, por ejemplo.

<?php // Ejemplo aprenderaprogramar.com

// Iremos leyendo línea a línea del fichero.txt hasta llegar al fin (feof($fp))
// fichero.txt tienen que estar en la misma carpeta que el fichero php //
fichero.txt es un archivo de texto normal creado con notepad, por ejemplo.

$fp = fopen("fichero.txt", "r"); while(!feof($fp))


{ $linea = fgets($fp);

echo $linea . "<br />"; }


fclose($fp);
?>

Esto nos mostrará el contenido del fichero de texto línea a línea. Comprobarás que hemos incluido una
nueva función denominada feof (que viene significando algo así como file end of file o “marca de final
de archivo”). La sintaxis general para esta función es: feof (identificadorDelArchivo)

La función feof nos devuelve true cuando hemos llegado al final de archivo y false si no lo hemos
alcanzado todavía. La condición while (!feof($fp)) podríamos haberla escrito también de la siguiente
manera: while (feof($fp)==false) . Esta sintaxis es equivalente, puedes utilizar la que prefieras, pero
debes acostumbrarte a entender ambas formas de escritura.

Finalmente, fíjate como una vez hemos de terminado de operar con el fichero escribimos la instrucción
fclose(identificadorDelFichero) para cerrar la conexión, cosa que debemos hacer siempre.
FUNCIÓN FPUTS

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

La función fputs() escribe una línea en un archivo. Su sintaxis general es:

<?php //Ejemplo aprenderaprogramar.com

fputs(descriptorDelFichero, cadena);

?>

Ejemplo

<?php // Ejemplo aprenderaprogramar.com

// Escribimos una primera línea en fichero.txt

// fichero.txt tienen que estar en la misma carpeta que el fichero php


$fp = fopen("fichero.txt", "w"); fputs($fp, "Prueba de
escritura aprenderaprogramar.com"); fclose($fp);

?>

Fíjate que al realizar la apertura del fichero en modo w, si el fichero no existe, será creado. Fíjate
también como una vez hemos de terminado de operar con el fichero escribimos la instrucción
fclose(identificadorDelFichero) para cerrar la conexión, cosa que debemos hacer siempre.

Si ahora abrimos el fichero con algún editor de textos como Notepad, bloc de notas o cualquier otro,
veremos lo siguiente:

EJERCICIO

Crea las siguientes funciones en PHP:

a) Una función (tipo procedimiento, no hay valor devuelto) denominada escribirTresNumeros que
reciba tres números enteros como parámetros y proceda a escribir dichos números en tres líneas en un
archivo denominado datosEjercicio.txt. Si el archivo no existe, debe crearlo.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

b) Una función denominada obtenerSuma (tipo función, devolverá un valor numérico) que reciba
una ruta de archivo como parámetro, lea los números existentes en cada línea del archivo, y devuelva
la suma de todos esos números.

c) Una función denominada obtenerArrNum (tipo función, devolverá un array de valores


numéricos) que reciba una ruta de archivo como parámetro, lea los números existentes en cada línea
del archivo, y devuelva un array cuyo índice 0 contendrá el número existente en la primera línea, cuyo
índice 1 contendrá el número existente en la segunda línea y así sucesivamente.

d) Crea código php donde a través de la función escribirTresNumeros escribas en el fichero los
números 2, 8, 14. Luego, mediante la función obtenerSuma muestra por pantalla el resultado de sumar
los números existentes en el archivo. Finalmente, mediante la función obtenerArrNum obtén el array,
recórrelo y muestra cada uno de los elementos del array.

LECTURA Y ESCRITURA DE ARCHIVOS DE TEXTO CON PHP.

En esta ocasión veremos unos ejemplos prácticos de lectura y escritura de ficheros de texto usando
PHP. El primer lugar, debemos crear un archivo de texto (con cualquier editor, notepad por ejemplo,
aunque también puede valer el bloc de notas de Windows) con algunas líneas de texto.

LECTURA DE FICHEROS

Para leer un archivo de texto línea a línea en PHP vamos a utilizar la función fgets(). Por ejemplo si
queremos leer línea por línea el archivo 'archivo.txt' que se encuentra ubicado en la misma carpeta que
el archivo 'leer.php', tenemos que escribir en el archivo PHP:

<?php //Ejemplo aprenderaprogramar.com


$file = fopen("archivo.txt", "r");

while(!feof($file)) {

echo fgets($file). "<br />";


}
fclose($file);

?>

Como podemos observar, lo primero que debemos hacer es abrir el fichero 'archivo.txt' y luego ir
leyendo línea a línea hasta llegar al final. Recordemos que “r” es el modo de apertura que abre el
archivo sólo para lectura. La lectura comienza al inicio del archivo. Después cerramos el fichero.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Con esto conseguiremos mostrar por pantalla el contenido del fichero 'archivo.txt' tal y como podemos
ver en la siguiente imagen de ejemplo.

El contenido del fichero de texto “archivo.txt” se supone que era el siguiente:

Prueba de escritura de aprenderaprogramar.com

esto es una linea de texto

esto es una linea de texto

esto es una linea de texto

esto es una linea de texto

esto es una linea de texto

fin de la prueba de aprenderaprogramar.com

Lo que hemos hecho con nuestro pequeño programa es ir extrayendo líneas mientras no se detecta el
final del fichero (feof). La condición while(!feof($file)) también podría haberse escrito de esta otra
manera: while(feof($file)==false), con lo que obtendríamos el mismo resultado.

ESCRITURA DE FICHEROS

Para escribir un archivo de texto en PHP podemos utilizar la función fwrite(). Por ejemplo si queremos
escribir línea por línea un archivo 'archivo.txt' que se encuentre ubicado en la misma carpeta que el
archivo 'escribir.php', tenemos que escribir en el archivo PHP:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

<?php //Ejemplo aprenderaprogramar.com, archivo escribir.php


$file = fopen("archivo.txt", "w"); fwrite($file, "Esto es
una nueva linea de texto" . PHP_EOL); fwrite($file, "Otra
más" . PHP_EOL); fclose($file);

?>

Nota: PHP_EOL (end of line) introduce un salto de línea en PHP. Mediante la concatenación con un
punto forzamos el salto de línea después del texto introducido.

Una vez escribimos en nuestro navegador la ruta del fichero escribir.php se ejecuta el código asociado.
Después de la ejecución, podemos ver el fichero creado con un editor de texto cualquiera y
observaremos el siguiente contenido:

Tener en cuenta que el modo de apertura de archivo que hemos usado es w. Si recordamos el
significado de este modo:

w: Abre el archivo sólo para escritura. La escritura comienza al inicio del archivo, y elimina el contenido
previo del archivo. Si el archivo no existe, intenta crearlo.

AÑADIR CONTENIDO A UN FICHERO DE TEXTO

A veces no queremos reemplazar el contenido que exista en un fichero de texto, sino añadir un
contenido adicional al final de lo que ya exista en el mismo. Vamos a ver cómo podemos hacerlo.

A modo de ejemplo añadiremos unas líneas de texto al final del fichero anteriormente escrito:

<?php //Ejemplo aprenderaprogramar.com $file =


fopen("archivo.txt", "a"); fwrite($file,
"Añadimos línea 1" . PHP_EOL); fwrite($file,
"Añadimos línea 2" . PHP_EOL);
fclose($file);

?>

Tener en cuenta que el modo de apertura de archivo que hemos usado es a. Si recordamos el
significado de este modo:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

a: Abre el archivo para sólo escritura. La escritura comenzará al final del archivo sin eliminar el
contenido previo existente. Si el fichero no existe se intenta crear.

Ahora podemos ver el fichero creado con un editor de texto cualquiera y observaremos el siguiente
contenido (no se ha reemplazado el contenido existente, sino que se ha ampliado):

Observamos que hemos añadido las dos nuevas líneas al final del archivo.

EJERCICIO

Crea el siguiente código PHP:

a) Una función (tipo procedimiento, no hay valor devuelto) denominada escribirNumerosMod que
reciba dos parámetros: un array de valores enteros y una cadena de texto que puede ser
"sobreescribir" ó "ampliar". La función debe proceder a: escribir cada uno de los números que forman
el contenido del array en una línea de un archivo datosEjercicio.txt usando el modo de operación que
se indique con el otro parámetro. Si el archivo no existe, debe crearlo.

Ejemplo: El array que se pasa es $numeros = array(5, 9, 3, 22); y la invocación que se utiliza es
escribirNumerosMod($numeros, "sobreescribir"); En este caso, se debe eliminar el contenido que
existiera previamente en el archivo y escribir en él 4 líneas, cada una de las cuales contendrá los
números 5, 9, 3 y 22.

b) Una función (tipo procedimiento, no hay valor devuelto) denominada leerContenidoFichero que
reciba como parámetro la ruta del fichero y muestre por pantalla el contenido de cada una de las líneas
del fichero.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

c) Crea código php donde a través de la función escribirNumerosMod escribas en el fichero los
números 2, 8, 14. Luego, mediante la función leerContenidoFichero muestra el contenido del fichero.
Ahora con la función escribirNumerosMod amplía el contenido del fichero y añádele los números 33, 11
y 16. Muestra nuevamente el contenido del fichero por pantalla. Finalmente, escribe el fichero
pasándole un array con los número 4, 99, 12 y parámetro <<sobreescribir>> para eliminar los datos que
existieran previamente. Muestra el contenido del fichero por pantalla y un mensaje de despedida.

LECTURA ARCHIVOS DE TEXTO CON PHP USANDO LA FUNCIÓN FILE_GET_CONTENTS.

Además de con la función fopen podemos realizar la lectura de ficheros de texto usando la función
file_get_contents de PHP. La lectura de ficheros usando esta función es relativamente sencilla. Como
podremos observar en los siguientes ejemplos y ejercicios, con dicha función podremos leer archivos de
texto sin necesidad de ir recorriéndolos línea a línea para obtener su contenido.

FUNCIÓN FILE_GET_CONTENTS.

La sintaxis general a emplear es: file_get_contents($ruta_del_fichero);

Ejemplo: crea un archivo denominado archivo.txt con diferentes líneas de texto. Para recuperar el
contenido del archivo escribe este código php:

<?php //Ejemplo aprenderaprogramar.com

$texto = file_get_contents("archivo.txt");
echo $texto;
?>

Como podrás observar, el fichero es mostrado sin saltos de línea. Para convertir esos caracteres de
salto de línea a etiquetas <br /> que den lugar a que se visualice el salto de línea en HTML y poder así,
visualizarlos en un navegador, necesitamos usar la función nl2br.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

FUNCIÓN NL2BR

La función nl2br convierte los saltos de línea a etiquetas <br /> con lo que podremos ver esos saltos de
línea en cualquier navegador. Para el ejemplo anterior podemos incluirla y así poder ver los saltos de
línea correctamente. Escribe este código en un archivo como ejemplo1.php y visualiza el resultado.

<?php //Ejemplo aprenderaprogramar.com

$texto = file_get_contents("archivo.txt");

$texto = nl2br($texto);
echo $texto;
?>

OTROS USOS DE FILE_GET_CONTENTS

Como dato adicional, la función file_get_contents, puede obtener el contenido de una página web en
forma de código HTML, es decir, su código fuente. Para ello escribiremos la dirección de la web.

Ejemplo.

<?php //Ejemplo aprenderaprogramar.com


$texto = file_get_contents("http://www.aprenderaprogramar.com");

echo $texto;

?>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Haciendo un uso más avanzado de esta función podrías hacer cosas como:

- Introducir un fragmento de código de otra página web dentro de tu propia página web. Para
ello extraerías el contenido usando esta función y seleccionarías aquella parte que quieres
mostrar dentro de tu página web.
- Hacer búsquedas de forma similar a como las hacen buscadores tipo Google o Yahoo. Una vez
capturada la información de la página, tendrías que analizarla y almacenarla en bases de datos
para darle el tratamiento que quisieras.
- Copiar el contenido de una web en otra web. - Diversas aplicaciones adicionales.

EJERCICIO 1

Crea un fichero que lleve por nombre miArchivoDePrueba.txt e introduce en él el siguiente texto:

Una base de datos es un sistema informático a modo de almacén.

En este almacén se guardan grandes volúmenes de información.

Por ejemplo, imaginemos que somos una compañía telefónica y deseamos tener almacenados los datos
personales y los números de teléfono de todos nuestros clientes, que posiblemente sean millones de
personas.

A continuación crea un archivo denominado ejemplo2.php donde usando la función file_get_contents


recuperes en una variable el texto que se encuentra en ese fichero y lo muestres en el navegador.

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO 2

Recupera el código fuente de tres páginas web diferentes y usando las funciones para cadenas de php
muestra por pantalla cuántas veces aparece la etiqueta <h1> en cada una de ellas. Ejemplo de
resultado a obtener: La etiqueta h1 aparece 34 veces en aprenderaprogramar.com. La etiqueta h1
aparece 45 veces en elmercurio.cl. La etiqueta h1 aparece 88 veces en clarin.com

¿QUÉ ES UNA BASE DE DATOS?

Una base de datos, básicamente, es un lugar físico y software que permite almacenar, modificar y
eliminar información. Dicho sistema se suele denominar “servidor de base de datos” y comercialmente
existen distintas marcas comerciales o fabricantes de estos sistemas como puede ser Oracle, MySQL,
Microsoft SQL SERVER, etc.

Para tener una idea más precisa sobre qué es y para qué sirve una base de datos puedes consultar la
siguiente dirección:

http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=554:que-es-y-para-que-sirve-
unabase-de-datos-principales-tipos-oracle-mysql-sqlserver-postgre&catid=46:lenguajes-y-entornos&Itemid=163

CREAR UNA BASE DE DATOS MySQL EN NUESTRO SERVIDOR. CREAR UNA TABLA. TIPOS DE DATOS
BÁSICOS.

En primer lugar tendremos que acceder al Panel de Control de nuestro servidor. Para ello, tendremos
que teclear en nuestro navegador la dirección URL de acceso al panel de administración e introducir el
login y password. Si no dispones de servidor o no recuerdas cómo acceder, cuestiones que hemos
explicado anteriormente en este curso, vuelve a leer el apartado 'ACCEDER VÍA PANEL DE CONTROL
(CPANEL)' disponible en esta dirección web:

http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=529:hosting-gratuito-elegir-crear-la-cuenta-
enservidor-php-y-acceder-via-cpanel-y-via-ftp-ejemplo-cu00813b&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193

Una vez nos encontremos dentro del Panel de Control, se nos mostrará una pantalla con distintas
opciones. Ten en cuenta que el aspecto puede variar porque hay diversos tipos de panel de control.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Dentro de un panel de control de un hosting suelen aparecer apartados como: Información de la


cuenta, Administración FTP, Correo electrónico, Bases de datos, etc.

Nosotros vamos a buscar el enlace a bases de datos ó al gestor de bases de datos phpMyAdmin (en
otros paneles este enlace aparece con el nombre webAdmin). Buscaremos el enlace “phpMyAdmin”. Si
hacemos click sobre dicho enlace, al no tener ninguna base de datos creada nos mostrará un mensaje
indicándonos que no existe ninguna base de datos creada. Por tanto el primer paso que tenemos que
dar es crear la base de datos (create database).

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Pulsaremos sobre la opción Create Database ó New Database para crear una nueva base de datos. En
otros servidores quizás sea necesario acceder a un apartado denominado “MySql”, “Databases” o
similar para poder acceder a crear una base de datos.

En el momento en que se nos pida, indicaremos un nombre para nuestra base datos (nombre que
tendremos que recordar) y haremos click en Create Database. Ten en cuenta que el proceso puede ser
ligeramente distinto según el hosting que estemos utilizando.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Una vez tengamos nuestra base de datos creada nos aparecerá un mensaje informativo y podremos ver
datos importantes para nosotros como el nombre de la base de datos (por ejemplo el nombre de base
de datos podría ser b7_10356956_nombreElegido):

En el hosting que estamos utilizando como ejemplo, el nombre de nuestra base de datos se indica con
nuestro identificador de usuario seguido del nombre que le pusimos a la base de datos, es decir:

b7_10356956_mibasededatos

Pero en otros hosting el nombre de la base de datos podrá crearse de forma diferente. El nombre de la
base de datos es algo que debemos apuntar pues nos hará falta más adelante.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Ahora para administrar la base de datos usaremos una aplicación denominada phpMyAdmin. Se trata
de una aplicación específicamente preparada para administración de bases de datos MySql (MySql es
uno de los sistemas de bases de datos gratuito más usados en todo el mundo).

El acceso a base de datos suele estar protegido con nombre de usuario y password. Es posible que el
nombre de usuario y password para acceder a tu base de datos sea la misma que para acceder al panel
del hosting, pero también es posible que debas establecer un usuario y password específicos.

EJERCICIO

Responde a las siguientes preguntas:

a) ¿Cómo se llama tu proveedor de hosting?

b) ¿Cuál es la dirección url raíz de que dispones en dicho hosting?

c) ¿Cuántas bases de datos te permite crear tu hosting?

d) ¿De qué panel de administración dispones en tu hosting (cPanel, Plesk, DirectAdmin, etc.)?

e) ¿Cuál es el nombre de la base de datos que has creado?

PHPMYADMIN PARA ADMINISTRAR BASES DE DATOS

En la entrega anterior del curso hemos creado una base de datos y para administrar la base de datos
usaremos la aplicación denominada phpMyAdmin, una aplicación específicamente preparada para
administración de bases de datos MySql. Para ir a phpMyAdmin pulsaremos sobre el enlace
'phpMyAdmin'. En otros servidores es posible que haya que acceder de otra manera.

Las bases de datos organizan la información en tablas. El primer paso que vamos a dar es crear una
tabla donde introducir algunos datos a modo de ejemplo. Pinchamos sobre el nombre de la base de
datos y la pantalla que se nos muestra a continuación nos permite crear una tabla en dicha base de
datos (si no te aparece esta opción pulsa en la pestaña “Operaciones”). Nosotros vamos a suponer que
queremos almacenar el nombre, apellidos, dirección, teléfono, edad y altura de personas. Para ello

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

crearemos una tabla que llamaremos <<agenda>> con 6 columnas. Por tanto escribimos como nombre
“agenda”, número de columnas 6 y pulsamos continuar.

El siguiente paso es indicar los nombres y tipos de las columnas.

Los nombres de columnas que pondremos serán: nombre, apellidos, direccion, telefono, edad y altura
(escribimos estos nombres sin tildes). En tipo elegimos VARCHAR para todos las columnas de tipo
cadena de caracteres. El significado de VARCHAR podemos verlo como “texto de longitud variable”. En
vez de texto de longitud variable podríamos haber escogido otro tipo de datos como números enteros,
números autoincrementados de uno en uno para los campos tipo identificador, fechas, etc. El campo
edad lo ponemos de tipo número entero (INT), mientras que el campo altura lo ponemos de tipo
número decimal (FLOAT). De momento no nos interesa saber más y, por tanto, con las cuatro columnas
tipo VARCHAR, una columna tipo entero y otra columna tipo flotante, es más que suficiente para
nuestro objetivo (en este curso no vamos a tratar MySQL más que en aspectos básicos para
comprender cómo interacciona con PHP). Como longitud/valores para los tipos de datos VARCHAR
pondremos 100 que será la longitud máxima en caracteres que podrán ocupar las columnas.

En resumen, al introducir estos datos hemos declarado que vamos a crear una tabla con seis columnas,
denominadas nombre, apellidos, direccion, telefono, edad y altura. El número de filas no está

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

determinado. Además los datos que se almacenen no podrán tener más de 100 caracteres de longitud
para los tipos VARCHAR.

Para finalizar la creación de la tabla 'agenda', pulsamos sobre Guardar y finalizaremos el proceso. La
tabla creada podemos verla como algo similar a esto:

nombre apellidos direccion telefono edad altura

Como vemos ahora la tabla está vacía porque todavía no hemos introducido ningún dato.

Una vez creada la tabla 'agenda' introduciremos algunos datos de prueba. Para ello, pulsaremos sobre
el nombre de la tabla (fíjate que en el lateral izquierdo de phpMyAdmin existe una especie de
navegador que nos permite elegir la tabla a la que queremos ir). Una vez seleccionada una tabla,
veremos que hay varias pestañas (Estructura, SQL, Insertar, Exportar, Importar, Operaciones). Fíjate en
la parte de arriba y verás que te indica el nombre de la base de datos y la tabla en que te encuentras.
Pulsaremos sobre la pestaña 'Insertar' para acceder a introducir los datos para una fila de nuestra tabla.

Nos aparecerá una imagen similar a la siguiente. Nos indica un nombre de columna y los valores para
una fila (nombre, apellidos, direccion, telefono). Añadiremos algunos datos de prueba como: nombre
“Manuel Jesús”, apellidos “López de la Rosa”, dirección “C/Juan Bautista Nº 3”, telefono “658954875”,
edad 32 y altura 1.80. Añadiremos también otros datos como nombre “María”, apellidos “Manzano
Cabezas”, direccion “C/Arco del triunfo Nº 7”, telefono 695001002, edad 19 y altura 1.99.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Después pulsaremos sobre continuar y ya tendremos los datos guardados en la tabla. Ahora la tabla
tendrá este aspecto:

nombre apellidos direccion telefono edad altura


Manuel Jesús López de la Rosa C/Juan Bautista Nº 3 658954875 32 1.80
María Manzano C/Arco del triunfo Nº 695001002 19 1.99
Cabezas 7

Es muy habitual introducir en las tablas una columna denominada id que actúa como identificador
único de cada fila, aunque no es obligatorio (de hecho en este caso no la tenemos).

A partir de aquí, podremos realizar consultas, insertar datos o borrar datos usando PHP tal y como
veremos en los próximos apartados del curso.

EJERCICIO

De la misma forma que has creado la tabla denominada agenda, crea otra tabla denominada
<<ciudades>> que conste de los siguientes 6 campos:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

id ciudad pais habitantes superficie tieneMetro


Como tipo de dato para cada campo tendremos: id INT con índice PRIMARY y opción A_I marcada (A_I
significa auto-increment, este campo se incrementará en 1 ud cada vez que se inserte una fila en la
tabla), ciudad VARCHAR con largo máximo 80, pais VARCHAR con largo máximo 50, habitantes BIGINT
(entero largo), superficie DOUBLE (decimal largo), tieneMetro BOOLEAN (valor booleano, verdadero o
falso. Tener en cuenta que posiblemente esto se refleje como tipo TinyInt: los valores posibles son 0
como equivalente a falso ó 1 como equivalente a verdadero).

A continuación inserta los siguientes datos en la tabla:

id ciudad pais habitantes superficie tieneMetro


1 México D.F. México 555666 23434.34 1
2 Barcelona España 444333 1111.11 0
3 Buenos Aires Argentina 888111 333.33 1
4 Medellín Colombia 999222 888.88 0
5 Lima Perú 999111 222.22 0
6 Caracas Venezuela 111222 111.11 1
7 Santiago Chile 777666 222.22 1
8 Antigua Guatemala 444222 877.33 0
9 Quito Ecuador 333111 999.11 1
10 La Habana Cuba 111222 333.11 0

Visualiza el contenido de la tabla y comprueba que es correcto conforme a lo esperado.

USO DE PHP CON MySQL. CONSULTAS BÁSICAS

Estas próximas entregas no pretenden ser un manual de MySQL aunque sí explicaremos como realizar
consultas básicas desde PHP. Veremos algunas funciones básicas para acceder a una base de datos
MySQL desde PHP para recuperar información, insertar información o borrar información.

Describiremos una serie de funciones básicas que nos servirán para ilustrar cómo utilizar PHP para
realizar consultas a una base de datos: añadir nuevos registros, actualizar registros, borrar registros,
etc. No vamos a estudiar en profundidad las bases de datos ni el lenguaje SQL. Vamos a tratar de ser

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

prácticos, conocer algunas funciones para acceder a bases de datos con PHP y aprender a usarlas a
través de ejemplos.

Una cuestión a comentar es que el acceso a base de datos con PHP admite dos formas distintas: las
funciones tipo mysql, por ejemplo mysql_connect, son las más antiguas, cuyo uso se desaconseja si se
está trabajando con un servidor con una versión de MySql moderna. Las funciones tipo mysqli, por
ejemplo mysqli_connect, son las más modernas, cuyo uso se recomienda siempre que se esté
trabajando con servidores actualizados. Las funciones mysqli pueden escribirse de dos formas: con
estilo orientado a objetos o con estilo por procedimientos. Nosotros vamos a ver cómo usar estas
funciones con el estilo por procedimientos, que es más sencillo inicialmente.

FUNCIÓN mysqli_connect (mysql_connect)

Esta función nos permite crear una conexión con una base de datos concreta.

La sintaxis que usaremos para esta función es:

$nombreConexion = mysqli_connect($hostname , $nombreUsuario , $contraseña);

Para servidores no actualizados usar mysql_connect en lugar de mysqli_connect

La función devuelve una conexión almacenada en la variable $nombreConexion, o FALSE en caso de


error. Los parámetros que hemos indicado son:

$hostname es un nombre de servidor (dato que debemos consultar en nuestra cuenta de hosting).

$nombreUsuario es el nombre de usuario de base de datos, nombre que habremos especificado al


crear la base de datos (si no lo hemos hecho, puede ser el mismo que para acceder a cPanel ó root).
$contraseña es la contraseña de acceso para el usuario de base de datos, contraseña que habremos
especificado al crear la base de datos (si no lo hemos hecho, puede ser la misma que para acceder a
cPanel ó root).

Esta función la entenderemos mejor con el ejemplo que veremos más adelante.

FUNCIÓN mysqli_close (mysql_close)

Esta función nos permite cerrar la conexión con una base de datos anteriormente abierta. Siempre es
recomendable cerrar una conexión cuando hayamos terminado de usarla.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

La sintaxis que usaremos es:

mysqli_close($nombreConexión);

Para servidores no actualizados usar mysql_close en lugar de mysqli_close

La función devuelve TRUE si se ha cerrado correctamente ó FALSE en caso de errror.

El identificador o nombre de conexión será aquel que hayamos obtenido previamente usando la
función mysqli_connect.

Esta función la entenderemos mejor con el ejemplo que veremos más adelante.

FUNCIÓN mysqli_select_db (mysql_ select_db)

Esta función nos permite seleccionar una base de datos concreta dentro de todas las existentes en el
servidor al que nos conectemos.

La sintaxis que vamos a emplear es:

mysqli_ select_db ($nombreConexión, $nombreBaseDatos);

Para servidores no actualizados usar mysql_ select_db ($nombreBaseDatos, $nombreConexión);

La función devuelve TRUE si se ha realizado la selección correctamente ó FALSE en caso de errror.

El nombre de conexión será aquel que hayamos obtenido previamente con la función mysqli_connect.

Esta función la entenderemos mejor con el ejemplo que veremos más adelante.

FUNCIÓN mysqli_query (mysql_query)

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Esta función nos permite ejecutar una consulta a la base de datos que especifiquemos.

La sintaxis que emplearemos es:

$result = mysqli_query($nombreConexion, "Consulta aquí"); ó mysqli_query($nombreConexion, $query);

Para servidores no actualizados usar $result = mysql_query("Consulta aquí", $nombreConexion);

Donde "Consulta aquí" se refiere a una consulta realizada utilizando el lenguaje SQL de consultas a
bases de datos, por ejemplo una consulta puede ser "SELECT * FROM agenda", que podría traducirse
como “selecciona todas las filas de la tabla agenda”.

Esta función devuelve TRUE o FALSE para indicar si las operaciones UPDATE, INSERT o DELETE han
tenido éxito. Para la operación SELECT devuelve un nuevo identificador de resultado. UPDATE significa
“actualizar”, INSERT significa “insertar” y DELETE significa “BORRAR”. SELECT significa “seleccionar”.

El nombre de conexión será aquel que hayamos obtenido previamente con la función mysqli_connect.

Esta función la entenderemos mejor con el ejemplo que veremos más adelante.

RECUPERAR UN RESULTADO: DATA_SEEK, FETCH_ASSOC (MYSQL_RESULT)

Una sentencia de consulta normalmente devuelve “un conjunto de resultados” que según el ejemplo de
sintaxis anterior tendríamos en una variable denominada $result. Por ejemplo, podríamos tener como
resultados de una consulta lo siguiente:

nombre apellidos direccion telefono edad altura


Manuel Jesús López de la Rosa C/Juan Bautista Nº 3 658954875 32 1.80
María Manzano C/Arco del triunfo Nº 695001002 19 1.99
Cabezas 7

La cuestión que nos planteamos ahora es: ¿Cómo extraer el dato de una celda concreta? Por ejemplo el
nombre de la primera fila?
Para ello, usando la sintaxis mysqli escribiríamos esto:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

mysqli_data_seek ($result, numeroDeFila); ó también válido $result->data_seek(numeroDeFila);

$extraido= mysqli_fetch_array($result); ó también válido $extraido=$result->fetch_array();

Aquí estamos dando dos pasos: una sentencia como mysqli_data_seek ($result, 0); significaría
“posiciónate en la fila 0 de los resultados” (la primera fila). También es válido escribir
$result>data_seek(0); que tiene el mismo efecto. Si escribiéramos $result->data_seek(15); signficaría
“posiciónate en la fila 16 de los resultados” (tener en cuenta que se empieza a contar por cero, de ahí
que 0, 1, 2, … , 15 resulten 16 filas).

La sentencia $extraido= mysqli_fetch_array($result); indica que los valores existentes en la fila se


introduzcan en un array cuyos índices en principio pueden ser tanto asociativos (el nombre de la
columna) como numéricos (empezanso por cero). Por ejemplo si la primera columna en la tabla de la
base de datos es <<ciudad>> podemos usar $extraido['ciudad'] para acceder al valor existente en la fila
con la que estemos trabajando para la columna ciudad. Igualmente podríamos usar $extraido[0] para
referirnos a la primera columna, $extraido[1] para referirnos a la segunda columna, $extraido[2] para
referirnos a la tercera columna y así sucesivamente.

Sintaxis mysql: mysql_result

En servidores no actualizados se puede usar la función mysql_result aunque al no pertenecer a la serie


de funciones mysqli no está recomendado su uso.

La sintaxis es: mysql_result($result, $numeroDeFila, "identificadorDeLaColumna");

Esta función nos devuelve el contenido de la celda en la fila y columna indicadas en forma de string
(cadena de caracteres) en caso de éxito, o FALSE en caso de error.

$result es el resultado obtenido previamente con una invocación a la función mysql_query.

numeroDeFila es un número de fila dentro del resultado obtenido teniendo en cuenta que los números
de fila se cuentan empezando desde cero.

identificadorDeLaColumna puede ser el índice del campo (por ejemplo 0), el nombre del campo (por
ejemplo ciudad), o el nombre de la tabla punto nombre del campo (por ejemplo agenda.ciudad)

Finalmente, se puede especificar el nombre del campo que queremos extraer dentro de la fila (esto es
opcional). Esta función la entenderemos mejor con el ejemplo que veremos a continuación.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJEMPLO DE USO DE LAS FUNCIONES ANTERIORES.

Escribe este código en un editor y guárdalo en un archivo de nombre ejemplo1.php (recuerda que antes
debes haber creado la base de datos y creado datos de ejemplo como hemos visto anteriormente).
Recuerda también que debes cambiar y poner tus propios valores en las funciones mysqli_connect y
mysqli_select_db.

<html><head><meta charset="utf-8"></head>

<body>

<?php

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");


mysqli_select_db($link, " b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes


$result = mysqli_query($link, "SELECT * FROM agenda");
mysqli_data_seek ($result, 0);

$extraido= mysqli_fetch_array($result); echo "-


Nombre: ".$extraido['nombre']."<br/>"; echo "-
Apellidos: ".$extraido['apellidos']."<br/>"; echo "-
Dirección: ".$extraido['direccion']."<br/>"; echo "-
Teléfono: ".$extraido['telefono']."<br/>"; echo "-
Edad: ".$extraido['edad']."<br/>";
mysqli_free_result($result); mysqli_close($link);

?>
</body>

</html>

El código con la sintaxis que no usa mysqli (no recomendado) sería:


<html>
<body>

<?php

$link = mysql_connect("sql203.byethost7.com", "b7_10356956", "*****");


mysql_select_db("b7_10356956_mibasededatos", $link); mysql_query("SET
NAMES 'utf8'"); //Para que se muestren las tildes

$result = mysql_query("SELECT * FROM agenda", $link); echo


"Nombre: ".mysql_result($result, 0, "nombre")."<br>"; echo
"Apellidos: ".mysql_result($result, 0, "apellidos")."<br>"; echo
"Dirección: ".mysql_result($result, 0, "direccion")."<br>"; echo
"Teléfono:".mysql_result($result, 0, "telefono")."<br>"; echo
"Edad:".mysql_result($result, 0, "edad")."<br>"; echo
"Altura:".mysql_result($result, 0, "altura")."<br>";
mysql_free_result($result); mysql_close($link);

?>

</body>

</html>

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

En este código lo que hemos hecho es usar las funciones vistas anteriormente y la base de datos y
tablas que creamos en anteriores apartados del curso. Con todo ello lo que hacemos es realizar una
consulta a la base de datos y mostrar los resultados por pantalla.

Interpretemos las líneas que hemos escrito:

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");

Con esta línea introducimos el identificador de conexión en una variable denominada $link. Invocamos
la función mysqli_connect pasándole como parámetros el nombre del hosting, el nombre de usuario y
la contraseña. Estos datos debemos conocerlos (o consultarlos) previamente.

mysqli_select_db($link, "b7_10356956_mibasededatos");

Con esta línea seleccionamos la base de datos pasándole a la función como parámetros el identificador
de conexión (que hemos obtenido y guardado en una variable previamente) y el nombre de base de
datos.

$result = mysqli_query($link, "SELECT * FROM agenda");

Con esta línea seleccionamos todos los registros (filas) y campos (columnas) existentes en nuestra base
de datos. Para seleccionar todos los registros escribimos SELECT *. A continuación indicamos la tabla de
la cual queremos obtener dichos registros y esto lo expresamos con la sintaxis FROM agenda, siendo
agenda el nombre de la tabla en la base de datos. En la llamada a la función incluirmos el identificador
de conexión que hemos obtenido previamente.

Con la sentencia mysqli_data_seek ($result, 0); nos posicionamos en la primera fila (fila cero) de los
resultados de la consulta.

Con la sentencia $extraido= mysqli_fetch_array($result); introducimos en un array al que denominamos


$extraido los datos de la fila cero obtenidos de la consulta.

Finalmente mostramos por pantalla los resultados.

En la versión que no usa mysqli (no recomendada) con la sentencia mysql_result($result, 0, "nombre")
obtenemos el campo “nombre” del primer registro (registro 0) del resultado de la consulta que hemos
almacenado previamente en $result.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

El resultado de invocar el archivo que hemos creado será que se nos muestre por pantalla el nombre,
apellidos, dirección, teléfono, edad y altura almacenados en la primera fila de nuestra base de datos.
Algo similar a esto:

Resumiendo lo que hemos hecho, hemos usado la función mysqli_connect(), que abre una conexión
con el servidor MySQL en el Host especificado (en este ejemplo la máquina donde está alojada el
servidor MySQL es sql203.byethost7.com, pero tú tendrás que introducir tu propio dato). También
hemos especificado un usuario (b7_10356956 en este ejemplo, pero tú tendrás que introducir tu propio
dato), y un password para el usuario indicado (tendrás que escribir tu password de usuario de base de
datos).

Si la conexión ha tenido éxito, la función mysqli_connect() devuelve un identificador de dicha conexión


que es almacenado en la variable $link. Si no tuviera éxito, devuelve 0 (FALSE).

Con mysqli_select_db() PHP le hemos dicho al servidor que en la conexión $link nos queremos conectar
a la base de datos indicada.

La siguiente función mysqli_query(), usando el identificador de la conexión ($link), envía una instrucción
SQL al servidor MySQL para que éste la procese. El resultado de ésta operación es almacenado en la
variable $result.

Finalmente, elegimos la fila de resultados cero con mysqli_data_seek ($result, 0); y guardamos los
resultados de esa fila en un array con $extraido= mysqli_fetch_array($result); . Si quisiéramos mostrar
los siguientes registros tendríamos que incluir instrucciones con los números 1, 2, …

La sentencia mysqli_free_result($result); libera la conexión establecida con la base de datos.

La sentencia mysqli_close($link); cierra la conexión con la base de datos.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

*Nota: Si tenemos algún problema en localizar la información de nuestro proveedor (nombre de base
de datos, usuario, etc.). recordar que dicha información normalmente está disponible en el panel de
control del servidor (cpanel o similar) tal y como vimos en entregas anteriores.

En el panel de control que estamos usando nosotros para este ejemplo, si bajamos con el scroll hacia
abajo, después de la información ftp que nos aparece marcada con un recuadro rojo, aparecerá la
información relativa al servidor de base de datos. Si estás utilizando otro panel de control, tendrás que
buscar el lugar específico donde figura esta información.

EJERCICIO

Utilizando la tabla <<ciudades>> que hemos creado para el ejercicio de la entrega anterior del curso,
cuyo contenido era:

id ciudad pais habitantes superficie tieneMetro


1 México D.F. México 555666 23434.34 1
2 Barcelona España 444333 1111.11 0
3 Buenos Aires Argentina 888111 333.33 1
4 Medellín Colombia 999222 888.88 0
5 Lima Perú 999111 222.22 0

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

6 Caracas Venezuela 111222 111.11 1


7 Santiago Chile 777666 222.22 1
8 Antigua Guatemala 444222 877.33 0
9 Quito Ecuador 333111 999.11 1
10 La Habana Cuba 111222 333.11 0

Crea un archivo php donde se realice una consulta a la base de datos para extraer todos los datos de la
tabla y a continuación muestra por pantalla los valores de país y ciudad de cada fila.

Ejemplo de resultados a obtener:

Los resultados de la consulta a la base de datos son los siguientes: País:


México --- Ciudad: México D.F.
País: España --- Ciudad: Barcelona
País: Argentina --- Ciudad: Buenos Aires


País: Cuba --- Ciudad: La Habana

CONSULTAS MEJORADAS A BASE DE DATOS MySQL CON PHP.

Ahora que conocemos de una forma básica como interactuar con una base de datos MySQL haciendo
uso de distintas funciones o instrucciones PHP, vamos a profundizar un poco más en dichas consultas
para, por ejemplo, recorrer todos los registros de la tabla agenda y visualizarlos de manera correcta
(recordar que en apartados anteriores del curso sólo se mostraban los valores para el primer registro
que se encontraba en la base de datos).

Para conseguir nuestro objetivo nos basaremos en el mismo código que ya hemos utilizado
anteriormente y realizaremos una serie de cambios.

Para empezar, añade algunas filas más a la tabla agenda de la base de datos para que quede así:

nombre apellidos direccion telefono edad altura


Manuel Jesús López de la Rosa C/Juan Bautista Nº 3 658954875 32 1.80
María Manzano C/Arco del triunfo Nº 695001002 19 1.99
Cabezas 7
Pedro Somoza Castro C/Solera nº88, B 88834321 44 1.66
Juana Pérez Rozas Avda. Luarcato nº22 888111222 22 1.77

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Lo primero que vamos a tratar de ver es cómo una invocación de mysqli_fetch_array devuelve un
registro (una fila) de los resultados obtenidos en una consulta a la tabla de la base de datos. ¿Qué fila
de los resultados es la que nos devuelve? Si la fila ha sido establecida usando mysqli_data_seek, nos
devolverá la fila que hayamos especificado. Si no usamos mysqli_data_seek nos devuelve la primera fila
de los resultados.

Si mysqli_fetch_array vuelve a ser invocada sin especificar la fila a extraer, devuelve el siguiente
registro o fila, siguiendo el orden que tienen los resultados de la consulta. Decimos que
mysqli_fetch_array tiene vinculado un puntero o referencia a la fila que debe devolver. Este puntero o
referencia puede definirse usando data seek, o en caso de no definirse, es inicialmente 0 (lo que
significa que nos devolverá inicialmente la fila 0). Una vez invocada mysqli_fetch_array y devueltos los
resultados de la fila 0, el puntero queda apuntando al siguiente registro, es decir, a la fila 1. Este
proceso puede repetirse tantas veces como se desee y por cada llamada mysqli_fetch_array va
avanzando una fila. Cuando ya no existen más filas en los resultados de la consulta la función devuelve
NULL (no hay resultados).

Para comprender el funcionamiento que hemos descrito ejecuta este código (que podemos denominar
“bruto”, pero no te preocupes ahora por la eficiencia del código, céntrate en entender el
funcionamiento de mysqli_fetch_array). Recuerda que debes cambiar los datos relacionados con la
base de datos (nombre de servidor, nombre de base de datos, usuario, password) y escribir los que
estés usando tú.

<html>

<head><meta charset="utf-8"> </head>


<body>
<?php

//Ejemplo aprenderaprogramar.com function mostrarDatos


($resultados) { if ($resultados !=NULL) { echo "-
Nombre: ".$resultados['nombre']."<br/> "; echo "-
Apellidos: ".$resultados['apellidos']."<br/>"; echo "-
Dirección: ".$resultados['direccion']."<br/>"; echo "-
Teléfono: ".$resultados['telefono']."<br/>"; echo "-
Edad: ".$resultados['edad']."<br/>";} else {echo
"<br/>No hay más datos: <br/>".$resultados;}

}
$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");
mysqli_select_db($link, " b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente

$result = mysqli_query($link, "SELECT * FROM agenda");


$extraido1= mysqli_fetch_array($result);
mostrarDatos($extraido1);

$extraido2= mysqli_fetch_array($result);
mostrarDatos($extraido2);

$extraido3= mysqli_fetch_array($result);

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

mostrarDatos($extraido3);

$extraido4= mysqli_fetch_array($result);
mostrarDatos($extraido4);

$extraido5= mysqli_fetch_array($result);
mostrarDatos($extraido5);

$extraido6= mysqli_fetch_array($result);
mostrarDatos($extraido6);
mysqli_free_result($result);
mysqli_close($link);

?>
</body>
</html>

En este ejemplo sólo tenemos cuatro registros. Si tuviéramos más registros el listado se alargaría para
mostrarlos todos ellos. ¿Qué ocurre si la información existente en base de datos comprende muchos
registros? En este caso la información se habrá almacenado en memoria y esto consume recursos del
sistema. Para liberar esta memoria se utiliza la instrucción mysqli_free_result($result);

Escribe ahora este código y fíjate cómo hemos sintetizado el proceso eliminando variables auxiliares.
Recuerda que debes cambiar los datos relacionados con la base de datos (nombre de servidor, nombre
de base de datos, usuario, password) y escribir los que estés usando tú.

<html><head><meta charset="utf-8"> </head>


<body>
<?php

//Ejemplo aprenderaprogramar.com function mostrarDatos


($resultados) { if ($resultados !=NULL) { echo "-
Nombre: ".$resultados['nombre']."<br/> "; echo "-
Apellidos: ".$resultados['apellidos']."<br/>"; echo "-
Dirección: ".$resultados['direccion']."<br/>"; echo "-
Teléfono: ".$resultados['telefono']."<br/>"; echo "-
Edad: ".$resultados['edad']."<br/>";} else {echo
"<br/>No hay más datos!!! <br/>";}

}
$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");
mysqli_select_db($link, " b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente

$result = mysqli_query($link, "SELECT * FROM agenda");


mostrarDatos(mysqli_fetch_array($result));
mostrarDatos(mysqli_fetch_array($result));
mostrarDatos(mysqli_fetch_array($result));
mostrarDatos(mysqli_fetch_array($result));

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

mostrarDatos(mysqli_fetch_array($result));
mostrarDatos(mysqli_fetch_array($result));
mysqli_free_result($result); mysqli_close($link);

?>

</body></html>

Fíjate como mysqli_fetch_array($result) nos devuelve un array con los datos de una fila de las
obtenidas como resultado y cada vez que lo invocamos nos devuelve la siguiente fila hasta que ya no
existen más filas de resultados, momento en que nos devuelve NULL o vacío.

Con una expresión como mostrarDatos(mysqli_fetch_array($result)); estamos pasándole a la función


mostrarDatos el array que nos devuelve mysqli_fetch_array. Si la consulta nos ha devuelto 4 filas,
podemos hacer 4 invocaciones obteniendo en cada invocación una fila. En la quinta invocación, ya
obtenemos NULL (vacío) como resultado.

USO DE WHILE PARA EXTRAER TODOS LOS RESULTADOS DE UNA CONSULTA

Hasta ahora hemos tratado de comprender el funcionamiento de mysqli_fetch_array. Pero obviamente


ir recuperando resultados uno a uno no resulta eficiente. Piensa que el resultado de una consulta
pueden ser cientos o miles de filas y no sería eficiente escribir línea a línea una extracción de datos.

Vamos a recurrir por tanto a crear un bucle de forma que se extraigan de forma automatizada todos los
registros que nos devuelve una consulta.

La sintaxis que emplearemos es de este tipo:

while ($fila = mysqli_fetch_array($result)){


// Operaciones con los resultados que tenemos en $fila
}

Esta expresión es una forma compacta donde se hacen varias cosas al mismo tiempo. Por un lado, se
ejecuta $fila = mysqli_fetch_array($result) con lo cual $fila toma un valor que puede ser un array
resultado ó vacío.

Luego se evalúa el while. while ($variable) lo que hace es entrar al bucle si $variable existe (no está
vacío). while ($fila = mysqli_fetch_array($result)) da lugar a la entrada al bucle mientras no se hayan
extraído todas las filas del resultado.

Esta expresión sintética es útil porque nos permite recorrer muchas filas escribiendo un mínimo de
código. También podríamos escribir esto:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

$hayResultados = true; //Forzamos la entrada al bucle

while ($hayResultados==true){ $fila =

mysqli_fetch_array($result); if ($fila) { //operaciones a

realizar

} else {$hayResultados = false;}

O también esto:

while (($fila = mysqli_fetch_array($result))!=NULL){


//operaciones a realizar

De las diversas alternativas planteadas la que requiere menos código y una vez se entiende resulta más
clara es while ($fila = mysqli_fetch_array($result)), por eso es la que vamos a usar. Escribe el siguiente
código y comprueba los resultados. Recuerda que debes cambiar los datos relacionados con la base de
datos (nombre de servidor, nombre de base de datos, usuario, password) y escribir los que estés
usando tú.

De una forma u otra cada vez que invocamos la función mysql_fetch_array($result) obtenemos un array
asociativo con índice del array los nombres de las columnas, por ejemplo $fila['nombre'],
$fila['apellidos'], $fila['direccion'], $fila['telefono'], $fila['edad'], $fila['altura']. Si ya se han extraido
todas las filas se produce la salida del bucle while. Los programadores suelen llamar a la variable donde
se van extrayendo los resultados $row (en inglés, row es fila). Con mysql_fetch_array($result) también
podemos acceder a través de índices numéricos, por ejemplo $fila[0], $fila[1], $fila[2], $fila[3], $fila[4],
$fila[5].

<html><head><meta charset="utf-8"> </head>

<body>

<?php

//Ejemplo aprenderaprogramar.com function mostrarDatos


($resultados) { if ($resultados !=NULL) { echo "-
Nombre: ".$resultados['nombre']."<br/> "; echo "-
Apellidos: ".$resultados['apellidos']."<br/>"; echo "-
Dirección: ".$resultados['direccion']."<br/>"; echo "-
Teléfono: ".$resultados['telefono']."<br/>"; echo "-
Edad: ".$resultados['edad']."<br/>"; echo
"**********************************<br/>";} else {echo
"<br/>No hay más datos!!! <br/>";}

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

}
$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");
mysqli_select_db($link, " b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente

$result = mysqli_query($link, "SELECT * FROM agenda");


while ($fila = mysqli_fetch_array($result)){
mostrarDatos($fila);

}
mysqli_free_result($result);
mysqli_close($link);

?>
</body></html>

El resultado esperado es que se muestren por pantalla todos los resultados de la consulta:

- Nombre: Manuel Jesús - Apellidos: López de la Rosa - Dirección: C/Juan Bautista Nº 3


- Teléfono: 658954875 - Edad: 32
**********************************
- Nombre: María - Apellidos: Manzano Cabezas - Dirección: C/Arco del triunfo Nº 7
- Teléfono: 695001002 - Edad: 19
**********************************
- Nombre: Pedro - Apellidos: Somoza Castro - Dirección: C/Solera nº88, B
- Teléfono: 88834321 - Edad: 44
**********************************
- Nombre: Juana - Apellidos: Pérez Rozas - Dirección: Avda. Luarcato nº22
- Teléfono: 888111222 - Edad: 22
**********************************
SINTAXIS NO MYSQLI (NO RECOMENDADA)

Recordar que si estamos revisando código antiguo o en servidores no actualizados nos podemos
encontrar que no se usan las funciones de tipo mysqli sino las mysql. A modo de ejemplo de cómo sería
esta sintaxis, mostramos este código:

<html> // Ejemplo php con bases de datos aprenderaprogramar.com

<body>

<?php
$link = mysql_connect("sql203.byethost7.com", "b7_10356956", "*****");
mysql_select_db("b7_10356956_mibasededatos", $link); $result =
mysql_query("SELECT * FROM agenda", $link);

// comienza un bucle que leerá todos los registros existentes

while($row = mysql_fetch_array($result)) {

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

// $row es un array con todos los campos existentes en la tabla


echo "<hr>"; echo "Nombre: ".$row['nombre']."<br>"; echo
"Apellidos: ".$row['apellidos']."<br>"; echo "Dirección:
".$row['direccion']."<br>"; echo
"Teléfono:".$row['telefono']."<br>"; echo
"Edad:".$row['edad']."<br>"; echo
"Altura:".$row['altura']."<br>";

} // fin del bucle de instrucciones mysql_free_result($result);


// Liberamos los registros mysql_close($link); // Cerramos la
conexion con la base de datos echo "<hr>";

?>
</body>
</html>

EJERCICIO 1

Utilizando la tabla agenda que hemos empleado en los ejemplos y funciones para manejo de cadenas
PHP, realiza una consulta a la base de datos para extraer todos los nombres y determina cuántos
nombres en la base de datos empiezan por M.
Ejemplo de resultados a obtener: En la base de datos los nombres que empiezan por M son: 2

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

EJERCICIO 2

Utilizando la tabla <<ciudades>> que hemos utilizado para ejercicios de entregas anteriores del curso,
cuyo contenido era:
id ciudad pais habitantes superficie tieneMetro
1 México D.F. México 555666 23434.34 1
2 Barcelona España 444333 1111.11 0
3 Buenos Aires Argentina 888111 333.33 1
4 Medellín Colombia 999222 888.88 0
5 Lima Perú 999111 222.22 0
6 Caracas Venezuela 111222 111.11 1
7 Santiago Chile 777666 222.22 1
8 Antigua Guatemala 444222 877.33 0
9 Quito Ecuador 333111 999.11 1
10 La Habana Cuba 111222 333.11 0

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Crea un archivo php donde se realice una consulta a la base de datos para extraer todos los datos de la
tabla y a continuación calcula la suma de habitantes de todos los países y cuántas de estas ciudades
tienen metro. Muestra el resultado por pantalla.

Ejemplo de resultados a obtener:

La suma de habitantes de México D.F., Barcelona, Buenos Aires, Medellín, Lima, Caracas, Santiago,
Antigua, Quito y La Habana es: 5663886 habitantes

De estas ciudades tienen metro: 5 ciudades.

INSERCIÓN DE DATOS CON PHP Y MySQL. EJEMPLOS Y EJERCICIOS RESUELTOS.

Vamos a explicar cómo insertar registros en nuestra base de datos MySQL a través de código PHP. En
concreto, añadiremos registros a la tabla agenda que habíamos creado previamente con phpMyAdmin.
Para ello tendremos que realizar lo que se denomina una consulta SQL de inserción (insert into) e ir
añadiendo tantos registros con sus correspondientes valores para los campos como deseemos.

Partiremos de nuestra base de datos donde tenemos una tabla denominada agenda con los siguientes
datos:

nombre apellidos direccion telefono edad altura


Manuel Jesús López de la Rosa C/Juan Bautista Nº 3 658954875 32 1.80
María Manzano C/Arco del triunfo Nº 695001002 19 1.99
Cabezas 7
Pedro Somoza Castro C/Solera nº88, B 88834321 44 1.66
Juana Pérez Rozas Avda. Luarcato nº22 888111222 22 1.77

Para realizar la inserción de datos vamos a utilizar una sintaxis de este tipo:

mysqli_query($link, "INSERT INTO nombreTabla VALUES (datoCol1, datoCol2, … datoColN)");

Donde mysqli_query indica que vamos a realizar una operación (en general se denominan consultas,
aunque en este caso la operación sea una inserción de datos), $link es el identificador de conexión que

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

hayamos obtenido con mysqli_connect, nombreTabla es el nombre de la tabla en la cual vamos a


realizar la inserción de datos y datoCol1, datoCol2, …, datoColN representa los datos que vamos a
insertar en la tabla. Tener en cuenta que debemos indicar los datos en el mismo orden en que se
encuentran las columnas en la tabla. Por ejemplo para nuestra tabla agenda tendremos que seguir el
orden: nombre, apellidos, direccion, telefono, edad, altura (orden de las columnas).

EJEMPLO DE INSERCIÓN DE DATOS EN UNA TABLA

Escribe este código en un editor y guárdalo en un archivo con un nombre como ejemplo1.php. Luego
ejecuta el código (una sola vez, ten en cuenta que si lo ejecutas varias veces insertarás varias veces
repetidamente los datos en la base de datos). Recuerda también que debes cambiar y poner tus
propios valores en las funciones mysqli_connect y mysqli_select_db.
<?php //Ejemplo curso PHP aprenderaprogramar.com
$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");
mysqli_select_db($link, " b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se inserten las tildes correctamente
mysqli_query($link, "INSERT INTO agenda VALUES ('Pedro2', 'Gómez Gómez', 'C/ Buenaventura 54',

'699887766', 35, 1.98)"); mysqli_query($link, "INSERT INTO agenda VALUES ('Antonio2', 'Delgado
Folken', 'C/ El Milagroso

77', '699667744', 88, 1.71)"); mysqli_close($link); // Cerramos


la conexion con la base de datos echo 'Los datos han sido
insertados en la base de datos'; ?>

Nota: si usáramos sintaxis no mysqli se usaría mysql_query ("INSERT INTO nombreDeLaTabla VALUES
(datoCol1, datoCol2, … datoColN ", $link).

Tenemos que tener cuidado de poner los valores en el insert en el orden en el que aparecen en la base
de datos cuando creamos la tabla. Es decir, el primer valor será para la primera columna (en nuestro
ejemplo tipo varchar y corresponderá con el nombre), el segundo será para la segunda columna (en
nuestro ejemplo tipo varchar y se corresponderá con los apellidos), etc. También tendremos que
prestar atención para que los tipos de datos insertados se correspondan con los de la tabla. Por
ejemplo, no debemos insertar un valor numérico decimal si se espera un entero.

Ahora vamos a ejecutar el código de la entrega anterior del curso para ver los nuevos registros añadidos
por pantalla. Escribe este código en un editor y guárdalo en un archivo con un nombre como
ejemplo2.php. Recuerda que debes cambiar y poner tus propios valores en las funciones
mysqli_connect y mysqli_select_db.

<html><head><meta charset="utf-8"> </head><body>


<?php //Ejemplo curso PHP aprenderaprogramar.com
function mostrarDatos ($resultados) { if

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

($resultados !=NULL) {

echo "- Nombre: ".$resultados['nombre']."<br/> "; echo


"- Apellidos: ".$resultados['apellidos']."<br/>"; echo
"- Dirección: ".$resultados['direccion']."<br/>"; echo
"- Teléfono: ".$resultados['telefono']."<br/>"; echo
"- Edad: ".$resultados['edad']."<br/>"; echo
"**********************************<br/>";}

else {echo "<br/>No hay más datos!!! <br/>";}


}
$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");
mysqli_select_db($link, " b7_10356956_mibasededatos");

$tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente

$result = mysqli_query($link, "SELECT * FROM agenda"); while ($fila


= mysqli_fetch_array($result)){ mostrarDatos($fila); }
mysqli_free_result($result); mysqli_close($link);

?>

</body></html>
El resultado esperado es que se muestren por pantalla todos los resultados de la consulta:

- Nombre: Manuel Jesús - Apellidos: López de la Rosa - Dirección: C/Juan Bautista Nº 3 - Teléfono: 658954875 - Edad: 32

**********************************

- Nombre: María - Apellidos: Manzano Cabezas - Dirección: C/Arco del triunfo Nº 7 - Teléfono: 695001002 - Edad: 19

**********************************

- Nombre: Pedro - Apellidos: Somoza Castro - Dirección: C/Solera nº88, B - Teléfono: 88834321 - Edad: 44

**********************************

- Nombre: Juana - Apellidos: Pérez Rozas - Dirección: Avda. Luarcato nº22 - Teléfono: 888111222 - Edad: 22

**********************************

- Nombre: Pedro - Apellidos: Gómez Gómez - Dirección: C/ Buenaventura 54 - Teléfono: 699887766 - Edad: 35

**********************************

- Nombre: Antonio - Apellidos: Delgado Folken - Dirección: C/ El Milagroso 77 - Teléfono: 699667744 - Edad: 88

**********************************

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

Hemos visualizado el contenido de la base de datos usando una consulta y mostrando los resultados
por pantalla. Ten en cuenta que también puedes ver el contenido de la base de datos accediendo
directamente a ella. Accede al panel de administración de tu servidor, luego a phpMyAdmin y
comprueba cómo los nuevos valores insertados se encuentran en la tabla de la base de datos.

Nota: los nuevos datos añadidos pueden aparecer al final o al principio de la tabla. Si quisiéramos ver
los datos con un determinado orden tendríamos que incluir las instrucciones oportunas, pero no vamos
a hablar de ello en este momento.

Vamos a resumir lo que hemos hecho: por un lado hemos accedido a la base de datos mediante código
PHP y hemos insertado dos nuevas filas (al ejecutar ejemplo1.php) en la tabla agenda. Por otro lado
visualizamos el contenido de la tabla agenda (ejemplo2.php) realizando una consulta a la base de datos
y comprobamos que aparecen los dos nuevos registros añadidos, correspondientes a “Pedro Gómez
Gómez” y “Antonio Delgado Folken”.

Las operaciones de inserción en bases de datos son muy frecuentes en programación web. Ten en
cuenta por ejemplo que cada vez que se registra un usuario en una página web hay que guardar la
información del usuario (nombre, correo electrónico, etc.). Igualmente cada vez que se produce una
compra mediante comercio electrónico hay que almacenar la información de la compra en la base de
datos. Es por tanto una operación básica y de gran interés dentro de la programación con bases de
datos.
EJERCICIO

Inserta en la tabla agenda de la base de datos que estamos utilizando los datos de una persona cuyo
nombre es Jesús Murillo Moreno, de 34 años, cuyo teléfono es 655221122, vive en c/Pintor Murillo
nº33, y tiene una altura de 1.67 metros. Presta atención al orden en que debes introducir los datos.
Una vez realizada la inserción, comprueba visualizando los registros existentes en la tabla que la
inserción se haya realizado correctamente. Luego accede al panel de administración del servidor y a la
base de datos con phpMyAdmin. Visualiza los registros en la tabla y borra la fila correspondiente a
Jesús Murillo Moreno utilizando phpMyAdmin. Como puedes comprobar, podemos operar sobre la
tabla tanto a través de phpMyAdmin como a través de código PHP.

BORRADO DE DATOS CON PHP Y MySQL.

Una tarea habitual con bases de datos será el tener que borrar cierta información. Vamos a ver cómo
realizar el borrado de ciertos registros que cumplan una condición y el borrado completo de todos los
registros (filas) de una tabla. Para ello utilizaremos dos expresiones para operaciones (consultas) sobre
bases de datos que describiremos a continuación: delete y truncate.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

SENTENCIA DELETE Y CLÁUSULA WHERE

La sentencia DELETE se suele usar para borrar unos registros de una tabla que cumplen una o varias
condiones. Vamos a utilizar una sintaxis de este tipo:

mysqli_query($link, " DELETE FROM nombreTabla WHERE columna (>, <, =, etc.) valorEspecificado ");

Aquí estamos empleando la cláusula WHERE que nos sirve para indicar una condición. Por ejemplo
DELETE FROM agenda WHERE altura > 1.90 significa “borrar todas las filas de la tabla agenda en las que
en la columna altura exista un valor mayor que 1.90”. Fíjate que al indicar mayor (y no mayor o igual)
una fila donde la altura sea exactamente 1.90 no será borrada.

La cláusula WHERE también puede ser aplicada cuando hacemos consultas de tipo SELECT. Por ejemplo
en entregas anteriores del curso usamos SELECT * FROM agenda como consulta que nos devolvía todas
las filas de la tabla agenda. Si escribiéramos SELECT * FROM agenda WHERE edad <= 35 obtendríamos
como resultado todas las filas de la tabla agenda donde la columna edad contiene un valor menor o
igual a 35.

En una cláusula where podemos establecer una condición de igualdad (=) pero también podremos usar
otras condiciones como mayor (>), menor(<), mayor o igual (>=), menor o igual (<=), y también
condiciones múltiples y condiciones más complejas, pero no vamos a entrar en detalles sobre esto
ahora.

Igual que podemos hacer una consulta para obtener todas las filas de una tabla, también podremos
borrar todos los registros de una tabla en concreto y, para ello, sólo basta con omitir las condiciones, es
decir, hacer una consulta escribiendo lo siguiente: DELETE FROM nombreTabla

Obviamente es peligroso hacer consultas de borrado de datos con bases de datos importantes, ya que
un error a la hora de escribir la consulta puede dar lugar a la pérdida de datos. Nosotros estamos
trabajando con una base de datos de pruebas, por lo que no nos preocuparemos por esta cuestión.
EJEMPLO

Partiremos de nuestra base de datos donde tenemos una tabla denominada agenda con los siguientes
datos:

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

nombre apellidos direccion telefono edad altura


Manuel Jesús López de la Rosa C/Juan Bautista Nº 3 658954875 32 1.80
María Manzano C/Arco del triunfo Nº 695001002 19 1.99
Cabezas 7
Pedro Somoza Castro C/Solera nº88, B 88834321 44 1.66
Juana Pérez Rozas Avda. Luarcato nº22 888111222 22 1.77
Pedro Gómez Gómez C/Buenaventura 54 699887766 35 1.98
Antonio Delgado Folken C/ El Milagroso 77 699667744 88 1.71

Para no afectar a esta tabla, vamos a duplicar la tabla. Esto lo podemos hacer manualmente, pero
también podemos hacerlo de forma automática con phpMyAdmin. Para ello accede al panel de
administración de tu servidor, luego a phpMyAdmin, pulsa sobre el nombre de la base de datos y luego
sobre la tabla. Ahora vete a la pestaña “Operaciones” y busca la opción “Copiar la tabla a:”. Pon como
nombre agenda2 y elige la opción “Copiar estructura y datos”. Pulsa en continuar. Una vez hecho esto
podrás comprobar que en la base de datos tienes dos tablas: agenda y agenda2 (tabla que acabamos de
copiar con los mismos datos que teníamos en agenda).

Escribe este código en un editor y guárdalo en un archivo con un nombre como ejemplo1.php. Ten en
cuenta que deberás introducir los datos de tu propia base de datos (nombre, user, etc.).

<?php //Ejemplo curso PHP aprenderaprogramar.com


$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");
mysqli_select_db($link, "b7_10356956_mibasededatos");
mysqli_query($link, "DELETE FROM agenda2 WHERE altura > 1.90");
mysqli_close($link); // Cerramos la conexion con la base de datos echo
'Se ha ejecutado la consulta sobre la base de datos';

?>

Ejecuta el código. Con este ejercicio borraremos los registros de la tabla agenda cuya altura sea mayor
que 1.90, es decir, en la tabla agenda dejará de haber personas con altura superior a 1.90 porque
habrán sido borrados.

Comprueba con phpMyAdmin que la tabla ha quedado así:

nombre apellidos direccion telefono edad altura


Manuel Jesús López de la Rosa C/Juan Bautista Nº 3 658954875 32 1.80
Pedro Somoza Castro C/Solera nº88, B 88834321 44 1.66
Juana Pérez Rozas Avda. Luarcato nº22 888111222 22 1.77
Antonio Delgado Folken C/ El Milagroso 77 699667744 88 1.71

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

SENTENCIA TRUNCATE

La sentencia TRUNCATE sirve para borrar todos los registros de una tabla, al igual que hacíamos con la
función DELETE sin condiciones, pero tiene algunas diferencias con ésta que explicaremos más
adelante.

La sintaxis a emplear es:

mysqli_query($link, " TRUNCATE TABLE nombreTabla");

Al igual que las operaciones de tipo DELETE, esta operación es peligrosa en el sentido de que si se
ejecuta erróneamente puede dar lugar a la pérdida de datos.

EJEMPLO

Escribe este código en un editor y guárdalo en un archivo con un nombre como ejemplo2.php. Ten en
cuenta que deberás introducir los datos de tu propia base de datos (nombre, user, etc.). Ejecuta el
código sobre la tabla agenda2 para proceder al borrado de todas las filas de esta tabla.

<?php
//Ejemplo curso PHP aprenderaprogramar.com
$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");
mysqli_select_db($link, "b7_10356956_mibasededatos");
mysqli_query($link, "TRUNCATE TABLE agenda2"); mysqli_close($link);

// Cerramos la conexion con la base de datos


echo 'Se ha ejecutado la consulta TRUNCATE';

?>

Con este código borraremos todos los registros de la tabla agenda. Accede a la tabla a través de
phpMyAdmin y comprueba que no existen registros.

¿Cuál es la diferencia entre usar delete sin condiones y usar truncate? Vamos a explicarla a
continuación.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

DIFERENCIAS ENTRE DELETE Y TRUNCATE

a) Ambas eliminan los datos, no la estructura de la tabla.

b) Sólo DELETE permite la eliminación condicional de los registros (es decir, borrar sólo ciertas filas),
TRUNCATE no lo permite.

c) TRUNCATE es más rápida que DELETE.

d) TRUNCATE reiniciará el contador para una tabla que contenga una clave autoincrementada. Si en
nuestra tabla agenda tuviéramos un campo id autoincremental 1, 2, 3, 4, 5 … n (hasta el número de
registros existentes) al hacer TRUNCATE el contador volverá a empezar en 1. En cambio DELETE
mantendrá el contador de la tabla para una clave autoincrementada. Es decir, si borramos todos los
registros de una tabla que tenía un campo contador autoincremental cuyo último valor era 3257, al
insertar un dato después del borrado el valor del contador será 3258 en lugar de 1.

e) TRUNCATE recrea una tabla, es decir, la tabla desaparece completamente y luego es creada de
nuevo, mientras que DELETE no hace que desaparezca la tabla, sólo elimina sus registros.

CUÁNDO USAR DELETE Y TRUNCATE

Usar TRUNCATE es más rapido que DELETE si vas a borrar toda una tabla y no te importan los indices
(claves autoincrementadas) o bien quieres resetearlos (hacer que vuelvan a empezar desde 1).

Usar DELETE para borrados selectivos (borrar determinados registros manteniendo otros).

Hay otras cuestiones que se deben tener en cuenta, pero no te preocupes por esto ahora, lo irás
descubriendo a medida que avances en conocimientos de programación y bases de datos.

EJERCICIO 1

Realiza una consulta y muestra por pantalla los datos correspondientes a filas de la tabla agenda donde
la edad sea mayor o igual que 20 y la altura sea mayor o igual que 1.75.

Para comprobar si tus respuestas y código son correctos puedes consultar en los foros
aprenderaprogramar.com.

Compiladores: Julio Encalada y Diana Granda Año: 2015


Módulo: Programación III Docencia Informática

EJERCICIO 2

Crea una tabla que sea copia de agenda a la que denomines agenda3 y un archivo php que al ejecutarlo
realice los siguientes procesos:
a) Mostrar el contenido inicial de la tabla agenda3 por pantalla.

b) Eliminar todos los registros de la tabla agenda3 cuyo campo edad sea mayor o igual a 34 y mostrar el
contenido actual de la tabla por pantalla.

c) Insertar dos nuevos registros en la tabla agenda3 (elige tú unos datos cualquiera) y mostrar el
contenido actual de la tabla por pantalla.

d) Eliminar todos los registros de la tabla agenda3 usando TRUNCATE y mostrar el contenido actual de
la tabla por pantalla.

e) Insertar tres nuevos registros en la tabla agenda3 (elige tú unos datos cualquiera) y mostrar el
contenido actual de la tabla por pantalla.

f) Eliminar todos los registros de la tabla agenda usando DELETE sin condiciones y mostrar el contenido
actual de la tabla por pantalla.

Compiladores: Julio Encalada y Diana Granda Año: 2015