Sunteți pe pagina 1din 227

TUTORIAL BSICO DEL PROGRAMADOR WEB:

PHP DESDE CERO.


Objetivos
PHP es un lenguaje potente de alto nivel cuyo cdigo podemos introducir en pginas web HTML. PHP
se ejecuta en el servidor (no podemos ejecutarlo en nuestro ordenador a no ser que lo hagamos
funcionar como servidor). PHP, una vez es interpretado por el servidor, genera una salida HTML que
permite visualizar los resultados en los navegadores. Este curso permite aprender los fundamentos
para la creacin de pginas web usando PHP.

Destinatarios
Cualquier persona con inters en aprender fundamentos que le permitan crear pginas web usando PHP.
Para realizar este curso, debes tener conocimientos bsicos de ofimtica: saber copiar, pegar, mover y
abrir archivos. Adems debes tener conocimientos bsicos de HTML.

Contenidos

INTRODUCCIN A PHP. QU ES Y PARA QU SIRVE PHP.


COMUNICACIN ENTRE EL CLIENTE Y EL SERVIDOR SIN PHP Y CON PHP.
MI PRIMERA PGINA EN PHP. TIPOS DE VARIABLES EN PHP.
ESTRUCTURA CONDICIONAL (IF) CON PHP.
ESTRUCTURAS REPETITIVAS (FOR, WHILE, DO/WHILE) CON PHP.
ENVO DE DATOS DE UN FORMULARIO. MTODOS GET Y POST. REQUEST PHP.
ARRAYS TRADICIONALES EN PHP. VECTORES Y MATRICES. ARRAYS ASOCIATIVOS EN PHP.
FUNCIONES EN PHP. DECLARACIN. USO DE FUNCIONES BSICAS PROPIAS DE PHP.
MANEJO DE ARCHIVOS DE TEXTO CON PHP. LECTURA Y ESCRITURA DE ARCHIVOS DE TEXTO.
CONSULTAS BSICAS A BASE DATOS. INTRODUCCIN A PHP CON MYSQL.

Duracin
150 horas de dedicacin efectiva, incluyendo lecturas, estudio y ejercicios.

Direccin, modalidades y certificados


El curso est dirigido por Enrique Gonzlez Gutirrez, responsable del Departamento Tcnico del
portal web aprenderaprogramar.com. Se oferta bajo la modalidad web (gratuito).
Para ms informacin: contacto@aprenderaprogramar.com

C/Los Guanches, 41 38205 La Laguna Tenerife Espaa CIF 54042040K

Indice del curso Tutorial bsico programador web: PHP desde cero.

INDICE DEL CURSO


1.

INTRODUCCIN A PHP

1.1.
1.2.
1.3
1.4.
1.5.

Qu es PHP? Para qu sirve PHP?


Comunicacin entre el cliente y el servidor sin PHP y con PHP.
Diferencia entre pginas web estticas y pginas web dinmicas.
Cules son las versiones de PHP?
Qu necesito para escribir cdigo PHP y crear pginas web dinmicas?

2.

PREPARANDO EL ENTORNO DE DESARROLLO

2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
2.8.

Descargar e instalar Notepad++.


Configuracin bsica de Notepad++ para crear pginas PHP.
Descargar e instalar el Gestor FTP Filezilla.
Descargar e instalar el navegador Google Chrome.
Trabajar en local o o con un servidor remoto. Qu es mejor?
Preparar el entorno para trabajar en local. Eleccin de software: Wamp, Xampp, etc.
Preparar el entorno para trabajar en remoto. Eleccin de servidor gratuito.
Mi primera pgina en PHP.

3.

CONCEPTOS BSICOS DE PHP

3.1.
3.2.
3.3.
3.4.
3.5.

Estructura bsica de una pgina PHP.


Estructura condicional (if) con PHP.
Estructuras repetitivas /for, while, do/while) con PHP.
Arrays tradicionales en PHP. Vectores y Matrices.
Arrays asociativos en PHP.

4.
4.1.
4.2.

FUNCIONES EN PHP
Declaracin y llamadas a funciones en PHP.
Funciones bsicas propias de PHP.

5.

FORMULARIOS CON PHP

5.1.
5.2.

Envo de datos de un formulario. Mtodos GET y POST.


Recuperando datos del formulario. Variables $_REQUEST, $_GET y $_POST. Diferencias.

Para ms informacin: contacto@aprenderaprogramar.com

C/Los Guanches, 41 38205 La Laguna Tenerife Espaa CIF 54042040K

Indice del curso Tutorial bsico programador web: PHP desde cero.

6.

MANEJO DE ARCHIVOS DE TEXTO CON PHP

6.1.
6.2.
6.3.

Introduccin al manejo de archivos con PHP. Funciones fopen, fgets, fputs y fclose.
Lectura y escritura de archivos de texto con PHP.
Lectura completa de un archivo de texto. Funcin file_get_contents.

7.

USO DE PHP CON MySQL

7.1.
7.2.
7.3.
7.4.

Consultas bsicas a base de datos. Introduccin a MySQL.


Consulta de datos con PHP y MySQL.
Insercin de datos con PHP y MySQL.
Borrado de datos con PHP y MySQL.

Prxima entrega: CU00802B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

Para ms informacin: contacto@aprenderaprogramar.com

C/Los Guanches, 41 38205 La Laguna Tenerife Espaa CIF 54042040K

Orientacin curso Tutorial bsico programador web: PHP desde cero

ORIENTACIN SOBRE EL CURSO PASO A PASO TUTORIAL BSICO DEL PROGRAMADOR WEB: PHP
DESDE CERO

PHP es un lenguaje de programacin de alto nivel, diseado originalmente para la creacin de pginas
web dinmicas. Por pgina web dinmica entendemos aquella que puede mostrar informacin cambiante
sin necesidad de que sea el programador quien haga estos cambios: con webs dinmicas podemos por
ejemplo hacer que se muestren noticias enviadas por un usuario sin necesidad de intervencin del
programador.
PHP tiene un gran parecido en su sintaxis con lenguajes de programacin estructurada, como C,
permitiendo a los programadores crear aplicaciones complejas con un corto periodo de aprendizaje.
Tambin permite crear aplicaciones de contenido dinmico sin necesidad de aprender un gran volumen
de funciones.
Este curso, que estamos comenzando, va dirigido a aquellas personas que quieran adquirir unos
fundamentos bsicos para crear pginas web dinmicas con vistas a poder desarrollar en el futuro
pginas web atractivas y de cierta complejidad. No vamos a desarrollar un manual de referencia de PHP,
sino un curso bsico paso a paso. No vamos a contemplar todos los aspectos del lenguaje PHP, sino
aquellos que consideramos bsicos desde el punto de vista didctico, con vistas a que posteriormente la
persona que lo desee ample sus conocimientos. Nuestro objetivo es ser claros, sencillos y breves, y para
eso tenemos que centrarnos en determinadas cuestiones de PHP y dejar de lado otras.
Como conocimientos previos para iniciar este curso recomendamos (seguir la recomendacin o no queda
a criterio del alumno y/o profesor que vayan a seguir el curso) los siguientes: Ofimtica bsica (saber
copiar, pegar, mover y abrir archivos). Adems es necesario tener conocimientos bsicos sobre HTML (si
no conoces HTML, recomendamos seguir el curso bsico de HTML de aprenderaprogramar.com).
Aprender PHP requiere tiempo y esfuerzo. Para hacer ese recorrido ms llevadero, te recomendamos
que utilices los foros de aprenderaprogramar.com, herramienta a disposicin de todos los usuarios de la
web (http://www.aprenderaprogramar.com/foros/), y que te servir para consultar dudas y recabar
orientacin sobre cmo enfrentarte a los contenidos. Entre los miembros del portal web y otros usuarios,
trataremos de ayudarte para que el estudio te sea ms llevadero y seas capaz de adquirir los
conocimientos necesarios y avanzar como programador.
El tiempo necesario (orientativamente) para completar el curso incluyendo prcticas con ordenador,
suponiendo que se cuenta con los conocimientos previos necesarios, se estima en 150 horas de
dedicacin efectiva o aproximadamente tres meses con una dedicacin de 2,5 horas diarias de lunes a
viernes. Aprender a crear pginas web requiere dedicacin y esfuerzo.
El curso ha sido generado paso a paso usando Windows como sistema operativo y por ello contiene
algunas indicaciones especficas para usuarios de Windows, pero tambin puede ser utilizado en otros
entornos (Linux, Macintosh, etc.).
Para ms informacin: contacto@aprenderaprogramar.com

C/Los Guanches, 41 38205 La Laguna Tenerife Espaa CIF 54042040K

Orientacin curso Tutorial bsico programador web: PHP desde cero

Estamos seguros de que con tu esfuerzo y la ayuda que te podamos brindar este curso te resultar de
gran utilidad.

Prxima entrega: CU00802B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

Para ms informacin: contacto@aprenderaprogramar.com

C/Los Guanches, 41 38205 La Laguna Tenerife Espaa CIF 54042040K

Qu es PHP? Para qu sirve PHP? Potente lenguaje de programacin

QU ES PHP? PARA QU SIRVE PHP?


PHP es un lenguaje de cdigo abierto muy popular, adecuado para desarrollo web y que puede ser
incrustado en HTML. Es popular porque un gran nmero de pginas y portales web estn creadas con
PHP. Cdigo 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 cdigo PHP con
cdigo HTML, siguiendo unas reglas.

PHP se utiliza para generar pginas web dinmicas. Recordar que llamamos pgina esttica a aquella
cuyos contenidos permanecen siempre igual, mientras que llamamos pginas dinmicas 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 bsquedas o aportaciones de los usuarios, etc.
Cmo trabaja PHP? El lenguaje PHP se procesa en servidores, que son potentes ordenadores con un
software
y
hardware
especial.
Cuando
se
escribe
una
direccin
tipo
http://www.aprenderaprogramar.com/index.php en un navegador web como Internet Explorer, Firefox
o Chrome, qu ocurre? Se envan los datos de la solicitud al servidor que los procesa, rene los datos
(por eso decimos que es un proceso dinmico) y el servidor lo que devuelve es una pgina HTML como
si fuera esttica.
El esquema es:
Peticin de pgina web al servidor --> El servidor recibe la peticin, rene la informacin necesaria
consultando a bases de datos o a otras pginas webs, otros servidores, etc --> El servidor responde
enviando una pgina web normal (esttica) pero cuya creacin ha sido dinmica (realizando procesos
de modo que la pgina web devuelta no siempre es igual).
En resumen:
Pginas estticas: Peticin --> Respuesta
Pginas dinmicas: Peticin --> Procesado y preparacin --> Respuesta
En un sitio dinmico, la informacin generalmente est contenida en una base de datos. Cada vez que
mostramos la pgina, como por ejemplo una pgina de noticas, buscamos en la base de datos las
ltimas noticias que tenemos ingresadas para mostrar en el navegador del visitante. Ahora bien, cmo
se consigue que la pgina vaya mostrando noticias nuevas? Simplemente cargando las mismas en la
base de datos, por ejemplo, a travs 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 pgina web y el servidor consulte la base de datos, encontrar esta
nueva informacin y mostrar nuestra pgina de forma distinta a como se vea anteriormente.

aprenderaprogramar.com, 2006-2029

Qu es PHP? Para qu sirve PHP? Potente lenguaje de programacin

Por regla general este tipo de lenguaje suele ser utilizado para crear contenido dinmico y poder
interactuar con el usuario.
Veamos un ejemplo del contenido de una pgina web php, que habremos de almacenar en un archivo
que termina con la extensin .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 podrs comprobar el contenido del archivo incluye cdigo HTML y en un momento dado aparece
una etiqueta <?php que significa que ah empieza el cdigo PHP. Por eso decimos que el cdigo PHP
est embebido (incluido o incrustado) en cdigo HTML.
Por tanto las pginas PHP contienen HTML con cdigo PHP incluido en ellas para hacer "algo" (en este
caso, mostrar Bienvenidos a aprenderaprogramar.com. El cdigo PHP est comprendido entre etiquetas
de comienzo y final especiales: <?php y ?>
Estas etiquetas especiales nos permitirn entrar y salir del "modo PHP". Le sirven al servidor web para
saber que tiene que interpretar el cdigo incluido entre esas etiquetas como PHP.
Lo que distingue a PHP de JavaScript es que el cdigo es ejecutado en el servidor, generando HTML y
envindolo al cliente como si fuera una pgina web esttica. El cliente recibir los resultados que el
servidor devuelve despus de interpretar el cdigo PHP, sin ninguna posibilidad de determinar qu
cdigo ha producido el resultado recibido. Es decir, a travs de nuestro navegador podramos ver el
cdigo HTML, pero nunca el cdigo PHP que dio lugar al resultado HTML. El servidor web puede ser
incluso configurado para que los usuarios no puedan saber si ests o no utilizando PHP.
Lo mejor de usar PHP es que es extremadamente simple para el principiante, pero a su vez, ofrece
muchas caractersticas avanzadas para los programadores profesionales y ms avanzados.
Con PHP puedes procesar la informacin de formularios, generar pginas con contenidos dinmicos, o
enviar y recibir cookies, entre muchas ms cosas. PHP lo utilizan desde pequeas pginas web hasta
grandes empresas. Muchas aplicaciones web estn construidas usando PHP. Podemos citar Joomla y
Drupal (gestores de contenido de pginas web), osCommerce y Prestashop (tiendas on-line para
comercio electrnico), phpBB y SMF (sistemas de foros para pginas web), Moodle (plataforma
educativa para educacin on-line), etc.

aprenderaprogramar.com, 2006-2029

Qu es PHP? Para qu sirve PHP? Potente lenguaje de programacin

Entre las habilidades de PHP se incluye la creacin de imgenes a partir de datos. Por ejemplo,
supongamos que tenemos una academia con 20 alumnos matriculados en un curso de informtica, 50
alumnos matriculados en un curso de matemticas y 30 alumnos matriculados en un curso de qumica.
Con PHP podemos generar automticamente imgenes similares a esta:

PHP tambin puede utilizar y presentar resultados en otros estndares 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 dinmico. Es decir, el contenido dinmico puede surgir de otros sitios
adems de desde bases de datos.
Tambin se puede interactuar con otros servidores usando cualquier protocolo. Por ltimo, PHP puede
enlazarse con otros lenguajes muy potentes como Java.
En resumen, PHP es un lenguaje potente, muy usado y de gran inters para los desarrollos web.

Prxima entrega: CU00804B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Comunicacin entre el cliente y el servidor sin PHP y con PHP

COMUNICACIN ENTRE EL CLIENTE Y EL SERVIDOR SIN PHP Y CON PHP


Intentaremos explicar ahora cuales son las diferencias entre una peticin a un servidor sin PHP y con
PHP. Esto nos permitir ver cuales son las principales diferencias entre una pgina web esttica en
HTML y una pgina web dinmica 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 direccin web (URL), lo que hacemos es realizar una peticin a
un servidor. En este caso sera un servidor web, pero hay distintos tipos de servidores (de bases de
datos, xml, etc.). El servidor le responde al cliente entregndole 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 resultarn suficientes.

COMUNICACIN 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 pgina
web que queremos ver. Despus el navegador enva el mensaje a travs de internet al ordenador
remoto (servidor), de acuerdo con un protocolo estandarizado, solicitando la pgina en cuestin
(ejemplo: www.aprenderaprogramar.com/index.html). El servidor comprueba que la peticin es vlida
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 enva 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 pginas estticas (coloquialmente, pginas que
no cambian). Cualquiera que sea el cliente que solicita la pgina, 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.

aprenderaprogramar.com, 2006-2029

Comunicacin entre el cliente y el servidor sin PHP y con PHP

COMUNICACIN ENTRE EL CLIENTE Y EL SERVIDOR CON PHP. INTRPRETE PHP Y GESTORES DE BASES
DE DATOS.
Empezamos escribiendo en la barra de direcciones del navegador la url de la pgina web que queremos
ver. En segundo lugar, el navegador enva el mensaje a travs de internet al ordenador remoto
(servidor), de acuerdo con un protocolo estandarizado, solicitando la pgina (archivo) index.php.
(ejemplo: www.aprenderaprogramar.com/index.php).
El servidor web recibe el mensaje, comprueba que se trata de una peticin vlida, y al ver que la
extension es "php" solicita al intrprete de PHP (que es otro programa que se ejecuta en el servidor
web) que le enve el archivo.
En este caso la situacin ha variado: no se trata de una simple extraccin de un archivo desde el disco
duro, sino que est actuando un agente intermediario: el intrprete PHP. El intrprete PHP lee desde el
disco duro del servidor el archivo index.php y empieza a procesar las instrucciones (cdigo de
programacin) que contenga dicho archivo. Decimos que el intrprete 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 comunicacin con base de datos no siempre se
produce, pero es algo muy frecuente cuando trabajamos con PHP. Tenemos pues otra diferencia con las
webs estticas: interviene otro agente ms, el gestor de base de datos, que es capaz de devolver la
informacin contenida en lugares determinados de una base de datos. Y una base de datos podemos
verla simplemente como un gran almacn de informacin organizada en tablas.
Una vez el intrprete PHP termina de ejecutar el cdigo contenido en el archivo y ha recibido toda la
informacin necesaria del gestor de base de datos, enva los resultados al servidor web. El servidor web
enva la pgina al cliente que la haba solicitado y el navegador muestra en pantalla la informacin que
le enva el servidor web.
En lenguajes de programacin como C o Java estamos acostumbrados a que cuando ejecutamos un
cdigo, observamos unos resultados en la pantalla de nuestro ordenador. Sin embargo, en PHP el
resultado que se obtiene despus de ejecutar cdigo es cdigo HTML que es el que utilizar el
navegador para mostrar la pgina web.
Una cuestin interesante, y curiosa, es preguntarnos sobre cul es la diferencia entre el cdigo HTML
que le llega al cliente cuando solicita una pgina esttica y el cdigo HTML que le llega cuando solicita
una pgina dinmica. La respuesta es que no hay diferencia: ambos son cdigo HTML. Cmo
podramos saber si un cdigo HTML proviene de un archivo html, esttico, o si proviene de una
respuesta de un intrprete PHP? Pues digamos que si simplemente nos dan el cdigo no podramos
saber de dnde viene.
Y otra cuestin que se puede plantear: si tanto con PHP como sin PHP lo que obtenemos es cdigo
HTML, para qu nos sirve el PHP? Bien, PHP es un lenguaje de programacin, mientras que HTML no lo
es. Con HTML podemos enviar cierta informacin siempre igual, pero no podemos hacer clculos, no
podemos tomar decisiones, no podemos repetir procesos cierto nmero de veces. En definitiva, PHP
aporta toda la potencia que supone la programacin de ordenadores al mundo de las pginas web.
aprenderaprogramar.com, 2006-2029

Comunicacin entre el cliente y el servidor sin PHP y con PHP

Pongamos un ejemplo muy sencillo: queremos que en una pgina web se produzca un proceso de venta
a travs de una tarjeta de crdito. Una vez el cliente elige el producto, nmero de unidades que quiere
y lugar de envo necesitaremos realizar unos clculos: esto lo podemos hacer con PHP (tambin con
otros lenguajes, pero vamos a centrarnos en el objeto de este curso). Una vez realizados los clculos, le
mostraremos al cliente el importe total y los datos de su compra y le pediremos que introduzca el
nmero de su tarjeta de crdito y su clave personal. Ahora hay que tomar una decisin: para esto no
nos sirve el HTML. Sin embargo, usando PHP podemos consultar a una base de datos donde estn
almacenados los nmeros de tarjetas de crdito vlidas del banco y sus claves. Una vez hecha esta
consulta, usando PHP podemos mostrar al usuario un resultado distinto segn la situacin que se haya
producido, por ejemplo:
-

Los datos no son vlidos. La compra no ha podido realizarse.


Los datos son vlidos. Se ha realizado satisfactoriamente la compra. Recibir su pedido en su
domicilio en un plazo de 10 das. Gracias por confiar en nosotros.

Php es un lenguaje de programacin y HTML no lo es, esta es una gran diferencia. Si PHP es mucho
ms potente, por qu no prescindir de HTML? Digamos que cada lenguaje cumple su funcin: HTML es
un lenguaje muy ordenado que permite enviar informacin de forma rpida para que se muestre algo
en un ordenador. En este sentido, es ms rpido enviar la informacin 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 envo de
informacin. Cmo se haya generado esa informacin es otra cuestin.
En el siguiente esquema podemos ver el proceso completo.

aprenderaprogramar.com, 2006-2029

Comunicacin entre el cliente y el servidor sin PHP y con PHP

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 pgina web en el computador cliente.
b) El cdigo HTML generado con PHP no es distinguible del cdigo HTML generado manualmente, a no
ser que contemos con alguna informacin adicional.
c) HTML es un lenguaje de programacin que permite decidir y repetir, pero carece de funcionalidades
de acceso a bases de datos.
d) Para crear pginas web dinmicas HTML es un lenguaje obsoleto. Para su creacin usaremos PHP u
otro lenguaje de ltima generacin.
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00805B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Diferencia entre pginas web estticas y pginas web dinmicas con PHP.

DIFERENCIA ENTRE PGINAS WEB ESTTICAS Y PGINAS WEB DINMICAS CON PHP
Vamos a repasar algunos conceptos que ya hemos mencionado y que es importante que queden claros.
Las pginas web estticas o planas son aquellas en las que la informacin se presenta en forma
predefinida y sin cambios. No hay manera de que pueda cambiar el contenido de la pgina. En caso de
que se quiera actualizar una pagina esttica, se tendr que acceder directamente al servidor en el que
se encuentra alojada para hacer la edicin del archivo correspondiente.

A la informacin contenida en una pgina esttica se le puede dar un determinado formato de


presentacin, as como incluirle imgenes, enlaces a otras pginas, animaciones, videos, sonidos, etc.
En general, todo se hace a travs de etiquetas HTML y esto es lo nico que puede ofrecerse a travs de
este tipo de pginas.
En los inicios de Internet predominaban las pginas estticas, pero con el paso del tiempo y ante la
necesidad de agilizar el manejo de la informacin, surge un nuevo concepto de pginas web que hoy
sobresale y es el ms utilizado. Estas son denominadas pginas dinmicas: dentro de la programacin
dinmica para pginas web hay distintos lenguajes (entre los que cabe destacar PHP, ASP y JSP), siendo
php uno de los ms usados.
Normalmente, las pginas estticas estn compuestas por cdigo HTML. Cuando la pgina (archivo) es
solicitada por el navegador, el servidor la enva y no realiza ninguna operacin ms. Todos los visitantes
vern el mismo contenido.
Las pginas web dinmicas son aquellas en que la informacin que presentan se genera a partir de
alguna accin o peticin del usuario en la pgina o mediante consultas al contenido de bases de datos
que normalmente cambian con frecuencia. Contrariamente a las pginas estticas, en las que su
contenido se encuentra predeterminado, en las dinmicas la informacin aparece inmediatamente
despus de una solicitud hecha por el usuario o de una consulta a bases de datos. Una pgina dinmica
permite visualizar la informacin contenida en una base de datos, as como almacenar y hacer
actualizaciones de cierta informacin en bases de datos a travs 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 informacin introducida se almacena en una base de datos. Ahora
cuando otro usuario entra en FaceBook, esa informacin introducida por un usuario se le muestra a
otro usuario gracias a que se est rescatando de una base de datos. La programacin dinmica tiene
mltiples aplicaciones, entre las que podemos citar los sistemas de foros (los mensajes, imgenes, etc.
se almacenan en bases de datos). Otra aplicacin consiste en que el usuario tiene la posibilidad de
cambiar a su gusto el diseo y el contenido de una pgina, por ejemplo la pgina de inicio personalizada
de Google, gracias a que sus opciones se almacenan en una base de datos.
Queda claro entonces que para la creacin de este tipo de pginas dinmicas, adems de etiquetas
HTML es necesaria la utilizacin de algn lenguaje de programacin que se ejecute del lado del servidor

aprenderaprogramar.com, 2006-2029

Diferencia entre pginas web estticas y pginas web dinmicas con PHP.

(es decir, que el servidor realice un proceso antes de enviar la informacin al usuario de modo que a
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 pginas webs dinmicas, estas pginas son procesadas por el servidor
antes de ser enviadas al navegador.
Una pgina .php contiene cdigo PHP que al ser ejecutado generar cdigo HTML. En ese proceso de
ejecucin de cdigo, pueden hacerse consultas a bases de datos u otros archivos. Adems, pueden
realizarse clculos o tomarse decisiones gracias a la potencia de la programacin.
El resultado final es que se enva al navegador cdigo 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 configuracin o solicitudes especficas del usuario. Otras personas podrn obtener
diferentes resultados si acceden en un momento en que la base de datos haya cambiado, o si tienen
opciones de configuracin o realizan una solicitud distinta. Ten en cuenta que aunque la URL nos
muestre una extensin .php, lo que recibe el usuario es cdigo HTML. Por ejemplo la URL siguiente:
http://www.aprenderaprogramar.com/index.php
Siempre devuelve cdigo HTML. Pero no siempre devuelve el mismo cdigo HTML porque para generar
ese cdigo existen procesos en el servidor que hacen que los resultados puedan variar.
Cmo reconocer si una web que visitamos es dinmica o esttica? En general, es dinmica aquella que
puede interactuar con el visitante y/o administrador web, pudindose modificar el contenido de la
pgina segn 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 fotografas,
etc. En este caso SI se utilizan bases de datos y se requiere programacin web dinmica.
Las pginas web dinmicas ofrecen muchas ventajas en comparacin con las pginas web estticas,
como una mayor interactividad con el usuario y facilidad para el cambio y actualizacin de contenidos.
A las personas que administran las pginas web (webmasters, programadores, gestores de contenidos),
la programacin dinmica les permite una reduccin en tiempo y costos, as como una mayor facilidad
en el mantenimiento de un sitio web.

RESULTADOS EN BUSCADORES USANDO PGINAS WEB DINMICAS


Ante todas las ventajas de este tipo de pginas cabe citar una desventaja histrica en cuanto a los
resultados obtenidos en buscadores como Bing, Google o Yahoo. Hasta hace unos aos, los buscadores
consideraban que una web dinmica era no indexable (no registrables sus contenidos de cara a
bsquedas) debido a que no se poda ofrecer como resultado de un buscador algo que cambiaba con
frecuencia. Es frecuente oir el trmino URL amigable en referencia a una direccin web que es
sencilla y recuerda un texto simple, por ejemplo:
http://www.aprenderaprogramar.com/cursos/cursophp/paginas-dinamicas-y-estaticas.htm

aprenderaprogramar.com, 2006-2029

Diferencia entre pginas web estticas y pginas web dinmicas con PHP.

Por el contrario, muchas veces se dice que cuando las pginas contienen .php y numerosos parmetros
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

Esta situacin en la actualidad puede considerarse superada: los buscadores se han sofisticado y son
capaces de indexar URLs dinmicas sin problemas. Algunas aplicaciones de software libre como
Joomla, Drupal, WordPress, etc. siguen manteniendo sistemas que permiten convertir las URLs
dinmicas en URLs amigables, pero en general podemos decir que esto es cada vez menos necesario.
Desde nuestro punto de vista, es ms importante tener una pgina web con un buen diseo, bien
estructurada en cuanto a mens y contenidos, que se actualice con frecuencia y que ofrezca contenidos
de calidad, ms que tener o no tener URLs amigables.

EJERCICIO

Responde a las siguientes preguntas indicando verdadero o falso y justicando brevemente tu respuesta:
a) Hoy da ya no tiene sentido crear una pgina web esttica, ya que los navegadores dejarn de
admitirlas en un futuro prximo.
b) Podemos reconocer si una pgina web es dinmica en base a si es capaz de almacenar informacin
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 da se basan en pginas web
dinmicas, pero muchos sitios siguen siendo webs estticas.
d) Si creamos un sitio web dinmico no podremos ser indexados por buscadores como Bing, Google o
Yahoo.

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

Prxima entrega: CU00806B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Es PHP un buen lenguaje de programacin? Versiones. Historia.

ES PHP UN BUEN LENGUAJE DE PROGRAMACIN?


Los orgenes de PHP estn fechados en torno al ao 1995. Sin embargo, fue a partir del ao 1999 con la
publicacin de PHP 4 cuando este lenguaje de programacin tom un verdadero auge. En sus primeros
estadios de desarrollo, PHP se denominaba tambin Zend Engine, nombre que provena del nombre
de sus creadores: Zeev Suraski y Andi Gutmans.

En el ao 2004 fue lanzada la versin 5 de PHP basada en el nuevo motor Zend Engine 2.0. Esta nueva
versin ofreca mejoras para aplicaciones en servidores dedicados como por ejemplo un mejor soporte
para la programacin orientada a objetos y una extensin completamente nueva para el uso de MySQL,
una de las bases de datos ms usadas en servidores.
La versin 6 de PHP ha estado en preparacin durante largo tiempo en formato de borrador, sin llegar a
publicarse. Por ello se propuso que la nueva versin de PHP se llamara PHP 7, dejando PHP 6 como una
versin no publicada.
Algunas estadsticas 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
programacin que goza de gran popularidad y difusin. A esta circunstancia hay que aadir el hecho de
que pginas 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 pequeas pginas 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 programacin PHP.

En lo referente a si PHP es un buen lenguaje de programacin hay que tener en cuenta muchos
factores ya que el resultado final de un desarrollo web o de una aplicacin web no slo depende de la
herramienta sino de quin la maneja y cmo la maneja. Podemos afirmar que PHP utilizado
correctamente es un muy buen lenguaje de programacin.

aprenderaprogramar.com, 2006-2029

Es PHP un buen lenguaje de programacin? Versiones. Historia.

Lo que est claro es que, aunque tiene ventajas e inconvenientes, es uno de los lenguajes de
programacin ms difundidos en Internet y se encuentra disponible en prcticamente la totalidad de
los servidores dedicados. Cuando algo tiene xito y amplia difusin, por algo ser.

LA EVOLUCIN DE PHP EN EL TIEMPO. LAS VERSIONES.


PHP 3
PHP 3.0, liberada en 1998, era la primera versin que se pareca fielmente al PHP tal y como lo
conocemos hoy en da.
Una de las mejores caractersticas de PHP 3.0 era su gran extensibilidad. Cuando hablamos de
extensibilidad nos referimos a la existencia de un ncleo o core al que se le pueden ir aadiendo
fragmentos de cdigo que permiten hacer ms cosas. Se tratara de algo parecido a tener una base
sobre la que podemos ir aadiendo piezas. Veamos una imagen:

En esta imagen, correspondiente a los juegos de nios armables Lego, vemos cmo existe una base
verde. Esa base sera el core o ncleo de PHP. Luego, aprovechando que esa base tiene preparados los
anclajes para seguir poniendo piezas, vemos que se le han aadido extensiones. Por ejemplo, la primera
extensin que tiene una base azul podra ser una extensin que permita la gestin de correos
electrnicos. La segunda extensin, que tiene una base verde, podra ser una extensin para gestionar
imgenes, y as sucesivamente
Adems de facilitar el trabajo con muchas bases de datos, protocolos y sistemas informticos, las
caractersticas de extensibilidad de PHP 3.0 atrajeron a muchos programadores a unirse al proyecto y
enviar nuevos mdulos de extensin. 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.

aprenderaprogramar.com, 2006-2029

Es PHP un buen lenguaje de programacin? Versiones. Historia.

Todo el nuevo lenguaje fue liberado con el nombre de 'PHP', con el significado de ser un acrnimo
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 fraccin del total de servidores mundiales de
en torno al 10 %, lo cual fue un xito rotundo.

PHP 4
La principal novedad de PHP 4 est en el intrprete del lenguaje PHP. Con la nueva versin se lograron
aumentos de entre 5 y 10 veces en la velocidad de ejecucin de pginas PHP respecto a la versin
anterior, lo cual fue un salto muy importante.
Adems del aumento en rendimiento, se introdujeron novedades relacionadas con el soporte de
objetos en PHP. La programacin orientada a objetos es una forma avanzada de programacin y gracias
a estas caractersticas PHP se encuentra entre los lenguajes de vanguardia.
Otra nueva caracterstica de PHP 4 fue que poda soportar hilos cosa que en PHP 3 no era posible. Un
hilo es bsicamente 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 inclua un depurador. Un depurador viene siendo un asistente que nos
ayuda a detectar dnde se encuentran los errores en los programas o cdigo de desarrollo. Esto ayuda
mucho al programador y le evita quebraderos de cabeza por no poder localizar errores. Gracias al
depurador, se podan seguir con mayor profundidad esos errores misteriosos que hacan perder
mucho tiempo.

PHP 5, PHP 6 Y PHP 7


La principal caracterstica de PHP 5 con respecto a PHP 4 es la mejora en la programacin orientada a
objetos (POO). Aunque este tipo de programacin ya se haba introducido en el lenguaje desde PHP 3,
las versiones anteriores a PHP 5 tenan bastantes limitaciones para el uso de este tipo de programacin.

La orientacin a objetos es una manera de programar que es muy usada hoy en da. No entraremos en
detalles sobre ella de momento, porque es algo avanzado dentro de la programacin y en este curso
trataremos de avanzar poco a poco desde lo ms bsico hasta lo ms complejo.

aprenderaprogramar.com, 2006-2029

Es PHP un buen lenguaje de programacin? Versiones. Historia.

El principal objetivo de PHP 5 ha sido mejorar los mecanismos de programacin orientada a objetos
para solucionar las carencias de las anteriores versiones. El resultado ha sido un lenguaje ms potente,
que cada vez es ms popular y que cada vez se usa ms, tanto a nivel profesional en empresas como a
nivel de usuarios que quieren construir pequeas pginas o portales web.
Algunas personas dicen que PHP se parece cada vez ms a Java, que es quizs el lenguaje de
programacin ms usado en el mundo, y que tambin es un lenguaje de programacin orientado a
objetos.

QU VERSIN DE PHP USAR?


La versin 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 versin de PHP a usar. Es
decir, cada aplicacin debe ir con su versin de PHP adecuada al igual que a un vehculo a motor
debemos echarle el tipo de combustible adecuado. Si a un coche diesel le echamos gasolina, no
funcionar bien. Si una aplicacin que fue concebida para PHP 4 la intentamos ejecutar usando PHP 5,
probablemente ocurra lo mismo: no funcionar bien.
Tambin debemos tener en cuenta que usar siempre la ltima versin 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 algn parche.
En nuestra opinin la versin de PHP que debemos usar es la que mejor se adapte a nuestras
necesidades y, dentro de sta, la que sea ms estable. Para este curso recomendaremos usar PHP 5.x
(al escribir 5.x nos referimos a cualquier versin de PHP 5). Tambin es posible seguirlo usando PHP 4.x
No te preocupes ahora por la versin pues de cara al aprendizaje bsico no es importante. En cambio, s
debers prestar atencin a la versin si tratas de instalar aplicaciones como Joomla, Drupal o
WordPress en un servidor, pues hay que asegurarse de que la versin de la aplicacin sea compatible
con la versin de PHP en el servidor.

EJERCICIO
Busca informacin en internet sobre el actual estado de desarrollo de las versiones PHP. Cul es la
ltima versin estable publicada? En qu versiones se est trabajando como borrador?
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00807B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193
aprenderaprogramar.com, 2006-2029

Qu necesito para escribir cdigo PHP y crear pginas web dinmicas?

QU NECESITO PARA ESCRIBIR CDIGO PHP Y CREAR PGINAS WEB DINMICAS?

Los requisitos indispensables para poder escribir y crear pginas PHP son los siguientes:

Disponer de un editor de textos con el que escribir el cdigo de la pgina PHP. Por ejemplo el
Notepad++ es ms que suficiente (el Bloc de notas de Windows tambin valdra pero es
mucho ms limitado).

En vez de un editor de textos podramos usar un programa ms avanzado (entorno de desarrollo), pero
en este curso vamos a centrarnos en el manejo bsico de PHP, por lo que utilizaremos un editor de
textos.

Un servidor dnde nuestras pginas PHP sean interpretadas y devueltas despus de dicha
interpretacin.

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:


OPCIN 1

OPCIN 2

Otra posible opcin sera la de utilizar un servidor


remoto. Alguno gratuito podra valer sin ms
problemas. Para ello, nos registraramos en
cualquier servicio hosting que ofrezca alojamiento
gratuito y a partir de hay con un cliente ftp, como
Este paquete instalar un servidor Apache, un FileZilla, crearamos nuestras pginas webs
servidor de base de datos MySQL, con el dinmicas.
gestor phpMyAdmin y , por supuesto, PHP. Es
decir, instalando un programa en nuestro
ordenador podemos simular un servidor
dentro de l.
La primera opcin sera la de trabajar en local.
Para ello podemos hacer uso de un paquete
personal como WAMP SERVER que nos
ahorrar tiempo y quebraderos de cabeza.

aprenderaprogramar.com, 2006-2029

Qu necesito para escribir cdigo PHP y crear pginas web dinmicas?

TIPOS DE PAQUETES DE SERVIDOR PARA INSTALACIN EN NUESTRO ORDENADOR.


Entre los paquetes ms populares, podemos destacar y nombrar.

Nombre

Descripcin

WAMP SERVER

Wamp Server utiliza las siguientes


herramientas: Windows como Sistema
Operativo, Apache, como servidor
web, MySQL, como gestor de bases de
datos y PHP como intrprete del
lenguaje de programacin PHP.

LAMP SERVER

Lamp Server es un sistema anlogo


pero que funciona bajo el Sistema
Operativo Linux.

MAMP SERVER

Mamp Server es un sistema anlogo


pero que funciona bajo el Sistema
Operativo Macintosh.

XAMPP SERVER

Este paquete tiene la caracterstica


principal que se puede instalar para
cualquiera de los diferentes sistemas
operativos, es decir, existen versiones
tanto para Windows como para Linux,
Macinstosh. Siendo, tambin, un
sistema anlogo al Wamp Server.

Logo

Cul de estos paquetes es mejor? Esta pregunta es de difcil 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 vlido.
Ms 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 cmo hacerlo se expondrn
en prximas entregas. Por ahora, debemos conocer simplemente las alternativas.

aprenderaprogramar.com, 2006-2029

Qu necesito para escribir cdigo PHP y crear pginas web dinmicas?

EJERCICIO
Responde a las siguientes preguntas indicando verdadero o falso y justicando brevemente tu respuesta:
a) Para escribir cdigo PHP necesitamos un IDE con un compilador, por ejemplo Aptana Studio.
b) No es posible visualizar pginas php en local a no ser que utilicemos un emulador de servidor como
Wamp, Xampp o similar.
c) Trabajar en local quizs sea ms rpido si tenemos una conexin a internet lenta, pero por el
contrario no emulamos de forma exacta las condiciones de un servidor real.
d) Si trabajamos en local slo podremos crear cdigo HTML, teniendo que posponer la creacin de
cdigo PHP a un momento posterior.
e) Trabajar en remoto nos obliga a pagar la contratacin de un servicio de hosting.

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

Prxima entrega: CU00808B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Preparando el entorno de desarrollo. Descargar e instalar Notepad++

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 pginas 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 direccin siguiente: http://notepad-plus-plus.org

Cuando la pgina haya terminado de cargar, hacemos click en la seccin download del men. Ten en
cuenta que la apariencia de la pgina web puede cambiar cada pocos meses.

En la pgina web que nos aparecer, descargamos la versin Installer actual. El installer es el paquete
de instalacin automtica ms fcil y rpido para instalar Notepad++.

aprenderaprogramar.com, 2006-2029

Preparando el entorno de desarrollo. Descargar e instalar Notepad++

Una vez descargado el archivo, lo ejecutamos para instalarlo en nuestro ordenador haciendo doble
click sobre l. El proceso de instalacin es muy simple y no entraremos a explicarlo con ms detalle,
simplemente vete aceptando para ir cumpliendo los pasos de la instalacin.
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 botn derecho del ratn y se mostrar un menu similar a ste (Nota:
en algunos casos aparecen conflictos entre la versin de Notepad++ y la versin de Windows y este
men contextual no se muestra. En este caso, tendremos que abrir primero Notepad++ y luego la
opcin Abrir del men Archivo.)

En el men desplegado seleccionamos Edit with Notepad++.

aprenderaprogramar.com, 2006-2029

Preparando el entorno de desarrollo. Descargar e instalar Notepad++

De una forma u otra, habremos abierto el archivo php con nuestro editor Notepad++.
Ahora escribimos el siguiente cdigo PHP y guardamos el archivo.
<?php
echo "Curso bsico de PHP. ";
?>

Una vez realizados los pasos anteriores debemos seguir preparando el entorno de desarrollo antes de
poder visualizar la pgina PHP creada porque todava no disponemos de un servidor PHP que interprete
nuestro cdigo PHP. Es decir, no podrs ver la pgina web simplemente haciendo doble click sobre el
archivo.
Ten cuidado porque si copias el cdigo en vez de escribirlo es posible que tengas problemas: hay
muchos tipos de comillas: curvadas, sin curvar, etc. En el cdigo 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
tambin con otros caracteres. Esto no significa que no puedas cortar y copiar cdigo 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 instalacin de Notepad++, que es el editor que vamos a usar
durante el curso (aunque si lo deseas tambin 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

aprenderaprogramar.com, 2006-2029

Preparando el entorno de desarrollo. Descargar e instalar Notepad++

vez que se quiere ejecutar el programa. Responde a la siguiente pregunta: Cul es la ruta del archivo
ejecutable de Notepad++ dentro de tu computador?
La respuesta depende del computador y sistema operativo que ests utilizando. Un ejemplo de
respuesta puede ser la siguiente: C:\Program Files\Notepad++\Notepad++.exe
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00809B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Configuracin bsica de Notepad++ para crear pginas PHP

CONFIGURACIN BSICA DE NOTEPAD++ PARA CREAR PGINAS PHP


Antes de poder comenzar a crear pginas PHP, necesitaremos realizar una configuracin bsica de
nuestro entorno de desarrollo. En nuestro caso, la configuracin ser bastante simple y consistir en
elegir la codificacin 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 codificacin con la que trabajaremos durante todo el curso, en la pestaa Formato,
hacemos click sobre Codificar en UTF-8 sin BOM, tal y como se indica en la imagen siguiente.

Comprueba peridicamente que la opcin de codificacin 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 pestaa
lenguaje abrimos P y seleccionamos PHP de entre todas las opciones posibles. Sera algo similar a lo que
se muestra en la imagen siguiente.

aprenderaprogramar.com, 2006-2029

Configuracin bsica de Notepad++ para crear pginas PHP

Ya tenemos todo listo para poder empezar a crear nuestras pginas PHP.

AUTOCOMPLETAR. UNA VENTAJA DE NOTEPAD++


Para facilitar la escritura de cdigo Notepad++ cuenta con una opcin de autocompletar, la cual se
activa en la pestaa Configurar --> Preferencias. En la ventana que nos aparecer, dentro de la pestaa
Copia de seguridad/Autocompletar Autocompletar (autocompletion) debemos activar la casilla
Habilitar autocompletar en cada entrada (Enable autocompletion on each input) y Pistas para los
parmetros de la funcin (Function parameters hint on input). Ten en cuenta que la situacin de los
mens y opciones puede variar de una versin a otra de Notepad++, por lo que no siempre encontrars
estas opciones en el mismo sitio que las estamos describiendo.

aprenderaprogramar.com, 2006-2029

Configuracin bsica de Notepad++ para crear pginas PHP

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
opcin Autocompletar (autocompletion) como hicimos anteriormente y marcar la opcin 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.

Tambin es de inters activar TextFX --> TextFX Settigns --> Autoclose {([.
En caso de no tener TextFX usaramos en el men Configurar - > Preferencias, Activar autoinsert {([.

Estas opciones nos permiten en general una escritura ms rpida, aunque si en algn momento nos
resultan molestas las podemos desactivar.

aprenderaprogramar.com, 2006-2029

Configuracin bsica de Notepad++ para crear pginas PHP

OTRAS VENTAJAS DE NOTEPAD++


Quizs 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 sobrecargars tu ordenador porque el programa es al mismo
tiempo que potente, ligero.
- Dispone de la funcin autocompletar que ya hemos citado, que nos facilita ayuda mientras estamos
escribiendo el cdigo.
- Permite abrir mltiples archivos simultneamente, y reemplazar un texto en todos los archivos
abiertos a la vez si as lo deseamos.
- Permite abrir dos archivos y realizar una comparacin lnea a lnea entre ellos, indicndonos en qu
lneas existen diferencias entre un archivo y otro.
- El cdigo 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 codificacin.
- Permite ampliar sus posibilidades mediante la instalacin de plugins gratuitos disponibles en internet.
- Tiene muchsimas ms 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 vers Notepad++ nos parece un buen editor de cdigo para programacin. Esto no quiere decir
que no haya otras editores igual de buenos y potentes. De hecho, si ya eres usuario de algn otro editor
puedes seguir este curso usndolo.

EJERCICIO
En el men Ayuda (?) aparecer una opcin Acerca de Notepad (About Notepad++). Consulta la
informacin sobre Notepad++ y responde a esta pregunta: Qu versin de Notepad++ tienes instalada
en tu computador?
Una opcin interesante de Notepad++ es que dispone de numerosos plugins. Busca algn plugin que te
resulte de inters, instlalo (consulta antes la documentacin sobre el plugin y comprueba que sea un

aprenderaprogramar.com, 2006-2029

Configuracin bsica de Notepad++ para crear pginas PHP

plugin actualizado y compatible con tu versin de Notepad++) y prebalo. Para la instalacin puedes
utilizar el men Plugins - > Plugins Manager o hacerlo de otras maneras. Una vez instalado y probado el
plugin responde:
a) Cul es el nombre del plugin?
b) Quines son el autor o autores? Cul es su pgina web?
c) Cul es la utilidad del plugin?
Nota: no es recomendable instalar plugins antiguos.
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00810B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Descargar e instalar el Cliente FTP Filezilla. Trabajar remotamente.

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 sera 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 direccin 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 pgina web con los links de descarga (el aspecto de la
web puede cambiar cada pocos meses).

aprenderaprogramar.com, 2006-2029

Descargar e instalar el Cliente FTP Filezilla. Trabajar remotamente.

Para que comience la descarga del programa, haremos click en Download Now comprobando que sea la
versin 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 segn 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 conexin con nuestro servidor FTP y conectarnos. Para ello hacemos
click en Archivo -> Gestor de Sitios

aprenderaprogramar.com, 2006-2029

Descargar e instalar el Cliente FTP Filezilla. Trabajar remotamente.

Y en la pantalla que se nos mostrar, seleccionamos nuevo sitio. Aqu sera donde introduciramos los
datos de acceso si los tuviramos. Como ahora no los tenemos, cerramos la ventana.

Para establecer una conexin 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 contrasea 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 conexin 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 conexin le daramos a conectar y aparecera 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 algn error o borrado accidental podamos recuperar los archivos) y subir o descargar
los archivos locales que queramos.

aprenderaprogramar.com, 2006-2029

Descargar e instalar el Cliente FTP Filezilla. Trabajar remotamente.

Nota: explicaremos ms adelante dentro de este mismo curso cmo 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 podrs. 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 ests empleando. Un ejemplo de respuesta puede ser este:
C:\Program Files\FileZilla FTP Client\filezilla.exe
b) Consulta la opcin de men Ayuda (Help) y responde a las siguientes preguntas. Cul es la versin
de Filezilla que has instalado? Cules son los datos de tu sistema operativo? Puedes usar la opcin
<<Copy to clipboard>> para recuperar estos datos desde la ventana de la ayuda de Filezilla.
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.
Prxima entrega: CU00811B
Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Descargar e instalar el navegador Google Chrome. Visualizar webs PHP.

LAS VENTAJAS DE GOOGLE CHROME. POR QU USAR CHROME?


En este curso vamos a usar Google Chrome, pero si lo prefieres por algn motivo como tenerlo ya
instalado, Mozilla Firefox tambin nos parece una opcin recomendable, y puedes seguir este curso
tambin con este navegador.

Otros navegadores como Internet Explorer tambin se pueden usar, pero en principio no es lo ms
recomendable por diversos motivos. Uno de ellos es que no dispone de las mismas herramientas que
Chrome o Firefox, que son los navegadores ms usados por programadores y desarrolladores web.
Vamos a citar algunas ventajas de Google Chrome:
a) El navegador se abre muy rpidamente en comparacin 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 pginas web por las que vamos navegando.
Esto se debe a su estructura interna, que tambin es ligera.
c) Por el mero hecho de instalarlo, ya disponimos de una potente herramienta de anlisis y depuracin
de pginas web o Inspeccionador de elementos. Mozilla Firefox tambin viene con herramientas de
anlisis incorporadas, y adems dispone de la extensin Firebug, muy valorada por los
programadores.
d) Si tenemos abiertas varias pestaas y una de ellas se tiene que cerrar debido a algn error o bloqueo,
no se nos quedar colgado el programa al completo, sino nicamente la pestaa o pestaas afectadas.

DESCARGAR E INSTALAR EL NAVEGADOR GOOGLE CHROME. VISUALIZAR PGINAS HTML.


Para poder visualizar nuestras pginas 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
direccin: http://www.google.com/chrome?hl=es
Tambin puedes acceder simplemente escribiendo descargar google chrome en un buscador (Google,
Yahoo, Bing, etc.) Una vez accedamos hemos de buscar el link de descarga.

aprenderaprogramar.com, 2006-2029

Descargar e instalar el navegador Google Chrome. Visualizar webs PHP.

Hacemos click en Descargar Google Chrome. Nos aparecer una pgina 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 automtica, comienza a su vez el proceso de instalacin en nuestro ordenador (si
te pide permiso para la instalacin acepta para permitir el proceso).

Una vez descargardo e instalado, ya podremos ver pginas web con ste navegador. Para acceder a
Google Chrome, nos iremos a Inicio --> Todos los programas --> Google Chrome. Tambin podremos
acceder desde el escritorio a travs de un enlace directo.

LAS CUESTIONES MS BSICAS 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 segn la versin de Chrome que estemos usando, por tanto tendremos que
buscar las opciones segn aparezcan en nuestro computador, que puede diferir en algunos detalles de
lo que indicamos aqu.

aprenderaprogramar.com, 2006-2029

Descargar e instalar el navegador Google Chrome. Visualizar webs PHP.

Una vez abierto Chrome podremos abrir tantas pestaas como queramos, introducir una direccin URL
en la barra de direcciones, recargar la pgina actual (tambin podremos pulsar F5 como atajo de
teclado para conseguir recargar una pgina) y acceder al men de opciones de Google Chrome entre
otras operaciones.
Para cambiar la pgina 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 opcin opciones. Se nos abrir una nueva pestaa donde en la
opcin Pagina de inicio pondremos por ejemplo http://aprenderaprogramar.com ( o la pgina que
queramos). Otras versiones no traen llave inglesa.

aprenderaprogramar.com, 2006-2029

Descargar e instalar el navegador Google Chrome. Visualizar webs PHP.

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 Configuracin. En la opcin Iniciar sesin, elegimos la opcin Abrir
una pgina especfica o un conjunto de pginas -- > Establecer pginas, introducimos la URL de la
queramos sea nuestra pgina de inicio, por ejemplo http://aprenderaprogramar.com ( o la pgina que
queramos) y pulsamos aceptar.
c) Otra opcin para acceder a la configuracin es escribir en la barra de direcciones lo siguiente (como si
fuera una direccin 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
pueden ser texto o imgenes y permite que cuando navegamos por una web las pginas se muestren
ms rpido ya que parte de la informacin 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
pginas web esto puede dar lugar a resultados engaosos, ya que tras hacer una modificacin puede
que el navegador no la muestre por estar utilizando contenidos de la cach. Por tanto una operacin
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 informacin 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 navegacin. Tambin podemos
acceder escribiendo directamente en la barra de direcciones chrome://settings/clearBrowserData como
si se tratara de una direccin web.
aprenderaprogramar.com, 2006-2029

Descargar e instalar el navegador Google Chrome. Visualizar webs PHP.

En la pantalla que se nos muestra a continuacin seleccionamos todas las opciones, y para definir desde
cundo en la opcin Eliminar elementos almacenados desde: elegimos el origen de los tiempos (es
decir, borrarlo todo sin dejar nada).

Para guardar una pgina web en local debemos simplemente ir a llave inglesa o icono de despliegue de
men y seleccionar Guardar pgina como y seleccionar el nombre y ubicacin donde queremos
guardar la pgina HTML.
Para aadir una pgina 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 coleccin de enlaces a
pginas 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
coleccin de enlaces tenemos que desplegar el men y elegir la opcin Marcadores -- > Mostrar barra
de marcadores.
Si queremos ver las propiedades de una imagen clickamos sobre la imagen con el botn derecho del
ratn y pulsamos en Inspeccionar elemento en el men desplegable que se nos abre. As veremos el
tamao de la imagen.
aprenderaprogramar.com, 2006-2029

Descargar e instalar el navegador Google Chrome. Visualizar webs PHP.

Para hacer zoom basta con utilizar los siguientes atajos de teclado: Ctrl + + (ms 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 ratn hacia arriba o hacia
abajo, para acercar o alejar la vista.
En cualquier caso, para volver a ver la pgina con su tamao original slo tenemos que pulsar Ctrl + 0.

CMO ACTUALIZAR GOOGLE CHROME


Google Chrome se actualiza automticamente cuando detecta que hay una nueva versin del
navegador. El proceso de actualizacin se produce en segundo plano y no es necesario que realices
ninguna accin. No obstante, puedes comprobar si el navegador est actualizado pulsando sobre llave
inglesa o icono para desplegar el men --> Informacin de Google Chrome. Ah te aparecer un mensaje
con la versin que ests usando actualmente, y te indicar si el navegador est actualizado o no.
Tambin puedes acceder a esta informacin escribiendo chrome://chrome/ en la barra de direcciones
como si fuera una direccin 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 opcin de men Ayuda (Help) de tu navegador y responde a las siguientes preguntas. Qu
navegador y qu versin de navegador ests empleando?
Indica si las siguientes afirmaciones son verdaderas o falsas y justifica brevemente tu respuesta:
a) Cuando creamos una pgina web con php y la visualizamos, al guardar la pgina con la opcin
Guardar como del navegador, guardaremos el cdigo PHP que la gener.
b) Cuando creamos una pgina web con php y la visualizamos, al guardar la pgina con la opcin
Guardar como del navegador, guardaremos el cdigo HTML que la gener.
c) Con la opcin Guardar como del navegador no podemos guardar una pgina web debido a que el
cdigo PHP llega encriptado al navegador y ste no lo muestra al usuario.
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00812B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Trabajar en local o o con un servidor remoto PHP. Qu es mejor?

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


En este artculo vamos a intentar mostrar las diferencias entre trabajar en local (en nuestro
computador) o trabajar en un servidor remoto. Ambas opciones pueden ser vlidas, 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, slo se muestran a modo de ejemplo).
En un primer planteamiento podramos pensar que sera mucho mejor trabajar en remoto porque el
trabajo de la instalacin de las herramientas y tecnologas necesarias ya estara hecho. Pero esto puede
ser algo no deseado porque no tendremos control total sobre esas herramientas y tecnologas, 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.
Adems de las anteriores, otra de las diferencias entre estas dos formas de trabajar, es la actualizacin
de los cambios en el servidor. Si trabajamos en remoto directamente sobre nuestro sitio web, los
cambios se hacen instantneamente 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 pgina
actualizada al instante. Si cometemos errores y la pgina, con esos errores, no puede visualizarse, los
usuarios de Internet tampoco podrn verla y esto es una desventaja.
Qu pasara 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 ms tendr acceso a ellos, teniendo siempre nuestro servidor sin cambios. De esta
manera, la pgina web no se vera 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 conexin a Internet, lo ms recomendable es trabajar en local y subir la pgina
cuando est terminada, ya que trabajar en remoto requiere una buena conexin a internet para poder
guardar nuestro trabajo en el servidor remoto a medida que lo vayamos desarrollando.
Estas diferencias que hemos comentado seran las diferencias ms claras entre estas dos formas de
trabajar.
aprenderaprogramar.com, 2006-2029

Trabajar en local o o con un servidor remoto PHP. Qu es mejor?

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 estn dando sus primeros pasos en programacin PHP pueden elegir entre una opcin
u otra, y quizs ambas sean vlidas. Nosotros vamos a recomendar que se trabaje en remoto por las
siguientes razones:
a) Se asemeja ms a lo que va a ser el trabajo con desarrollos web reales. Aunque ahora se trate de
aprendizaje, ser un aprendizaje ms cercano a lo que es la realidad.
b) Nos podemos despreocupar (en cierta medida) de cuestiones de configuracin del servidor e
instalacin 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 resultarn 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 pblico al
que se suele denominar servidor de produccin. 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 cmo trabajar sobre un servidor remoto. No obstante, si ya tienes
instalado un servidor local (como Wamp Xampp) y ests acostumbrado a l tambin podrs 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 pgina web realiza el
trabajo desde distintos puntos de conexin, lo que permite por ejemplo que cree una pgina web
mientras est viajando.
aprenderaprogramar.com, 2006-2029

Trabajar en local o o con un servidor remoto PHP. Qu es mejor?

b) Hoy da es posible disponer de forma gratuita de una direccin web y servicio de hosting gratuito,
con lo cual podemos crear pginas 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 produccin, con el fin de evitar cadas del servicio.
d) WampServer permite emular un servidor en nuestro propio computador. Tambin hara posible que
nuestro computador funcionara como servidor remoto para servir contenidos a travs de internet.
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00813B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Crear una cuenta de hosting gratuita en un servidor PHP.

CREAR UNA CUENTA DE HOSTING GRATUITA EN UN SERVIDOR PHP Y ACCEDER VA CPANEL Y VA 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 va Panel de Control (Cpanel) y va FTP.

CREAR CUENTA DE HOSTING GRATUITA


En Internet hay muchas pginas 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 ms.
Creando una cuenta en un hosting gratuito, disponemos de un servidor (que compartimos con otros
usuarios) donde podemos alojar una pgina 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 podramos usar cualquier otro porque todos ellos son similares. Tambin, 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
pgina web de Byethost, introduciendo en nuestro navegador la siguiente direccin:
www.byethost.com. Hazlo y vete siguiendo los pasos que indicamos.
Nos aparecer una pgina 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 opcin para crear una cuenta (sign up):

aprenderaprogramar.com, 2006-2029

Crear una cuenta de hosting gratuita en un servidor PHP.

Una vez accedemos a la pgina de creacin 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 direccin 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 continuacin.

Una vez hayamos finalizado de introducir los datos solicitados, haremos click sobre el botn Registrar
(Register) y nos aparecer una pgina Web indicndonos que se nos ha enviado un correo electrnico a
la direccin de correo que hayamos facilitado en el formulario y en ese correo nos indicarn un enlace
web (direccin url) donde debemos activar nuestra cuenta.
aprenderaprogramar.com, 2006-2029

Crear una cuenta de hosting gratuita en un servidor PHP.

El ltimo paso que nos quedara para crear nuestra cuenta de hosting gratuita sera entrar a nuestro
correo y hacer click en el enlace de activacin 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 activacin fue realizada con xito y se nos enviar un nuevo correo
electrnico con la informacin detallada de nuestros datos de acceso.
El correo que nos enva Byethost con la informacin de acceso detallada tiene ms o menos el siguiente
contenido:

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

Adems nos envan 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

Estos datos son importantes pues son los que nos permitirn gestionar todo lo necesario relativo a
nuestra pgina web. Conviene imprimirlos adems de mantenerlos bien localizados en un archivo de
texto dentro de nuestro ordenador.

aprenderaprogramar.com, 2006-2029

Crear una cuenta de hosting gratuita en un servidor PHP.

ACCEDER VA PANEL DE CONTROL (CPANEL)


Para acceder va 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 contrasea.

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)

Dentro de Cpanel existen distintas reas. Podemos ver un rea de informacin de la cuenta, un rea de
administrador de archivos que nos proporciona un explorador de archivos parecido al de Windows o
Filezilla pero que adems nos permitir descomprimir archivos .zip y, una tercera rea con el que
podremos acceder a las bases de datos previamente creadas.
aprenderaprogramar.com, 2006-2029

Crear una cuenta de hosting gratuita en un servidor PHP.

ACCEDER VA 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 informacin del
sistema, que sern los mismos que hayamos recibido por correo electrnico. Una vez abierto Filezilla,
introducimos nombre de servidor, nombre de usuario y contrasea y de esta manera accedemos al
sistema de archivos de nuestro servidor. Te recomendamos que guardes los datos de la conexin, 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 cmo visualizar el sistema de archivos en el
servidor, cmo subir, bajar y borrar archivos:
a) Crea un archivo en tu computador denominado prueba.txt y sbelo al servidor remoto usando
FileZilla. Para ello, desde el explorador de Windows arrastra el archivo hasta la ventana de FileZilla
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.
aprenderaprogramar.com, 2006-2029

Crear una cuenta de hosting gratuita en un servidor PHP.

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) Tambin 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.

Si se te han presentado problemas para realizar alguna de estas tareas puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00814B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Preparar el entorno para trabajar en remoto. Mi primera pgina en PHP.

PREPARAR EL ENTORNO PARA TRABAJAR EN REMOTO


En entregas anteriores ya se indic como acceder va 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 pginas en
PHP ya que ser el directorio que el servidor use para servir las pginas web. Los archivos en este
directorio sern accesibles escribiendo la direccin web raz 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 direccin web que nos haya
indicado el proveedor del servicio, por ejemplo: http://apr2.byethost7.com/index.php
Esta direccin nos la indica el proveedor del servicio de hosting gratuito: recordar la entrega donde
explicamos la creacin de la cuenta de hosting gratuito donde indicbamos que el dominio una vez
registrada nuestra cuenta en el hosting era http://apr2.byethost7.com. (Esta direccin es un ejemplo.
En tu caso, si has creado tu cuenta gratutita, tendrs tu propia direccin 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,

aprenderaprogramar.com, 2006-2029

Preparar el entorno para trabajar en remoto. Mi primera pgina en 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 PGINA EN PHP


Al entrar en el directorio htdocs, es posible que veamos que ya existe una pgina index.htm (
index.html similar). La razn de esto es que en algunos servidores cuando creamos una cuenta
gratuita, el proveedor de hosting automticamente nos crea dicho fichero que por ejemplo puede
contener un mensaje de bienvenida.
Antes de crear nuestra primera pgina en PHP, borraremos la pgina index.html ya que su contenido no
nos interesa. Para esto, haremos click con el botn derecho del ratn sobre el fichero que deseamos
borrar y en el men desplegable, que nos aparecer, pulsaremos en borrar.

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,
arrastrndolo 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 vaco y que editaremos haciendo click con el botn derecho del ratn 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 pgina web tendremos que subir el archivo al servidor, y
cada vez que lo subamos sobreescribir el archivo.

aprenderaprogramar.com, 2006-2029

Preparar el entorno para trabajar en remoto. Mi primera pgina en PHP.

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
pgina web.
Supongamos que hemos hecho click sobre el archivo en remoto y pulsado el botn derecho, y a su vez
la opcin Ver/Editar (View/Edit):

Ahora, normalmente, al ser la primera vez que editamos con FileZilla un archivo con extensin PHP, nos
dar la opcin 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 Edicin (Edit) de Filezilla y
pulsar sobre Opciones (Settings). En la ventana que se abre, en el lateral izquierdo seleccionamos
Edicin de archivo -- > Asociaciones de tipo de archivo (File editing -- > Filetype associations), y en el
lado derecho en el cajetn 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 segn el sistema operativo e instalacin que hayamos hecho. Comprueba
cul es la ruta en tu computaor e introduce la ruta correcta para tu caso.

aprenderaprogramar.com, 2006-2029

Preparar el entorno para trabajar en remoto. Mi primera pgina en PHP.

Una vez establecido Notepad++ como editor para trabajar en remoto con Filezilla, cuando pulsamos
sobre un archivo en remoto y con botn 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 habamos subido al servidor anteriormente.

Ahora slo nos falta crear nuestra primera pgina PHP. Para ello simplemente aadiremos este cdigo
en el archivo index.php (ms adelante se explicarn 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 pgina en PHP - aprenderaprogramar.com";
?>

Cuando terminemos de editar el archivo, lo guardamos (para ello podemos usar la combinacin de
teclas Ctrl + s hacerlo a travs del Men archivo --> Guardar de Notepad++). Una vez guardado en
Notepad++ hacemos click sobre el programa FTP FileZilla que tenamos en segundo plano.
Automticamente 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).

aprenderaprogramar.com, 2006-2029

Preparar el entorno para trabajar en remoto. Mi primera pgina en PHP.

Y ahora visualizaremos nuestra pgina en el navegador escribiendo la direccin web que es nuestro
dominio raz. Si hemos creado una cuenta gratuita, esta direccin web nos la habr facilitado el
proveedor del servidio de hosting gratuito y podr ser (esto es un ejemplo) similar a:
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
automticamente de buscar el archivo index.html index.php.

Con este sencillo ejemplo hemos creado nuestra primera pgina web usando el lenguaje de
programacin PHP.

EJERCICIO
Crea los siguientes archivos y sbelos mediante ftp al directorio raz 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 direccin web correcta que
ser similar a http://apr2.byethost7.com/curso.php (en tu caso, tendrs que utilizar la direccin web
que vayas a utilizar para el curso). Responde a esta pregunta: Cul es el cdigo que contiene el
archivo? Cul es la direccin 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 pas: Colombia>> donde el nombre a incluir ser
tu nombre y el pas tu pas. Comprueba que el archivo se visualiza al escribir la direccin web correcta
que ser similar a http://apr2.byethost7.com/alumno.php (en tu caso, tendrs que utilizar la direccin
web que vayas a utilizar para el curso). Responde a esta pregunta: Cul es el cdigo que contiene el
archivo? Cul es la direccin web para acceder al archivo y visualizar el texto?
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.
Prxima entrega: CU00815B
Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Conceptos bsicos de PHP. Estructura bsica de una pgina PHP.

CONCEPTOS BSICOS DE PHP


Un archivo PHP normalmente suele contener HTML y trozos de cdigo 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 cdigo HTML. Todos los fragmentos de cdigo PHP deben comenzar con la
siguiente cadena de caracteres: <?php ,y finalizar con ?>

Los smbolos <?php y ?> se dice que son los delimitadores del cdigo PHP. Normalmente, una pgina
PHP bsica sera 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 vendra el cdigo PHP */
/* Este cdigo PHP podra ser una consulta a base de datos */
/* Y adems podramos mostrar esos datos */
?>
</body>
</html>

En este cdigo podemos identificar los siguientes elementos:


-

La primera lnea es una etiqueta relativa a la versin/variante de HTML que declaramos usar.
Esta primera etiqueta no es estrictamente necesaria. Sirve nicamente para indicar qu
estndar de HTML es el que declaramos usar.
Las etiquetas de apertura y cierre de html que delimitan el cdigo HTML.
Las etiquetas de apertura y cierre head que delimitan la cabecera del cdigo HTML.
Las etiquetas body que delimitan el cuerpo del cdigo HTML y que es donde suele ir el
contenido central de un documento HTML (texto, imgenes, formularios, etc.).
Dentro de las etiquetas body, adems de cdigo HTML, podemos tener cdigo PHP embebido.
En este caso hemos incluido nicamente un fragmento de cdigo PHP, pero en el cuerpo del
documento HTML podramos incluir diversos fragmentos de cdigo HTML mezclados con
diversos fragmentos de cdigo PHP. Cada fragmento de cdigo PHP tiene que ir escrito con sus
delimitadores.

aprenderaprogramar.com, 2006-2029

Conceptos bsicos de PHP. Estructura bsica de una pgina PHP.

Esta estructura no se repite siempre. De hecho, ms adelante veremos que el cdigo PHP puede ir en
ms lugares adems de dentro de las etiquetas body. Por otro lado, decir que es habitual que el cdigo
PHP vaya embebido dentro de cdigo HTML en un archivo con extensin .php, pero como ya hemos
visto, un archivo con extensin .php podra contener exclusivamente cdigo PHP.
Escribe el cdigo que mostramos a continuacin en el editor Notepad++ y gurdalo 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

pgina

con

PHP

embebido

en

HTML

aprenderaprogramar.com";
?>
</body>
</html>

A continuacin sbelo al servidor como ya explicamos en una entrega anterior, y ahora escribe en tu
navegador la direccin web correspondiente al archivo (que ser similar a
http://apr2.byethost7.com/prueba1.php). Debes de visualizar algo parecido a esto.

aprenderaprogramar.com, 2006-2029

Conceptos bsicos de PHP. Estructura bsica de una pgina PHP.

EJERCICIO
Crea el siguiente archivo y sbelo mediante ftp al directorio raz 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 pgina un ttulo h1 con el texto <<Cursos aprenderaprogramar.com>>, seguido de un
ttulo h2 con el texto <<Curso php desde cero>>, y a continuacin 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 pgina. Comprueba
que el archivo se visualiza al escribir la direccin web correcta que ser similar a
http://apr2.byethost7.com/curso2.php (en tu caso, tendrs que escribir la direccin web que vayas a
utilizar para el curso). Responde a esta pregunta: Cul es el cdigo que contiene el archivo? Cul es la
direccin web para acceder al archivo y visualizar el texto?

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

Prxima entrega: CU00816B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Tipos de variables en PHP. Declaracin y asignacin. Instruccin echo.

VARIABLES EN PHP
Las variables en PHP son representadas con un signo de dlar ($) seguido por el nombre de la variable.
El nombre de la variable es sensible a minsculas y maysculas. 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 numrico (slo nmeros, con su
valor de clculo) o alfanumrico (slo texto o texto con nmeros, sin valor de clculo).
Para declarar un nombre de variable vlido, ste tiene que empezar con una letra (o si no empieza con
una letra, tendr que hacerlo con un carcter de subrayado), seguido de cualquier nmero de letras,
nmeros y caracteres de subrayado, sin espacios. Veamos algunos ejemplos:
Posible nombre de variable

Validez

$4variable

Nombre de variable invlido.

$_4variable

Nombre de variable vlido.

$variable4

Nombre de variable vlido.

$otra

Nombre de variable vlido.

$1_otra

Nombre de variable invlido.

$variable_de_nombre_muy_largo

Nombre de variable vlido.

$ABC

Nombre de variable vlido.

$ABC
$A_y_B_x_C

Nombre de variable invlido.


Nombre de variable vlido.

Cuando el intrprete PHP detecta un error en la sintaxis al declarar una variable, cuando tratamos de
accecer a la pgina php nos aparecer un mensaje de error. Por ejemplo si en un archivo php incluimos
una lnea como $ A B C = 5; donde el nombre de variable es invlido ya que tiene espacios intermedios,
nos aparecer un mensaje de error:

aprenderaprogramar.com, 2006-2029

Tipos de variables en PHP. Declaracin y asignacin. Instruccin echo.

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 lnea donde el intrprete considera que est el
problema.

DIFERENCIAS ENTRE LOS OPERADORES DE ASIGNACIN E IGUALDAD


Asignacin (=)
El operador de asignacin es "=". Se podra pensar que es como un "igual a". No lo es. El operador igual
en programacin no tiene el mismo sentido que en matemticas. En programacin, significa que el
valor de la expresin de la derecha se establece en el operando de la izquierda.
Fjate 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 (==)
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 operacin lgica de 'igual
a' tal y como podemos apreciar en el siguiente ejemplo.
Ejemplo
<?php
$a
$b
$a
$a
$b
$a

= 3;
= 3;
== $b; // El resultado de la comparacin es TRUE porque $a es igual a $b
= 3;
= 4;
== $b; // El resultado de la comparacin 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 intrprete PHP, que es el encargado de
interpretar el cdigo.
Ahora veremos en una tabla los distintos tipos de datos que se pueden usar en PHP.

aprenderaprogramar.com, 2006-2029

Tipos de variables en PHP. Declaracin y asignacin. Instruccin echo.

TIPO DE DATO

DEFINICIN
Los integers, o enteros, pueden tener distintos valores numricos enteros que se expresan
con diferentes notaciones.

integer

$variable = 18; // Nmero entero positivo


$variable = -18; // Nmero entero negativo
$variable = 0x12; // Notacin hexadecimal, en principio no la utilizaremos.

float o double

Este tipo de datos son los nmeros de punto flotante a los que normalmente llamamos
nmeros decimales, por ejemplo, 9.876. Ambos tienen mucha precisin, pero double es el
ms preciso (con ms decimales). La sintaxis para utilizarlos es bastante simple:
$variable = 9.876;

string

El tipo de datos string, tambin conocido como cadena de caracteres, se expresa con la
siguiente sintaxis:
$variable = "Yo soy una cadena";
Se trata de un tipo lgico. Sus posibles valores son true (verdadero) o false (falso).

boolean

$variable = true;
$variable = false;

INSTRUCCIN ECHO
Esta instruccin muchas veces se dice que sirve para que se muestre por pantalla un texto, una variable,
o una combinacin de texto y variables. Pero realmente no es as: echo no es una instruccin que sirva
para mostrar algo por pantalla (aunque podemos usarla para esto), sino que sirve para insertar texto
dentro del documento HTML subyacente al cdigo 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 instruccin 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
funcionarn como cdigo HTML y lo que se mostrar por pantalla ser Salida

por pantalla con

formato de ttulo h1 (letras ms grandes de lo normal).


En general en php son vlidas 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>';

aprenderaprogramar.com, 2006-2029

Tipos de variables en PHP. Declaracin y asignacin. Instruccin echo.

Los parntesis no son necesarios (echo en realidad no es una funcin sino que es lo que se denomina
una <<construccin del lenguaje>>, de ah que no sean estrictamente necesarios los parntesis), pero
se pueden incluir si se desea. Ejemplo:
echo ('con parntesis y comillas simples');
Crea un archivo php con el siguiente cdigo, ponle un nombre como usoDeEcho.php y sbelo al
servidor. Luego invcalo usando la ruta adecuada segn la direccin web con la que ests 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.";
?>

La visualizacin 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 intrprete de PHP considera que debe
mostrarse siempre el valor de la variable, incluso si va dentro de un texto. Prueba a escribir la siguiente
lnea: echo " El valor de la variable \$a es $a.";
Comprobars que se muestra por pantalla salida por pantalla. 5 El valor de la variable $a es 5.
Cuando antecedemos un nombre de variable del carcter \ hacemos que se interprete como texto en
lugar de como una variable. El carcter \ se suele llamar carcter de escape porque permite que se
considere texto algo que en principio se iba a interpretar como otra cosa (como una variable por
ejemplo).

aprenderaprogramar.com, 2006-2029

Tipos de variables en PHP. Declaracin y asignacin. Instruccin echo.

Crea ahora un archivo php con el siguiente cdigo, ponle un nombre como usoDeEcho2.php y sbelo al
servidor. Luego invcalo usando la ruta adecuada segn la direccin web con la que ests 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 parntesis y comillas simples<br/>');
echo ("con parntesis 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>

La visualizacin en tu navegador deber ser similar a:


con comillas simples
con parntesis y comillas simples
con parntesis 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 cdigo HTML, y el navegador
cuando detecta este cdigo HTML introduce un salto de lnea en lugar de mostrarlo por pantalla.
Para comprender bien la utilidad de la instruccin echo piensa en esta equivalencia:
<body>
<? php
echo '<h1>Cuzco</h1>'
?>
</body>

- - - - - - - - Equivale a - - - - - - - >

<body>
<h1>Cuzco</h1>
</body>

El navegador recibe el HTML equivalente generado y lo interpreta, dando lugar a los resultados que
se mostrarn por pantalla.

aprenderaprogramar.com, 2006-2029

Tipos de variables en PHP. Declaracin y asignacin. Instruccin echo.

EJERCICIO 1
Crea el siguiente archivo y sbelo mediante ftp al directorio raz 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 pgina un ttulo h1 con el texto <<Cursos aprenderaprogramar.com>>, seguido de un
ttulo h2 con el texto <<Curso php desde cero>>, y a continuacin 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 instruccin 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 pgina. Comprueba que el archivo se visualiza al
escribir la direccin web correcta que ser similar a http://apr2.byethost7.com/curso3.php (en tu caso,
tendrs que escribir la direccin web que ests utilizando para el curso). Responde a esta pregunta:
Cul es el cdigo que contiene el archivo? Cul es la direccin web para acceder al archivo y visualizar
el texto?

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

EJERCICIO 2
Crea un archivo php donde no exista html directamente pero que genere una pgina web con todo el
cdigo html que lleva normalmente (introduce las etiquetas html, head, title, meta charset, body,
algunos prrafos de texto y algunas imgenes). Para hacer esto toda la estructura de la pgina web
debe ser insertada a travs de instrucciones echo. Responde a esta pregunta: Cul es el cdigo que
contiene el archivo? Cul es la direccin web para acceder al archivo y visualizar el texto?
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00817B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Estructuras condicionales en PHP: if, else y elseif. Ejercicios resueltos.

ESTRUCTURAS CONDICIONALES
En PHP existen una serie de instrucciones que permiten tomar decisiones lgicas cuando programamos:

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

CONDICIONAL IFELSE EN PHP


Estas instrucciones son quizs las ms usadas de todos los lenguajes de programacin, ya que son las
ms bsicas. IF (en espaol: si) ELSE (en espaol: sino).
Estructura general de un condicional if else
if(expresin) {
... sentencias 1, 2, 3 ;
} else {
... sentencias A, B, C ;
}
En este trozo de cdigo estaramos diciendo que si la expresin se cumple se ejecutan las sentencias 1,
2, 3, y en caso de que no se cumpliese la expresin se ejecutaran las sentencias que estn dentro del
else, es decir, las sentencias A, B, C
Escribe este cdigo en un editor como Notepad++ y gurdalo con un nombre de archivo como
ejemplo1.php. A continuacin, sube el fichero al servidor y visualiza el resultado.
<?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, introducindolo en la expresin del condicional. Tal cual est, este ejemplo producira el resultado
'Hay galletas', aunque si cambisemos $galletas = true; por $galletas = false dara como resultado la
segunda sentencia.
aprenderaprogramar.com, 2006-2029

Estructuras condicionales en PHP: if, else y elseif. Ejercicios resueltos.

Escribe ahora este otro cdigo gurdalo con un nombre de archivo como ejemplo2.php. A continuacin,
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';
}
?>

Como podrs comprobar, el cdigo 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

aprenderaprogramar.com, 2006-2029

Estructuras condicionales en PHP: if, else y elseif. Ejercicios resueltos.

blanco en HTML). Compara las similitudes y diferencias entre los dos cdigos que hemos escrito. En
nuestro ejemplo2 podrs comprobar que hemos escrito un fragmento de cdigo php, luego un
fragmento de cdigo html y luego otro fragmento en php. Si te fijas, no hemos utilizado las etiquetas de
apertura y cierre de html, aunque hubiera sido quizs ms 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 comprobars, a veces los navegadores son capaces de interpretar el cdigo aunque falten
algunas etiquetas o contenga algunos errores. Esta es una de las cuestiones que diferencia HTML de
lenguajes de programacin en sentido estricto como C, Java o Visual Basic, donde la sintaxis es mucho
ms estricta.
En este cdigo adems podemos sealar:

Usamos el cdigo &nbsp; que en HTML significa un espacio. Recuerda que HTML omite los
espacios antes y despus de una cadena de texto. Por ello hemos de especificar que se
introduzcan espacios con &nbsp;.
Un salto de lnea, que introducimos gracias a la etiqueta <br/>, podemos escribirlo tanto fuera
del cdigo 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 cdigo html.

Qu pasara si introdujramos una etiqueta html como <br/> directamente dentro del cdigo php?
Prubalo y comprobars 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 cuestin que debes de tener en cuenta: para introducir html debes de cerrar un bloque php
o usar una instruccin echo dentro del bloque php. La instruccin echo viene significando dar salida
html a lo que va a continuacin.

aprenderaprogramar.com, 2006-2029

Estructuras condicionales en PHP: if, else y elseif. Ejercicios resueltos.

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(expresin) {
... sentencias 1, 2, 3, ;
} else if(expresin) {
... sentencias A, B, C, ;
} else {
... sentencias M, N, O, ;
}
?>
Esta es la sntaxis 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 estn siempre dentro de un if y terminarn con un else (slo
uno) final.
Escribe este cdigo en un editor como Notepad++ y gurdalo con un nombre de archivo como
ejemplo3.php. A continuacin, sube el fichero al servidor y visualiza el resultado.
<?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 sera: S, 33 es mayor que 30.


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

aprenderaprogramar.com, 2006-2029

Estructuras condicionales en PHP: if, else y elseif. Ejercicios resueltos.

OPERADOR CONDICIONAL TERNARIO


Para escribir condicionales la estructura bsica 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 interrogacin y dos puntos como: a ? b : c;
La sintaxis y significado del operador condicional ternario (vlida para diferentes lenguajes, como PHP,
JavaScript, Java, etc.) es la siguiente:
expresinConValorBooleano ? expresin1 : expresin2;
Interpretacin: si la expresinConValorBooleano es cierta se ejecuta la expresin1, y en caso
contrario se ejecuta la expresin2.

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


Expresin

Resultado

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

Se ejecuta dispara()

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

Se ejecuta espera()

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 vala 5 ahora vale 20, caso contrario ahora vale 1.


Se trata de una asignacin: si B vala 3, ahora B vale 10 veces lo
que vala, caso contrario ahora B vale 100 veces lo que vala.

El operador ternario puede ser insertado en sentencias de ejecucin donde no se permite la insercin
de if, por ejemplo en una operacin de asignacin 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
comparndolo con el if tradicional.

aprenderaprogramar.com, 2006-2029

Estructuras condicionales en PHP: if, else y elseif. Ejercicios resueltos.

Condicional ternario

If tradicional

Permite la escritura compacta, permitiendo


ahorrar escritura de cdigo.

Obliga a escribir ms sentencias para conseguir el mismo


resultado.

Resulta ms difcil de leer, entender y depurar

Resulta ms fcil de leer, entender y depurar

No todos los programadores lo usan, algunos ni


siquiera lo conocen.

Todos los programadores lo usan y lo conocen.

Se admite en la sintaxis de los lenguajes en


lugares donde no se admite la sentencia if

No es vlido en ciertas ubicaciones donde slo se admiten


expresiones, pero puede hacerse la evaluacin antes del
punto donde sea necesario el condicional.

Criticado por algunos expertos, adorado por


otros

Uso y aceptacin cuasi-universal

EJEMPLOS DE USO EN PHP


Escribe este cdigo, gurdalo como archivo php y comprueba los resultados de ejecucin. Razona sobre
los resultados obtenidos y trata de explicar paso a paso la lgica de todo lo que hace el cdigo.
<!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

aprenderaprogramar.com, 2006-2029

Estructuras condicionales en PHP: if, else y elseif. Ejercicios resueltos.

EJERCICIO 1
Ejecuta este cdigo y responde:
a) Qu resultado se obtiene por pantalla?
b) Modifica el cdigo 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;
?>

Para comprobar si tus respuestas y cdigo 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 camin, el
grosor 0.33, el dimetro 1.25 y la marca Kimashuki. Crea el cdigo PHP donde a travs de
condicionales if realices la siguiente comprobacin: si el dimetro es superior a 1.4 debe mostrarse por
pantalla el mensaje La rueda es para un vehculo grande. Si es menor o igual a 1.4 debe mostrarse por
pantalla el mensaje La rueda es para un vehculo pequeo. En otro caso, debe mostrarse No existe
un tamao de rueda vlido.

Modifica los valores de dimetro y comprueba que los resultados obtenidos por pantalla sean
correctos. Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00818B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Operadores de comparacin y lgicos en PHP. Ejemplos y ejercicios.

OPERADORES LGICOS Y DE COMPARACIN EN PHP


Los operadores de comparacin permiten comparar dos valores, tal y como su nombre indica. En
general, esto nos servir para tomar decisiones. Por ejemplo, quizs tenemos que decidir si autorizar
una operacin segn 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

Mayor que

$a > $b

Menor que

$a < $b

Mayor o igual que

$a >= $b

Menor o igual que

$a <= $b
$a <> $b

Diferente

$a != $b

Idntico o
estrictamente igual

$a === $b

No idntico
estrictamente distinto

$a == $b

Igual

$a == $b

Resultado
true si $a es mayor que $b
false en caso contrario
true si $a es menor que $b
false en caso contrario
true si $a es mayor o igual que $b
false en caso contrario
true si $a es menor o igual que $b
false en caso contrario
true si $a es diferente a $b
false en caso contrario
true si $a es igual a $b y son del mismo tipo
false en caso contrario
true si $a no es igual a $b o no son del mismo tipo
false en caso contrario
true si $a es igual a $b
false en caso contrario

La sintaxis coincide con la empleada en otros lenguajes de programacin.


Adems 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 ms complejos de comprender por lo que volveremos a hablar de ellos ms adelante.
De momento tener en cuenta que si una variable contiene $texto1= 1 y hacemos la comparacin
$texto1 === 1 , obtendremos false, es decir, que no es igual (porque un texto no es igual a un nmero).
Sin embargo una comparacin como $texto == 1 devolver true ya que esta comparacin no es estricta
y trata de realizar automticamente conversiones para comprobar si se puede establecer una

aprenderaprogramar.com, 2006-2029

Operadores de comparacin y lgicos en PHP. Ejemplos y ejercicios.

equivalencia entre los dos valores. En este caso se busca el equivalente numrico del texto y luego se
hace la comparacin, motivo por el cual se obtiene true.
Es decir, si se compara un nmero con una cadena de caracteres o la comparacin implica cadenas de
caracteres numricas, cada cadena de caracteres es convertida en un nmero y la comparacin se
realizar numricamente excepto cuando el operador utilizado es === o == porque, en estos casos,
tambin comparamos el tipo.

OPERADORES LGICOS EN PHP


Los operadores lgicos, nos permiten crear condiciones para las distintas estructuras en PHP, tanto en
estructuras condicionales como en estructuras repetitivas. Los operadores lgicos ms importantes son
and (en espaol: y) y or (en espaol: o)
Nombre

Ejemplo

and &&

$a and $b

or ||

$a or $b

xor

$a xor $b

not !

!$a

Resultado
true si $a es true y $b es true
false en caso contrario
true si $a o $b es true, o ambos
false en caso contrario
true si $a o $b es true, pero no ambos
false en caso contrario
true si $a no es true
false en caso contrario

Una condicin puede ser tan larga como se quiera o necesite y usar tantos operadores lgicos como se
quiera o necesiten. El uso de los parntesis otorgar la prioridad de la ejecucin de unas operaciones y
otras (como en matemticas).
Las expresiones donde se utilizan operadores lgicos y relacionales devuelven un valor booleano, es
decir, verdadero (true) o falso (false). Por ejemplo si $a = 7 y $b = 5 la expresin $a < $b devuelve false
(es falsa). Si $a = true y $b = false la expresin $a && $b devuelve false (es falsa porque no se cumple
que $a y $b sean verdaderas). Si $a = true y $b = false la expresin $a || $b devuelve true porque uno
de los dos operandos es verdadero. Si $a = true la expresin !a devuelve false (el opuesto o contrario).
El operador || se obtiene en la mayora de los teclados pulsando ALT GR + 1, es decir, la tecla ALT GR y
el nmero 1 simultneamente.
Los operadores && y || se llaman operadores en cortocircuito porque si no se cumple la condicin de
un trmino no se evala el resto de la operacin. 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 condicin, el
resultado de la expresin es falso y no se evalan las otras dos condiciones posteriores.
En un caso como ( $a < $b || $c != $d || $h <= $k) se evala si a es menor que b. Si se cumple esta
condicin el resultado de la expresin es verdadero y no se evalan las otras dos condiciones
posteriores.
aprenderaprogramar.com, 2006-2029

Operadores de comparacin y lgicos en PHP. Ejemplos y ejercicios.

El operador ! recomendamos no usarlo hasta que se tenga una cierta destreza en programacin. Una
expresin 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 NEGACIN APLICADO SOBRE NMEROS O TEXTO


Si $a = true su negacin !$a devuelve false. Pero qu ocurre si $a es un nmero o un texto? Si $a es un
nmero se considera que equivale a false si su valor numrico es 0, o que equivale a true si su valor
numrico es distinto de cero. Seguidamente se aplica la negacin. 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 vaca se considera equivale a false y cualquier otra cadena se
considera que equivale a true. Si $texto1 = "" (cadena vaca) entonces !$texto1 vale true.

ORDEN DE PRIORIDAD, PRELACIN O PRECEDENCIA


Los operadores lgicos y matemticos tienen un orden de prioridad o precedencia. Este es un esquema
general que indica el orden en que deben evaluarse en la mayora de los lenguajes de programacin:

()
Parntesis

^
Exponenciacin

*,/
Multiplicacin, divisin

+,
Suma, resta

Mod , \ (div)
Resto, Cociente

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


Igual, distinto, mayor, menor, mayor o igual, menor o igual

No (Not)
No se cumple que

y (And)
Y se cumple que

o (Or)
O se cumple que

aprenderaprogramar.com, 2006-2029

Operadores de comparacin y lgicos en PHP. Ejemplos y ejercicios.

Una expresin como $A+$B == 8 && $A-$B == 1 siendo $A = 3 y $B = 5 supondr que se evala primero
$A+$B que vale 8, luego se evala $A-$B que vale -2. Luego se evala si se cumple que la primera
operacin es cierta y luego si la segunda tambin es cierta, resultando que no, por lo que la expresin
es falsa.

COMPARACIN 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 numrico de cada letra. Cada letra tiene un nmero asociado: por ejemplo la a es el
nmero 97, la b el 98, etc.
Si comparamos "avellana" < "sandia" obtenemos true.
Sin embargo, los cdigos numricos pueden generar resultados no previstos. Por ejemplo, qu cdigo
numrico es menor, el de la a el de la A? An ms, resulta que todos los cdigos numricos de
maysculas son menores que los de minsculas, con lo cual podemos obtener que Zul < avellano
devuelve true (cosa que a priori nos resultar ciertamente extraa).
Para comparar cadenas en base a un orden alfabtico necesitaremos usar entonces otras tcnicas que
comentaremos ms adelante.

EJEMPLO
Escribe este cdigo en un editor como Notepad++ y gurdalo con un nombre de archivo como
ejemplo1.php. A continuacin, 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 condicin";
}else {
echo "No se cumple la condicin";
}
?>

aprenderaprogramar.com, 2006-2029

Operadores de comparacin y lgicos en PHP. Ejemplos y ejercicios.

EJERCICIO
Dadas las variables de tipo entero con valores $A = 5, $B = 3, $C = -12 indicar si la evaluacin de estas
expresiones dara 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

Crea el cdigo 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 esperaras que se mostrara? Puedes comprobar si tu cdigo y tus respuestas son
correctos consultando en los foros aprenderaprogramar.com.

Prxima entrega: CU00819B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Operadores aritmticos en PHP: operadores bsicos y mdulo.

OPERADORES ARITMTICOS BSICOS EN PHP


En PHP disponemos de los operadores habituales en los distintos lenguajes de programacin. Estos
operadores nos permiten realizar operaciones aritmticas: suma, resta, multiplicacin, divisin, etc. as
como obtener el mdulo o resto de una divisin entre dos enteros.

Nombre

Ejemplo

Resultado

Ejemplo con
$a = 8 y $b = 4

Suma

$a + $b

El resultado de la suma.

12

Resta

$a - $b

El resultado de la resta.

Multiplicacin

$a * $b

El resultado de la multiplicacin.

32

Divisin

$a / $b

El resultado de la divisin.

Resto o mdulo

$a % $b

El resto de la divisin de $a entre $b (1)

(1)

Nota: Los nmeros se convierten a enteros antes de efectuar la operacin. 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 mdulo es un operador til en algunos procesos repetitivos en programacin. Fjate
en los valores que toma cuando van progresando los valores que toma una variable. En el ejemplo que
mostramos a continuacin sirve para contar hasta dos y empezar de nuevo repetitivamente.

aprenderaprogramar.com, 2006-2029

$a

$a % 3

Operadores aritmticos en PHP: operadores bsicos y mdulo.

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 mdulo (en otros lenguajes en vez del smbolo % se usa la palabra clave mod) y a este
operador a veces se le denomina operador mdulo.
Aunque en otros lenguajes existe un operador de exponenciacin para calcular potencias, en PHP no es
as. Para calcular una potencia podemos hacer varias cosas:
a) Recurrir a multiplicar n veces el trmino. Por ejemplo min3 lo podemos calcular como
min*min*min. Obviamente esto no es prctico para potencias de exponentes grandes.
b) Usar un bucle que d lugar a la repeticin de la operacin multiplicacin n veces. Estas opciones
las comentaremos ms adelante.
c) Usar herramientas propias del lenguaje que permiten realizar esta operacin. Esta opcin es la
ms sencilla. Basta con escribir pow(base, exponente) para que PHP realice el clculo de la
potencia. Por ejemplo pow(2, 3) devuelve dos elevado a 3 que resulta 8.
Las operaciones con operadores siguen un orden de prelacin o de precedencia que determinan el
orden con el que se ejecutan. Con los operadores matemticos la multiplicacin y divisin tienen
precedencia sobre la suma y la resta. Si existen expresiones con varios operadores del mismo nivel, la
operacin se ejecuta de izquierda a derecha. Para evitar resultados no deseados, en casos donde pueda
existir duda se recomienda el uso de parntesis para dejar claro con qu orden deben ejecutarse las
operaciones. Por ejemplo, si dudas si la expresin 3 * a / 7 + 2 se ejecutar en el orden que t deseas,
especifica el orden deseado utilizando parntesis: 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

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 slo vlidos para variables numricas y sirven para incrementar una unidad el valor de la
variable. Dependiendo de dnde se coloquen (antes o despus de la variable) el resultado del clculo
puede diferir debido al momento en que se ejecuta la adicin de la unidad.
Tener en cuenta que ++, --, +=, -= y *= son expresiones que siempre se aplican sobre variables. Por
ejemplo no es vlido escribir 2++ porque 2 no es una variable. Todas estas operaciones pueden
sustituirse por otra equivalente ms evidente. Muchos programadores prefieren no usar estos

aprenderaprogramar.com, 2006-2029

Operadores aritmticos en PHP: operadores bsicos y mdulo.

operadores porque hacen menos legible el cdigo. 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 cdigo escrito por otra persona.

EJEMPLO
Escribe este cdigo en un editor como Notepad++ y gurdalo con un nombre de archivo como
ejemplo1.php. A continuacin, sube el fichero al servidor y visualiza el resultado.
<?php
$a = 8;
echo ++$a;
echo "<br />";
echo $a;
?>

Escribe este otro cdigo y gurdalo con un nombre de archivo como ejemplo2.php. A continuacin,
sube el fichero al servidor y visualiza el resultado.
<?php
$a = 8;
echo $a++;
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.

aprenderaprogramar.com, 2006-2029

Operadores aritmticos en PHP: operadores bsicos y mdulo.

OPERADORES DE ASIGNACIN
Con el uso de los operadores de asignacin, podremos simplificar (escribir abreviadamente) algunas
expresiones de asignacin. No te recomendamos que utilices expresiones abreviadas durante el
aprendizaje bsico de php. No obstante, es adecuado conocer el significado de estas expresiones por si
te enfrentas a tener que interpretar cdigo escrito por otras personas.

Nombre

Ejemplo

Resultado

Suma

$a += $b;

$a = $a + $b;

Resta

$a -= $b;

$a = $a - $b;

Multiplicacin

$a *= $b;

$a = $a * $b;

Divisin

$a /= $b;

$a = $a / $b;

Resto o mdulo

$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.

EJERCICIO 1
Crea un cdigo PHP donde crees las variables $primerNumero y $segundoNumero y asigna valor 8 al
primer nmero y 5 al segundo nmero:
a) El resto de dividir el primer nmero entre 5.
b) El resultado de dividir el primer nmero entre el segundo.
c) El resultado de sumar los dos nmeros.
Para comprobar si tu cdigo y respuestas son correctas puedes consultar en los foros
aprenderaprogramar.com.

EJERCICIO 2
Crea un cdigo 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

aprenderaprogramar.com, 2006-2029

Operadores aritmticos en PHP: operadores bsicos y mdulo.

%inicio el valor original de $a y volver a recuperar el valor inicial de $a antes de hacer una nueva
operacin.
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 asignacin compuestos
Valores iniciales: a = 4, b = 2
Asignacin compuesta de suma: a += b equivale a = a + b
(Ahora el valor de a es: 6)
Asignacin compuesta de resta: a -= b equivale a = a - b
(Ahora el valor de a es: 2)
Asignacin compuesta de multiplicacin: a *= b equivale a = a * b
(Ahora el valor de a es: 8)
Asignacin compuesta de divisin: a /= b equivale a = a / b
(Ahora el valor de a es: 2)
Asignacin compuesta de mdulo: a %= b equivale a = a % b
(Ahora el valor de a es: 0)
Para comprobar si tu cdigo y respuestas son correctas puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00820B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Switch, case, break. Ejemplos de uso y ejercicios resueltos.

SWITCH PHP
Las instrucciones if...else if...else if permiten resolver prcticamente todas las decisiones que haya que
tomar en programacin, pero en ocasiones nos encontraremos con casos en que queremos evaluar
condiciones con una estructura que hacen ms cmodo usar una instruccin alternativa: switch.

Supongamos una evaluacin 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 accin determinada segn el
valor tomado por una variable. Para estos casos la mayora de los lenguajes de programacin incluyen
una instruccin que permite "seleccionar" entre los posibles valores de una variable: la instruccin
switch (en espaol: seleccionar).
La instruccin switch es una forma de expresin de un anidamiento mltiple 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
cdigo.

ESTRUCTURA GENERAL DE UNA EXPRESIN SWITCH


La sintaxis ser (expresin ser normalmente una variable cuyo contenido queremos evaluar, pero
puede ser una operacin matemtica, una expresin booleana, etc.):
switch (expresin) {
case valor1:
instrucciones;
break;
case valor2:
instrucciones;
break;

aprenderaprogramar.com, 2006-2029

Switch, case, break. Ejemplos de uso y ejercicios resueltos.

.
.
.
default:
sentencias;
break;
}

switch (expresin) {
case valor1:
case valor2:
case valor3:
instrucciones;
break;
case valor4:
instrucciones;
break;
.
.
.
default:
sentencias;
break;
}

Esquemticamente a modo de diagrama de flujo:


Inicio

E
Caso, =1

Caso, =2

Caso, =3

Instruccin 1
Instruccin 2

Caso, =4

Instruccin 5
Instruccin 6

Instruccin 7
Instruccin 8

Instruccin 3
Instruccin 4

Caso,
SiNo

Instruccin 11

Instruccin 9
Instruccin 10

default y Fin

aprenderaprogramar.com, 2006-2029

Caso, =5

Switch, case, break. Ejemplos de uso y ejercicios resueltos.

break es opcional (pero en general recomendable) y provoca que una vez encontrada una coincidencia
termine la evaluacin de casos (provoca un salto pasando el control del programa o flujo de ejecucin a
la instruccin inmediata siguiente fuera del switch). Si no se incluye, se evaluaran el resto de casos
(ejecutndose si fueran ciertos). De no incluirse break, podra producirse que se ejecuten dos o ms
casos.
La clusula default es opcional y representa las instrucciones que se ejecutarn en caso de que no se
verifique ninguno de los casos evaluados. El ltimo break dentro de un switch (en default si existe esta
clusula, o en el ltimo caso evaluado si no existe default) tambin es opcional, pero lo incluiremos
siempre para ser metdicos.
Se permite evaluar tanto nmeros como cadenas de texto o valores booleanos. switch solo permite
evaluar valores concretos de la expresin: no permite evaluar intervalos (pertenencia de la expresin a
un intervalo o rango) ni expresiones compuestas.

EJEMPLO
Vamos a ver ahora cmo podemos obtener un mismo resultado usando if o usando switch. Escribe
ahora el cdigo de ejemplo de uso de if que mostramos a continuacin y gurdalo con un nombre de
archivo como ejemplo1.php. A continuacin, sube el fichero al servidor y visualiza el resultado.
<?php
<?php

$variable=2;

//Ejemplo uso if else aprenderaprogramar.com

switch($variable) {
case 1:

$variable=2;

echo '$variable es igual a 1.';

if($variable==1) {

break;

echo '$variable es igual a 1.';

case 2:

} else if($variable==2) {

echo '$variable es igual a 2.';

echo '$variable es igual a 2.';

break;

} else if($variable==3) {

case 3:

echo '$variable es igual a 3.';

echo '$variable es igual a 3.';

} else {

break;

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

default:

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

?>
}
?>

aprenderaprogramar.com, 2006-2029

Switch, case, break. Ejemplos de uso y ejercicios resueltos.

Escribe ahora el cdigo de ejemplo de uso de switch hemos mostrado y gurdalo con un nombre de
archivo como ejemplo2.php. A continuacin, 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 cdigo el resultado sera: $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
instruccin break para salir del switch al terminar las instrucciones correspondientes a un case. Slo
podemos especificar un valor en cada case, no se admite indicar ms 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 ms claro con un ejemplo.
Escribe ahora estos otros cdigos y gurdalos con nombres de archivo como ejemplo3.php y
ejemplo4.php. A continuacin, sube los ficheros al servidor y visualiza el resultado.

<?php
$variable=2;
switch($variable) {
<?php

case 1:

//Ejemplo uso if else aprenderaprogramar.com

//Se ejecuta si $variable vale 1

$variable=2;

echo '$Variable es igual a 1.';

if($variable==1) {

break;

echo '$Variable es igual a 1.';

case 2:

} else if($variable==2 OR $variable==3) {

case 3:

echo '$Variable es igual a 2 o 3.';

//Se ejecuta si $variable vale 2 o 3

}else {

echo '$Variable es igual a 2 o 3.';

echo '$Variable no es igual a 1, 2 o 3.';

break;

default:

?>

//Se ejecuta en cualquier otro caso


echo '$Variable no es igual a 1, 2 o 3.';
}
?>

aprenderaprogramar.com, 2006-2029

Switch, case, break. Ejemplos de uso y ejercicios resueltos.

En cualquiera de las dos formas mostradas, la salida obtenida sera: $variable es igual a 2 o 3.
En este caso, al evaluarse la segunda instruccin case no se encuentra ningn break por lo que se
siguen ejecutando las instrucciones siguientes al tercer case, an cuando $variable es diferente de 3, ya
que al no existir un break anterior los casos 2 y 3 quedan agrupados. Ms an, si borramos el break
del tercer case tambin se ejecutarn las instrucciones siguientes a default, y la salida sera 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 instruccin switch pongas break en todos los case,
o bien que si dejas algn break sin escribir sea porque conscientemente quieras hacerlo y no por olvido.

EJERCICIO 1
Analiza el siguiente cdigo 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 cdigo?
b) Completa el cdigo de forma que aadas las etiquetas y definas el valor de $mes = 1. Sube el fichero al
servidor y comprueba el resultado. Cul es el cdigo completo? Cul es el resultado obtenido por
pantalla?

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

aprenderaprogramar.com, 2006-2029

Switch, case, break. Ejemplos de uso y ejercicios resueltos.

EJERCICIO 2
Considera ests 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 asgnale valor 3. Los
valores posibles son 1, 2, 3, 4. A travs 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 hormign.
e) Si el tipo de motor es 4,mostrar un mensaje indicando La bomba es una bomba de pasta
alimenticia.
f) Si no se cumple ninguno de los valores anteriores mostrar el mensaje No existe un valor vlido
para tipo de bomba.

Cul es el cdigo completo? Cul es el resultado obtenido por pantalla?


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

Prxima entrega: CU00821B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Funciones de cadenas PHP. Concatenacin, funciones strlen, substr.

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 tambin $cadena = 'George
Wasington';

Para la manipulacin de estas variables o cadenas de caracteres nos ser til conocer las funciones
bsicas de manipulacin. No vamos a entrar a describir cada una de las funciones para cadenas de
caracteres que PHP posee, que son muchas. Simplemente veremos las ms bsicas y de uso ms
comn.

FUNCIN STRLEN
La funcin strlen obtiene la longitud de una cadena y devuelve un nmero entero. Es decir, obtenemos
el nmero de caracteres que forman la cadena completa.
Escribe este cdigo en un editor como Notepad++ y gurdalo con un nombre de archivo como
ejemplo1.php. A continuacin, 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";
?>

FUNCIN SUBSTR
La funcin substr devuelve una subcadena de la cadena original, es decir, una parte de la cadena
original. Esta funcin tiene 3 parmetros:
1. La variable que contiene la cadena.
2. Nmero que representa la posicin (inclusive) en la que comenzar a ser extrada la subcadena.
aprenderaprogramar.com, 2006-2029

Funciones de cadenas PHP. Concatenacin, funciones strlen, substr.

3. Nmero que indica la cantidad de caracteres que sern extrados. Este argumento es opcional.
Si se omite se tomar hasta el final de la cadena original.
Tener en cuenta que la numeracin de la posicin de los caracteres empieza por cero. Por ejemplo para
la cadena 'GPS', que tiene 3 caracteres, el carcter en posicin 0 es G, en posicin 1 es P y en posicin 2
es S. No existe la posicin 3 debido a que se comienza a contar por el cero.

Escribe este cdigo en un editor como Notepad++ y gurdalo con un nombre de archivo como
ejemplo2.php. A continuacin, sube el fichero al servidor y visualiza el resultado.
<?php
$cad = "cadena";
$sub1 = substr($cad, 2);
$sub2 = substr($cad, 2, 2);
echo "La subcadena nmero uno es la siguiente: $sub1 <br />";
echo "La subcadena nmero dos es la siguiente: $sub2";
?>

Escribe este otro ejemplo y visualzalo en tu navegador (nota: & nbsp representa un espacio en blanco):
<?php $cad = "aprenderaprogramar.com";
$sub1 = substr($cad, 0); //La cadena completa
$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 nmero uno es la siguiente: $sub1 <br />";
echo "&nbsp; &nbsp; La subcadena nmero dos es la siguiente: $sub2 <br />";
echo "&nbsp; &nbsp; La subcadena nmero tres es la siguiente: $sub3 <br />";
echo "&nbsp; &nbsp;La subcadena nmero cuatro es la siguiente: $sub4";
?>

aprenderaprogramar.com, 2006-2029

Funciones de cadenas PHP. Concatenacin, funciones strlen, substr.

Fjate en las siguientes cuestiones:


a) La numeracin 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 posicin en que comienza la extraccin va incluida en la subcadena extraida. Esto significa
que substr ($cad, 0, 1) significa que slo se extrae el primer caracter de la cadena.

OPERADOR DE CONCATENACIN
La concatenacin es el proceso de unir varias porciones de texto en una sola cadena. Este operador se
expresa como un punto '.'
Escribe el siguiente cdigo, sbelo al servidor y visualzalo en tu navegador.
<?php
$cad1 = "aprendera";
$cad2 = "programar";
$cadt = $cad1 . $cad2;
echo "La cadena nmero uno concatenada con la cadena nmero 2 es: $cadt <br />";
// Ahora concatenaremos la cadena ejemplo con la concatenacin de $cad2 y $cad1
echo "Ejemplo: " . ($cad2 . $cad1);
?>

aprenderaprogramar.com, 2006-2029

Funciones de cadenas PHP. Concatenacin, funciones strlen, substr.

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

EJERCICIO
Crea el cdigo PHP que cumpla con lo que se indica a continuacin:
a) Declara una variable cuyo contenido sea la cadena "Didctica y divulgacin de la programacin"
b) Usando la funcin 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 concatenacin muestra por pantalla lo siguiente: <<Las palabras primera, tercera y sexta son:
Didctica, divulgacin, programacin>>
d) Usando strlen muestra por pantalla lo siguiente: <<La palabra primera es Didctica y tiene 9 caracteres,
la palabra tercera es divulgacin y tiene 11 caracteres. La palabra sexta es programacin y tiene 12
caracteres>>

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

Prxima entrega: CU00822B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Estructuras repetitivas bsicas en PHP: while, for y do/while.

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 nmero
de veces definido. Las instrucciones bsicas que permiten construir este tipo de estructuras son while,
do ... while y for.

LA INSTRUCCIN WHILE
La instruccin while (que en castellano se traducira como mientras) ejecuta una porcin de
programa mientras se cumpla una cierta condicin.
Mientras la condicin sea verdadera, se ejecutan las instrucciones contenidas en el while. Cuando deja
de cumplirse la condicin, se sale del ciclo y se contina ejecutando el resto del programa.
Si la condicin no se cumple ni la primera vez que se comprueba, las lneas en el interior del while no se
ejecutarn ni una vez.
La estructura general o sintaxis habitual de un bucle while es la siguiente:
<?php
while (condicin) {
... sentencias;
}
?>

En este fragmento de cdigo estaramos indicando que mientras se cumpla la condicin se realizan las
sentencias, y en este caso si no se cumpliese la condicin se seguira ejecutando el programa o
mostrando los contenidos de la pgina web justo despus del cierre de la instruccin while (que queda
determinado por el smbolo de cierre } ).
Escribe ahora este cdigo y gurdalo con un nombre de archivo como ejemplo1.php. A continuacin,
sube el fichero al servidor y visualiza el resultado.

<?php
$galletas = 0;
while ($galletas < 10){
echo "$galletas, ";
$galletas++;
}
?>

aprenderaprogramar.com, 2006-2029

Estructuras repetitivas bsicas en PHP: while, for y do/while.

En este ejemplo, las instrucciones dentro del while se ejecutaran 10 veces, mostrando los nmeros 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 condicin del while se cumplira siempre y tendramos un problema porque
habramos creado un bucle infinito, quedando el programa atascado en dicho while.

EJERCICIO 1
Crea el cdigo PHP donde generes:
a) Un bucle while que cuente desde 50 hasta 40 (fjate 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 cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

LA INSTRUCCIN DO WHILE
La estructura repetitiva do-while (en castellano equivaldra a hacer mientras) es muy similar a la
estructura while, excepto que la expresin verdadera es verificada al final de cada iteracin 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 verificacin de si se tiene que repetir el proceso se
realiza al final de la repeticin de la estructura.
La estructura general o sintaxis habitual de un bucle do while es la siguiente:
<?php
do {
sentencias
} while(condicin);
?>

aprenderaprogramar.com, 2006-2029

Estructuras repetitivas bsicas en PHP: while, for y do/while.

En este fragmento de cdigo estaramos indicando que se ejecute una primera vez s o s las
sentencias, y que despus se evale la condicin para comprobar si se deben ejecutar nuevamente las
sentencias. Como vemos, aunque no se cumpla la condicin las sentencias se ejecutaran al menos una
primera vez.
Escribe ahora este cdigo y gurdalo con un nombre de archivo como ejemplo2.php. A continuacin,
sube el fichero al servidor y visualiza el resultado.
<?php
$galletas = 0;
do {
echo "$galletas, ";
$galletas++;
} while ($galletas < 10);
?>

EJERCICIO 2
Crea el cdigo PHP donde generes:
a) Un bucle dowhile que cuente desde 50 hasta 40 (fjate que en este caso es decreciente)
b) Un bucle dowhile 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 cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

LA INSTRUCCIN FOR

La estructura repetitiva for (en castellano se traducira 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 instruccin una variable de control, la cual se incrementa o decrementa de
forma automtica. La estructura de estas instrucciones viene a ser muy similar a la anterior.

aprenderaprogramar.com, 2006-2029

Estructuras repetitivas bsicas en PHP: while, for y do/while.

La estructura general o sintaxis habitual de un bucle for es la siguiente:


<?php
for ($variable=valor_inicial; condicin; incremento) {
... sentencias;
}
?>

En este fragmento de cdigo estaramos indicando que mientras se cumpla la condicin se realizan las
sentencias, y en este caso si no se cumpliese la condicin se seguira ejecutando el programa justo
despus del cierre de la instruccin for (}). Todo esto es igual a la instruccin while anteriormente
citada, salvo que en la propia declaracin de la estructura se encuentra la variable de control, que en
cada repeticin se incrementa automticamente.
Esta instruccin consta, por tanto, de tres parmetros:

Inicializacin de la variable que se utilizar en la condicin.


Condicin que se debe cumplir para permanecer en el ciclo.
Modificacin de la variable utilizada en la condicin.

Escribe ahora este otro cdigo gurdalo con un nombre de archivo como ejemplo3.php. A continuacin,
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 informacin que mostraba la instruccin while. Como
podemos observar, el valor inicial y el incremento de la variable $galletas, van en la propia instruccin.

aprenderaprogramar.com, 2006-2029

Estructuras repetitivas bsicas en PHP: while, for y do/while.

EJERCICIO 3
Crea el cdigo PHP donde generes:
a) Un bucle for que cuente desde 50 hasta 40 (fjate 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 cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

MODIFICAR EL PASO O STEP DE LA VARIABLE CONTADORA


Crea el siguiente cdigo, gurdalo con un nombre de archivo como ejemplo4.php y visualiza los
resultados en tu navegador.

<?php
for ( $i = 0; $i < 50; $i+=5 ){
echo "&nbsp;&nbsp; $i <br/> ";
}
?>

Fjate 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.

aprenderaprogramar.com, 2006-2029

Estructuras repetitivas bsicas en PHP: while, for y do/while.

Otra cosa interesante es que usando la instruccin += conseguimos que la variable contadora no vaya
de uno en uno, sino que el paso (step) de la variable sea el nmero que nosotros deseemos. En este
caso, hemos utilizado un incremento de 5 unidades en cada repeticin del bucle. Tambin podemos
lograr el mismo efecto pero con decrementos usando =.

EJERCICIO 4
Crea el cdigo 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.

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

Prxima entrega: CU00823B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Arrays bsicos en PHP. Vectores y Matrices. Ejemplos.

ARRAYS BSICOS O TRADICIONALES EN PHP


Un array es un conjunto de variables de una misma clase. Se accede a cada elemento individual del
array mediante un nmero entero denominado ndice. 0 es el ndice o localizador del primer elemento
y n-1 es el ndice del ltimo elemento, siendo n, la dimensin, tamao o longitud del array. As
$empleado[23] representara al empleado con localizador 23 como veremos a continuacin.

Los arrays son muy utilizados en la programacin. Dependiendo de la cantidad de dimensiones que
tengan pueden ser:

De una dimensin (vectores). Por ejemplo $empleado[23]


De dos dimensiones (matrices). Por ejemplo $butaca[3, 14]
De tres o ms dimensiones (multidimensionales). Por ejemplo $fecha[2012, 9, 22]

Para acceder a los elementos del array se utilizan los corchetes [], dentro de los cuales existir un
localizador o ndice que es un nmero entero. Adems, podemos guardar valores de cualquier tipo de
variable (string, entero, punto flotante, booleano) dentro de un array. Por ejemplo $empleado[23]
podra tomar como valor $empleado[23] = "Juan Prez Surez". En este caso se tratara de un array de
cadenas de texto, es decir, un array de string. En otro caso $empleado[23] podra tomar como valor
$empleado[23] = 2312. En este caso se tratara de un array de valores numricos.
En algunos lenguajes es necesario declarar los arrays antes de poder utilizarlos, pero en PHP no es
necesario. Cuando se definen elementos de un array, PHP reconoce automticamente que se trata de
un array sin necesidad de declaracin previa.

VECTORES (ARRAYS DE UNA DIMENSIN)


Los vectores son los arrays que slo contienen una dimensin (un ndice). Escribe este cdigo y
gurdalo con un nombre de archivo como ejemplo1.php. A continuacin, sube el fichero al servidor y
visualiza el resultado en tu navegador.
<?php
$estacion[0] = "Primavera";
$estacion[1] = "Verano";
$estacion[2] = "Otoo";
$estacion[3] = "Invierno";
echo $estacion[2];
$numero[0] = 7;
$numero[1] = 11;
$numero[2] = 15;
?>

aprenderaprogramar.com, 2006-2029

Arrays bsicos en PHP. Vectores y Matrices. Ejemplos.

La forma general de uso de un array es: $nombreDeVariableArray [localizador] = valorAsignado;


Ten en cuenta que lo que diferencia a una variable que pertenece a un array (conjunto de variables) es
la presencia del corchete con un ndice en su interior

Jugador [8] --> es una variable con ndice.


Jugador8

--> es una variable normal.

TCP [3]

--> es una variable con ndice.

TCP3

--> es una variable normal.

PHP admite tambin otra posibilidad que no admiten otros lenguajes: se pueden usar arrays sin
especificar los nmeros de los ndices, ya que PHP los puede colocar automticamente.
Escribe ahora este otro cdigo y gurdalo con un nombre de archivo como ejemplo2.php. A
continuacin, sube el fichero al servidor y visualiza el resultado.
<?php
$ciudad[] = "Sevilla";
$ciudad[] = "Madrid";
$ciudad[] = "Barcelona";
$ciudad[] = "Valencia";

echo $ciudad[3];
?>

Fjate que PHP ha colocado automticamente los ndices, asignando el 0 a Sevilla, el 1 a Madrid, el 2 a
Barcelona y el 3 a Valencia. Hay que recordar que los arrays siempre comienzan numerndose desde
cero.

aprenderaprogramar.com, 2006-2029

Arrays bsicos en PHP. Vectores y Matrices. Ejemplos.

Otra forma de asignar valores a un array vector es la siguiente:


<?php
$color = array("azul", "verde", "negro", "marrn");
echo $color[1];
?>

Como ves, esta es una forma abreviada cuya forma general es:
$nombreDelArray = array (valorElemento0, valorElemento1, valorElemento2, , valorElementon)
El trmino array es una palabra clave en PHP cuyo significado es equivalente a decir los elementos que
aparecen en la lista a continuacin son elementos de un array.

EJERCICIO
Crea el cdigo PHP de 3 archivos en cada uno de los cuales debes hacer lo siguiente:
a) Declara un array de enteros de nombre $coches e introduce en l 8 elementos cuyos valores sean 32,
11, 45, 22, 78, -3, 9, 66, 5. A continuacin muestra por pantalla el elemento con localizador 5. Debers
obtener por pantalla que se visualiza -3.
b) Declara un array de numricos decimales tipo double de nombre $importe e introduce en l cuatro
elementos que sean 32.583, 11.239, 45.781, 22.237. A continuacin muestra por pantalla el elemento
con localizador 1. Debers obtener por pantalla que se visualiza 11.239.
c) Declara un array de booleanos de nombre $confirmado e introduce en l seis elementos que sean
true, true, false, true, false, false. A continuacin muestra por pantalla el elemento con localizador 0.
Debers obtener por pantalla que se muestra true.
d) Declara un array de strings de nombre $jugador e introduce en l 5 elementos que sean "Crovic",
"Antic", "Malic", "Zulic" y "Rostrich". A continuacin usando el operador de concatenacin haz que se
muestre la frase: <<La alineacin del equipo est compuesta por Crovic, Antic, Malic, Zulic y Rostrich.>>
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00824B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Matrices y arrays multidimensionales en PHP. Ejercicios resueltos.

MATRICES O ARRAYS DE DOS DIMENSIONES


Las matrices decimos que son arrays (arreglos) de dos dimensiones. Tambin podemos verlas como
tablas donde cada elemento tiene una fila y una columna. Para comprenderlas mejor podemos recordar
las matrices matemticas de 2 dimensiones. Un ejemplo de matriz en matemticas podra ser esta:

14

19

13

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 podramos decir que tenemos 3 filas (fila 0, fila 1 y fila 2) y cuatro
columnas (columna 0, columna 1, columna 2, columna 3). Podramos decir que el elemento de la fila 1,
columna 3 es igual a 2. De la misma manera podramos 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 cdigo y gurdalo con un nombre de archivo como ejemplo3.php. A continuacin,
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] = "Murcilago";
$animal[2][1] = "Cocodrilo";
echo $animal[2][1];
echo $animal[0][0];
?>

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

aprenderaprogramar.com, 2006-2029

Matrices y arrays multidimensionales en PHP. Ejercicios resueltos.

Hay que recordar que los arrays siempre comienzan numerndose desde cero.
Otra forma de asignar valores a un array matriz es similar a la que ya describimos para los vectores.
Escribe este cdigo y gurdalo con un nombre de archivo como ejemplo4.php. A continuacin, sube el
fichero al servidor y visualiza el resultado.
<?php
$animal = array(
array("Perro", "Gato"),
array("Lombriz", "Burro"),
array("Murcilago", "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] = "Murcilago"; $animal [2] [1] = "Cocodrilo";
De ah que por pantalla se muestre "Cocodrilo" y "Perro", al igual que en el ejemplo anterior.

Tambin obtenemos el mismo resultado usando este cdigo, que es una mezcla de ambos tipos de
sintaxis:
<?php
$animal[0] = array("Perro", "Gato");
$animal[1] = array("Lombriz", "Burro");
$animal[2] = array("Murcilago", "Cocodrilo");
echo $animal[2][1];
echo $animal[0][0];
?>

La visualizacin obtenida es la misma: por pantalla se muestra "Cocodrilo" y "Perro", al igual que en el
ejemplo anterior..
aprenderaprogramar.com, 2006-2029

Matrices y arrays multidimensionales en PHP. Ejercicios resueltos.

ARRAYS MULTIDIMENSIONALES
Los arrays multidimensionales son los que tienen ms de dos dimensiones. Estos tipos de arrays se
definen como las matrices pero aadiendo ms ndices.
Escribe este cdigo, guarda el archivo php, sbelo 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] = "Murcilago";
$animal[1][0][2] = "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 lnea que tiene poco sentido, o podra interpretarse como un error:
echo "<br/>&nbsp;&nbsp;&nbsp;" . $animal[0][0][3];
Fjate que estamos invocando un localizador [0][0][3] que no existe, o al que an no le hemos asignado
valor. Dependiendo del lenguaje y de la versin 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 vaco,
que en este caso supondra que en la pantalla no se muestra nada asociado a esta variable. Por eso en
la pantalla vemos nicamente Murcilago y nada ms.
Escribe el cdigo que incluimos ms abajo y visualiza el resultado. Si te fijas, cuando declaramos un
array dentro de otro array lo que hacemos es aadir una dimensin ms al array. Por ejemplo, si
quisiramos declarar un array de tres dimensiones de nombre $miFecha podramos escribir:

aprenderaprogramar.com, 2006-2029

Matrices y arrays multidimensionales en PHP. Ejercicios resueltos.

<?php
$miFecha = array( //Declara array
array( //Dimensin [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( //Dimensin [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( //Dimensin [2][][]
array("10 de junio de 2020", "11 de marzo de 2019"), //[2][0][]
),
array(//Dimensin [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]
Comprubalo solicitando la visualizacin de todas estas variables, como vemos en este ejemplo.

aprenderaprogramar.com, 2006-2029

Matrices y arrays multidimensionales en PHP. Ejercicios resueltos.

<?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(
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>";
?>

aprenderaprogramar.com, 2006-2029

Matrices y arrays multidimensionales en PHP. Ejercicios resueltos.

EJERCICIO
Crea el cdigo PHP de 3 archivos que den respuesta al siguiente planteamiento:
Queremos almacenar en una matriz el nmero de alumnos con el que cuenta una academia, ordenados
en funcin del nivel y del idioma que se estudia. Tendremos 3 filas que representarn al Nivel bsico,
medio y de perfeccionamiento y 4 columnas en las que figurarn los idiomas (0 = Ingls, 1 = Francs, 2 =
Alemn y 3 = Ruso). Se pide realizar la declaracin 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

19

13

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 nmero de alumnos en el nivel bsico, idioma
ingls, hay 1 alumno; en el nivel bsico, idioma francs, hay 14 alumnos, etc.

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

Prxima entrega: CU00825B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Arrays asociativos en PHP. Ejemplos y ejercicios resueltos.

ARRAYS ASOCIATIVOS EN PHP


Anteriormente hemos visto lo que son los arrays tradicionales en PHP y cmo 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 estn 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 numeracin 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 numrico 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.
Escribe ahora este cdigo y gurdalo con un nombre de archivo como ejemplo1.php. A continuacin,
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'];
?>

aprenderaprogramar.com, 2006-2029

Arrays asociativos en PHP. Ejemplos y ejercicios resueltos.

Si te fijas en el cdigo, 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 parntesis de definicin del array, tenemos que asociar el ndice
con el valor por medio del operador =>. Fjate que el ndice debe ir escrito entre comillas simples.
Despus, 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
nmero, pero tambin podemos poner cadenas de texto, como en el ejemplo anterior e incluso
variables. Escribe este cdigo 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];
?>

Como ves en este ejemplo hemos usado una variable tipo cadena de texto como ndice de un array.
Finalmente, los arrays asociativos tambin pueden usarse en la forma de declaracin habitual
escribiendo $nombreVariable [indice] = valor. Escribe este ejemplo de cdigo, gurdalo con un nombre
de archivo y sbelo al servidor.
<?php //Ejemplo arrays aprenderaprogramar.com
$colores_vehiculos ['coche'] = 'Rojo';
$colores_vehiculos ['moto'] = 'verde';
$colores_vehiculos ['avion'] = 'amarillo';
echo $colores_vehiculos['moto'];
?>

Comprobars que en la pantalla del navegador se muestra el texto verde.


aprenderaprogramar.com, 2006-2029

Arrays asociativos en PHP. Ejemplos y ejercicios resueltos.

EJERCICIO
Crea el cdigo PHP de dos archivos que den respuesta al siguiente planteamiento:
Queremos almacenar en una matriz el nmero de alumnos con el que cuenta una academia, ordenados
en funcin del nivel y del idioma que se estudia. Tendremos 3 niveles: Nivel bsico, medio y de
perfeccionamiento, que se corresponden con las filas de la matriz, y 4 idiomas (Ingls, Francs, Alemn
y Ruso), que se corresponden con las columnas de la matriz. Se pide realizar la declaracin de la matriz
y asignarle los valores indicados en la siguiente imagen cumpliendo con:
1

14

19

13

a) Con una sintaxis ejemplo de uso de arrays asociativos donde el primer ndice del array (niveles) es un
nmero y el segundo un texto indicativo del idioma. Se debe mostrar por pantalla los alumnos que
existen en cada nivel e idioma. Ejemplo: numeroAlumnos[0]['frances'] representar el nmero de
alumnos que existen en el nivel bsico, idioma francs.
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 nmero de
alumnos que existen en el nivel bsico, idioma francs.

Nota: en ambos casos debe mostrarse por pantalla que el nmero de alumnos en el nivel bsico, idioma
ingls, hay 1 alumno; en el nivel bsico, idioma francs, hay 14 alumnos, etc.

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

Prxima entrega: CU00826B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Funcin count. Uso de for y for-each para recorrer arrays.

FUNCIN COUNT
Antes de poder recorrer un array, debemos saber cul es su tamao para poder recorrerlo.
Supongamos que un array tiene tres elementos: tenemos que dar una instruccin 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 instruccin ser del tipo para cada uno de los
veinticuatro elementos del array, extraer su valor. Como vemos, muchas veces nos es necesario saber
el nmero de elementos que hay en el array para poder recorrerlo, y para ello nos va a resultar til la
funcin count.
La funcin count devuelve el nmero de elementos que hay en el array. Es decir para un array de 4
elementos, la funcin count devolver el nmero 4. Recuerda que si se trata de valores numricos de
ndices, los cuatro valores numricos sern normalmente 0, 1, 2 y 3 en lugar de 1, 2, 3 y 4.
Escribe ahora este cdigo y gurdalo con un nombre de archivo como ejemplo2.php. A continuacin,
sube el fichero al servidor y visualiza el resultado.
<?php //Ejemplo count aprenderaprogramar.com
$estacion[0] = "Primavera";
$estacion[1] = "Verano";
$estacion[2] = "Otoo";
$estacion[3] = "Invierno";

echo count($estacion);
?>

Puedes comprobar que se muestra el nmero 4 porque el array tiene 4 elementos.

aprenderaprogramar.com, 2006-2029

Funcin count. Uso de for y for-each para recorrer arrays.

RECORRIDOS DE ARRAYS UNIDIMENSIONALES


Ahora que ya conocemos qu son los arrays, debemos conocer cmo recorrerlos para extraer o
comprobar los valores que contiene cada uno de los elementos del array. Esta es una tarea habitual en
programacin 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 ms habituales y sencillas.

Recorrido de arrays mediante for


Escribe ahora este cdigo y gurdalo con un nombre de archivo como ejemplo3.php. A continuacin,
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 />';
}
?>

Como ejercicio y teniendo en cuenta lo explicado en las entregas anteriores sobre los distintos tipos de
instrucciones de repeticin, escribe el cdigo que d lugar al mismo resultado que el ejemplo anterior
pero usando la instruccin while y comprueba que obtienes el mismo resultado.

aprenderaprogramar.com, 2006-2029

Funcin count. Uso de for y for-each para recorrer arrays.

CONOCER COUNT
Ejecuta este cdigo:
<?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
...
...
...
...
...
Uno...
Dos...
Tres...
aaa
0 elementos

Analicemos lo que est ocurriendo. El array $array no tiene definidos cules 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 vaco y simplemente se muestran
tres puntos por pantalla. Lo mismo ocurre con los ndices 1, 2, 3, 4 y slo es al llegar al ndice cinco
cuando se muestran valores por pantalla.

aprenderaprogramar.com, 2006-2029

Funcin count. Uso de for y for-each para recorrer arrays.

Sin embargo, slo se mostrarn los elementos con ndice 5 a 8 del array, quedando el resto de
elementos sin ser mostrado.
Adems comprobamos que podemos invocar a elementos del array por encima del ndice mximo
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 podramos mostrar todos los elementos del array realizando un pequeo cambio:
for($i=5;$i<count($array)+5;$i++)
Sin embargo esta solucin no es satisfactoria porque no la podemos aplicar como solucin para
recorrer cualquier array.
A modo de resumen diremos lo siguiente:
count nos devuelve el nmero 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 ms adelante.

COUNT CON ARRAYS MULTIDIMENSIONALES


En el caso de arrays de ms de una dimensin, la funcin count devuelve el nmero 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
$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 cdigo:
<?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";

aprenderaprogramar.com, 2006-2029

Funcin count. Uso de for y for-each para recorrer arrays.

$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
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

Fjate que por ejemplo count($array2[0][1]) nos devuelve el nmero de elementos existentes de tipo
$array2[0][1][x] donde x es cualquier ndice, es decir, el nmero de elementos de tercer nivel del array
para los ndices iniciales 0 y 1.

aprenderaprogramar.com, 2006-2029

Funcin count. Uso de for y for-each para recorrer arrays.

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 ms claro.
Escribe ahora este cdigo y gurdalo con un nombre de archivo como ejemplo4.php. A continuacin,
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 />';
}
}
}
?>

Fjate 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 funcionaran.
aprenderaprogramar.com, 2006-2029

Funcin count. Uso de for y for-each para recorrer arrays.

Fjate tambin en la lgica de los bucles, por ejemplo el primer bucle lo podramos leer as: para cada
elemento desde 0 hasta el nmero de elementos de primer nivel, y para cada elemento desde 0 hasta
el nmero 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 cuntos 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 hiciramos una llamada a
ese elemento como echo $array[2][3] podra aparecer un error tipo undefined offset similar a ste:

Recorrido de arrays mediante foreach


PHP incorpora una forma cmoda para poder recorrer todos los elementos de un array. Esta forma se
basa en el uso de la instruccin foreach.
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' => 'Gmez Gmez', 'telefono' => '675832145'),
array('nombre' => 'Pedro', 'apellidos' => 'Guilln Gastn', 'telefono' => '674562178'),
array('nombre' => 'Dolores', 'apellidos' => 'Candela Quema', 'telefono' => '689765432'),
.
.
.
.
array('nombre' => 'Rubn', 'apellidos' => 'Guardia Jurado', 'telefono' => '654213896'),
);

Recuerda que la anterior forma de expresin es equivalente a esta otra:

aprenderaprogramar.com, 2006-2029

Funcin count. Uso de for y for-each para recorrer arrays.

$datosArray[0] ['nombre'] = 'Antonio'


$datosArray[0] ['apellidos'] = 'Gmez Gmez'
$datosArray[0] ['telefono'] = '675832145'
$datosArray[1] ['nombre'] = 'Pedro'
$datosArray[1] ['apellidos'] = 'Guilln Gastn'
$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 nmeros (se trata de
arrays tradicionales). En el primer caso los valores 0, 1 y 2 son asignados automticamente por php
porque no se ha especificado otra cosa.
Para recorrer arrays de forma cmoda se usa la instruccin foreach.
Escribe ahora este cdigo y gurdalo con un nombre de archivo como ejemplo5.php. A continuacin,
sube el fichero al servidor y visualiza el resultado.
<?php //Ejemplo foreach aprenderaprogramar.com
$rows = array(
array(
'nombre' => 'Antonio', 'apellidos' => 'Gmez Gmez', 'telefono' => '675832145'),
array(
'nombre' => 'Pedro', 'apellidos' => 'Guilln Gastn', 'telefono' => '674562178'),
array(
'nombre' => 'Dolores', 'apellidos' => 'Candela Quema', 'telefono' => '689765432'),
array(
'nombre' => 'Rubn', '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.
aprenderaprogramar.com, 2006-2029

Funcin count. Uso de for y for-each para recorrer arrays.

$valor es una variable temporal que slo existe durante la ejecucin de la instruccin foreach, y esta
variable va tomando en cada repeticin o iteracin 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 podramos obtener el mismo resultado usando este cdigo:
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 prctico escribirlos
uno a uno
Como ejercicio escribe el cdigo que muestre los nombres y apellidos del array anterior.
Si te resulta un poco complicado el ejercicio anterior, prueba con este cdigo que es ms sencillo, y
luego vuelve a revisar el cdigo anterior.
<?php
$estacion[0] = "Primavera";
$estacion[1] = "Verano";
$estacion[2] = "Otoo";
$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 repeticin del bucle el contenido de los
elementos o items del array que estamos recorriendo.

aprenderaprogramar.com, 2006-2029

Funcin count. Uso de for y for-each para recorrer arrays.

EJERCICIO 1
Crea un array con nombre paisLimitrofe donde los elementos del array sern cadenas de texto con los
pases limtrofes (con frontera) con el tuyo. Por ejemplo si vivimos en Per tenemos como pases
limtrofes Ecuador, Colombia, Brasil, Bolivia y Chile.
a) Utilizando un bucle for, muestra por pantalla los pases limtrofes.
b) Utilizando un bucle for each, muestra por pantalla los pases limtrofes.

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

EJERCICIO 2
Escribe y ejecuta el siguiente cdigo 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 cdigo obtienes un resultado por pantalla u obtienes un error? Qu es lo que hace el
cdigo?

EJERCICIO 3
Supn que quieres representar lo siguiente: hay 2 equipos espaoles, 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.

aprenderaprogramar.com, 2006-2029

Funcin count. Uso de for y for-each para recorrer arrays.

a) Representa los datos usando un array de tres dimensiones con ndices numricos donde el primer
ndice indica el pas, el segundo el equipo y el tercero la posicin del jugador. Presenta la informacin
del pas, equipo, posiciones y jugadores de cada equipo usando un bucle for.
b) Representa los datos usando un array de tres dimensiones con ndices numricos donde el primer
ndice indica el pas, el segundo el equipo y el tercero la posicin del jugador. Presenta la informacin
del pas, 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 pas, el
segundo el equipo y el tercero la posicin del jugador (un ejemplo de cmo declarar un elemento sera
por ejemplo: $equipos['Mexico']['Equipo1']['defensa']="koltz"; ). A continuacin usando un bucle
foreach recorre los elementos del array mostrando la informacin del pas, equipo, posiciones y
jugadores de cada equipo.

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

Prxima entrega: CU00827B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Funciones en PHP: declaracin y llamada a funciones en PHP. Ejemplos.

FUNCIONES EN PHP
Una de las herramientas ms importantes en cualquier lenguaje de programacin son las funciones.
Una funcin 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 funcin. Las funciones
pueden ser llamadas y ejecutadas desde cualquier punto del programa.

Adems, una funcin puede recibir parmetros externos de los cuales dependa el resultado de dicha
funcin. Es decir, segn el parmetro o parmetros con los que se invoque a la funcin, sta devolver
un resultado u otro.
Las funciones deben estar definidas antes de realizar la llamada a la funcin (como es lgico).
Sintaxis general para declarar una funcin en PHP:
function nombre (parmetro1, parmetro2, , parmetroN) {
instruccin1
instruccin2
.
.
.
instruccinN
}
Para llamar (hacer que se ejecute) la funcin usaremos esta sintaxis: nombre(par1, par2, par3, , parN);
donde par1, par2, par3, , parN son los parmetros (informacin) que le pasamos a la funcin. Una
funcin puede necesitar de ningn, uno o varios parmetros para ejecutarse.
Escribe ahora este cdigo y gurdalo con un nombre de archivo como ejemplo1.php. A continuacin,
sube el fichero al servidor y visualiza el resultado.
<?php //Ejemplo funciones

aprenderaprogramar.com

//Declaracin de funciones
function mostrarTexto($texto) {
echo "<strong>El texto a mostrar es el siguiente: </strong>";
echo $texto;
}
//Fin de la declaracin de funciones

mostrarTexto("Me gusta mucho la web de aprenderaprogramar.com");


?>

aprenderaprogramar.com, 2006-2029

Funciones en PHP: declaracin y llamada a funciones en PHP. Ejemplos.

En este ejemplo hemos visto cmo hemos definido una funcin cuyo nombre es mostrarTexto. Esta
funcin espera un parmetro cuando es invocada (parmetro que se ha denominado $texto). Una vez
se ejecuta, la funcin 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 programacin se distinguen los trminos procedimiento cuando un


fragmento de cdigo de este tipo ejecuta una serie de instrucciones sin devolver un valor,
frente al trmino funcin que se aplica cuando un fragmento de cdigo 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 funcin en general.

b)

En algunos lenguajes de programacin como Java el tipado o especificacin de tipos que se


van a recibir por parte de la funcin (o el tipo de dato que va a devolver la funcin) es mucho
ms fuerte. Si te fijas, la funcin mostrarTexto recibe un parmetro denominado $texto, pero
en ningn lado se especifica si dicho parmetro es tipo integer, float, double string. De qu
tipo es? Realmente no lo sabemos: el intrprete PHP se encarga de automticamente
reconocer el tipo que se le pasa a la funcin. Adems, intentar ejecutar el cdigo sea como sea
el tipo del parmetro pasado. Si le resultara imposible ejecutar el cdigo, devolvera un error.

La utilidad fundamental de las funciones es no tener que repetir partes de cdigo comunes, que sera
necesario repetir varias veces. Esas partes de cdigo comunes se agrupan en funciones y simplemente
llamaremos a la funcin cada vez que necesitamos ejecutar ese cdigo. De esta manera, evitamos la
repeticin que hace ms largo y difcil de entender un programa o desarrollo web.
Tambin podemos crear funciones que devuelvan datos (valores concretos). Estas funciones, que
podramos denominar funciones en sentido estricto, son aquellas que ejecutan un cdigo y como
punto final de dicho cdigo incluyen una sentencia return seguida del resultado de la funcin. La
sentencia return indica que cuando se alcanza se ha llegado al final de la funcin y se devuelve como
resultado de la misma el contenido especificado a continuacin del return. Despus de un return puede
devolverse una variable, un nmero, una cadena de texto, etc.
Por ejemplo return "No dispone de permisos" significa que la funcin devuelve esta cadena de texto.
Otro ejemplo: return $calculo; indica que la funcin devuelve el contenido que se encuentre
almacenado en la variable $calculo. Otro ejemplo: return "Lo sentimos ".$usuario." pero no dispone de
permisos. Para solicitar informacin puede escribir a ".$emailAdministrador; hara que la funcin
devuelva una cadena de texto donde intervienen diversas variables.

aprenderaprogramar.com, 2006-2029

Funciones en PHP: declaracin y llamada a funciones en PHP. Ejemplos.

Escribe ahora este cdigo y gurdalo con un nombre de archivo como ejemplo2.php. A continuacin,
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 funcin operaciones
$r = operaciones(5, 7, "Sumar");
echo $r . "<br>";
// O podemos imprimir directamente
echo operaciones(15, 8, "Restar");
?>

Fjate que a diferencia de la funcin mostrarTexto, la funcin operaciones nos devuelve un valor
concreto, de forma que se sustituye su invocacin all donde aparece por el valor que devuelve. As, la
instruccin echo operaciones(15, 8, "Restar"); equivale a lo que sera escribir echo <<aqu el valor
devuelto por la funcin operaciones invocada con los parmetros 15, 8 y Restar >>, es decir, sera lo
mismo que escribir echo (15-8); echo 7;
Adems, fjate que la funcin mostrarTexto requera un parmetro, mientras que la funcin
operaciones requiere tres parmetros. Si invocas la funcin sin pasarle el nmero de parmetros
adecuado obtendrs un error del tipo <<Warning: Missing argument 3 for operaciones()>>.
Por ltimo, tener en cuenta que una funcin puede ser invocada sin parmetros.
<?php //Ejemplo funciones

aprenderaprogramar.com

function mostrarTextoError {
echo "<strong>Se ha producido un error </strong>";
// Aqu pueden venir varias lneas de instrucciones
}
?>

aprenderaprogramar.com, 2006-2029

Funciones en PHP: declaracin y llamada a funciones en PHP. Ejemplos.

Esta funcin carece de parmetros. Para invocarla escribiramos mostrarTextoError(). Cada vez que
realizramos la invocacin se ejecutara el cdigo dentro de la funcin. Esta funcin podemos decir que
es tipo procedimiento porque no devuelve un resultado (no tiene sentencia return).

EJERCICIO
Crear las siguientes funciones en PHP y cdigo para comprobar su funcionamiento:
a) Una funcin que reciba cinco nmeros enteros como parmetros y muestre por pantalla el resultado
de sumar los cinco nmeros (tipo procedimiento, no hay valor devuelto).
b) Una funcin que reciba cinco nmeros enteros como parmetros y devuelva el resultado de sumar
los cinco nmeros (tipo funcin, hay un valor devuelto). Asigna el resultado de una invocacin a la
funcin con los nmeros 2, 5, 1, 8, 10 a una variable de nombre $tmp y muestra por pantalla el valor de
la variable.
c) Una funcin que reciba como parmetros 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 = nmeroPi * radio * radio * Altura siendo nmeroPi = 3.1416 aproximadamente.
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00828B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Funciones bsicas en PHP: str_replace, strtolower, strtoupper...

FUNCIONES BSICAS EN PHP


PHP adems 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
ncleo 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).

FUNCIN STR_REPLACE
Esta funcin 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
funcin devuelve la frase original con todas las apariciones de la cadena a buscar reemplazadas con una
cadena de reemplazo especificada.
La sintaxis bsica habitual para esta funcin es:

str_replace ("cadena a buscar", "cadena de reemplazo", $variableOFraseOriginal)

Vemoslo con un ejemplo para entenderla mejor. Escribe este cdigo y gurdalo con un nombre de
archivo como ejemplo1.php. A continuacin, sube el fichero al servidor y visualiza el resultado.
<?php //Ejemplo funciones bsicas 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.

aprenderaprogramar.com, 2006-2029

Funciones bsicas en PHP: str_replace, strtolower, strtoupper...

Fjate que en el cdigo 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 funcin. Si
hubiramos escrito lo siguiente s hubiramos cambiado el contenido de la variable: $texto =
str_replace("Diego", "recortes", $texto);
La funcin permite pasar opcionalmente un parmetro adicional que permite saber a posteriori el
nmero de reemplazos que se han realizado:

str_replace ("cadena a buscar", "cadena de reemplazo", $variableOFraseOriginal, $numReemplazos)

Vemoslo con un ejemplo para entenderlo mejor:


<?php //Ejemplo funciones bsicas 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
Fjate que se reemplaza la cadena "es" indistintamente segn est separada por espacios o dentro de
una palabra. Si slo quisiramos reemplazar la cadena si est separada por espacios podramos 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, tendramos 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
minsculas o maysculas respectivamente. Escribe ahora este cdigo y gurdalo con un nombre de
archivo como ejemplo4.php. A continuacin, sube el fichero al servidor y visualiza el resultado.

aprenderaprogramar.com, 2006-2029

Funciones bsicas en PHP: str_replace, strtolower, strtoupper...

<?php //Ejemplo funciones bsicas aprenderaprogramar.com


$cadena = "EstO eS UnA cadeNA de CARActeres";
echo strtolower($cadena);
echo "<br />";
echo strtoupper($cadena);
?>

Como vemos el comportamiento de las funciones es sencillo. Simplemente devuelven la cadena de


caracteres pasada como argumento en minsculas o maysculas respectivamente.
Ten en cuenta que muchas veces para realizar comparaciones o para almacenar datos ser interesante
uniformizar la informacin 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.

FUNCIN COUNT_CHARS Y SUBSTR_COUNT


La funcin count_chars sirve para contar el nmero de apariciones de un carcter 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 numrico ascii como ndice y la frecuencia de cada carcter ascii
como valor.
1: se devolver un array con el valor numrico ascii como ndice y la frecuencia de cada carcter que
aparezca al menos una vez como valor.
2: se devolver un array de caracteres que no aparecen en la cadena, con el valor numrico ascii como
ndice y la frecuencia de cada carcter ascii que no aparece como valor.

aprenderaprogramar.com, 2006-2029

Funciones bsicas en PHP: str_replace, strtolower, strtoupper...

3: devuelve una cadena que contiene todos los caracteres nicos.


4: devuelve una cadena que contiene todos los caracteres no utilizados.
Nota: los cdigos numricos ascii van de 0 a 255 y no todos son visibles por pantalla.
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 funcin til es substr_count($cadena, $subcadena). Esta funcin nos devuelve el nmero 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:
FUNCIN

UTILIDAD

EJEMPLOS aprenderaprogramar.com

strlen($cadena)

Devuelve la longitud o nmero de caracteres de la


cadena

Ver entregas anteriores del curso

substr
($cadena,
$inicio,
$opcNumCar)

Si no se especifica $opcNumCar devuelve la


subcadena entre la posicin $inicio y el fin de cadena
siendo la posicin inicial la cero. Si se especifica
$opcNumCar extrae $opcNumCar caracteres desde
la posicin $inicio (inclusive).

Ver entregas anteriores del curso

aprenderaprogramar.com, 2006-2029

Funciones bsicas en PHP: str_replace, strtolower, strtoupper...

FUNCIN

UTILIDAD

EJEMPLOS aprenderaprogramar.com
$saludo = "hoy es viernes";

Devuelve la cadena con la primera letra en


maysculas

ucfirst($cadena);

ucfirst($saludo);
//Hoy es viernes
$saludo = "hoy es viernes";

Devuelve la cadena con cada una de sus palabras con


la primera letra en maysculas

ucwords($cadena);

echo ucwords($saludo);
//Hoy Es Viernes

strpos ($cadena
$subCadena,
$opcPosInicio )

Devuelve la posicin en que comienza la subcadena


a partir de la posicin inicial (cero) si no se especifica
$opcPosInicio, o a partir de la posicin $opcPosInicio
si se especifica. Si no se encuentra la subcadena
devuelve false.

$saludo = "hoy es viernes";


echo strpos($saludo, "es");
//4

$saludo = "*** hoy es viernes ***";


trim
($cadena,
$opcCaracteres)

Si no se especifica $opcCaracteres, devuelve la


cadena eliminando espacios en blanco, tabuladores,
saltos de lnea y retornos de carro del principio y
final de la cadena. Si se especifica $opcCaracteres, se
eliminan los caracteres especificados.

ltrim
($cadena,
$opcCaracteres)

Si no se especifica $opcCaracteres, devuelve la


cadena eliminando espacios en blanco, tabuladores,
saltos de lnea y retornos de carro del principio de la
cadena. Si se especifica $opcCaracteres, se eliminan
los caracteres especificados.

rtrim
($cadena,
$opcCaracteres)

Si no se especifica $opcCaracteres, devuelve la


cadena eliminando espacios en blanco, tabuladores,
saltos de lnea y retornos de carro del final de la
cadena. Si se especifica $opcCaracteres, se eliminan
los caracteres especificados.

chop

Igual que rtrim

str_repeat($cadena,
$numVeces)

Devuelve la cadena repetida $numVeces siendo ste


un nmero entero.

echo trim($saludo, "*");


//hoy es viernes
Nota: puede no funcionar como se espera
debido a juego de caracteres, configuracin
local y configuracin del servidor.
$saludo = "*** hoy es viernes ***";
echo ltrim($saludo, "*");
//hoy es viernes ***
Nota: puede no funcionar como se espera
debido a juego de caracteres, configuracin
local y configuracin del servidor.
$saludo = "*** hoy es viernes ***";
echo rtrim($saludo, "*");
//*** hoy es viernes
Nota: puede no funcionar como se espera
debido a juego de caracteres, configuracin
local y configuracin del servidor.

$saludo = 'hola ';


str_repeat($saludo, 3);
//hola hola hola

strstr
($cadena,
$desde,
$opcBoolean)

Devuelve la subcadena desde la primera aparicin de


$desde (incluida) hasta el final si no se especifica
opcBoolean este es false. Si $opcBoolean es true
devuelve la subcadena desde el inicio hasta la
primera aparicin de $desde (excluida).

strchr

Igual que strstr

chr ( $ascii )

Devuelve el carcter correspondiente al cdigo


numrico entero $ascii segn el cdigo ascii

aprenderaprogramar.com, 2006-2029

$saludo = "hoy es viernes";


echo strstr($saludo, "es", false);
//es viernes

echo chr(65). ' es la salida';


// A es la salida

Funciones bsicas en PHP: str_replace, strtolower, strtoupper...

Existen ms funciones para cadenas en PHP pero los programadores no las suelen conocer todas, ya
que algunas son para tareas muy especficas. 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 algn momento necesitas realizar tareas muy especficas con cadenas en PHP puedes
conocer todas las funciones existentes sobre cadenas acudiendo a la documentacin 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 cuntas 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 cuntas 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 sustitudas por el smbolo *. 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 aparicin 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.

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

Prxima entrega: CU00829B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Comparar cadenas con PHP: strcmp. Rellenar cadenas: str_pad.

COMPARACIN 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 extraos. Usar el operador === puede dar mejores resultados, pero en general
trataremos de usar funciones como strcmp previstas especficamente para esto.

FUNCIN STRCMP
Esta funcin realiza la comparacin segura de Strings y devuelve un valor numrico. Su sintaxis habitual
es la siguiente:

if (strcmp ($cadena1 , $cadena2 ) == 0) { }

strcmp es sensible a maysculas y minsculas, es decir, no considera igual Martes que martes.
La funcin devuelve un valor numrico 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 numrico menor que 0 si la cadena 1 es menor que la cadena 2
Un valor numrico mayor que cero si la cadena 2 es mayor que la cadena 1.

Qu significa que una cadena sea mayor que otra? La comparacin se hace en funcin de los cdigos
numricos equivalentes de cada carcter. Por ejemplo la letra A tiene cdigo numrico 65 y la letra a
cdigo numrico 97. Debido a que los cdigos numricos no permiten una ordenacin alfabtica
precisa (al no ordenar correctamente maysculas y minsculas, palabras con tilde, caracteres como la
, etc.), ste no es un buen medio para ordenar alfabticamente palabras y slo tiene una utilidad
limitada.

Los parmetros aportados a la funcin deben ser Strings. En caso de que algn parmetro no sea una
cadena de texto, el resultado que devuelve la funcin puede ser impredecible.
Escribe este cdigo y visualiza los resultados que produce:

aprenderaprogramar.com, 2006-2029

Comparar cadenas con PHP: strcmp. Rellenar cadenas: str_pad.

<meta charset="utf-8">
<?php //Ejemplos curso PHP aprenderaprogramar.com
$cadena1 = '1e3'; $cadena2 = '1000';
if ($cadena1 == $cadena2) {echo 'Segn == las dos cadenas son iguales';}
else {echo 'Segn == las dos cadenas NO son iguales'; }
echo '<br/>';
if ($cadena1 === $cadena2) {echo 'Segn === las dos cadenas son iguales';}
else {echo 'Segn === las dos cadenas NO son iguales'; }
echo '<br/>';
if (strcmp($cadena1, $cadena2) == 0) {echo 'Segn strcmp las dos cadenas son iguales';}
else {echo 'Segn strcmp las dos cadenas NO son iguales'; }
?>

El resultado ser similar a este: Segn == las dos cadenas son iguales, Segn === las dos cadenas NO son
iguales, Segn strcmp las dos cadenas NO son iguales.
Recordar que para hacer comparaciones seguras de cadenas de texto usaremos strcmp u otra funcin
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:
FUNCIN

UTILIDAD

strcasecmp ($cadena1
, $cadena2 )

Devuelve como resultado 0 si ambas cadenas son


iguales, o un valor numrico menor o mayor de
cero en caso contrario. No diferencia entre
maysculas y minsculas.

EJEMPLOS aprenderaprogramar.com
$cadena1 = 'martes';
$cadena2 = 'Martes';
strcasecmp ($cadena1, $cadena2)
// Devuelve 0, son iguales
$cadena1 = 'martes';

strncmp
($cadena1,
$cadena2,
$numCaract)

Compara el nmero de caracteres numCaract


entre la cadena 1 y la cadena 2 teniendo en cuenta
maysculas y minsculas como diferentes.

$cadena2 = 'Martes de feria';


strncmp ($cadena1 , $cadena2 , 6)==0
// Devuelve false, no son iguales
$cadena1 = 'martes';

strncasecmp
($cadena1 , $cadena2,
$numCaract)

Compara el nmero de caracteres numCaract


entre la cadena 1 y la cadena 2 sin tener en cuenta
maysculas y minsculas.

$cadena2 = 'Martes de feria';


strncasecmp ($cadena1 , $cadena2 , 6)
// Devuelve 0, son iguales

substr_compare
($cadena1, $cadena2,
$posicionCad1,
$opcLongitud,
$opcBoolDiferencia)

Compara una subcadena de cadena 1 que


comienza en posicin posicionCad. Se compara
hasta que una cadena termina si no se especifica
opcLongitud, o el nmero de caracteres indicado si
s se especifica. Por defecto diferencia maysculas
y
minsculas,
pero
estableciendo
opcBoolDiferencia true no distinguir entre
maysculas y minsculas.

aprenderaprogramar.com, 2006-2029

$cadena1 = 'martes';
$cadena2 = 'Martes de feria';
substr_compare ($cadena1 , $cadena2 , 0,
strlen($cadena1), true)
// Devuelve 0, son iguales

Comparar cadenas con PHP: strcmp. Rellenar cadenas: str_pad.

RELLENO DE CADENAS CON STR_PAD


Esta funcin realiza un relleno de cadenas ampliando la cadena hasta una longitud especificada y
rellenndola con el carcter o caracteres especificados hasta dicha longitud. La sintaxis es:

str_pad ( string $cadnea , int $nuevaLongitud $opcCarRelleno, opcTipoDeRelleno)

Donde opcCarRelleno es opcional e indica el carcter o caracteres de relleno que se emplearn. Si no se


especifica, se tomar el espacio en blanco como carcter de relleno.
opcTipoDeRelleno es opcional e indica cmo 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 cdigo y comprueba los resultados:

<?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@@@@
Fjate 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 carcter a derecha y otro a
izquierda, pero tras colocar 6 slo le queda 1 por colocar y ste carcter queda a derecha.

Existen ms funciones para cadenas en PHP pero los programadores no las suelen conocer todas, ya
que algunas son para tareas muy especficas. Si en algn momento necesitas realizar tareas muy
especficas con cadenas en PHP puedes conocer todas las funciones existentes acudiendo a la
documentacin
oficial
de
PHP
sobre
funciones
de
cadenas,
disponible
en
http://php.net/manual/es/ref.strings.php

aprenderaprogramar.com, 2006-2029

Comparar cadenas con PHP: strcmp. Rellenar cadenas: str_pad.

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 nmero 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 funcin de comparacin de subcadenas.
c) Dada la cadena "ApRendEr A proGraMar.cOm" transformar la cadena a minsculas 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 ms 1) si es impar. Mostrar por pantalla la cadena en minsculas y con el relleno
indicado.

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

Prxima entrega: CU00830B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Funciones de fecha, tiempo y hora PHP. time, date

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 pgina web de un hotel o un restaurante es posible que trabajemos con fechas y horas de
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 programacin. La primera dificultad y ms


obvia es que existen cientos de dispositivos electrnicos 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
pas, 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 pases. Aqu, claro est, nos estaramos refiriendo a horas locales. Para poder
disponer de horas de referencia globales para todo el mundo se crearon estndares como:
a) GMT o tiempo medio de Greenwich: ha sido un estndar ampliamente usado. GMT era el tiempo
medido en el observatorio britnico de Greenwich, que se defini como meridiano cero de la tierra. As
cada pas poda expresar su hora en funcin 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 ms que en el meridiano de Greenwich (es decir, si es
Greenwich eran las 09:00 en un pas cuya hora fuera GMT+3 seran las 12:00).
b) UTC o tiempo universal coordinado: es el estndar 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 atmicos distribuidos por distintos pases. Es el estndar que se est imponiendo
en los sistemas informticos.
La circunferencia terrestre se dividi en 24 husos horarios de modo que cada huso quedaba
referenciado a un tiempo comn (lo que se denominaba el tiempo de Greenwich).

aprenderaprogramar.com, 2006-2029

Funciones de fecha, tiempo y hora PHP. time, date

Aunque desde el punto de vista de su definicin tcnica UTC y GMT no son lo mismo, a efectos
prcticos hablar de GMT+3 es lo mismo que hablar de UTC+3.
A pesar de este gran avance, el trabajo con el tiempo sigue presentando grandes dificultades en los
sistemas informticos, tanto por la falta de sincronizacin entre dispositivos como por la disparidad en
cuanto a cmo medir el tiempo y con qu grado de precisin, existencia de horarios de verano e
invierno, etc. Por ello encontrars que es relativamente frecuente encontrar que a medida que los
lenguajes de programacin evolucionan vayan introduciendo cambios en la forma de manejar el
tiempo.
Una cuestin 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 energtico. 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 permitirn mostrar o capturar la fecha y hora, lo cual tiene una gran cantidad
de aplicaciones. Por ejemplo, supn que tienes una tienda on-line y para cada operacin de venta
tienes que registrar la fecha y hora de la venta. Estas funciones resultarn tiles para ello.
La funcin time devuelve la hora GMT actual medida como el nmero 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
segn el pas donde nos encontremos. En cambio la hora GMT es nica y no depende del pas. Hay que
tener cuidado con esta circunstancia. Por ejemplo, si trabajas con un servidor localizado en Estados
Unidos lo ms probable es que el servidor trabaje con la hora de Estados Unidos. Si quieres obtener la
hora local de tu pas, tendrs que tenerlo en cuenta para restarle o sumarle cierto nmero de horas a la
hora que te devuelva el servidor.
Por otro lado, la funcin 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 configuracin de cada servidor y la versin de PHP empleada
puede afectar a los resultados.
Escribe ahora este cdigo y gurdalo con un nombre de archivo como ejemplo2.php. A continuacin,
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);
?>

aprenderaprogramar.com, 2006-2029

Funciones de fecha, tiempo y hora PHP. time, date

En este ejemplo hemos especificado como formato para mostrar la fecha d-m-Y (H:i:s) (donde d
representa da, m representa mes, Y representa ao, 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 funcin date da formato a la variable en segundos $time. Hay distintos
formatos para la funcin date, a continuacin indicaremos los ms importantes.
La funcin time() devuelve un valor numrico entero largo, por ejemplo 1335169779. Este nmero
representa el nmero de segundos transcurridos desde el 1 de enero de 1970 00:00:00 GMT.
Para transformar ese nmero en una fecha entendible por las personas usamos la funcin date, cuya
sintaxis general es: date (formato de salida, valorTimeValido)
En cuanto a valorTimeValido, ser un nmero entero, generalmente contenido en una variable.
En cuanto a formato de salida, disponemos de las siguientes equivalencias:

Para representar el da de la semana:


Carcter de formato

Significado aprenderaprogramar.com

Valores que devuelve

d (minscula)

Da del mes, con 2 dgitos. Si es menor de 10, lleva


un 0 inicial.

01 a 31

D (mayscula)

Texto representativo del da, con 3 letras y en


ingls

Mon (lunes) hasta Sun


(domingo)

j (minscula)

Da del mes con un dgito (sin ceros iniciales)

1 a 31

l (letra ele minscula)

Texto representativo del da, con todas las letras y


en ingls

Monday (lunes) hasta Sunday


(domingo)

N (mayscula)

Representacin numrica del da de la semana


segn ISO-8601, siendo 1 el lunes y 7 el domingo

1 (lunes) a 7 (domingo)

S (mayscula)

Sufijo para el da del mes en ingls

st, nd, rd th

w (minscula)

Representacin numrica del da de la semana


siendo 0 domingo y 6 el sbado

0a6

z (minscula)

Da del ao desde 0 hasta 365 (un ao normal ir


de 0 a 364 y uno bisiesto de 0 a 365)

0 a 365

aprenderaprogramar.com, 2006-2029

Funciones de fecha, tiempo y hora PHP. time, date

Para representar el mes:


Carcter de formato

Significado aprenderaprogramar.com

Valores que devuelve

F (mayscula)

Texto representativo del mes, con todas las letras y


en ingls

January (enero) a December


(diciembre)

m (minscula)

Mes en formato numrico con dos dgitos,


incluyendo cero inicial si es menor que 10

01 hasta 12

M (mayscula)

Texto representativo del mes, con tres letras


iniciales en ingls

Jan (enero) hasta Dec


(diciembre)

n (minscula)

Mes en formato numrico con un dgito, sin ceros


iniciales

1 hasta 12

t (minscula)

Nmero de das que tiene el mes

28 hasta 31

Carcter de formato

Significado aprenderaprogramar.com

Valores que devuelve

L (mayscula)

Indica si un ao es bisiesto o no (1 si es bisiesto, 0


si no lo es)

01

Y (mayscula)

Ao en formato numrico de 4 dgitos

1000 a 9999

y (minscula)

Ao en formato numrico de 2 dgitos (los dos


ltimos del ao)

El que corresponda, p.ej. 78

o (minscula)

Nmero de ao segn ISO-8601. En general


devuelve el mismo resultado que Y mayscula

1000 a 9999

Para representar el ao:

Para representar la hora:


Carcter de formato

Significado aprenderaprogramar.com

Valores que devuelve

a (minscula)

Incluye am pm en minsculas detrs de la hora para


indicar antes del meridiano o pasado el meridiano

am pm

A (mayscula)

Igual que a pero en maysculas

AM PM

B (mayscula)

Hora internet, tambin llamada Swatch Internet Time


o Biel Mean Time (BMT), poco usada.

000 a 999

g (minscula)

Nmero de hora desde 1 hasta 12 sin ceros iniciales

1 a 12

G (mayscula)

Nmero de hora desde 0 hasta 23 sin ceros iniciales

0 a 23

h (minscula)

Nmero de hora desde 01 hasta 12, con ceros iniciales

01 a 12

H (mayscula)

Nmero de hora desde 00 hasta 23, con ceros iniciales

00 hasta 23

i (minscula)

Minutos desde 00 hasta 59, con ceros iniciales

00 a 59

s (minscula)

Segundos desde 00 hasta 59, con ceros iniciales

00 a 59

aprenderaprogramar.com, 2006-2029

Funciones de fecha, tiempo y hora PHP. time, date

Para representar la zona horaria:


Carcter de formato

Significado aprenderaprogramar.com

Valores que devuelve

e (minscula)

Representa la zona horaria en ingls (p.ej. GMT,


Atlantic/Azores, America/Denver)

Segn corresponda

I (letra i mayscula)

Indica si se est en horario de verano (0 indica que


no se est en horario de verano, 1 que s se est en
horario de verano).

01

O (letra o mayscula)

Indica la diferencia respecto a la zona horaria de


Greenwich u hora GMT, en horas con cuatro
dgitos y smbolo.

Por ejemplo +0300 -0500

P (mayscula)

Indica la diferencia respecto a la zona horaria de


Greenwich u hora GMT, en horas con cuatro
dgitos con separador dos puntos y smbolo.

Por ejemplo +03:00 -05:00

T (mayscula)

Abreviatura de la zona horaria (abreviatura en


ingls)

Segn corresponda

Z (mayscula)

Diferencia en segundos entre la hora utilizada y la


hora UTC, con signo positivo o negativo

-43200 hasta 50400

Adems disponemos de:


La letra W mayscula para representar la semana del ao segn ISO-8601, considerando que las
semanas comienzan en lunes. Por ejemplo, un ao tiene 52 semanas y con este formato podemos
obtener que estamos en la semana 24 del ao.
La letra c minscula para representar la fecha y hora completa en formato ISO-8601 (tipo 2089-0312T12:19:21+03:00).
La letra r minscula para representar la fecha y hora completa con formato RFC-2822 (tipo Mon, 21 Jan
2089 11:41:05 -0300).
Escribe ahora este cdigo y gurdalo con un nombre de archivo como ejemplo2bis.php. A continuacin,
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/>";

aprenderaprogramar.com, 2006-2029

Funciones de fecha, tiempo y hora PHP. time, date

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 ("Segn el servidor la hora actual es: ". date("H:i:s", $time));
?>
?>

Con este ejemplo podemos comprobar algunas cosas. En primer lugar, que la funcin time() devuelve
un nmero, mientras que la funcin date devuelve un String o cadena de texto.
En segundo lugar, que para obtener fechas anteriores al 1 de enero de 1970 debemos usar nmeros
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 +
01:00, es decir, su hora es la hora GMT +01:00, por eso nos devuelve como hora cero la una de la
maana 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 cmo responde el servidor con el que ests trabajando.
En cuarto lugar, que podemos hacer que la fecha se muestre en el formato u orden que queramos,
usando los trminos clave d, m, Y, H, i, s en el orden que queramos.
En quinto lugar, que podemos concatenar cmo se muestra una fecha (o almacenarla en otra variable si
quisiramos) concatenando el resultado de la funcin date con una cadena de texto cualquiera.

aprenderaprogramar.com, 2006-2029

Funciones de fecha, tiempo y hora PHP. time, date

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:
FUNCIN

mktime(hora,min,seg,mes,
dia,ano)
hora: 0 a 23
min y seg: 0 a 59
mes: 1 a 12
dia: 1 a 31
ao: cuatro dgitos

gmmktime(hora,min,seg,
mes,dia,ano)
hora: 0 a 23
min y seg: 0 a 59
mes: 1 a 12
dia: 1 a 31
ao: cuatro dgitos

UTILIDAD
Devuelve la hora UTC (GMT) para una fecha
local indicada, expresada esta hora GMT en
segundos
(el
nmero
de
segundos
transcurridos desde el 1 de enero de 1970
00:00:00 GMT, valores negativos indican
momentos anteriores a esta fecha). Si faltan
uno o ms parmetros se tomarn los de la
fecha local actual de derecha a izquierda. El
valor obtenido depende de la hora local del
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
nmero de segundos transcurridos desde el 1
de enero de 1970 00:00:00 GMT, valores
negativos indican momentos anteriores a esta
fecha. Si faltan uno o ms parmetros se
tomarn los de la fecha GMT actual de derecha
a izquierda. El valor obtenido no depende del
servidor, ya que la hora GMT es nica.

EJEMPLOS aprenderaprogramar.com

echo "Tiempo Unix para el 15-Enero-2089 a


las 12h 0m 0s = " . mktime(12,0,0,1,15,2089);
// Tiempo Unix para el 15-Enero-2089 a las
12h 0m 0s = 3753975600 (el resultado variar
segn dnde est localizado el servidor,
porque las 12 h del 15 de enero de 2089
corresponden a distintas fechas-horas GMT
segn dnde se encuentre el servidor.

gmmktime(12,0,0,1,15,2089)
// 3756628800 independientemente de la
hora local del servidor

Nota: tener en cuenta que usamos UTC GMT como si fueran equivalentes.
Para entender cmo las funciones time y mktime trabajan con tiempo local hemos realizado la
siguiente prueba. Hemos colocado el siguiente cdigo en un servidor en Denver (USA), y en un servidor
en Madrid (Espaa):
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 (Espaa) 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
maana, mientras que en Madrid eran las 14:20:00 horas. Como vemos, tenemos una diferencia
horaria de 8 horas entre Denver y Madrid.
aprenderaprogramar.com, 2006-2029

Funciones de fecha, tiempo y hora PHP. time, date

Cuando en Madrid son las 12:00 horas del 15 de enero de 2089, en Denver sern las 04:00 horas del 15
de enero de 2089. Las 12:00 horas de un da 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 ms
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 da 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 medioda. Esto indica que ese instante de tiempo (4 de la maana
de 15 de enero de 2089 en Denver y 12 de la maana de la misma fecha en Madrid) es el mismo
instante, es decir, podramos estar hablando por telfono dos personas en ese momento, siendo las 4
de la maana 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, cunto 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
seran 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
25200 segundos equivalen a 7 horas por detrs 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 varan segn el pas, e incluso segn la zona de un pas en
que nos encontremos.
Existen ms funciones para fechas y tiempo en PHP pero los programadores no las suelen conocer
todas, ya que algunas son para tareas muy especficas. 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 algn momento necesitas realizar tareas muy especficas con tiempo y fechas
en PHP puedes conocer todas las funciones existentes sobre esta materia acudiendo a la
documentacin
oficial
de
PHP
sobre
fecha
y
hora,
disponible
en
http://php.net/manual/es/ref.datetime.php

aprenderaprogramar.com, 2006-2029

Funciones de fecha, tiempo y hora PHP. time, date

EJERCICIO
Crea un documento HTML que conste de un ttulo h1 con el texto <<Calendario>>. En la pgina deber
mostrarse el mes y ao actuales (en el momento en que hagas el ejercicio) y para cada da del mes,
indicar si es lunes, martes, mircoles, jueves, viernes, sbado o domingo.
Ejemplo: suponiendo que hagas el ejercicio en mayo de 2050, debera mostrarse:
Da 1: Domingo, Da 2: Lunes, Da 3: Martes, Da 4: Mircoles, etc. hasta Da 31: Martes.
Ampliacin voluntaria del ejercicio: si tienes conocimiento de maquetacin 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 maquetacin puedes usar una tabla de 7 columnas
por 7 filas (total 49 celdas) con ancho de tabla 300 pxeles y tamao de fuente en la tabla 24 pxeles. 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, sera 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
30 31

Ten en cuenta que debe generarse el calendario del mes en que te encuentres segn la hora local del
sistema (de tu servidor).
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00831B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

setlocale y strftime php: mostrar fechas en espaol u otro idioma.

FUNCIONES PARA EXPRESAR FECHAS EN UN LENGUAJE


PHP es un lenguaje con marcada influencia anglosajona debido a sus orgenes y desarrollo. Pero cuando
estamos creando pginas web es frecuente que queremos obtener fechas expresadas en el lenguaje
con el que estamos desarrollando la web. Vamos a estudiar cmo hacerlo.

SETLOCALE
La funcin setlocale es una funcin PHP utilizada para indicar la configuracin regional que debe ser
usada para realizar determinadas tareas. Su sintaxis es la siguiente:
setlocale ( $procesosAfectados, $codConfiguracion1, $ codConfiguracion2, , $ codConfiguracionN);
Tambin se admite: setlocale ( $procesosAfectados, $arrayDeCodigosDeConfiguracion);

Esta funcin 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 indicaramos que el proceso afectado es la fecha y que la
configuracin es el espaol: setlocale (LC_TIME, "es_ES");
Esta idea, aparentemente buena, se topa con numerosas dificultades en la prctica:
a) No todos los servidores admiten todo tipo de cambios.
b) Segn el servidor que estemos utilizando, ser posible usar unos lenguajes o no.
c) La comunicacin 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 cdigo de configuracin
e) Ms problemas que no vamos a citar aqu.
En resumen, debes tener presente que el cambio de la configuracin local del servidor puede ser
compleja o no responder como cabra esperar: podrs 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 pequeos scripts o funciones para lograr el funcionamiento que nosotros deseamos. Con
esto queremos decir que puede resultar ms sencillo trabajar del modo natural tal y como est
configurado el servidor, en lugar de tratar de alterar esta configuracin para que el servidor trabaje en
nuestro idioma.

aprenderaprogramar.com, 2006-2029

setlocale y strftime php: mostrar fechas en espaol u otro idioma.

Los valores posibles para $procesosAfectados son los siguientes:


Valor $procesosAfectados
LC_ALL
LC_COLLATE
LC_CTYPE
LC_MONETARY
LC_NUMERIC
LC_TIME
LC_MESSAGES

Aplicacin
Para todos los procesos
Para la comparacin de strings
Para la clasificacin y conversin de caracteres, por ejemplo cuando se use
strtoupper()
Afecta a aspectos como el smbolo de moneda, separador de miles, etc.
Para el separador decimal y otros aspectos como signos.
Para el formato de fecha y hora que se mostrar al usar la funcin strftime()
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 funcin de php strftime que estudiaremos a continuacin 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 cdigos de pases dependen del sistema operativo con el que estemos trabajando. La funcin
setLocale admite que se introduzca una lista de cdigos de pases 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 continuacin sealamos algunas formas de cdigos de algunos pases:
Pas

Cdigo (*)

Otro cdigo (*)

Mxico

es_MX.UTF-8

es_MX

Espaa

es_ES.UTF-8

es_ES

Argentina

es_RA.UTF-8

es_RA

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

aprenderaprogramar.com, 2006-2029

setlocale y strftime php: mostrar fechas en espaol u otro idioma.

Pas

Cdigo (*)

Otro cdigo (*)

Repblica 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 cdigos funcionarn, ya que depende del servidor con el que
estemos trabajando el que sean reconocidos o no. Recomendamos usar es_ES.UTF-8. Hay ms cdigos
aparte de los aqu indicados.
El ejemplo de uso de setlocale lo veremos a continuacin junto al de la funcin strftime.

FUNCIN STRFTIME PHP


La funcin strftime es una funcin PHP utilizada para obtener una cadena de texto expresada en el
lenguaje de la configuracin local del servidor (por defecto o establecida a travs de setlocale). Su
sintaxis es la siguiente:
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 cdigos especiales que devuelven un
determinado resultado. Por ejemplo echo strftime (Hoy es %A); nos devolver Hoy es lunes si la
configuracin de idioma del servidor es espaol, Hoy es monday" si la configuracin de idioma del
servidor es ingls, ya que el cdigo %A equivale a da 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 configuracin de idioma del servidor es espaol.
aprenderaprogramar.com, 2006-2029

setlocale y strftime php: mostrar fechas en espaol u otro idioma.

En la siguiente tabla se resumen los cdigos disponibles:


Uso para

Cdigo

Descripcin

Da

%a

Da, en forma abreviada

Dom hasta Sab

Da

%A

Da, completo

Domingo hasta Sbado

Da

%d

El da del mes con dos dgitos (con ceros iniciales)

01 a 31

Da

%e

El da del mes, con un espacio precediendo si < 10.

1 a 31

Da

%j

Da del ao, 3 dgitos con ceros iniciales

001 a 366

Da
Da

%u
%w

Representacin numrica ISO-8601 del da de semana


Representacin numrica del da de la semana

1 (para Lunes) hasta 7 (para Domingo)


0 (para Domingo) hasta 6 (para Sbado)

Semana

%U

Nmero de semana del ao dado, comenzando con el


primer Domingo como primera semana

13 (para la 13 semana del ao)

Semana

%V

Nmero de semana segn ISO-8601

01 hasta 53

Semana

%W

Nmero de semana del ao, comenzando con el


primer Lunes como la primera semana

46 (para la 46 semana del ao)

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

01 (para Enero) hasta 12 (para Diciembre)

Ao

%C

Ao

%g

Ao

%G

Representacin de dos dgitos del mes


Representacin de dos dgitos del siglo (ao dividido
entre 100, truncado a un entero)
Representacin de dos dgitos del ao segn ISO8601
La versin de cuatro dgitos completa de %g

Ao

%y

Representacin de dos dgitos del ao

Ejemplo: 09 para 2009, 79 para 1979

Ao

%Y

Representacin de cuatro dgitos del ao

Ejemplo: 2038

Hora

%H

Representacin de dos dgitos de la hora

00 hasta 23

Hora

%k

Hora

%I

Hora

%l (ele)

Hora

%M

Representacin de dos dgitos de los minutos

00 hasta 59

Hora
Hora

%p
%P

'AM' o 'PM' en MAYSCULAS basados en la hora dada


'am' o 'pm' en minsculas basados en la hora dada

Ejemplo: AM para 00:31, PM para 22:23


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
Hora

%R
%S

Lo mismo que "%H:%M"


Representacin de dos dgitos de los segundos

Ejemplo: 16:44 para 4:44 PM


00 hasta 59

Hora

%T

Lo mismo que "%H:%M:%S"

Ejemplo: 21:34:17 para 09:34:17 PM

Hora

%X

Representacin preferida de la hora basada en la


configuracin regional, sin la fecha

Ejemplo: 03:59:16 o 15:59:16

Hora

%z

El ndice de la zona horaria.

Ejemplo: -0500 para Hora Este de EEUU

Hora

%Z

Fecha y hora

%c

La abreviatura de la zona horaria


Marca preferida de la fecha y hora basadas en la
configuracin regional

Ejemplo: EST para Hora del Este de EEUU


Ejemplo: Tue Feb 5 00:45:10 2009 para el
5 de Febrero de 2009 a las 12:45:10 AM

Fecha y hora

%D

Lo mismo que "%m/%d/%y"

Ejemplo: 02/05/89, 5 de Febrero de 2089

Fecha y hora

%F

Fecha y hora

%x

Representacin de dos dgitos de la hora, con un


espacio precediendo a los dgitos simples
Representacin de dos dgitos de la hora
La hora en formato de 12 horas, con un espacio si <
10

Lo mismo que "%Y-%m-%d" (normalmente usado en


las marcas de fecha de bases de datos)
Representacin preferida de la fecha basada en la
configuracin local, sin la hora

aprenderaprogramar.com, 2006-2029

Ejemplo valores devueltos

19 para el Siglo XX
Ejemplo: 89 para 6 de Enero de 2089
Ejemplo: 2089 para 13 de Enero de 2089

0 hasta 23
01 hasta 12
1 hasta 12

Ejemplo: 2089-02-05 para 5 Febrero 2089


Ejemplo: 02/05/09 para el 5 de Febrero
de 2009

setlocale y strftime php: mostrar fechas en espaol u otro idioma.

Adems de las marcas indicadas existen otras como %n para insertar un salto de lnea %t para insertar
una tabulacin.
Ten en cuenta que no todos los servidores disponen de todos los cdigos ni todos los servidores
respondern 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. Tendrs que resolverlo escribiendo cdigo especfico para lograrlo.
Para probar el funcionamiento de esta funcin, en combinacin con setlocale, escribe este cdigo 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

'Despus

de

setlocale

es_ES

date

devuelve:

'.date("l,

d-m-Y

(H:i:s)",

$miFecha).'<br/>';
echo

'Despus

de

setlocale

es_ES

strftime

devuelve:

'.strftime("%A,

%d

de

%B

de

%Y",

$miFecha).'<br/>';
setlocale(LC_TIME, 'es_ES.UTF-8');
echo

'Despus

de

setlocale

es_ES.UTF-8

date

devuelve:

'.date("l,

d-m-Y

(H:i:s)",

$miFecha).'<br/>';
echo 'Despus 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

'Despus

de

setlocale

de_DE.UTF-8

date

devuelve:

'.date("l,

d-m-Y

(H:i:s)",

$miFecha).'<br/>';
echo 'Despus de setlocale de_DE.UTF-8 strftime devuelve: '.strftime("%A, %d de %B de %Y",
$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)
Despus de setlocale es_ES date devuelve: Saturday, 15-01-2089 (05:00:00)
Despus de setlocale es_ES strftime devuelve: sbado, 15 de enero de 2089
Despus de setlocale es_ES.UTF-8 date devuelve: Saturday, 15-01-2089 (05:00:00)
Despus de setlocale es_ES.UTF-8 strftime devuelve: sbado, 15 de enero de 2089
Despus de setlocale de_DE.UTF-8 date devuelve: Saturday, 15-01-2089 (05:00:00)
Despus de setlocale de_DE.UTF-8 strftime devuelve: Samstag, 15 de Januar de 2089

aprenderaprogramar.com, 2006-2029

setlocale y strftime php: mostrar fechas en espaol u otro idioma.

Nota: comprueba que usas como codificacin para tu archivo php Codificacin UTF-8 sin BOM. Ten en
cuenta que los resultados que obtengas pueden ser distintos a estos ya que dependen de la
configuracin que tenga establecida tu servidor.
Vamos a comentar los resultados obtenidos:
Hemos creado la variable $miFecha cuyo contenido es el nmero 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 ingls porque la
configuracin local del servidor es idioma ingls.
Al cambiar la configuracin local de idioma con setlocale a es_ES obtenemos la fecha en espaol, pero
en lugar de sbado se nos muestra s?bado. La funcin date sigue devolviendo la fecha en ingls porque
esta funcin no es sensible a la configuracin local de idioma.
Al cambiar la configuracin local de idioma con setlocale a 'es_ES.UTF-8' ya obtenemos la fecha
correctamente escrita en espaol.
A modo de ejemplo, hemos cambiado la configuracin a alemn para comprobar lo que se visualiza (la
fecha escrita en alemn).
Podramos haber escrito setlocale(LC_TIME, 'es_ES','es_ES.UTF-8'); Qu ocurrir en este caso? Se
tomar el primer cdigo reconocido dentro de la lista de cdigos. En este caso es_ES es un cdigo
reconocido, aunque no es el que nos da los resultados deseados.
Como vemos, el trabajo relacionado con fecha, hora e idioma puede resultar problemtico y no
tenemos ms remedio que realizar pruebas hasta obtener el resultado deseado.

FUNCIN DATE_DEFAULT_TIMEZONE_SET PHP


La funcin date_default_timezone_set es una funcin PHP utilizada para establecer una zona horaria
especfica como configuracin local para el servidor. De esta manera, podemos hacer que al pedir la
fecha y hora actual nos muestre la fecha y hora de un pas (o regin de un pas) concreto. Su sintaxis es
la siguiente:
date_default_timezone_set ($valorDeTimezone);

La configuracin 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):

aprenderaprogramar.com, 2006-2029

setlocale y strftime php: mostrar fechas en espaol u otro idioma.

Zonas horarias para Mxico, Espaa y Argentina:


Pas

Zona

Zona

Zona

Mxico

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

Espaa

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 pases:


Pas

Zona

Pas

Zona

Colombia

America/Bogota

Honduras

America/Tegucigalpa

Venezuela

America/Caracas

El Salvador

America/El_Salvador

Per

America/Lima

Paraguay

America/Asuncion

Chile

America/Santiago
Pacific/Easter

Nicaragua

America/Managua

Guatemala

America/Guatemala

Costa Rica

America/Costa_Rica

Puerto Rico

America/Puerto_Rico

Ecuador

America/Guayaquil
Pacific/Galapagos

Cuba

America/Havana

Panam

America/Panama

Bolivia

America/La_Paz

Uruguay

America/Montevideo

Repblica
Dominicana

America/Santo_Domingo

Guinea Ecuatorial

Africa/Malabo

Para probar el funcionamiento de esta funcin, en combinacin con setlocale, escribe este cdigo 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 'Despus de setlocale es_ES.UTF-8 strftime devuelve: '.strftime("%A, %d de %B de %Y
%H:%M", $miFecha).'<br/>';

aprenderaprogramar.com, 2006-2029

setlocale y strftime php: mostrar fechas en espaol u otro idioma.

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:
Despus de setlocale es_ES.UTF-8 strftime devuelve: sbado, 15 de enero de 2089 05:00
Fecha actual: jueves, 04 de septiembre de 2044 04:31
Establecida zona horaria Europe/Madrid obtenemos: sbado, 15 de enero de 2089 13:00
Ahora fecha actual es: jueves, 04 de septiembre de 2044 12:31
Fjate cmo 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 funcin php de nombre mostrarDiasMes que reciba como argumentos un mes (valor
numrico de 1 a 12) y un ao (valor numrico de 4 dgitos) y muestre por pantalla el texto extendido
correspondiente a la fecha en idioma espaol. 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 cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

EJERCICIO 2
Repite el ejercicio anterior, pero en esta ocasin mostrando la fecha en formato de hora tal y como se
usa en Holanda y en idioma holands.
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00832B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Envo de datos de un formulario. Mtodos GET y POST.

FORMAS DE ENVO DE LOS DATOS DE UN FORMULARIO. MTODOS GET Y POST. EJEMPLOS


Cuando un usuario rellena un formulario en una pgina web los datos hay que enviarlos de alguna
manera. Vamos a considerar las dos formas de envo de datos posibles: usando el mtodo POST o
usando el mtodo GET. Debes conocer cmo se generan formularios HTML antes de leer esta entrega.

Por ejemplo: <form action="http://aprenderaprogramar.com/prog/newuser.php" method="get">


podra ser el encabezado de un formulario donde se usa el mtodo get.
En el ejemplo anterior la accin que se ejecutar cuando el usuario pulse el botn Enviar (submit)
ser el envo de los datos a la url especificada usando el mtodo get.
Veamos el aspecto de un formulario cualquiera para hacernos una idea general.

Este formulario consta de varios campos que al usuario se le solicitan como Nombre, Apellidos, Correo
electrnico, Pas y Mensaje. Posiblemente los nombres de los campos en el cdigo HTML sean del tipo
nombre_user, apellidos_user, email_user, pais_user y msg.

aprenderaprogramar.com, 2006-2029

Envo de datos de un formulario. Mtodos GET y POST.

Un formulario se escribe en HTML. Si no tienes claro cmo se generan formularios HTML, te


recomendamos leas el curso HTML desde cero de aprenderaprogramar.com. Por ejemplo, este es el
cdigo 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" />Pelculas
<br />
<input name="cbilibros" type="checkbox" checked="checked" />Libros
<br />
<input name="cbiinternet" type="checkbox" />Internet
</form>
</body>
</html>

La diferencia entre los mtodos get y post radica en la forma de enviar los datos a la pgina cuando se
pulsa el botn Enviar. Mientras que el mtodo GET enva los datos usando la URL, el mtodo POST los
enva de forma que no podemos verlos.
Un resultado usando el mtodo GET sera el siguiente:
http://www.aprenderaprogramar.com/newuser.php?nombre=Pepe&apellido=Flores&email=h52turam
%40uco.es&sexo=Mujer

aprenderaprogramar.com, 2006-2029

Envo de datos de un formulario. Mtodos GET y POST.

En esta URL podemos distinguir varias partes:


http://www.aprenderaprogramar.com/newuser.php es la direccin web en s.
El smbolo ? indica dnde empiezan los parmetros que se reciben desde el formulario que ha enviado
los datos a la pgina.
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
Tener en cuenta que para separar la primera pareja se usa el smbolo ? y para las restantes el smbolo
&.
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 carcter @ ha sido sustituido por los caracteres
%40. Estas equivalencias se introducen automticamente en la transmisin de datos debido a que las
URLs no admiten determinados caracteres como letras con tildes, arrobas y otros. No debes
preocuparte por esta codificacin, 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 estn ocurriendo cosas extraas o errores.
Hemos visto el resultado de un envo por el mtodo get. En el caso de un envo de datos usando el
mtodo POST, aunque estos datos tambin sern 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 envo con el mtodo post necesitaramos otras herramientas (por ejemplo valernos del lenguaje PHP
para recuperar el valor de esos campos).
El resultado final con ambos mtodos podemos decir que es el mismo: la informacin se transmite de
un lado a otro. La diferencia radica en que con el mtodo GET podemos ver directamente los
parmetros pasados ya que estn dentro de la URL mientras que con el mtodo POST los parmetros
quedan ocultos y para rescatarlos hay que usar otras herramientas.
Un ejemplo de uso del mtodo post sera este:
<form action="http://aprenderaprogramar.com/prog/newuser.php" method="post">
Cuando usamos el mtodo post los datos enviados desde el formulario no son visibles, pero s son
recuperables usando las instrucciones adecuadas.

aprenderaprogramar.com, 2006-2029

Envo de datos de un formulario. Mtodos GET y POST.

EJERCICIO
Crea un archivo HTML que contenga un formulario que contenga un checkbox (Desea recibir factura?),
dos input radio (Varn/Mujer), tres input tipo texto (Nombre, Direccin, Email) y un combobox para
forma de envo (normal, por avin o urgente), junto con un botn de envo. Establece como url de envo
la direccin recibe.php y mtodo de envo get y comprueba que se recuperan los datos enviados
correctamente a travs de la url.
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00833B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Recuperar datos de formularios HTML con PHP. $_GET

RECUPERANDO DATOS DEL FORMULARIO. VARIABLES $_REQUEST, $_GET y $_POST


Cuando un usuario pulsa el botn enviar de un formulario, la informacin que contenan sus campos es
enviada a una direccin 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 informacin del formulario viaja almacenada en variables que podremos recuperar y utilizar
mediante PHP.

La recuperacin de variables con PHP es bastante fcil, ya sean datos de un formulario enviado por el
mtodo post (parmetros no visibles) o por el mtodo get (parmetros en la URL s visibles). Antes que
nada hay que aclarar que hay varios mtodos para recuperar variables con PHP. Para los formularios
tenemos los mtodos GET, POST, y REQUEST.

RECUPERAR VARIABLES CON GET


GET nos permite recuperar parmetros desde la URL o desde formularios enviados con el mtodo GET.
Escribe este cdigo y gurdalo con un nombre de archivo como ejemplo1.html. A continuacin, 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 botn enviar, debemos crear el fichero ejemploGet.php que es el indicado en
el formulario para el envo de los datos.
Escribe este cdigo y gurdalo con un nombre de archivo como ejemploGet.php. A continuacin, sube
el fichero al servidor en la misma carpeta donde subiste el ejemplo1.html

aprenderaprogramar.com, 2006-2029

Recuperar datos de formularios HTML con PHP. $_GET

<?php //Ejemplo aprenderaprogramar.com


$nombre = $_GET['nombre'];
echo $nombre;
?>

Fjate que la instruccin $_GET['nombreDelParametro'] sirve para recuperar la informacin recibida.


Una vez completemos el paso anterior, pulsaremos sobre el botn 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 ms correctos, deberamos 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
cdigo HTML (o PHP) incluso cuando la sintaxis o la definicin del documento no es del todo correcta.
Esto debemos conocerlo, sin embargo recomendamos que siempre se trate de ser lo ms correctos
posibles a la hora de escribir cdigo web.
Vemos que hemos definido un formulario en cuya cabecera hemos puesto que el mtodo de envo de
los datos va a ser el mtodo 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 lnea $nombre = $_GET['nombre']; que significa que creamos una
variable php denominada $nombre donde almacenamos la informacin del campo nombre que recibe
la URL a travs del mtodo get proviniente del formulario. Si tuviramos otros campos que hubiramos
definido como apellidos, telfono, edad, el tratamiento sera similar. Por ejemplo:

aprenderaprogramar.com, 2006-2029

Recuperar datos de formularios HTML con PHP. $_GET

$apellidos = $_GET['apellidos'];
$telefono = $_GET['celular'];
$edadPersona = $_GET['edad'];
Fjate en que una cosa es la variable en la que almacenamos la informacin 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 informacin 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 informacin 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 eleccin del programador.
Como podemos observar, recuperar datos enviados por un formulario con el mtodo GET es bastante
simple usando PHP.

EJERCICIO RESUELTO N 1
Disear un formulario web que pida la altura y el dimetro de un cilindro en metros. Una vez el usuario
introduzca los datos y pulse el botn calcular, deber calcularse el volumen del cilindro y mostrarse el
resultado en el navegador.

SOLUCIN
La solucin esquematizada en pseudocdigo es la siguiente:

1. Inicio
2. Mostrar Introduzca el dimetro, 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 cbicos
7. Fin

Esquematizar la solucin en pseudocdigo es una buena idea antes de realizar la programacin, pues
nos permite definir conceptualmente cmo va a ser nuestro cdigo antes de escribirlo. Es sobre todo
adecuado para personas que se estn iniciando en la programacin.
En primer lugar, crearemos el archivo html con el formulario.

aprenderaprogramar.com, 2006-2029

Recuperar datos de formularios HTML con PHP. $_GET

<!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="ejemploGet1.php">
<p> CLCULO DEL VOLUMEN DE UN CILINDRO </p>
<br/>
Introduzca el dimetro 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 cbicos";
?>

aprenderaprogramar.com, 2006-2029

Recuperar datos de formularios HTML con PHP. $_GET

Fjate que hemos escrito la potencia del radio como $radio * $radio. En otros lenguajes existe el
operador de exponenciacin, pero en php esta operacin se tiene que realizar recurriendo a una
funcin matemtica. Esta funcin la estudiaremos en otro momento.
Finalmente obtenemos un resultado. Haz pruebas introduciendo como valores de dimetro 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 nmero es el punto.

EJERCICIO RESUELTO N 2
Disear 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
informacin se debe calcular y mostrar el precio medio del producto.
SOLUCIN
La solucin esquematizada en pseudocdigo es la siguiente:

1. Inicio
2. Mostrar Introduzca el precio del producto en el establecimiento nmero 1, en
euros : Pedir Precio1
3. Mostrar Introduzca el precio del producto en el establecimiento nmero 2, en
euros : Pedir Precio2
4. Mostrar Introduzca el precio del producto en el establecimiento nmero 3, en
euros : Pedir Precio3
5. Media = (Precio1 + Precio2 + Precio3) / 3
6. Mostrar El precio medio del producto es, Media, euros
7. Fin

aprenderaprogramar.com, 2006-2029

Recuperar datos de formularios HTML con PHP. $_GET

<!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> CLCULO DEL PRECIO MEDIO DE UN PRODUCTO </p>
<br/>
Introduzca el precio del producto en el establecimiento nmero 1, en euros:
<input type="text" name="precio1" value="">
<br/> <br/>
Introduzca el precio del producto en el establecimiento nmero 1, en euros:
<input type="text" name="precio2" value="">
<br/> <br/>
Introduzca el precio del producto en el establecimiento nmero 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 podrs
comprobar que los acentos o tildes no se ven bien.

Recordarte que la solucin a esto es, cuando estamos trabajando con Notepad++, elegir en el men
Formato la opcin Codificar en UTF-8 sin BOM. En caso de que por error el archivo est en otro
formato, elige la opcin Convertir en UTF-8 sin BOM para dejar correctamente la codificacin del
archivo. Tambin puede ser necesario introducir la etiqueta: <meta charset="utf-8"> entre las etiquetas
<head> </head> para lograr que la visualizacin sea correcta.

aprenderaprogramar.com, 2006-2029

Recuperar datos de formularios HTML con PHP. $_GET

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";
?>

aprenderaprogramar.com, 2006-2029

Recuperar datos de formularios HTML con PHP. $_GET

DESDE DNDE SE RECUPERAN LOS DATOS?


Si has realizado el ejercicio anterior habrs comprobado que la URL una vez se pulsa el botn de envo
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 estn en la URL. Ahora bien, los datos venan del formulario.
Desde dnde se estn 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 conclusin: los datos pasan del formulario a la URL, y desde la URL son recuperados por
el intrprete PHP usando $_GET[nombreDelParametro]. Por tanto los datos no vienen directamente
del formulario, sino que son recuperados a travs de la URL.

EJERCICIO PROPUESTO
Disear un desarrollo web simple con PHP que d respuesta a la necesidad que se plantea a
continuacin.

aprenderaprogramar.com, 2006-2029

Recuperar datos de formularios HTML con PHP. $_GET

Un operario de una fbrica recibe cada cierto tiempo un depsito cilndrico de dimensiones variables,
que debe llenar de aceite a travs de una toma con cierto caudal disponible. Se desea crear una
aplicacin web que le indique cunto tiempo transcurrir hasta el llenado del depsito. El caudal
disponible se considera estable para los tiempos que tardan los llenados de depsitos y lo facilita el
propio operario, aportando el dato en litros por minuto.

ORIENTACIN PARA LA SOLUCIN


La solucin esquematizada en pseudocdigo es la siguiente:

1. Inicio
2. Mostrar Introduzca el caudal disponible en litros / minuto: Pedir Q
3. Mostrar Introduzca el dimetro del depsito, en metros : Pedir D
4. Mostrar Introduzca la altura del depsito, 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 depsito 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 dimetro y altura del cilindro son 2.15 y 1.75, el resultado
que debes obtener es que el depsito tarda en llenarse ser de aproximadamente 50 minutos.

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

Prxima entrega: CU00834B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_POST. Ejemplos y ejercicios.

RECUPERANDO DATOS DEL FORMULARIO. VARIABLES $_POST


Cuando un usuario pulsa el botn enviar de un formulario, la informacin que contenan sus campos es
enviada a una direccin 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 informacin del formulario viaja almacenada en variables que podremos recuperar y utilizar
mediante PHP. Una de las formas de recuperacin consiste en usar $_POST.

RECUPERAR VARIABLES CON POST


POST nos permite recuperar datos enviados desde formularios con el mtodo POST. Escribe este cdigo
y gurdalo con un nombre de archivo como ejemplo1.html. A continuacin, 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 botn enviar, debemos crear el fichero ejemploPost.php que es el indicado en
el formulario para el envo de los datos.
Escribe este cdigo y gurdalo con un nombre de archivo como ejemploPost.php. A continuacin, 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 botn enviar del ejemplo1.html y veremos
una imagen similar a la siguiente.

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_POST. Ejemplos y ejercicios.

Vamos a explicar el proceso que ha tenido lugar. El primer archivo es un documento HTML. Para ser
ms correctos, deberamos 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
cdigo HTML (o PHP) incluso cuando la sintaxis o la definicin del documento no es del todo correcta.
Esto debemos conocerlo, sin embargo recomendamos que siempre se trate de ser lo ms correctos
posibles a la hora de escribir cdigo web.
Vemos que hemos definido un formulario en cuya cabecera hemos puesto que el mtodo de envo de
los datos va a ser el mtodo 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.
En el archivo php hemos incluido la lnea $nombre = $_POST['nombre']; que significa que creamos una
variable php denominada $nombre donde almacenamos la informacin del campo nombre a travs
del mtodo post proveniente del formulario. Si tuviramos otros campos que hubiramos definido
como apellidos, telfono, edad, el tratamiento sera similar. Por ejemplo:
$apellidos = $_POST['apellidos'];
$telefono = $_POST['celular'];
$edadPersona = $_POST['edad'];
Fjate en que una cosa es la variable en la que almacenamos la informacin 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 informacin 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
informacin 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 eleccin del programador.

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_POST. Ejemplos y ejercicios.

Como podemos observar, recuperar datos enviados por un formulario con el mtodo POST es bastante
simple usando PHP.

EJERCICIO RESUELTO N 1
Disear un formulario web que pida la altura y el dimetro de un cilindro en metros. Una vez el usuario
introduzca los datos y pulse el botn calcular, deber calcularse el volumen del cilindro y mostrarse el
resultado en el navegador.

SOLUCIN
La solucin esquematizada en pseudocdigo es la siguiente:

1. Inicio
2. Mostrar Introduzca el dimetro, 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 cbicos
7. Fin

Esquematizar la solucin en pseudocdigo es una buena idea antes de realizar la programacin, pues
nos permite definir conceptualmente cmo va a ser nuestro cdigo antes de escribirlo. Es sobre todo
adecuado para personas que se estn iniciando en la programacin.
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> CLCULO DEL VOLUMEN DE UN CILINDRO </p>
<br/>
Introduzca el dimetro 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>

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_POST. Ejemplos y ejercicios.

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;
$volumen = $Pi*$radio*$radio*$altura;

echo "<br/> &nbsp; El volumen del cilindro es de". $volumen. "metros cbicos";
?>

Fjate que hemos escrito la potencia del radio como $radio * $radio. En otros lenguajes existe el
operador de exponenciacin, pero en php esta operacin se tiene que realizar recurriendo a una
funcin matemtica. Esta funcin la estudiaremos en otro momento.
Finalmente obtenemos un resultado. Haz pruebas introduciendo como valores de dimetro 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 nmero es el punto.

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_POST. Ejemplos y ejercicios.

EJERCICIO RESUELTO N 2
Disear 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
informacin se debe calcular y mostrar el precio medio del producto.
SOLUCIN
La solucin esquematizada en pseudocdigo es la siguiente:

1. Inicio
2. Mostrar Introduzca el precio del producto en el establecimiento nmero 1, en
euros : Pedir Precio1
3. Mostrar Introduzca el precio del producto en el establecimiento nmero 2, en
euros : Pedir Precio2
4. Mostrar Introduzca el precio del producto en el establecimiento nmero 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>
<meta charset="utf-8">
</head>
<body>
<form name="formularioDatos" method="post" action="ejemploPost2.php">
<p> CLCULO DEL PRECIO MEDIO DE UN PRODUCTO </p>
<br/>
Introduzca el precio del producto en el establecimiento nmero 1, en euros:
<input type="text" name="precio1" value="">
<br/> <br/>
Introduzca el precio del producto en el establecimiento nmero 1, en euros:
<input type="text" name="precio2" value="">
<br/> <br/>
Introduzca el precio del producto en el establecimiento nmero 3, en euros:
<input type="text" name="precio3" value="">
<br/> <br/>
<input value="Calcular" type="submit" />
</form>
</body>
</html>

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_POST. Ejemplos y ejercicios.

Es posible que durante el desarrollo del curso te encuentres visualizaciones de este tipo, donde podrs
comprobar que los acentos o tildes no se ven bien.

Recordarte que la solucin a esto es, cuando estamos trabajando con Notepad++, elegir en el men
Formato la opcin Codificar en UTF-8 sin BOM. En caso de que por error el archivo est en otro
formato, elige la opcin Convertir en UTF-8 sin BOM para dejar correctamente la codificacin del
archivo. Tambin puede ser necesario introducir la etiqueta: <meta charset="utf-8"> entre las etiquetas
<head> </head> para lograr que la visualizacin 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";
?>

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_POST. Ejemplos y ejercicios.

EJERCICIO PROPUESTO
Disear un desarrollo web simple con PHP que d respuesta a la necesidad que se plantea a
continuacin.
Un operario de una fbrica recibe cada cierto tiempo un depsito cilndrico de dimensiones variables,
que debe llenar de aceite a travs de una toma con cierto caudal disponible. Se desea crear una
aplicacin web que le indique cunto tiempo transcurrir hasta el llenado del depsito. El caudal
disponible se considera estable para los tiempos que tardan los llenados de depsitos y lo facilita el
propio operario, aportando el dato en litros por minuto.

ORIENTACIN PARA LA SOLUCIN


La solucin esquematizada en pseudocdigo es la siguiente:

1. Inicio
2. Mostrar Introduzca el caudal disponible en litros / minuto: Pedir Q
3. Mostrar Introduzca el dimetro del depsito, en metros : Pedir D
4. Mostrar Introduzca la altura del depsito, 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 depsito es de, tminutos, minutos
10. Fin

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_POST. Ejemplos y ejercicios.

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 dimetro y altura del cilindro son 2.15 y 1.75, el resultado
que debes obtener es que el depsito tarda en llenarse ser de aproximadamente 50 minutos.

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

Prxima entrega: CU00835B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_REQUEST. Ejemplos y ejercicios.

RECUPERANDO DATOS DE FORMULARIOS. VARIABLES $_REQUEST


Cuando un usuario pulsa el botn enviar de un formulario, la informacin que contenan sus campos es
enviada a una direccin 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 informacin del formulario viaja almacenada en variables que podremos recuperar y utilizar
mediante PHP. Una de las formas de recuperacin consiste en usar $_REQUEST.

RECUPERAR VARIABLES CON REQUEST


REQUEST nos permite capturar variables enviadas desde formularios con los mtodos GET o POST.
Vamos a ver dos ejemplos de formularios (ejemplo1.html y ejemplo2.html), que en un caso se enviarn
usando GET y en otro usando POST. Ambos formularios enviarn la informacin (action) a una pgina
comn desde donde recuperaremos los datos usando $_REQUEST.
El cdigo de los archivos html sera el siguiente para ejemplo1.html y ejemplo2.html. Escribe el cdigo
en un editor de texto como Notepad++ y visualzalos 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 enva los datos por GET mientras que el ejemplo2.html
enva los datos por POST. Ahora bien, la accin o destino donde se enviarn los datos es la misma en los
dos casos, la direccin ejemploRequest.php.
Escribe este cdigo y gurdalo con un nombre de archivo como ejemploRequest.php. A continuacin,
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;
?>

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_REQUEST. Ejemplos y ejercicios.

A continuacin, observa el resultado obtenido al introducir el nombre tanto en el ejemplo1.html como


en el ejemplo2.html, y vers que es el mismo.

Vamos a explicar el proceso que ha tenido lugar. El primer archivo es un documento HTML. Para ser
ms correctos, deberamos 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
cdigo HTML (o PHP) incluso cuando la sintaxis o la definicin del documento no es del todo correcta.
Esto debemos conocerlo, sin embargo recomendamos que siempre se trate de ser lo ms correctos
posibles a la hora de escribir cdigo web.
Vemos que hemos definido un formulario en cuya cabecera hemos puesto que el mtodo de envo de
los datos va a ser el mtodo 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 lnea
$nombre = $_REQUEST['nombre']; que significa que creamos una variable php denominada $nombre
donde almacenamos la informacin del campo nombre que recibe la URL a travs del mtodo GET
proviniente del formulario. Si tuviramos otros campos que hubiramos definido como apellidos,
telfono, edad, el tratamiento sera similar. Por ejemplo:
$apellidos = $_REQUEST['apellidos'];
$telefono = $_REQUEST['celular'];
$edadPersona = $_REQUEST['edad'];
Fjate en que una cosa es la variable en la que almacenamos la informacin 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
aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_REQUEST. Ejemplos y ejercicios.

formulario. Sin embargo, en $telefono = $_REQUEST['celular']; no coinciden. En este caso, el campo


que proviene del formulario se llama celular mientras que la informacin 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
informacin 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 eleccin del programador.
EJERCICIO RESUELTO N 1
Disear un formulario web que pida la altura y el dimetro de un cilindro en metros. Una vez el usuario
introduzca los datos y pulse el botn calcular, deber calcularse el volumen del cilindro y mostrarse el
resultado en el navegador. El envo de datos debe hacerse por GET y la recuperacin con REQUEST.

SOLUCIN
La solucin esquematizada en pseudocdigo es la siguiente:

1. Inicio
2. Mostrar Introduzca el dimetro, 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 cbicos
7. Fin

Esquematizar la solucin en pseudocdigo es una buena idea antes de realizar la programacin, pues
nos permite definir conceptualmente cmo va a ser nuestro cdigo antes de escribirlo. Es sobre todo
adecuado para personas que se estn iniciando en la programacin. Crearemos el archivo html:
<!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="ejemploRequest1.php">
<p> CLCULO DEL VOLUMEN DE UN CILINDRO </p>
<br/>
Introduzca el dimetro 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>

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_REQUEST. Ejemplos y ejercicios.

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 cbicos";
?>

Fjate que hemos escrito la potencia del radio como $radio * $radio. En otros lenguajes existe el
operador de exponenciacin, pero en php esta operacin se tiene que realizar recurriendo a una
funcin matemtica. Esta funcin la estudiaremos en otro momento.
Finalmente obtenemos un resultado. Haz pruebas introduciendo como valores de dimetro 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 nmero es el punto.

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_REQUEST. Ejemplos y ejercicios.

EJERCICIO RESUELTO N 2
Disear 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
informacin se debe calcular y mostrar el precio medio del producto. El envo de datos debe hacerse
por POST y la recuperacin con REQUEST.
SOLUCIN
La solucin esquematizada en pseudocdigo es la siguiente:

1. Inicio
2. Mostrar Introduzca el precio del producto en el establecimiento nmero 1, en
euros : Pedir Precio1
3. Mostrar Introduzca el precio del producto en el establecimiento nmero 2, en
euros : Pedir Precio2
4. Mostrar Introduzca el precio del producto en el establecimiento nmero 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>
<meta charset="utf-8">
</head>
<body>
<form name="formularioDatos" method="post" action="ejemploRequest2.php">
<p> CLCULO DEL PRECIO MEDIO DE UN PRODUCTO </p>
<br/>
Introduzca el precio del producto en el establecimiento nmero 1, en euros:
<input type="text" name="precio1" value="">
<br/> <br/>
Introduzca el precio del producto en el establecimiento nmero 1, en euros:
<input type="text" name="precio2" value="">
<br/> <br/>
Introduzca el precio del producto en el establecimiento nmero 3, en euros:
<input type="text" name="precio3" value="">
<br/> <br/>
<input value="Calcular" type="submit" />
</form>
</body>
</html>

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_REQUEST. Ejemplos y ejercicios.

Es posible que durante el desarrollo del curso te encuentres visualizaciones de este tipo, donde podrs
comprobar que los acentos o tildes no se ven bien.

Recordarte que la solucin a esto es, cuando estamos trabajando con Notepad++, elegir en el men
Formato la opcin Codificar en UTF-8 sin BOM. En caso de que por error el archivo est en otro
formato, elige la opcin Convertir en UTF-8 sin BOM para dejar correctamente la codificacin del
archivo. Tambin puede ser necesario introducir la etiqueta: <meta charset="utf-8"> entre las etiquetas
<head> </head> para lograr que la visualizacin sea correcta.

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";
?>

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_REQUEST. Ejemplos y ejercicios.

EJERCICIO PROPUESTO
Disear un desarrollo web simple con PHP que d respuesta a la necesidad que se plantea a
continuacin. Un operario de una fbrica recibe cada cierto tiempo un depsito cilndrico de
dimensiones variables, que debe llenar de aceite a travs de una toma con cierto caudal disponible. Se
desea crear una aplicacin web que le indique cunto tiempo transcurrir hasta el llenado del depsito.
El caudal disponible se considera estable para los tiempos que tardan los llenados de depsitos y lo
facilita el propio operario, aportando el dato en litros por minuto.

ORIENTACIN PARA LA SOLUCIN


La solucin esquematizada en pseudocdigo es la siguiente:

1. Inicio
2. Mostrar Introduzca el caudal disponible en litros / minuto: Pedir Q
3. Mostrar Introduzca el dimetro del depsito, en metros : Pedir D
4. Mostrar Introduzca la altura del depsito, 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 depsito 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 dimetro y altura del cilindro son 2.15 y 1.75, el resultado
que debes obtener es que el depsito tarda en llenarse ser de aproximadamente 50 minutos.

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

aprenderaprogramar.com, 2006-2029

Procesar datos de un formulario en PHP. $_REQUEST. Ejemplos y ejercicios.

RESUMEN DE LAS DIFERENCIAS ENTRE $GET, $POST Y $REQUEST

MTODO

CONCEPTO

OBSERVACIONES

GET

GET lleva los datos de forma "visible" al cliente


(navegador web). El medio de envo es la URL.
Para recoger los datos que llegan en la url se
usa $_GET.

Los datos son visibles por la URL, por ejemplo:


www.aprenderaprogramar.com/
action.php?nombre=pedro&apellidos1=
gomez

POST

POST consiste en datos "ocultos" (porque el


cliente no los ve) enviados por un formulario
cuyo mtodo de envo es post. Es ideal para
formularios. Para recoger los datos que llegan
por este mtodo se usa $_POST.

La ventaja de usar POST es que estos datos no


son visibles al usuario de la web. En el caso de
usar get, el propio usuario podra modificar la
URL escribiendo diferentes parmetros a los
reales en su navegador, dando lugar a que la
informacin tratada no sea la prevista.

REQUEST

No es un mtodo de envo propiamente dicho,


es decir, no podemos poner en un formulario
HTML que el method sea REQUEST. Con la
variable $_REQUEST recuperaremos los datos
de los formularios enviados tanto por GET como
por POST.

La ventaja principal de esta forma de


recuperar los datos de un formulario es que
no tenemos que saber con cual mtodo fue
enviado. La desventaja principal, como
veremos en el siguiente ejemplo, es que no
podremos diferenciar una variable enviada
por GET o por POST.

Ahora nos podemos estar preguntado: Qu pasara si envo una variable nombre con un formulario
por mtodo post y adems en la pgina de recuperacin de datos tambin est definida dicha variable
en la url y obtengo dicho variable con $_REQUEST? Cul me devolvera?
Pues bien, para contestar a esta cuestin planteemos el siguiente ejercicio.
Escribe este cdigo y gurdalo con un nombre de archivo como ejemploPostGetRequest.html. A
continuacin, sube el fichero al servidor.
<!DOCTYPE
HTML
PUBLIC
"-//W3C//DTD
HTML
"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"

4.01

action="ejemploGetPostRequest.php?nombre=pepito">
Introduzca su nombre: <input type="text" name="nombre" value="">
<br/> <br/>
<input value="Enviar" type="submit" />
</form>
</body>
</html>

aprenderaprogramar.com, 2006-2029

Transitional//EN"

Procesar datos de un formulario en PHP. $_REQUEST. Ejemplos y ejercicios.

Introduciremos un nombre diferente a pepito, con lo que en la pgina de recuperacin de datos,


tendremos dos valores para 'nombre'. Y ahora comprobaremos cul nos devuelve
$_REQUEST['nombre']. Para ello escribe este cdigo y gurdalo con un nombre de archivo como
ejemploPostGetRequest.php. A continuacin, 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
despus 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 tambin que una URL es modificable por el usuario fcilmente. Por ejemplo si un formulario
enva datos as: www.aprenderaprogramar.com/action.php?nombre=pedro, el usuario podra 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 transmisin 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 ms fciles de seguir y localizar, y el inconveniente de que puede
ser manipulado ms fcilmente.
Prxima entrega: CU00836B
Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193
aprenderaprogramar.com, 2006-2029

Manejo de archivos con PHP. Funciones fopen, fgets, fputs y fclose.

INTRODUCCIN AL MANEJO DE ARCHIVOS CON PHP.


Cuando necesitamos crear, guardar, leer o escribir archivos en la creacin 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 bsico en php.

FUNCIN FOPEN
La funcin 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 ms tarde.
fichero puede ser un archivo de texto, un archivo con extensin .php, o incluso la URL de una pgina
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 conexin hacia la web especificada. Siempre debe
ponrsele una barra ( / ) al final.
Si fichero empieza con ftp://", se abre una conexin al servidor especificado.
Si fichero no empieza con ninguna de las cosas anteriormente dichas, se abre una conexin "directa"
con el archivo especificado. Si no existe el archivo o direccin especificadas, se devuelve un error.
Hay distintos modos de apertura de archivos, vamos a ver los ms habituales.

aprenderaprogramar.com, 2006-2029

Manejo de archivos con PHP. Funciones fopen, fgets, fputs y fclose.

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

Abre el archivo slo 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.

Abre el archivo slo 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.

Abre el archivo para slo 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 instruccin slo 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.

FUNCIN FCLOSE
La funcin fclose(identificadorDelFichero) cierra un archivo abierto.
Esta funcin debe ser utilizada despus de abrir y manipular el archivo como veremos en los siguientes
ejemplos.

aprenderaprogramar.com, 2006-2029

Manejo de archivos con PHP. Funciones fopen, fgets, fputs y fclose.

FUNCIONES FGETS Y FEOF


La funcin fgets() recupera el contenido de una lnea de un archivo. Su sintaxis general es:
<?php

//Ejemplo aprenderaprogramar.com
fgets(descriptorDelFichero);

?>

Ejemplo
<?php

// Ejemplo aprenderaprogramar.com
// Leemos la primera lnea 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 slo leeremos la primera lnea del fichero de texto, si quisiramos leer lnea a lnea
hasta el final necesitaramos el uso de un bucle while, por ejemplo.
<?php

// Ejemplo aprenderaprogramar.com
// Iremos leyendo lnea a lnea 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 lnea a lnea. Comprobars que hemos incluido una
nueva funcin denominada feof (que viene significando algo as como file end of file o marca de final
de archivo). La sintaxis general para esta funcin es:
feof (identificadorDelArchivo)
La funcin feof nos devuelve true cuando hemos llegado al final de archivo y false si no lo hemos
alcanzado todava. La condicin while (!feof($fp)) podramos haberla escrito tambin 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, fjate como una vez hemos de terminado de operar con el fichero escribimos la instruccin
fclose(identificadorDelFichero) para cerrar la conexin, cosa que debemos hacer siempre.
aprenderaprogramar.com, 2006-2029

Manejo de archivos con PHP. Funciones fopen, fgets, fputs y fclose.

FUNCIN FPUTS
La funcin fputs() escribe una lnea en un archivo. Su sintaxis general es:
<?php

//Ejemplo aprenderaprogramar.com
fputs(descriptorDelFichero, cadena);

?>

Ejemplo
<?php

// Ejemplo aprenderaprogramar.com
// Escribimos una primera lnea 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);

?>

Fjate que al realizar la apertura del fichero en modo w, si el fichero no existe, ser creado. Fjate
tambin como una vez hemos de terminado de operar con el fichero escribimos la instruccin
fclose(identificadorDelFichero) para cerrar la conexin, cosa que debemos hacer siempre.
Si ahora abrimos el fichero con algn editor de textos como Notepad, bloc de notas o cualquier otro,
veremos lo siguiente:

EJERCICIO
Crea las siguientes funciones en PHP:
a) Una funcin (tipo procedimiento, no hay valor devuelto) denominada escribirTresNumeros que
reciba tres nmeros enteros como parmetros y proceda a escribir dichos nmeros en tres lneas en un
archivo denominado datosEjercicio.txt. Si el archivo no existe, debe crearlo.

aprenderaprogramar.com, 2006-2029

Manejo de archivos con PHP. Funciones fopen, fgets, fputs y fclose.

b) Una funcin denominada obtenerSuma (tipo funcin, devolver un valor numrico) que reciba una
ruta de archivo como parmetro, lea los nmeros existentes en cada lnea del archivo, y devuelva la
suma de todos esos nmeros.
c) Una funcin denominada obtenerArrNum (tipo funcin, devolver un array de valores numricos)
que reciba una ruta de archivo como parmetro, lea los nmeros existentes en cada lnea del archivo, y
devuelva un array cuyo ndice 0 contendr el nmero existente en la primera lnea, cuyo ndice 1
contendr el nmero existente en la segunda lnea y as sucesivamente.
d) Crea cdigo php donde a travs de la funcin escribirTresNumeros escribas en el fichero los nmeros
2, 8, 14. Luego, mediante la funcin obtenerSuma muestra por pantalla el resultado de sumar los
nmeros existentes en el archivo. Finalmente, mediante la funcin obtenerArrNum obtn el array,
recrrelo y muestra cada uno de los elementos del array.
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00837B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Lectura y escritura de archivos de texto con PHP. fwrite

LECTURA Y ESCRITURA DE ARCHIVOS DE TEXTO CON PHP.


En esta ocasin veremos unos ejemplos prcticos 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 tambin puede valer el bloc de notas de Windows) con algunas lneas de texto.

LECTURA DE FICHEROS
Para leer un archivo de texto lnea a lnea en PHP vamos a utilizar la funcin fgets(). Por ejemplo si
queremos leer lnea por lnea 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 lnea a lnea hasta llegar al final. Recordemos que r es el modo de apertura que abre el
archivo slo para lectura. La lectura comienza al inicio del archivo. Despus cerramos el fichero.
Con esto conseguiremos mostrar por pantalla el contenido del fichero 'archivo.txt' tal y como podemos
ver en la siguiente imagen de ejemplo.

aprenderaprogramar.com, 2006-2029

Lectura y escritura de archivos de texto con PHP. fwrite

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 pequeo programa es ir extrayendo lneas mientras no se detecta el
final del fichero (feof). La condicin while(!feof($file)) tambin podra haberse escrito de esta otra
manera: while(feof($file)==false), con lo que obtendramos el mismo resultado.

ESCRITURA DE FICHEROS
Para escribir un archivo de texto en PHP podemos utilizar la funcin fwrite(). Por ejemplo si queremos
escribir lnea por lnea un archivo 'archivo.txt' que se encuentre ubicado en la misma carpeta que el
archivo 'escribir.php', tenemos que escribir en el archivo PHP:
<?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 ms" . PHP_EOL);
fclose($file);
?>

Nota: PHP_EOL (end of line) introduce un salto de lnea en PHP. Mediante la concatenacin con un
punto forzamos el salto de lnea despus del texto introducido.
Una vez escribimos en nuestro navegador la ruta del fichero escribir.php se ejecuta el cdigo asociado.
Despus de la ejecucin, podemos ver el fichero creado con un editor de texto cualquiera y
observaremos el siguiente contenido:

aprenderaprogramar.com, 2006-2029

Lectura y escritura de archivos de texto con PHP. fwrite

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 slo para escritura. La escritura comienza al inicio del archivo, y elimina el contenido
previo del archivo. Si el archivo no existe, intenta crearlo.

AADIR CONTENIDO A UN FICHERO DE TEXTO


A veces no queremos reemplazar el contenido que exista en un fichero de texto, sino aadir un
contenido adicional al final de lo que ya exista en el mismo. Vamos a ver cmo podemos hacerlo.
A modo de ejemplo aadiremos unas lneas de texto al final del fichero anteriormente escrito:
<?php //Ejemplo aprenderaprogramar.com
$file = fopen("archivo.txt", "a");
fwrite($file, "Aadimos lnea 1" . PHP_EOL);
fwrite($file, "Aadimos lnea 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:
a: Abre el archivo para slo 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 aadido las dos nuevas lneas al final del archivo.

aprenderaprogramar.com, 2006-2029

Lectura y escritura de archivos de texto con PHP. fwrite

EJERCICIO
Crea el siguiente cdigo PHP:
a) Una funcin (tipo procedimiento, no hay valor devuelto) denominada escribirNumerosMod que
reciba dos parmetros: un array de valores enteros y una cadena de texto que puede ser
"sobreescribir" "ampliar". La funcin debe proceder a: escribir cada uno de los nmeros que forman
el contenido del array en una lnea de un archivo datosEjercicio.txt usando el modo de operacin que se
indique con el otro parmetro. Si el archivo no existe, debe crearlo.
Ejemplo: El array que se pasa es $numeros = array(5, 9, 3, 22); y la invocacin 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 lneas, cada una de las cuales contendr los
nmeros 5, 9, 3 y 22.
b) Una funcin (tipo procedimiento, no hay valor devuelto) denominada leerContenidoFichero que
reciba como parmetro la ruta del fichero y muestre por pantalla el contenido de cada una de las lneas
del fichero.
c) Crea cdigo php donde a travs de la funcin escribirNumerosMod escribas en el fichero los nmeros
2, 8, 14. Luego, mediante la funcin leerContenidoFichero muestra el contenido del fichero. Ahora con
la funcin escribirNumerosMod ampla el contenido del fichero y adele los nmeros 33, 11 y 16.
Muestra nuevamente el contenido del fichero por pantalla. Finalmente, escribe el fichero pasndole un
array con los nmero 4, 99, 12 y parmetro <<sobreescribir>> para eliminar los datos que existieran
previamente. Muestra el contenido del fichero por pantalla y un mensaje de despedida.
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00838B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Lectura completa de un archivo de texto. Funcin file_get_contents.

LECTURA ARCHIVOS DE TEXTO CON PHP USANDO LA FUNCIN FILE_GET_CONTENTS.


Adems de con la funcin fopen podemos realizar la lectura de ficheros de texto usando la funcin
file_get_contents de PHP. La lectura de ficheros usando esta funcin es relativamente sencilla. Como
podremos observar en los siguientes ejemplos y ejercicios, con dicha funcin podremos leer archivos de
texto sin necesidad de ir recorrindolos lnea a lnea para obtener su contenido.

FUNCIN FILE_GET_CONTENTS.
La sintaxis general a emplear es: file_get_contents($ruta_del_fichero);
Ejemplo: crea un archivo denominado archivo.txt con diferentes lneas de texto. Para recuperar el
contenido del archivo escribe este cdigo php:
<?php //Ejemplo aprenderaprogramar.com
$texto = file_get_contents("archivo.txt");
echo $texto;
?>

Como podrs observar, el fichero es mostrado sin saltos de lnea. Para convertir esos caracteres de
salto de lnea a etiquetas <br /> que den lugar a que se visualice el salto de lnea en HTML y poder as,
visualizarlos en un navegador, necesitamos usar la funcin nl2br.

FUNCIN NL2BR
La funcin nl2br convierte los saltos de lnea a etiquetas <br /> con lo que podremos ver esos saltos de
lnea en cualquier navegador. Para el ejemplo anterior podemos incluirla y as poder ver los saltos de
lnea correctamente. Escribe este cdigo en un archivo como ejemplo1.php y visualiza el resultado.

aprenderaprogramar.com, 2006-2029

Lectura completa de un archivo de texto. Funcin file_get_contents.

<?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 funcin file_get_contents, puede obtener el contenido de una pgina web en
forma de cdigo HTML, es decir, su cdigo fuente. Para ello escribiremos la direccin de la web.
Ejemplo.
<?php //Ejemplo aprenderaprogramar.com
$texto = file_get_contents("http://www.aprenderaprogramar.com");
echo $texto;
?>

aprenderaprogramar.com, 2006-2029

Lectura completa de un archivo de texto. Funcin file_get_contents.

Haciendo un uso ms avanzado de esta funcin podras hacer cosas como:


-

Introducir un fragmento de cdigo de otra pgina web dentro de tu propia pgina web. Para
ello extraeras el contenido usando esta funcin y seleccionaras aquella parte que quieres
mostrar dentro de tu pgina web.
Hacer bsquedas de forma similar a como las hacen buscadores tipo Google o Yahoo. Una vez
capturada la informacin de la pgina, tendras 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 informtico a modo de almacn.
En este almacn se guardan grandes volmenes de informacin.
Por ejemplo, imaginemos que somos una compaa telefnica y deseamos tener almacenados los datos
personales y los nmeros de telfono de todos nuestros clientes, que posiblemente sean millones de
personas.
A continuacin crea un archivo denominado ejemplo2.php donde usando la funcin 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 cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

EJERCICIO 2
Recupera el cdigo fuente de tres pginas web diferentes y usando las funciones para cadenas de php
muestra por pantalla cuntas 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
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00839B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193
aprenderaprogramar.com, 2006-2029

Crear una base de datos MySQL para practicar con PHP. PhpMyAdmin.

QU ES UNA BASE DE DATOS?


Una base de datos, bsicamente, es un lugar fsico y software que permite almacenar, modificar y
eliminar informacin. 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 ms precisa sobre qu es y para qu sirve una base de datos puedes consultar la
siguiente direccin:
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
BSICOS.
En primer lugar tendremos que acceder al Panel de Control de nuestro servidor. Para ello, tendremos
que teclear en nuestro navegador la direccin URL de acceso al panel de administracin e introducir el
login y password. Si no dispones de servidor o no recuerdas cmo acceder, cuestiones que hemos
explicado anteriormente en este curso, vuelve a leer el apartado 'ACCEDER VA PANEL DE CONTROL
(CPANEL)' disponible en esta direccin 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.

aprenderaprogramar.com, 2006-2029

Crear una base de datos MySQL para practicar con PHP. PhpMyAdmin.

Dentro de un panel de control de un hosting suelen aparecer apartados como: Informacin de la


cuenta, Administracin FTP, Correo electrnico, 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
indicndonos 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).

Pulsaremos sobre la opcin Create Database New Database para crear una nueva base de datos. En
otros servidores quizs 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 segn el hosting que estemos utilizando.

aprenderaprogramar.com, 2006-2029

Crear una base de datos MySQL para practicar con PHP. PhpMyAdmin.

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 podra 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 ms adelante.

aprenderaprogramar.com, 2006-2029

Crear una base de datos MySQL para practicar con PHP. PhpMyAdmin.

Ahora para administrar la base de datos usaremos una aplicacin denominada phpMyAdmin. Se trata
de una aplicacin especficamente preparada para administracin de bases de datos MySql (MySql es
uno de los sistemas de bases de datos gratuito ms 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 tambin es posible que debas establecer un usuario y password especficos.

EJERCICIO
Responde a las siguientes preguntas:
a) Cmo se llama tu proveedor de hosting?
b) Cul es la direccin url raz de que dispones en dicho hosting?
c) Cuntas bases de datos te permite crear tu hosting?
d) De qu panel de administracin dispones en tu hosting (cPanel, Plesk, DirectAdmin, etc.)?
e) Cul es el nombre de la base de datos que has creado?
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

Prxima entrega: CU00840B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Crear tablas en bases de datos MySQL. PhpMyAdmin.

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 aplicacin denominada phpMyAdmin, una aplicacin especficamente preparada para
administracin 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 informacin 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 continuacin nos permite crear una tabla en dicha base de
datos (si no te aparece esta opcin pulsa en la pestaa Operaciones). Nosotros vamos a suponer que
queremos almacenar el nombre, apellidos, direccin, telfono, edad y altura de personas. Para ello
crearemos una tabla que llamaremos <<agenda>> con 6 columnas. Por tanto escribimos como nombre
agenda, nmero de columnas 6 y pulsamos continuar.

El siguiente paso es indicar los nombres y tipos de las columnas.

aprenderaprogramar.com, 2006-2029

Crear tablas en bases de datos MySQL. PhpMyAdmin.

Los nombres de columnas que pondremos sern: 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 podramos haber escogido otro tipo de datos como nmeros enteros,
nmeros autoincrementados de uno en uno para los campos tipo identificador, fechas, etc. El campo
edad lo ponemos de tipo nmero entero (INT), mientras que el campo altura lo ponemos de tipo
nmero decimal (FLOAT). De momento no nos interesa saber ms y, por tanto, con las cuatro columnas
tipo VARCHAR, una columna tipo entero y otra columna tipo flotante, es ms que suficiente para
nuestro objetivo (en este curso no vamos a tratar MySQL ms que en aspectos bsicos para
comprender cmo interacciona con PHP). Como longitud/valores para los tipos de datos VARCHAR
pondremos 100 que ser la longitud mxima en caracteres que podrn 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 nmero de filas no est
determinado. Adems los datos que se almacenen no podrn tener ms de 100 caracteres de longitud
para los tipos VARCHAR.
Para finalizar la creacin 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 vaca porque todava no hemos introducido ningn dato.
Una vez creada la tabla 'agenda' introduciremos algunos datos de prueba. Para ello, pulsaremos sobre
el nombre de la tabla (fjate 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 pestaas (Estructura, SQL, Insertar, Exportar, Importar, Operaciones). Fjate en
la parte de arriba y vers que te indica el nombre de la base de datos y la tabla en que te encuentras.
Pulsaremos sobre la pestaa '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). Aadiremos algunos datos de prueba como: nombre
Manuel Jess, apellidos Lpez de la Rosa, direccin C/Juan Bautista N 3, telefono 658954875,
edad 32 y altura 1.80. Aadiremos tambin otros datos como nombre Mara, apellidos Manzano
Cabezas, direccion C/Arco del triunfo N 7, telefono 695001002, edad 19 y altura 1.99.

aprenderaprogramar.com, 2006-2029

Crear tablas en bases de datos MySQL. PhpMyAdmin.

Despus pulsaremos sobre continuar y ya tendremos los datos guardados en la tabla. Ahora la tabla
tendr este aspecto:
nombre
Manuel Jess
Mara

apellidos
Lpez de la Rosa
Manzano Cabezas

direccion
C/Juan Bautista N 3
C/Arco del triunfo N 7

telefono
658954875
695001002

edad
32
19

altura
1.80
1.99

Es muy habitual introducir en las tablas una columna denominada id que acta 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 prximos 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:
id

ciudad

aprenderaprogramar.com, 2006-2029

pais

habitantes

superficie

tieneMetro

Crear tablas en bases de datos MySQL. PhpMyAdmin.

Como tipo de dato para cada campo tendremos: id INT con ndice PRIMARY y opcin 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 mximo 80, pais VARCHAR con largo mximo 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 continuacin inserta los siguientes datos en la tabla:
id
1
2
3
4
5
6
7
8
9
10

ciudad
Mxico D.F.
Barcelona
Buenos Aires
Medelln
Lima
Caracas
Santiago
Antigua
Quito
La Habana

pais
Mxico
Espaa
Argentina
Colombia
Per
Venezuela
Chile
Guatemala
Ecuador
Cuba

habitantes
555666
444333
888111
999222
999111
111222
777666
444222
333111
111222

superficie
23434.34
1111.11
333.33
888.88
222.22
111.11
222.22
877.33
999.11
333.11

tieneMetro
1
0
1
0
0
1
1
0
1
0

Visualiza el contenido de la tabla y comprueba que es correcto conforme a lo esperado.


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

Prxima entrega: CU00841B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Uso de PHP con MySQL. Consultas bsicas a bases de datos. Ejercicios.

USO DE PHP CON MySQL. CONSULTAS BSICAS


Estas prximas entregas no pretenden ser un manual de MySQL aunque s explicaremos como realizar
consultas bsicas desde PHP. Veremos algunas funciones bsicas para acceder a una base de datos
MySQL desde PHP para recuperar informacin, insertar informacin o borrar informacin.

Describiremos una serie de funciones bsicas que nos servirn para ilustrar cmo utilizar PHP para
realizar consultas a una base de datos: aadir 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
prcticos, conocer algunas funciones para acceder a bases de datos con PHP y aprender a usarlas a
travs de ejemplos.
Una cuestin 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 ms antiguas, cuyo uso se desaconseja si se
est trabajando con un servidor con una versin de MySql moderna. Las funciones tipo mysqli, por
ejemplo mysqli_connect, son las ms 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 cmo usar estas
funciones con el estilo por procedimientos, que es ms sencillo inicialmente.

FUNCIN mysqli_connect (mysql_connect)


Esta funcin nos permite crear una conexin con una base de datos concreta.
La sintaxis que usaremos para esta funcin es:

$nombreConexion = mysqli_connect($hostname , $nombreUsuario , $contrasea);


Para servidores no actualizados usar mysql_connect en lugar de mysqli_connect

La funcin devuelve una conexin almacenada en la variable $nombreConexion, o FALSE en caso de


error. Los parmetros 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).
aprenderaprogramar.com, 2006-2029

Uso de PHP con MySQL. Consultas bsicas a bases de datos. Ejercicios.

$contrasea es la contrasea de acceso para el usuario de base de datos, contrasea 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 funcin la entenderemos mejor con el ejemplo que veremos ms adelante.

FUNCIN mysqli_close (mysql_close)


Esta funcin nos permite cerrar la conexin con una base de datos anteriormente abierta. Siempre es
recomendable cerrar una conexin cuando hayamos terminado de usarla.
La sintaxis que usaremos es:

mysqli_close($nombreConexin);
Para servidores no actualizados usar mysql_close en lugar de mysqli_close

La funcin devuelve TRUE si se ha cerrado correctamente FALSE en caso de errror.


El identificador o nombre de conexin ser aquel que hayamos obtenido previamente usando la
funcin mysqli_connect.
Esta funcin la entenderemos mejor con el ejemplo que veremos ms adelante.

FUNCIN mysqli_select_db (mysql_ select_db)


Esta funcin 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 ($nombreConexin, $nombreBaseDatos);


Para servidores no actualizados usar mysql_ select_db ($nombreBaseDatos, $nombreConexin);

La funcin devuelve TRUE si se ha realizado la seleccin correctamente FALSE en caso de errror.

aprenderaprogramar.com, 2006-2029

Uso de PHP con MySQL. Consultas bsicas a bases de datos. Ejercicios.

El nombre de conexin ser aquel que hayamos obtenido previamente con la funcin mysqli_connect.
Esta funcin la entenderemos mejor con el ejemplo que veremos ms adelante.

FUNCIN mysqli_query (mysql_query)


Esta funcin 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 podra traducirse
como selecciona todas las filas de la tabla agenda.
Esta funcin devuelve TRUE o FALSE para indicar si las operaciones UPDATE, INSERT o DELETE han
tenido xito. Para la operacin SELECT devuelve un nuevo identificador de resultado. UPDATE significa
actualizar, INSERT significa insertar y DELETE significa BORRAR. SELECT significa seleccionar.
El nombre de conexin ser aquel que hayamos obtenido previamente con la funcin mysqli_connect.
Esta funcin la entenderemos mejor con el ejemplo que veremos ms adelante.

RECUPERAR UN RESULTADO: DATA_SEEK, FETCH_ASSOC (MYSQL_RESULT)


Una sentencia de consulta normalmente devuelve un conjunto de resultados que segn el ejemplo de
sintaxis anterior tendramos en una variable denominada $result. Por ejemplo, podramos tener como
resultados de una consulta lo siguiente:
nombre
Manuel Jess
Mara

apellidos
Lpez de la Rosa
Manzano Cabezas

direccion
C/Juan Bautista N 3
C/Arco del triunfo N 7

telefono
658954875
695001002

edad
32
19

altura
1.80
1.99

La cuestin que nos planteamos ahora es: Cmo extraer el dato de una celda concreta? Por ejemplo el
nombre de la primera fila?
aprenderaprogramar.com, 2006-2029

Uso de PHP con MySQL. Consultas bsicas a bases de datos. Ejercicios.

Para ello, usando la sintaxis mysqli escribiramos esto:

mysqli_data_seek ($result, numeroDeFila); tambin vlido $result->data_seek(numeroDeFila);


$extraido= mysqli_fetch_array($result); tambin vlido $extraido=$result->fetch_array();

Aqu estamos dando dos pasos: una sentencia como mysqli_data_seek ($result, 0); significara
posicinate en la fila 0 de los resultados (la primera fila). Tambin es vlido escribir $result>data_seek(0); que tiene el mismo efecto. Si escribiramos $result->data_seek(15); signficara
posicinate 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 numricos (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 podramos 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 funcin 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 funcin 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 invocacin a la funcin mysql_query.
numeroDeFila es un nmero de fila dentro del resultado obtenido teniendo en cuenta que los nmeros
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 funcin la entenderemos mejor con el ejemplo que veremos a continuacin.
aprenderaprogramar.com, 2006-2029

Uso de PHP con MySQL. Consultas bsicas a bases de datos. Ejercicios.

EJEMPLO DE USO DE LAS FUNCIONES ANTERIORES.


Escribe este cdigo en un editor y gurdalo 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 tambin 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 "- Direccin: ".$extraido['direccion']."<br/>";
echo "- Telfono: ".$extraido['telefono']."<br/>";
echo "- Edad: ".$extraido['edad']."<br/>";
mysqli_free_result($result);
mysqli_close($link);
?>
</body>
</html>

El cdigo con la sintaxis que no usa mysqli (no recomendado) sera:


<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 "Direccin: ".mysql_result($result, 0, "direccion")."<br>";
echo "Telfono:".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>

aprenderaprogramar.com, 2006-2029

Uso de PHP con MySQL. Consultas bsicas a bases de datos. Ejercicios.

En este cdigo 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 lneas que hemos escrito:

$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****");


Con esta lnea introducimos el identificador de conexin en una variable denominada $link. Invocamos
la funcin mysqli_connect pasndole como parmetros el nombre del hosting, el nombre de usuario y
la contrasea. Estos datos debemos conocerlos (o consultarlos) previamente.

mysqli_select_db($link, "b7_10356956_mibasededatos");
Con esta lnea seleccionamos la base de datos pasndole a la funcin como parmetros el identificador
de conexin (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 lnea seleccionamos todos los registros (filas) y campos (columnas) existentes en nuestra base
de datos. Para seleccionar todos los registros escribimos SELECT *. A continuacin 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 funcin incluirmos el identificador
de conexin 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 versin 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.
El resultado de invocar el archivo que hemos creado ser que se nos muestre por pantalla el nombre,
apellidos, direccin, telfono, edad y altura almacenados en la primera fila de nuestra base de datos.
Algo similar a esto:
aprenderaprogramar.com, 2006-2029

Uso de PHP con MySQL. Consultas bsicas a bases de datos. Ejercicios.

Resumiendo lo que hemos hecho, hemos usado la funcin mysqli_connect(), que abre una conexin
con el servidor MySQL en el Host especificado (en este ejemplo la mquina donde est alojada el
servidor MySQL es sql203.byethost7.com, pero t tendrs que introducir tu propio dato). Tambin
hemos especificado un usuario (b7_10356956 en este ejemplo, pero t tendrs que introducir tu propio
dato), y un password para el usuario indicado (tendrs que escribir tu password de usuario de base de
datos).
Si la conexin ha tenido xito, la funcin mysqli_connect() devuelve un identificador de dicha conexin
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 conexin $link nos queremos conectar
a la base de datos indicada.
La siguiente funcin mysqli_query(), usando el identificador de la conexin ($link), enva una instruccin
SQL al servidor MySQL para que ste la procese. El resultado de sta operacin 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 quisiramos mostrar
los siguientes registros tendramos que incluir instrucciones con los nmeros 1, 2,
La sentencia mysqli_free_result($result); libera la conexin establecida con la base de datos.
La sentencia mysqli_close($link); cierra la conexin con la base de datos.

*Nota: Si tenemos algn problema en localizar la informacin de nuestro proveedor (nombre de base
de datos, usuario, etc.). recordar que dicha informacin normalmente est disponible en el panel de
control del servidor (cpanel o similar) tal y como vimos en entregas anteriores.

aprenderaprogramar.com, 2006-2029

Uso de PHP con MySQL. Consultas bsicas a bases de datos. Ejercicios.

En el panel de control que estamos usando nosotros para este ejemplo, si bajamos con el scroll hacia
abajo, despus de la informacin ftp que nos aparece marcada con un recuadro rojo, aparecer la
informacin relativa al servidor de base de datos. Si ests utilizando otro panel de control, tendrs que
buscar el lugar especfico donde figura esta informacin.

EJERCICIO
Utilizando la tabla <<ciudades>> que hemos creado para el ejercicio de la entrega anterior del curso,
cuyo contenido era:
id
1
2
3
4
5
6
7
8
9
10

ciudad
Mxico D.F.
Barcelona
Buenos Aires
Medelln
Lima
Caracas
Santiago
Antigua
Quito
La Habana

aprenderaprogramar.com, 2006-2029

pais
Mxico
Espaa
Argentina
Colombia
Per
Venezuela
Chile
Guatemala
Ecuador
Cuba

habitantes
555666
444333
888111
999222
999111
111222
777666
444222
333111
111222

superficie
23434.34
1111.11
333.33
888.88
222.22
111.11
222.22
877.33
999.11
333.11

tieneMetro
1
0
1
0
0
1
1
0
1
0

Uso de PHP con MySQL. Consultas bsicas a bases de datos. Ejercicios.

Crea un archivo php donde se realice una consulta a la base de datos para extraer todos los datos de la
tabla y a continuacin muestra por pantalla los valores de pas y ciudad de cada fila.
Ejemplo de resultados a obtener:
Los resultados de la consulta a la base de datos son los siguientes:
Pas: Mxico --- Ciudad: Mxico D.F.
Pas: Espaa --- Ciudad: Barcelona
Pas: Argentina --- Ciudad: Buenos Aires

Pas: Cuba --- Ciudad: La Habana

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

Prxima entrega: CU00842B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Consultas avanzadas a base de datos MySQL con PHP. Ejercicios.

CONSULTAS MEJORADAS A BASE DE DATOS MySQL CON PHP.


Ahora que conocemos de una forma bsica como interactuar con una base de datos MySQL haciendo
uso de distintas funciones o instrucciones PHP, vamos a profundizar un poco ms 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 slo 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 cdigo que ya hemos utilizado
anteriormente y realizaremos una serie de cambios.
Para empezar, aade algunas filas ms a la tabla agenda de la base de datos para que quede as:
nombre
Manuel Jess
Mara
Pedro
Juana

apellidos
Lpez de la Rosa
Manzano Cabezas
Somoza Castro
Prez Rozas

direccion
C/Juan Bautista N 3
C/Arco del triunfo N 7
C/Solera n88, B
Avda. Luarcato n22

telefono
658954875
695001002
88834321
888111222

edad
32
19
44
22

altura
1.80
1.99
1.66
1.77

Lo primero que vamos a tratar de ver es cmo una invocacin 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 ms filas en los resultados de la consulta la funcin devuelve
NULL (no hay resultados).
Para comprender el funcionamiento que hemos descrito ejecuta este cdigo (que podemos denominar
bruto, pero no te preocupes ahora por la eficiencia del cdigo, cntrate 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
ests usando t.

aprenderaprogramar.com, 2006-2029

Consultas avanzadas a base de datos MySQL con PHP. Ejercicios.

<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 "- Direccin: ".$resultados['direccion']."<br/>";
echo "- Telfono: ".$resultados['telefono']."<br/>";
echo "- Edad: ".$resultados['edad']."<br/>";}
else {echo "<br/>No hay ms 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);
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 slo tenemos cuatro registros. Si tuviramos ms registros el listado se alargara para
mostrarlos todos ellos. Qu ocurre si la informacin existente en base de datos comprende muchos
registros? En este caso la informacin se habr almacenado en memoria y esto consume recursos del
sistema. Para liberar esta memoria se utiliza la instruccin mysqli_free_result($result);

Escribe ahora este cdigo y fjate cmo 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 ests usando t.

aprenderaprogramar.com, 2006-2029

Consultas avanzadas a base de datos MySQL con PHP. Ejercicios.

<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 "- Direccin: ".$resultados['direccion']."<br/>";
echo "- Telfono: ".$resultados['telefono']."<br/>";
echo "- Edad: ".$resultados['edad']."<br/>";}
else {echo "<br/>No hay ms 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));
mostrarDatos(mysqli_fetch_array($result));
mostrarDatos(mysqli_fetch_array($result));
mysqli_free_result($result);
mysqli_close($link);
?>
</body></html>

Fjate 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 ms filas de resultados, momento en que nos devuelve NULL o vaco.
Con una expresin como mostrarDatos(mysqli_fetch_array($result)); estamos pasndole a la funcin
mostrarDatos el array que nos devuelve mysqli_fetch_array. Si la consulta nos ha devuelto 4 filas,
podemos hacer 4 invocaciones obteniendo en cada invocacin una fila. En la quinta invocacin, ya
obtenemos NULL (vaco) 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 sera eficiente escribir lnea a lnea una extraccin 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.

aprenderaprogramar.com, 2006-2029

Consultas avanzadas a base de datos MySQL con PHP. Ejercicios.

La sintaxis que emplearemos es de este tipo:


while ($fila = mysqli_fetch_array($result)){
// Operaciones con los resultados que tenemos en $fila
}

Esta expresin 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 vaco.
Luego se evala el while. while ($variable) lo que hace es entrar al bucle si $variable existe (no est
vaco). while ($fila = mysqli_fetch_array($result)) da lugar a la entrada al bucle mientras no se hayan
extrado todas las filas del resultado.
Esta expresin sinttica es til porque nos permite recorrer muchas filas escribiendo un mnimo de
cdigo. Tambin podramos escribir esto:
$hayResultados = true; //Forzamos la entrada al bucle
while ($hayResultados==true){
$fila = mysqli_fetch_array($result);
if ($fila) { //operaciones a realizar
} else {$hayResultados = false;}
}

O tambin esto:
while (($fila = mysqli_fetch_array($result))!=NULL){
//operaciones a realizar
}

De las diversas alternativas planteadas la que requiere menos cdigo y una vez se entiende resulta ms
clara es while ($fila = mysqli_fetch_array($result)), por eso es la que vamos a usar. Escribe el siguiente
cdigo 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 ests
usando t.
De una forma u otra cada vez que invocamos la funcin mysql_fetch_array($result) obtenemos un array
asociativo con ndice del array los nombres de las columnas, por ejemplo $fila['nombre'],

aprenderaprogramar.com, 2006-2029

Consultas avanzadas a base de datos MySQL con PHP. Ejercicios.

$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 ingls, row es fila). Con mysql_fetch_array($result) tambin
podemos acceder a travs de ndices numricos, 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 "- Direccin: ".$resultados['direccion']."<br/>";
echo "- Telfono: ".$resultados['telefono']."<br/>";
echo "- Edad: ".$resultados['edad']."<br/>";
echo "**********************************<br/>";}
else {echo "<br/>No hay ms 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 Jess - Apellidos: Lpez de la Rosa - Direccin: C/Juan Bautista N 3
- Telfono: 658954875 - Edad: 32
**********************************
- Nombre: Mara - Apellidos: Manzano Cabezas - Direccin: C/Arco del triunfo N 7
- Telfono: 695001002 - Edad: 19
**********************************
- Nombre: Pedro - Apellidos: Somoza Castro - Direccin: C/Solera n88, B
- Telfono: 88834321 - Edad: 44
**********************************
- Nombre: Juana - Apellidos: Prez Rozas - Direccin: Avda. Luarcato n22
- Telfono: 888111222 - Edad: 22
**********************************

aprenderaprogramar.com, 2006-2029

Consultas avanzadas a base de datos MySQL con PHP. Ejercicios.

SINTAXIS NO MYSQLI (NO RECOMENDADA)


Recordar que si estamos revisando cdigo 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 cmo sera
esta sintaxis, mostramos este cdigo:
<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)) {
// $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 "Direccin: ".$row['direccion']."<br>";
echo "Telfono:".$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 cuntos
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 cdigo 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:

aprenderaprogramar.com, 2006-2029

Consultas avanzadas a base de datos MySQL con PHP. Ejercicios.

id
1
2
3
4
5
6
7
8
9
10

ciudad
Mxico D.F.
Barcelona
Buenos Aires
Medelln
Lima
Caracas
Santiago
Antigua
Quito
La Habana

pais
Mxico
Espaa
Argentina
Colombia
Per
Venezuela
Chile
Guatemala
Ecuador
Cuba

habitantes
555666
444333
888111
999222
999111
111222
777666
444222
333111
111222

superficie
23434.34
1111.11
333.33
888.88
222.22
111.11
222.22
877.33
999.11
333.11

tieneMetro
1
0
1
0
0
1
1
0
1
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 continuacin calcula la suma de habitantes de todos los pases y cuntas de estas ciudades
tienen metro. Muestra el resultado por pantalla.
Ejemplo de resultados a obtener:
La suma de habitantes de Mxico D.F., Barcelona, Buenos Aires, Medelln, Lima, Caracas, Santiago,
Antigua, Quito y La Habana es: 5663886 habitantes
De estas ciudades tienen metro: 5 ciudades.

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

Prxima entrega: CU00843B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Insercin de datos con PHP y MySQL. Ejemplos y ejercicios resueltos.

INSERCIN DE DATOS CON PHP Y MySQL. EJEMPLOS Y EJERCICIOS RESUELTOS.


Vamos a explicar cmo insertar registros en nuestra base de datos MySQL a travs de cdigo PHP. En
concreto, aadiremos registros a la tabla agenda que habamos creado previamente con phpMyAdmin.
Para ello tendremos que realizar lo que se denomina una consulta SQL de insercin (insert into) e ir
aadiendo 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
Manuel Jess
Mara
Pedro
Juana

apellidos
Lpez de la Rosa
Manzano Cabezas
Somoza Castro
Prez Rozas

direccion
C/Juan Bautista N 3
C/Arco del triunfo N 7
C/Solera n88, B
Avda. Luarcato n22

telefono
658954875
695001002
88834321
888111222

edad
32
19
44
22

altura
1.80
1.99
1.66
1.77

Para realizar la insercin 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 operacin (en general se denominan consultas,
aunque en este caso la operacin sea una insercin de datos), $link es el identificador de conexin que
hayamos obtenido con mysqli_connect, nombreTabla es el nombre de la tabla en la cual vamos a
realizar la insercin 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 INSERCIN DE DATOS EN UNA TABLA


Escribe este cdigo en un editor y gurdalo en un archivo con un nombre como ejemplo1.php. Luego
ejecuta el cdigo (una sola vez, ten en cuenta que si lo ejecutas varias veces insertars varias veces
repetidamente los datos en la base de datos). Recuerda tambin que debes cambiar y poner tus
propios valores en las funciones mysqli_connect y mysqli_select_db.

aprenderaprogramar.com, 2006-2029

Insercin de datos con PHP y MySQL. Ejemplos y ejercicios resueltos.

<?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', 'Gmez Gmez', '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 usramos sintaxis no mysqli se usara 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. Tambin tendremos que
prestar atencin para que los tipos de datos insertados se correspondan con los de la tabla. Por
ejemplo, no debemos insertar un valor numrico decimal si se espera un entero.
Ahora vamos a ejecutar el cdigo de la entrega anterior del curso para ver los nuevos registros aadidos
por pantalla. Escribe este cdigo en un editor y gurdalo 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 ($resultados !=NULL) {
echo "- Nombre: ".$resultados['nombre']."<br/> ";
echo "- Apellidos: ".$resultados['apellidos']."<br/>";
echo "- Direccin: ".$resultados['direccion']."<br/>";
echo "- Telfono: ".$resultados['telefono']."<br/>";
echo "- Edad: ".$resultados['edad']."<br/>";
echo "**********************************<br/>";}
else {echo "<br/>No hay ms 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>

aprenderaprogramar.com, 2006-2029

Insercin de datos con PHP y MySQL. Ejemplos y ejercicios resueltos.

El resultado esperado es que se muestren por pantalla todos los resultados de la consulta:

- Nombre: Manuel Jess - Apellidos: Lpez de la Rosa - Direccin: C/Juan Bautista N 3 - Telfono: 658954875 - Edad: 32
**********************************
- Nombre: Mara - Apellidos: Manzano Cabezas - Direccin: C/Arco del triunfo N 7 - Telfono: 695001002 - Edad: 19
**********************************
- Nombre: Pedro - Apellidos: Somoza Castro - Direccin: C/Solera n88, B - Telfono: 88834321 - Edad: 44
**********************************
- Nombre: Juana - Apellidos: Prez Rozas - Direccin: Avda. Luarcato n22 - Telfono: 888111222 - Edad: 22
**********************************
- Nombre: Pedro - Apellidos: Gmez Gmez - Direccin: C/ Buenaventura 54 - Telfono: 699887766 - Edad: 35
**********************************
- Nombre: Antonio - Apellidos: Delgado Folken - Direccin: C/ El Milagroso 77 - Telfono: 699667744 - Edad: 88
**********************************

Hemos visualizado el contenido de la base de datos usando una consulta y mostrando los resultados
por pantalla. Ten en cuenta que tambin puedes ver el contenido de la base de datos accediendo
directamente a ella. Accede al panel de administracin de tu servidor, luego a phpMyAdmin y
comprueba cmo los nuevos valores insertados se encuentran en la tabla de la base de datos.
Nota: los nuevos datos aadidos pueden aparecer al final o al principio de la tabla. Si quisiramos ver
los datos con un determinado orden tendramos 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 cdigo
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 aadidos, correspondientes a Pedro Gmez
Gmez y Antonio Delgado Folken.
Las operaciones de insercin en bases de datos son muy frecuentes en programacin web. Ten en
cuenta por ejemplo que cada vez que se registra un usuario en una pgina web hay que guardar la
informacin del usuario (nombre, correo electrnico, etc.). Igualmente cada vez que se produce una
compra mediante comercio electrnico hay que almacenar la informacin de la compra en la base de
datos. Es por tanto una operacin bsica y de gran inters dentro de la programacin con bases de
datos.
aprenderaprogramar.com, 2006-2029

Insercin de datos con PHP y MySQL. Ejemplos y ejercicios resueltos.

EJERCICIO
Inserta en la tabla agenda de la base de datos que estamos utilizando los datos de una persona cuyo
nombre es Jess Murillo Moreno, de 34 aos, cuyo telfono es 655221122, vive en c/Pintor Murillo
n33, y tiene una altura de 1.67 metros. Presta atencin al orden en que debes introducir los datos. Una
vez realizada la insercin, comprueba visualizando los registros existentes en la tabla que la insercin se
haya realizado correctamente. Luego accede al panel de administracin del servidor y a la base de datos
con phpMyAdmin. Visualiza los registros en la tabla y borra la fila correspondiente a Jess Murillo
Moreno utilizando phpMyAdmin. Como puedes comprobar, podemos operar sobre la tabla tanto a
travs de phpMyAdmin como a travs de cdigo PHP.

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

Prxima entrega: CU00844B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Borrado de datos con PHP y MySQL. DELETE y TRUNCATE. Diferencias.

BORRADO DE DATOS CON PHP Y MySQL.


Una tarea habitual con bases de datos ser el tener que borrar cierta informacin. Vamos a ver cmo
realizar el borrado de ciertos registros que cumplan una condicin 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 continuacin: delete y truncate.

SENTENCIA DELETE Y CLUSULA 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 clusula WHERE que nos sirve para indicar una condicin. 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. Fjate que al indicar mayor (y no mayor o igual)
una fila donde la altura sea exactamente 1.90 no ser borrada.
La clusula WHERE tambin puede ser aplicada cuando hacemos consultas de tipo SELECT. Por ejemplo
en entregas anteriores del curso usamos SELECT * FROM agenda como consulta que nos devolva todas
las filas de la tabla agenda. Si escribiramos SELECT * FROM agenda WHERE edad <= 35 obtendramos
como resultado todas las filas de la tabla agenda donde la columna edad contiene un valor menor o
igual a 35.
En una clusula where podemos establecer una condicin de igualdad (=) pero tambin podremos usar
otras condiciones como mayor (>), menor(<), mayor o igual (>=), menor o igual (<=), y tambin
condiciones mltiples y condiciones ms 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, tambin podremos
borrar todos los registros de una tabla en concreto y, para ello, slo 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 prdida de datos. Nosotros estamos
trabajando con una base de datos de pruebas, por lo que no nos preocuparemos por esta cuestin.

aprenderaprogramar.com, 2006-2029

Borrado de datos con PHP y MySQL. DELETE y TRUNCATE. Diferencias.

EJEMPLO
Partiremos de nuestra base de datos donde tenemos una tabla denominada agenda con los siguientes
datos:
nombre
Manuel Jess
Mara
Pedro
Juana
Pedro
Antonio

apellidos
Lpez de la Rosa
Manzano Cabezas
Somoza Castro
Prez Rozas
Gmez Gmez
Delgado Folken

direccion
C/Juan Bautista N 3
C/Arco del triunfo N 7
C/Solera n88, B
Avda. Luarcato n22
C/Buenaventura 54
C/ El Milagroso 77

telefono
658954875
695001002
88834321
888111222
699887766
699667744

edad
32
19
44
22
35
88

altura
1.80
1.99
1.66
1.77
1.98
1.71

Para no afectar a esta tabla, vamos a duplicar la tabla. Esto lo podemos hacer manualmente, pero
tambin podemos hacerlo de forma automtica con phpMyAdmin. Para ello accede al panel de
administracin de tu servidor, luego a phpMyAdmin, pulsa sobre el nombre de la base de datos y luego
sobre la tabla. Ahora vete a la pestaa Operaciones y busca la opcin Copiar la tabla a:. Pon como
nombre agenda2 y elige la opcin Copiar estructura y datos. Pulsa en continuar. Una vez hecho esto
podrs comprobar que en la base de datos tienes dos tablas: agenda y agenda2 (tabla que acabamos de
copiar con los mismos datos que tenamos en agenda).
Escribe este cdigo en un editor y gurdalo en un archivo con un nombre como ejemplo1.php. Ten en
cuenta que debers 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 cdigo. 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
habrn sido borrados.
Comprueba con phpMyAdmin que la tabla ha quedado as:
nombre
Manuel Jess
Pedro
Juana
Antonio

apellidos
Lpez de la Rosa
Somoza Castro
Prez Rozas
Delgado Folken

aprenderaprogramar.com, 2006-2029

direccion
C/Juan Bautista N 3
C/Solera n88, B
Avda. Luarcato n22
C/ El Milagroso 77

telefono
658954875
88834321
888111222
699667744

edad
32
44
22
88

altura
1.80
1.66
1.77
1.71

Borrado de datos con PHP y MySQL. DELETE y TRUNCATE. Diferencias.

SENTENCIA TRUNCATE
La sentencia TRUNCATE sirve para borrar todos los registros de una tabla, al igual que hacamos con la
funcin DELETE sin condiciones, pero tiene algunas diferencias con sta que explicaremos ms
adelante.
La sintaxis a emplear es:

mysqli_query($link, " TRUNCATE TABLE nombreTabla");

Al igual que las operaciones de tipo DELETE, esta operacin es peligrosa en el sentido de que si se
ejecuta errneamente puede dar lugar a la prdida de datos.

EJEMPLO
Escribe este cdigo en un editor y gurdalo en un archivo con un nombre como ejemplo2.php. Ten en
cuenta que debers introducir los datos de tu propia base de datos (nombre, user, etc.). Ejecuta el
cdigo 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 cdigo borraremos todos los registros de la tabla agenda. Accede a la tabla a travs de
phpMyAdmin y comprueba que no existen registros.
Cul es la diferencia entre usar delete sin condiones y usar truncate? Vamos a explicarla a
continuacin.

aprenderaprogramar.com, 2006-2029

Borrado de datos con PHP y MySQL. DELETE y TRUNCATE. Diferencias.

DIFERENCIAS ENTRE DELETE Y TRUNCATE


a) Ambas eliminan los datos, no la estructura de la tabla.
b) Slo DELETE permite la eliminacin condicional de los registros (es decir, borrar slo ciertas filas),
TRUNCATE no lo permite.
c) TRUNCATE es ms rpida que DELETE.
d) TRUNCATE reiniciar el contador para una tabla que contenga una clave autoincrementada. Si en
nuestra tabla agenda tuviramos un campo id autoincremental 1, 2, 3, 4, 5 n (hasta el nmero 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 tena un campo contador autoincremental cuyo ltimo valor era 3257, al
insertar un dato despus 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, slo elimina sus registros.

CUNDO USAR DELETE Y TRUNCATE


Usar TRUNCATE es ms 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 irs
descubriendo a medida que avances en conocimientos de programacin 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 cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.

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:

aprenderaprogramar.com, 2006-2029

Borrado de datos con PHP y MySQL. DELETE y TRUNCATE. Diferencias.

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.

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

Prxima entrega: CU00845B


Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la direccin siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

aprenderaprogramar.com, 2006-2029

Final curso tutorial prograamacin web PHP desde cero..

FINAL DELL CURSO TUTTORIAL


Con esta entrega lleggamos al finaal del curso Tutorial bsico del pro
ogramador w
web: PHP desde cero.
os que haya sido un cursso til y ameeno para todas las personas que lo h
hayan seguid
do. Y como
Esperamo
en todo fiinal, cabe hacer algunas consideracio
ones especiales.

uipo humano
o de aprenderaprogramaar.com que ha
h hecho po
osible su pub
blicacin, y
Gracias al equ
J
Maesttro, Manuel Tello,
T
Walter Sagstegui, Manuel Sie
erra, Csar
en especial a Javier Roa, Jorge
Krall y Mario Rodrguez.

nas que de una


u u otra fo
orma han paarticipado en
nviando prop
puestas de
Gracias a todas las person
m
mejora,
comentarios, avvisos de errratas, etc. y a los alum
mnos que h
han seguido
o el curso
co
olaborando a travs de lo
os foros.

A todos los que


q no han participado
p
p
pero
han segguido el cursso de forma gratuita a trravs de la
w
web,
desde aprenderapr
a
rogramar.com
m les agradeceramos nos
n hicieran llegar una opinin o
propuesta de
d mejora sobre el mismo, bien
b
a traavs de co
orreo electtrnico a
ontacto@aprenderaproggramar.com , bien a trravs de loss foros. Tod
das las opin
niones son
co
bienvenidas y nos sirven para
p
mejorarr.

f
gratuitta y piensen que los contenidos son de calidad
A quienes hayyan seguido el curso de forma
y que merecee dar un peq
queo apoyo
o econmico
o para que see puedan seeguir ofrecien
ndo ms y
m
mejores
conteenidos en esste sitio web
b, les estarem
mos muy agradecidos si realizan unaa pequea
ap
portacin ecconmica en forma de do
onacin pulsando sobre el enlace que aparece en
n la pgina
principal de aprenderapro
ogramar.com
m.

Quienes tengan
t
inters en prosegguir formnd
dose en el rea

de proggramacin y programaci
n web de
forma auttodidacta les animamoss a que visiteen la seccin
n Cursos dee aprenderaprogramar.ccom en la
URL http:///www.aprendderaprogramaar.com/index.php?option==com_contentt&view=articlee&id=57&Item
mid=86
e
interessados en currsos tutorizad
dos on-line con
c seguimieento, plan dee trabajo y supervisin
Quienes estn
a cargo de
d un tutor asignado pu
ueden visitar la siguientte direccin donde enco
ontrarn infformacin:
http://www
w.aprenderap
programar.com/index.php??option=com_
_content&view
w=article&id==64&Itemid=8
87

A todos lo
os que nos haan ledo y no
os siguen, graacias. Nos vemos
v
en el prximo!
p

El equ
uipo de apreenderaprogrramar.com

aprenderraprogramar.co
om, 2006-2029