PHP
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
Duracin
150 horas de dedicacin efectiva, incluyendo lecturas, estudio y ejercicios.
Indice del curso Tutorial bsico programador web: PHP desde cero.
INTRODUCCIN A PHP
1.1.
1.2.
1.3
1.4.
1.5.
2.
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
2.8.
3.
3.1.
3.2.
3.3.
3.4.
3.5.
4.
4.1.
4.2.
FUNCIONES EN PHP
Declaracin y llamadas a funciones en PHP.
Funciones bsicas propias de PHP.
5.
5.1.
5.2.
Indice del curso Tutorial bsico programador web: PHP desde cero.
6.
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.
7.1.
7.2.
7.3.
7.4.
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: [email protected]
Estamos seguros de que con tu esfuerzo y la ayuda que te podamos brindar este curso te resultar de
gran utilidad.
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
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:
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
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.
aprenderaprogramar.com, 2006-2029
aprenderaprogramar.com, 2006-2029
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
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:
-
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
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.
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.
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.
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.
aprenderaprogramar.com, 2006-2029
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.
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
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.
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
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.
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
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.
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.
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.
Un navegador web, como por ejemplo Google Chrome. Puede valer cualquier otro como
Mozilla Firefox, Internet Explorer, Safari, etc.
OPCIN 2
aprenderaprogramar.com, 2006-2029
Nombre
Descripcin
WAMP SERVER
LAMP SERVER
MAMP SERVER
XAMPP 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
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.
aprenderaprogramar.com, 2006-2029
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
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.
aprenderaprogramar.com, 2006-2029
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
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.
aprenderaprogramar.com, 2006-2029
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
Ya tenemos todo listo para poder empezar a crear nuestras pginas PHP.
aprenderaprogramar.com, 2006-2029
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
- 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
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.
aprenderaprogramar.com, 2006-2029
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
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
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
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
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.
aprenderaprogramar.com, 2006-2029
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.
aprenderaprogramar.com, 2006-2029
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
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/
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
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.
aprenderaprogramar.com, 2006-2029
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
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.
aprenderaprogramar.com, 2006-2029
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.
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
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
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 protected]&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:
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
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
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
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.
aprenderaprogramar.com, 2006-2029
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
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
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
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
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
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>
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
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
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.
aprenderaprogramar.com, 2006-2029
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:
Validez
$4variable
$_4variable
$variable4
$otra
$1_otra
$variable_de_nombre_muy_largo
$ABC
$ABC
$A_y_B_x_C
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
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
TIPO DE DATO
DEFINICIN
Los integers, o enteros, pueden tener distintos valores numricos enteros que se expresan
con diferentes notaciones.
integer
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
aprenderaprogramar.com, 2006-2029
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
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>
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
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.
aprenderaprogramar.com, 2006-2029
ESTRUCTURAS CONDICIONALES
En PHP existen una serie de instrucciones que permiten tomar decisiones lgicas cuando programamos:
if...else
if...elseif...else
switch
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
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> ---------------------------------</p>
<?php
echo ' Hay galletas';
echo '<br/>';
echo '<br/>';
echo ' ---------------------------------';
} 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 equivale a un espacio en
aprenderaprogramar.com, 2006-2029
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> ---------------------------------</p>
<?php
echo ' Hay galletas';
echo '<br/>';
echo '<br/>';
echo ' ---------------------------------';
} 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 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 .
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
aprenderaprogramar.com, 2006-2029
Resultado
Se ejecuta dispara()
Se ejecuta espera()
Se ejecuta espera()
Se ejecuta espera()
Se ejecuta dispara()
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.
aprenderaprogramar.com, 2006-2029
Condicional ternario
If tradicional
aprenderaprogramar.com, 2006-2029
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.
aprenderaprogramar.com, 2006-2029
Nombre
Ejemplo
Mayor que
$a > $b
Menor que
$a < $b
$a >= $b
$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
aprenderaprogramar.com, 2006-2029
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.
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
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.
()
Parntesis
^
Exponenciacin
*,/
Multiplicacin, divisin
+,
Suma, resta
Mod , \ (div)
Resto, Cociente
No (Not)
No se cumple que
y (And)
Y se cumple que
o (Or)
O se cumple que
aprenderaprogramar.com, 2006-2029
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.
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
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
f) $A == 3
n) ($A+$B == 8) || ($A-$B == 6)
g) $A * $B == 15
h) $A * $B == -30
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.
aprenderaprogramar.com, 2006-2029
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
(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
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 ).
Ejemplo
Resultado
Pre-incremento
++$a
Post-incremento
$a++
Pre-decremento
--$a
Post-decremento
$a--
++ 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 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 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
%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.
aprenderaprogramar.com, 2006-2029
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.
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.
aprenderaprogramar.com, 2006-2029
.
.
.
default:
sentencias;
break;
}
switch (expresin) {
case valor1:
case valor2:
case valor3:
instrucciones;
break;
case valor4:
instrucciones;
break;
.
.
.
default:
sentencias;
break;
}
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
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;
switch($variable) {
case 1:
$variable=2;
if($variable==1) {
break;
case 2:
} else if($variable==2) {
break;
} else if($variable==3) {
case 3:
} else {
break;
default:
?>
}
?>
aprenderaprogramar.com, 2006-2029
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:
$variable=2;
if($variable==1) {
break;
case 2:
case 3:
}else {
break;
default:
?>
aprenderaprogramar.com, 2006-2029
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;
}
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.
aprenderaprogramar.com, 2006-2029
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.
aprenderaprogramar.com, 2006-2029
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
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 " La subcadena nmero uno es la siguiente: $sub1 <br />";
echo " La subcadena nmero dos es la siguiente: $sub2 <br />";
echo " La subcadena nmero tres es la siguiente: $sub3 <br />";
echo " La subcadena nmero cuatro es la siguiente: $sub4";
?>
aprenderaprogramar.com, 2006-2029
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
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.
aprenderaprogramar.com, 2006-2029
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
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
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
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:
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
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.
<?php
for ( $i = 0; $i < 50; $i+=5 ){
echo " $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
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.
aprenderaprogramar.com, 2006-2029
Los arrays son muy utilizados en la programacin. Dependiendo de la cantidad de dimensiones que
tengan pueden ser:
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.
aprenderaprogramar.com, 2006-2029
TCP [3]
TCP3
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
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.
aprenderaprogramar.com, 2006-2029
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];
?>
aprenderaprogramar.com, 2006-2029
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];
?>
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
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/> " . $animal[1][0][1];
echo "<br/> " . $animal[0][0][3];
?>
En este ejemplo hemos incluido una lnea que tiene poco sentido, o podra interpretarse como un error:
echo "<br/> " . $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
<?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/> " . $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
<?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/> " . $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
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.
aprenderaprogramar.com, 2006-2029
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
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'];
?>
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.
aprenderaprogramar.com, 2006-2029
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);
?>
aprenderaprogramar.com, 2006-2029
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
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/>';
?>
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
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.
aprenderaprogramar.com, 2006-2029
$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]);
?>
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
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
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:
aprenderaprogramar.com, 2006-2029
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
$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 ' '. $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
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;
}
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
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.
aprenderaprogramar.com, 2006-2029
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
aprenderaprogramar.com, 2006-2029
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)
b)
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
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
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
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.
aprenderaprogramar.com, 2006-2029
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:
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
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:
aprenderaprogramar.com, 2006-2029
$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
$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'
?>
UTILIDAD
EJEMPLOS aprenderaprogramar.com
strlen($cadena)
substr
($cadena,
$inicio,
$opcNumCar)
aprenderaprogramar.com, 2006-2029
FUNCIN
UTILIDAD
EJEMPLOS aprenderaprogramar.com
$saludo = "hoy es viernes";
ucfirst($cadena);
ucfirst($saludo);
//Hoy es viernes
$saludo = "hoy es viernes";
ucwords($cadena);
echo ucwords($saludo);
//Hoy Es Viernes
strpos ($cadena
$subCadena,
$opcPosInicio )
ltrim
($cadena,
$opcCaracteres)
rtrim
($cadena,
$opcCaracteres)
chop
str_repeat($cadena,
$numVeces)
strstr
($cadena,
$desde,
$opcBoolean)
strchr
chr ( $ascii )
aprenderaprogramar.com, 2006-2029
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.
aprenderaprogramar.com, 2006-2029
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:
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
<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 == ===.
UTILIDAD
strcasecmp ($cadena1
, $cadena2 )
EJEMPLOS aprenderaprogramar.com
$cadena1 = 'martes';
$cadena2 = 'Martes';
strcasecmp ($cadena1, $cadena2)
// Devuelve 0, son iguales
$cadena1 = 'martes';
strncmp
($cadena1,
$cadena2,
$numCaract)
strncasecmp
($cadena1 , $cadena2,
$numCaract)
substr_compare
($cadena1, $cadena2,
$posicionCad1,
$opcLongitud,
$opcBoolDiferencia)
aprenderaprogramar.com, 2006-2029
$cadena1 = 'martes';
$cadena2 = 'Martes de feria';
substr_compare ($cadena1 , $cadena2 , 0,
strlen($cadena1), true)
// Devuelve 0, son iguales
<?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>';
?>
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
EJERCICIO
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.
aprenderaprogramar.com, 2006-2029
aprenderaprogramar.com, 2006-2029
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.
aprenderaprogramar.com, 2006-2029
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:
Significado aprenderaprogramar.com
d (minscula)
01 a 31
D (mayscula)
j (minscula)
1 a 31
N (mayscula)
1 (lunes) a 7 (domingo)
S (mayscula)
st, nd, rd th
w (minscula)
0a6
z (minscula)
0 a 365
aprenderaprogramar.com, 2006-2029
Significado aprenderaprogramar.com
F (mayscula)
m (minscula)
01 hasta 12
M (mayscula)
n (minscula)
1 hasta 12
t (minscula)
28 hasta 31
Carcter de formato
Significado aprenderaprogramar.com
L (mayscula)
01
Y (mayscula)
1000 a 9999
y (minscula)
o (minscula)
1000 a 9999
Significado aprenderaprogramar.com
a (minscula)
am pm
A (mayscula)
AM PM
B (mayscula)
000 a 999
g (minscula)
1 a 12
G (mayscula)
0 a 23
h (minscula)
01 a 12
H (mayscula)
00 hasta 23
i (minscula)
00 a 59
s (minscula)
00 a 59
aprenderaprogramar.com, 2006-2029
Significado aprenderaprogramar.com
e (minscula)
Segn corresponda
I (letra i mayscula)
01
O (letra o mayscula)
P (mayscula)
T (mayscula)
Segn corresponda
Z (mayscula)
aprenderaprogramar.com, 2006-2029
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
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
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
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
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.
aprenderaprogramar.com, 2006-2029
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
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 (*)
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
Pas
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.
$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
Cdigo
Descripcin
Da
%a
Da
%A
Da, completo
Da
%d
01 a 31
Da
%e
1 a 31
Da
%j
001 a 366
Da
Da
%u
%w
Semana
%U
Semana
%V
01 hasta 53
Semana
%W
Mes
%b
Mes
%B
Mes
%h
Mes
%m
Ao
%C
Ao
%g
Ao
%G
Ao
%y
Ao
%Y
Ejemplo: 2038
Hora
%H
00 hasta 23
Hora
%k
Hora
%I
Hora
%l (ele)
Hora
%M
00 hasta 59
Hora
Hora
%p
%P
Hora
%r
Hora
Hora
%R
%S
Hora
%T
Hora
%X
Hora
%z
Hora
%Z
Fecha y hora
%c
Fecha y hora
%D
Fecha y hora
%F
Fecha y hora
%x
aprenderaprogramar.com, 2006-2029
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
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
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.
aprenderaprogramar.com, 2006-2029
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
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
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.
aprenderaprogramar.com, 2006-2029
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
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
aprenderaprogramar.com, 2006-2029
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.
aprenderaprogramar.com, 2006-2029
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.
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
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
$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
<!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>
echo "<br/> El volumen del cilindro es de". $volumen. "metros cbicos";
?>
aprenderaprogramar.com, 2006-2029
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
<!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
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/> DATOS RECIBIDOS";
echo "<br/> Precio producto establecimiento 1: ". $precio1. " euros";
echo "<br/> Precio producto establecimiento 2: ". $precio2. " euros";
echo "<br/> Precio producto establecimiento 2: ". $precio3. " euros <br/>";
echo "<br/> El precio medio del producto es de ". $media. " euros";
?>
aprenderaprogramar.com, 2006-2029
EJERCICIO PROPUESTO
Disear un desarrollo web simple con PHP que d respuesta a la necesidad que se plantea a
continuacin.
aprenderaprogramar.com, 2006-2029
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.
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
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
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
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
echo "<br/> 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
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
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
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.
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
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
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
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
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
echo "<br/> 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
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
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
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.
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
MTODO
CONCEPTO
OBSERVACIONES
GET
POST
REQUEST
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"
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
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
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
//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
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
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.
aprenderaprogramar.com, 2006-2029
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
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
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.
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
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.
aprenderaprogramar.com, 2006-2029
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
aprenderaprogramar.com, 2006-2029
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.
Crear una base de datos MySQL para practicar con PHP. PhpMyAdmin.
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.
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.
aprenderaprogramar.com, 2006-2029
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.
aprenderaprogramar.com, 2006-2029
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
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
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
aprenderaprogramar.com, 2006-2029
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.
$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.
mysqli_close($nombreConexin);
Para servidores no actualizados usar mysql_close en lugar de mysqli_close
aprenderaprogramar.com, 2006-2029
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.
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.
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
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.
aprenderaprogramar.com, 2006-2029
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:
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.
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
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
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
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
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.
aprenderaprogramar.com, 2006-2029
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
<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
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.
aprenderaprogramar.com, 2006-2029
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
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
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
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.
aprenderaprogramar.com, 2006-2029
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:
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).
aprenderaprogramar.com, 2006-2029
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
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
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.
aprenderaprogramar.com, 2006-2029
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
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
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:
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
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
Para comprobar si tus respuestas y cdigo son correctos puedes consultar en los foros
aprenderaprogramar.com.
aprenderaprogramar.com, 2006-2029
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.
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