Módulo: Programación III
Docencia Informática
UNIVERSIDAD TÉCNICA DE MACHALA FACULTAD DE CIENCIAS SOCIALES DOCENCIA INFORMÁTICA
PROGRAMACIÓN III PHP MySQL
Compiladores:
Julio Encalada Diana Granda
2015
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
UNIDAD I ¿QUÉ ES PHP? ¿PARA QUÉ SIRVE PHP? PHP es un lenguaje de código abierto muy popular, adecuado para desarrollo web y que puede ser incrustado en HTML. Es popular porque un gran número de páginas y portales web están creadas con PHP. Código abierto significa que es de uso libre y gratuito para todos los programadores que quieran usarlo. Incrustado en HTML significa que en un mismo archivo vamos a poder combinar código PHP con código HTML, siguiendo unas reglas.
PHP se utiliza para generar páginas web dinámicas. Recordar que llamamos página estática a aquella cuyos contenidos permanecen siempre igual, mientras que llamamos páginas dinámicas a aquellas cuyo contenido no es el mismo siempre. Por ejemplo, los contenidos pueden cambiar en base a los cambios que haya en una base de datos, de búsquedas o aportaciones de los usuarios, etc. ¿Cómo trabaja PHP? El lenguaje PHP se procesa en servidores, que son potentes ordenadores con un software y hardware especial. Cuando se escribe una dirección tipo http://www.aprenderaprogramar.com/index.php en un navegador web como Internet Explorer, Firefox o Chrome, ¿qué ocurre? Se envían los datos de la solicitud al servidor que los procesa, reúne los datos (por eso decimos que es un proceso dinámico) y el servidor lo que devuelve es una página HTML como si fuera estática. El esquema es: Petición de página web al servidor --> El servidor recibe la petición, reúne la información necesaria consultando a bases de datos o a otras páginas webs, otros servidores, etc --> El servidor responde enviando una página web “normal” (estática) pero cuya creación ha sido dinámica (realizando procesos de modo que la página web devuelta no siempre es igual). En resumen: Páginas estáticas: Petición --> Respuesta Páginas dinámicas: Petición --> Procesado y preparación --> Respuesta En un sitio dinámico, la información generalmente está contenida en una base de datos. Cada vez que mostramos la página, como por ejemplo una página de noticas, buscamos en la base de datos las últimas noticias que tenemos ingresadas para mostrar en el navegador del visitante. Ahora bien, ¿cómo
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
se consigue que la página vaya mostrando noticias nuevas? Simplemente cargando las mismas en la base de datos, por ejemplo, a través de un formulario que rellena una persona y que una vez relleno cuando pulsa “Enviar” implica que lo que haya escrito se guarde en nuestra base de datos. De esta manera, cuando solicitamos la página web y el servidor consulte la base de datos, encontrará esta nueva información y mostrará nuestra página de forma distinta a como se veía anteriormente. Por regla general este tipo de lenguaje suele ser utilizado para crear contenido dinámico y poder interactuar con el usuario. Veamos un ejemplo del contenido de una página web php, que habremos de almacenar en un archivo que termina con la extensión .php y que contiene texto: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo</title> </head> <body> <?php echo "Bienvenidos a aprenderaprogramar.com"; ?> </body> </html>
Como podrás comprobar el contenido del archivo incluye código HTML y en un momento dado aparece una etiqueta <?php que significa que ahí empieza el código PHP. Por eso decimos que el código PHP está embebido (incluido o incrustado) en código HTML. Por tanto las páginas PHP contienen HTML con código PHP incluido en ellas para hacer "algo" (en este caso, mostrar Bienvenidos a aprenderaprogramar.com. El código PHP está comprendido entre etiquetas de comienzo y final especiales: <?php y ?> Estas etiquetas especiales nos permitirán entrar y salir del "modo PHP". Le sirven al servidor web para saber que tiene que interpretar el código incluido entre esas etiquetas como PHP. Lo que distingue a PHP de JavaScript es que el código es ejecutado en el servidor, generando HTML y enviándolo al cliente como si fuera una página web estática. El cliente recibirá los resultados que el servidor devuelve después de interpretar el código PHP, sin ninguna posibilidad de determinar qué código ha producido el resultado recibido. Es decir, a través de nuestro navegador podríamos ver el código HTML, pero nunca el código PHP que dio lugar al resultado HTML. El servidor web puede ser incluso configurado para que los usuarios no puedan saber si estás o no utilizando PHP. Lo mejor de usar PHP es que es extremadamente simple para el principiante, pero a su vez, ofrece muchas características avanzadas para los programadores profesionales y más avanzados.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Con PHP puedes procesar la información de formularios, generar páginas con contenidos dinámicos, o enviar y recibir cookies, entre muchas más cosas. PHP lo utilizan desde pequeñas páginas web hasta grandes empresas. Muchas aplicaciones web están construidas usando PHP. Podemos citar Joomla y Drupal (gestores de contenido de páginas web), osCommerce y Prestashop (tiendas on-line para comercio electrónico), phpBB y SMF (sistemas de foros para páginas web), Moodle (plataforma educativa para educación on-line), etc. Entre las habilidades de PHP se incluye la creación de imágenes a partir de datos. Por ejemplo, supongamos que tenemos una academia con 20 alumnos matriculados en un curso de informática, 50 alumnos matriculados en un curso de matemáticas y 30 alumnos matriculados en un curso de química. Con PHP podemos generar automáticamente imágenes similares a esta:
PHP también puede utilizar y presentar resultados en otros estándares de datos o lenguajes propios de los desarrollos web, como XHTML y cualquier otro tipo de ficheros XML. PHP puede autogenerar éstos archivos y almacenarlos en el sistema de archivos en vez de presentarlos en la pantalla, utilizando estos ficheros para generar contenido dinámico. Es decir, el contenido dinámico puede surgir de otros sitios además de desde bases de datos. También se puede interactuar con otros servidores usando cualquier protocolo. Por último, PHP puede enlazarse con otros lenguajes muy potentes como Java.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
COMUNICACIÓN ENTRE EL CLIENTE Y EL SERVIDOR SIN PHP Y CON PHP Intentaremos explicar ahora cuales son las diferencias entre una petición a un servidor sin PHP y con PHP. Esto nos permitirá ver cuales son las principales diferencias entre una página web estática en HTML y una página web dinámica en PHP.
Empezaremos recordando a qué llamamos servidor y a qué llamamos cliente, de forma muy simplificada. Llamamos servidores a ordenadores generalmente potentes, con un software y hardware especial, y que se encargan de resolver peticiones que le hacen decenas, cientos o miles de ordenadores. Hablamos de cliente en general para referirnos a ordenadores tipo ordenador personal de los que habitualmente tenemos en nuestra casa o en nuestra oficina de trabajo. Un cliente normalmente trabaja combinando lo que es su entorno local (por ejemplo nuestro sistema de archivos y programas instalados en nuestro ordenador) con peticiones a un servidor: por ejemplo cuando nos conectamos a internet y tecleamos una dirección web (URL), lo que hacemos es realizar una petición a un servidor. En este caso sería un servidor web, pero hay distintos tipos de servidores (de bases de datos, xml, etc.). El servidor le responde al cliente entregándole lo que ha solicitado si es posible o, en algunos casos, indicando que no tiene permisos para obtener lo solicitado, que lo que ha solicitado no existe, etc. Estas definiciones son definiciones simplificadas y muy someras, pero para los objetivos de este curso nos resultarán suficientes.
COMUNICACIÓN ENTRE EL CLIENTE Y EL SERVIDOR SIN PHP En primer lugar, lo que hacemos es escribir en la barra de direcciones del navegador, la url de la página web que queremos ver. Después el navegador envía el mensaje a través de internet al ordenador remoto (servidor), de acuerdo con un protocolo estandarizado, solicitando la página en cuestión (ejemplo: www.aprenderaprogramar.com/index.html). El servidor comprueba que la petición es válida y lee el archivo solicitado desde su disco duro. Todo ello es posible gracias al software instalado en el servidor. Acto seguido, el servidor web envía el archivo solicitado por el navegador tal cual está en el disco duro. Y, por último, el navegador muestra en pantalla el archivo que envió el servidor web. Este proceso siempre es el mismo cuando hablamos de páginas estáticas (coloquialmente, “páginas que no cambian”). Cualquiera que sea el cliente que solicita la página, el contenido devuelto siempre será el mismo. La única forma de que el contenido del archivo cambie es que el administrador de ese sitio web edite el contenido del archivo index.html y haga modificaciones.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
COMUNICACIÓN ENTRE EL CLIENTE Y EL SERVIDOR CON PHP. INTÉRPRETE PHP Y GESTORES DE BASES DE DATOS. Empezamos escribiendo en la barra de direcciones del navegador la url de la página web que queremos ver. En segundo lugar, el navegador envía el mensaje a través de internet al ordenador remoto (servidor), de acuerdo con un protocolo estandarizado, solicitando la página (archivo) index.php. (ejemplo: www.aprenderaprogramar.com/index.php). El servidor web recibe el mensaje, comprueba que se trata de una petición válida, y al ver que la extension es "php" solicita al intérprete de PHP (que es otro programa que se ejecuta en el servidor web) que le envíe el archivo. En este caso la situación ha variado: no se trata de una simple extracción de un archivo desde el disco duro, sino que está actuando un agente intermediario: el intérprete PHP. El intérprete PHP lee desde el disco duro del servidor el archivo index.php y empieza a procesar las instrucciones (código de programación) que contenga dicho archivo. Decimos que el intérprete PHP “ejecuta” los comandos contenidos en el archivo y, eventualmente, se comunica con un gestor de base de datos (ejemplos de ellos pueden ser MySql, Oracle, SQL Server, etc.). La comunicación con base de datos no siempre se produce, pero es algo muy frecuente cuando trabajamos con PHP. Tenemos pues otra diferencia con las webs estáticas: interviene otro agente más, el gestor de base de datos, que es capaz de devolver la información contenida en lugares determinados de una base de datos. Y una base de datos podemos verla simplemente como un gran almacén de información organizada en tablas. Una vez el intérprete PHP termina de ejecutar el código contenido en el archivo y ha recibido toda la información necesaria del gestor de base de datos, envía los resultados al servidor web. El servidor web envía la página al cliente que la había solicitado y el navegador muestra en pantalla la información que le envía el servidor web. En lenguajes de programación como C o Java estamos acostumbrados a que cuando ejecutamos un código, observamos unos resultados en la pantalla de nuestro ordenador. Sin embargo, en PHP el resultado que se obtiene después de ejecutar código es código HTML que es el que utilizará el navegador para mostrar la página web. Una cuestión interesante, y curiosa, es preguntarnos sobre cuál es la diferencia entre el código HTML que le llega al cliente cuando solicita una página estática y el código HTML que le llega cuando solicita una página dinámica. La respuesta es que no hay diferencia: ambos son código HTML. ¿Cómo podríamos saber si un código HTML proviene de un archivo html, estático, o si proviene de una respuesta de un intérprete PHP? Pues digamos que si simplemente nos dan el código no podríamos saber de dónde viene.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Y otra cuestión que se puede plantear: si tanto con PHP como sin PHP lo que obtenemos es código HTML, ¿para qué nos sirve el PHP? Bien, PHP es un lenguaje de programación, mientras que HTML no lo es. Con HTML podemos enviar cierta información siempre igual, pero no podemos hacer cálculos, no podemos tomar decisiones, no podemos repetir procesos cierto número de veces. En definitiva, PHP aporta toda la potencia que supone la programación de ordenadores al mundo de las páginas web. Pongamos un ejemplo muy sencillo: queremos que en una página web se produzca un proceso de venta a través de una tarjeta de crédito. Una vez el cliente elige el producto, número de unidades que quiere y lugar de envío necesitaremos realizar unos cálculos: esto lo podemos hacer con PHP (también con otros lenguajes, pero vamos a centrarnos en el objeto de este curso). Una vez realizados los cálculos, le mostraremos al cliente el importe total y los datos de su compra y le pediremos que introduzca el número de su tarjeta de crédito y su clave personal. Ahora hay que tomar una decisión: para esto no nos sirve el HTML. Sin embargo, usando PHP podemos consultar a una base de datos donde estén almacenados los números de tarjetas de crédito válidas del banco y sus claves. Una vez hecha esta consulta, usando PHP podemos mostrar al usuario un resultado distinto según la situación que se haya producido, por ejemplo: -
Los datos no son válidos. La compra no ha podido realizarse.
-
Los datos son válidos. Se ha realizado satisfactoriamente la compra. Recibirá su pedido en su domicilio en un plazo de 10 días. Gracias por confiar en nosotros. Php es un lenguaje de programación y HTML no lo es, esta es una gran diferencia. ¿Si PHP es mucho más potente, por qué no prescindir de HTML? Digamos que cada lenguaje cumple su función: HTML es un lenguaje muy ordenado que permite enviar información de forma rápida para que se muestre algo en un ordenador. En este sentido, es más rápido enviar la información en formato HTML que de otra manera (por ejemplo un archivo ejecutable que se tuviera que ejecutar en el cliente). Por eso HTML sigue siendo relevante dentro del mundo de internet: es un formato muy usado para el envío de información. Cómo se haya generado esa información es otra cuestión. En el siguiente esquema podemos ver el proceso completo.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
EJERCICIO Responde a las siguientes preguntas indicando verdadero o falso y justicando brevemente tu respuesta: a) Todos los servidores web trabajan con PHP, ya que es la única manera de conseguir que se muestre una página web en el computador cliente. b) El código HTML generado con PHP no es distinguible del código HTML generado manualmente, a no ser que contemos con alguna información adicional. c) HTML es un lenguaje de programación que permite decidir y repetir, pero carece de funcionalidades de acceso a bases de datos. d) Para crear páginas web dinámicas HTML es un lenguaje obsoleto. Para su creación usaremos PHP u otro lenguaje de última generación.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
DIFERENCIA ENTRE PÁGINAS WEB ESTÁTICAS Y PÁGINAS WEB DINÁMICAS CON PHP Vamos a repasar algunos conceptos que ya hemos mencionado y que es importante que queden claros. Las páginas web estáticas o “planas” son aquellas en las que la información se presenta en forma predefinida y sin cambios. No hay manera de que pueda cambiar el contenido de la página. En caso de que se quiera actualizar una pagina estática, se tendrá que acceder directamente al servidor en el que se encuentra alojada para hacer la edición del archivo correspondiente.
A la información contenida en una página estática se le puede dar un determinado formato de presentación, así como incluirle imágenes, enlaces a otras páginas, animaciones, videos, sonidos, etc. En general, todo se hace a través de etiquetas HTML y esto es lo único que puede ofrecerse a través de este tipo de páginas. En los inicios de Internet predominaban las páginas estáticas, pero con el paso del tiempo y ante la necesidad de agilizar el manejo de la información, surge un nuevo concepto de páginas web que hoy sobresale y es el más utilizado. Estas son denominadas páginas dinámicas: dentro de la programación dinámica para páginas web hay distintos lenguajes (entre los que cabe destacar PHP, ASP y JSP), siendo php uno de los más usados. Normalmente, las páginas estáticas están compuestas por código HTML. Cuando la página (archivo) es solicitada por el navegador, el servidor la envía y no realiza ninguna operación más. Todos los visitantes verán el mismo contenido. Las páginas web dinámicas son aquellas en que la información que presentan se genera a partir de alguna acción o petición del usuario en la página o mediante consultas al contenido de bases de datos que normalmente cambian con frecuencia. Contrariamente a las páginas estáticas, en las que su contenido se encuentra predeterminado, en las dinámicas la información aparece inmediatamente después de una solicitud hecha por el usuario o de una consulta a bases de datos. Una página dinámica permite visualizar la información contenida en una base de datos, así como almacenar y hacer actualizaciones de cierta información en bases de datos a través de formularios donde el usuario introduce contenidos. Piensa por ejemplo en una red social como FaceBook: cuando se escribe en una casilla de texto y se pulsa enter, la información introducida se almacena en una base de datos. Ahora cuando otro usuario entra en FaceBook, esa información introducida por un usuario se le muestra a otro usuario gracias a que se está rescatando de una base de datos. La programación dinámica tiene múltiples aplicaciones, entre las que podemos citar los sistemas de foros (los mensajes, imágenes, etc. se almacenan en bases de datos). Otra aplicación consiste en que el usuario tiene la posibilidad de cambiar a su gusto el diseño y el contenido de una página, por ejemplo la página de inicio personalizada de Google, gracias a que sus opciones se almacenan en una base de datos. Queda claro entonces que para la creación de este tipo de páginas dinámicas, además de etiquetas HTML es necesaria la utilización de algún lenguaje de programación que se ejecute del lado del servidor Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
(es decir, que el servidor realice un proceso antes de enviar la información 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 páginas webs dinámicas, estas páginas son procesadas por el servidor antes de ser enviadas al navegador. Una página .php contiene código PHP que al ser ejecutado generará código HTML. En ese proceso de ejecución de código, pueden hacerse consultas a bases de datos u otros archivos. Además, pueden realizarse cálculos o tomarse decisiones gracias a la potencia de la programación. El resultado final es que se envía al navegador código HTML, que es generado para cada visitante en particular dependiendo por ejemplo del contenido de la base de datos en ese momento o de las opciones de configuración o solicitudes específicas del usuario. Otras personas podrán obtener diferentes resultados si acceden en un momento en que la base de datos haya cambiado, o si tienen opciones de configuración o realizan una solicitud distinta. Ten en cuenta que aunque la URL nos muestre una extensión .php, lo que recibe el usuario es código HTML. Por ejemplo la URL siguiente: http://www.aprenderaprogramar.com/index.php Siempre devuelve código HTML. Pero no siempre devuelve el mismo código HTML porque para generar ese código existen procesos en el servidor que hacen que los resultados puedan variar. ¿Cómo reconocer si una web que visitamos es dinámica o estática? En general, es dinámica aquella que puede interactuar con el visitante y/o administrador web, pudiéndose modificar el contenido de la página según el momento u opciones escogidas. Ejemplos de esto son: cuando el usuario puede escribir un comentario, escoger los productos y ponerlos en un carrito de compras, subir archivos o fotografías, etc. En este caso SI se utilizan bases de datos y se requiere programación web dinámica. Las páginas web dinámicas ofrecen muchas ventajas en comparación con las páginas web estáticas, como una mayor interactividad con el usuario y facilidad para el cambio y actualización de contenidos. A las personas que administran las páginas web (webmasters, programadores, gestores de contenidos), la programación dinámica les permite una reducción en tiempo y costos, así como una mayor facilidad en el mantenimiento de un sitio web.
RESULTADOS EN BUSCADORES USANDO PÁGINAS WEB DINÁMICAS Ante todas las ventajas de este tipo de páginas cabe citar una desventaja “histórica” en cuanto a los resultados obtenidos en buscadores como Bing, Google o Yahoo. Hasta hace unos años, los buscadores consideraban que una web dinámica era no indexable (no registrables sus contenidos de cara a búsquedas) debido a que no se podía ofrecer como resultado de un buscador algo que cambiaba con frecuencia. Es frecuente oir el término “URL amigable” en referencia a una dirección web que es sencilla y recuerda un texto simple, por ejemplo: http://www.aprenderaprogramar.com/cursos/cursophp/paginas-dinamicas-y-estaticas.htm Por el contrario, muchas veces se dice que cuando las páginas contienen .php y numerosos parámetros con
caracteres
como
"?",
"&"
y
"="
la
URL
no
es
amigable.
Por
ejemplo:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=57&Itemid=8
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Esta situación en la actualidad puede considerarse superada: los buscadores se han sofisticado y son capaces de indexar URL´s dinámicas sin problemas. Algunas aplicaciones de software libre como Joomla, Drupal, WordPress, etc. siguen manteniendo sistemas que permiten convertir las URL´s dinámicas en URL´s amigables, pero en general podemos decir que esto es cada vez menos necesario. Desde nuestro punto de vista, es más importante tener una página web con un buen diseño, bien estructurada en cuanto a menús y contenidos, que se actualice con frecuencia y que ofrezca contenidos de calidad, más que tener o no tener URL´s amigables.
EJERCICI O Responde a las siguientes preguntas indicando verdadero o falso y justicando brevemente tu respuesta: a) Hoy día ya no tiene sentido crear una página web estática, ya que los navegadores dejarán de admitirlas en un futuro próximo. b) Podemos reconocer si una página web es dinámica en base a si es capaz de almacenar información que el usuario proporciona y rescatarla posteriormente. Por ejemplo: los comentarios en un blog. c) La mayor parte de los sitios web y gestores de contenidos hoy día se basan en páginas web dinámicas, pero muchos sitios siguen siendo webs estáticas. d) Si creamos un sitio web dinámico no podremos ser indexados por buscadores como Bing, Google o Yahoo.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
¿ES PHP UN BUEN LENGUAJE DE PROGRAMACIÓN? Los orígenes de PHP están fechados en torno al año 1995. Sin embargo, fue a partir del año 1999 con la publicación de PHP 4 cuando este lenguaje de programación tomó un verdadero auge. En sus primeros estadios de desarrollo, PHP se denominaba también “Zend Engine”, nombre que provenía del nombre de sus creadores: Zeev Suraski y Andi Gutmans.
En el año 2004 fue lanzada la versión 5 de PHP basada en el nuevo motor Zend Engine 2.0. Esta nueva versión ofrecía mejoras para aplicaciones en servidores dedicados como por ejemplo un mejor soporte para la programación orientada a objetos y una extensión completamente nueva para el uso de MySQL, una de las bases de datos más usadas en servidores. La versión 6 de PHP ha estado en preparación durante largo tiempo en formato de borrador, sin llegar a publicarse. Por ello se propuso que la nueva versión de PHP se llamara PHP 7, dejando PHP 6 como una versión no publicada. Algunas estadísticas indican que alrededor del 60% de los sitios Web en Internet utilizan PHP. Este dato realmente no es comprobable a ciencia cierta, lo que sí es cierto es que PHP es un lenguaje de programación que goza de gran popularidad y difusión. A esta circunstancia hay que añadir el hecho de que páginas web de mucha importancia como Wikipedia o Yahoo se apoyan en este lenguaje, lo cual demuestra que es un lenguaje muy potente que puede servir desde para pequeñas páginas web hasta para grandes portales.
Muchas de las aplicaciones que se generan en comunidades de programadores y usuarios de software libre usan PHP porque está disponible gratuitamente y es potente. Gracias a eso, grandes proyectos como Wordpress, Joomla o Drupal han basado su desarrollo en el lenguaje de programación PHP.
En lo referente a si PHP es un “buen” lenguaje de programación hay que tener en cuenta muchos factores ya que el resultado final de un desarrollo web o de una aplicación web no sólo depende de la herramienta sino de quién la maneja y cómo la maneja. Podemos afirmar que PHP utilizado correctamente es un muy buen lenguaje de programación.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Lo que está claro es que, aunque tiene ventajas e inconvenientes, es uno de los lenguajes de programación más difundidos en Internet y se encuentra disponible en prácticamente la totalidad de los servidores dedicados. Cuando algo tiene éxito y amplia difusión, “por algo será”. LA EVOLUCIÓN DE PHP EN EL TIEMPO. LAS VERSIONES.
PHP 3 PHP 3.0, liberada en 1998, era la primera versión que se parecía fielmente al PHP tal y como lo conocemos hoy en día. Una de las mejores características de PHP 3.0 era su gran extensibilidad. Cuando hablamos de extensibilidad nos referimos a la existencia de un núcleo o core al que se le pueden ir añadiendo fragmentos de código que permiten hacer más cosas. Se trataría de algo parecido a tener una base sobre la que podemos ir añadiendo piezas. Veamos una imagen:
En esta imagen, correspondiente a los juegos de niños armables “Lego”, vemos cómo existe una base verde. Esa base sería el core o núcleo de PHP. Luego, aprovechando que esa base tiene preparados los anclajes para seguir poniendo piezas, vemos que se le han añadido extensiones. Por ejemplo, la primera extensión que tiene una base azul podría ser una extensión que permita la gestión de correos electrónicos. La segunda extensión, que tiene una base verde, podría ser una extensión para gestionar imágenes, y así sucesivamente… Además de facilitar el trabajo con muchas bases de datos, protocolos y sistemas informáticos, las características de extensibilidad de PHP 3.0 atrajeron a muchos programadores a unirse al proyecto y enviar nuevos módulos de extensión. Esta fue la clave del enorme éxito de PHP 3.0: que fue un proyecto abierto al que se unieron muchos programadores formando una comunidad.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Todo el nuevo lenguaje fue liberado con el nombre de 'PHP', con el significado de ser un acrónimo juego de las letras iniciales de “Hypertext Preprocessor”. A partir de su lanzamiento, PHP creció pasando a ser usado por miles de programadores y cientos de miles de sitios Web. Se estima que PHP 3.0 conquistó una fracción del total de servidores mundiales de en torno al 10 %, lo cual fue un éxito rotundo.
PHP 4 La principal novedad de PHP 4 está en el intérprete del lenguaje PHP. Con la nueva versión se lograron aumentos de entre 5 y 10 veces en la velocidad de ejecución de páginas PHP respecto a la versión anterior, lo cual fue un salto muy importante. Además del aumento en rendimiento, se introdujeron novedades relacionadas con el soporte de objetos en PHP. La programación orientada a objetos es una forma avanzada de programación y gracias a estas características PHP se encuentra entre los lenguajes de vanguardia. Otra nueva característica de PHP 4 fue que podía soportar hilos cosa que en PHP 3 no era posible. Un hilo es básicamente una tarea que puede ser ejecutada en paralelo con otra tarea. La principal ventaja que podemos obtener de esta funcionalidad es que se pueden estar haciendo varias cosas al mismo tiempo sin tener que esperar a que se termine una tarea para empezar otra. Para los programadores, PHP 4 incluía un depurador. Un depurador viene siendo un asistente que nos ayuda a detectar dónde se encuentran los errores en los programas o código de desarrollo. Esto ayuda mucho al programador y le evita quebraderos de cabeza por no poder localizar errores. Gracias al depurador, se podían seguir con mayor profundidad esos errores “misteriosos” que hacían perder mucho tiempo.
PHP 5, PHP 6 Y PHP 7 La principal característica de PHP 5 con respecto a PHP 4 es la mejora en la programación orientada a objetos (POO). Aunque este tipo de programación ya se había introducido en el lenguaje desde PHP 3, las versiones anteriores a PHP 5 tenían bastantes limitaciones para el uso de este tipo de programación.
La orientación a objetos es una manera de programar que es muy usada hoy en día. No entraremos en detalles sobre ella de momento, porque es algo avanzado dentro de la programación y en este curso trataremos de avanzar poco a poco desde lo más básico hasta lo más complejo.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
El principal objetivo de PHP 5 ha sido mejorar los mecanismos de programación orientada a objetos para solucionar las carencias de las anteriores versiones. El resultado ha sido un lenguaje más potente, que cada vez es más popular y que cada vez se usa más, tanto a nivel profesional en empresas como a nivel de usuarios que quieren construir pequeñas páginas o portales web. Algunas personas dicen que PHP se parece cada vez más a Java, que es quizás el lenguaje de programación más usado en el mundo, y que también es un lenguaje de programación orientado a objetos.
¿QUÉ VERSIÓN DE PHP USAR? La versión de PHP a usar depende en gran medida de qué desarrollo queramos hacer. Por ejemplo, si vamos a usar PHP para el gestor de contenidos Joomla 1.0, no es lo mismo que si vamos a usarlo para Joomla 1.5 porque cada uno tiene sus propias necesidades en cuanto a la versión de PHP a usar. Es decir, cada aplicación debe ir con su versión de PHP adecuada al igual que a un vehículo a motor debemos echarle el tipo de combustible adecuado. Si a un coche diesel le echamos gasolina, no funcionará bien. Si una aplicación que fue concebida para PHP 4 la intentamos ejecutar usando PHP 5, probablemente ocurra lo mismo: no funcionará bien. También debemos tener en cuenta que usar siempre la última versión de algo tiene sus riesgos. Por ejemplo las últimas versiones no suelen estar tan testeadas como las anteriores y se pueden producir ‘agujeros de seguridad’ que tendremos que tapar con algún parche. En nuestra opinión la versión de PHP que debemos usar es la que mejor se adapte a nuestras necesidades y, dentro de ésta, la que sea más estable. Para este curso recomendaremos usar PHP 5.x (al escribir 5.x nos referimos a cualquier versión de PHP 5). También es posible seguirlo usando PHP 4.x No te preocupes ahora por la versión pues de cara al aprendizaje básico no es importante. En cambio, sí deberás prestar atención a la versión si tratas de instalar aplicaciones como Joomla, Drupal o WordPress en un servidor, pues hay que asegurarse de que la versión de la aplicación sea compatible con la versión de PHP en el servidor.
EJERCICIO Busca información en internet sobre el actual estado de desarrollo de las versiones PHP. ¿Cuál es la última versión estable publicada? ¿En qué versiones se está trabajando como borrador?
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
¿QUÉ NECESITO PARA ESCRIBIR CÓDIGO PHP Y CREAR PÁGINAS WEB DINÁMICAS? Los requisitos indispensables para poder escribir y crear páginas PHP son los siguientes: •
Disponer de un editor de textos con el que escribir el código de la página PHP. Por ejemplo el Notepad+ + es más que suficiente (el “Bloc de notas” de Windows también valdría pero es mucho más limitado).
En vez de un editor de textos podríamos usar un programa más avanzado (entorno de desarrollo), pero en este curso vamos a centrarnos en el manejo básico de PHP, por lo que utilizaremos un editor de textos. •
Un servidor dónde nuestras páginas PHP sean interpretadas y devueltas después de dicha interpretación.
•
Una base de datos donde guardaremos, recuperaremos y consultaremos nuestros datos.
•
Un navegador web, como por ejemplo Google Chrome. Puede valer cualquier otro como Mozilla Firefox, Internet Explorer, Safari, etc.
Podemos destacar dos opciones: OPCIÓN 1 La primera opción sería la de trabajar en local. Para ello podemos hacer uso de un paquete personal como WAMP SERVER que nos ahorrará tiempo y quebraderos de cabeza. Este paquete instalará un servidor Apache, un servidor de base de datos MySQL, con el gestor phpMyAdmin y , por supuesto, PHP. Es decir, instalando un programa en nuestro ordenador podemos simular un servidor dentro de él.
© aprenderaprogramar.com, 2006-2029
OPCIÓN 2 Otra posible opción sería la de utilizar un servidor remoto. Alguno gratuito podría valer sin más problemas. Para ello, nos registraríamos en cualquier servicio hosting que ofrezca alojamiento gratuito y a partir de hay con un cliente ftp, como FileZilla, crearíamos nuestras páginas webs dinámicas.
Módulo: Programación III
Docencia Informática
TIPOS DE PAQUETES DE SERVIDOR PARA INSTALACIÓN EN NUESTRO ORDENADOR. Entre los paquetes más populares, podemos destacar y nombrar. Nombre
Descripción
WAMP SERVER
Wamp Server utiliza las siguientes herramientas: Windows como Sistema Operativo, Apache, como servidor web, MySQL, como gestor de bases de datos y PHP como intérprete del lenguaje de programación PHP.
LAMP SERVER
Lamp Server es un sistema análogo pero que funciona bajo el Sistema Operativo Linux.
MAMP SERVER
Mamp Server es un sistema análogo pero que funciona bajo el Sistema Operativo Macintosh.
XAMPP SERVER
Este paquete tiene la característica principal que se puede instalar para cualquiera de los diferentes sistemas operativos, es decir, existen versiones tanto para Windows como para Linux, Macinstosh. Siendo, también, un sistema análogo al Wamp Server.
Logo
¿Cuál de estos paquetes es mejor? Esta pregunta es de difícil respuesta. Si usamos Linux o Macintosh y queremos instalar un paquete de este tipo, hemos de usar el propio de nuestro sistema operativo. Si usamos Windows, nosotros recomendamos Wamp, pero Xampp puede ser igualmente válido. Más importante que elegir entre uno de estos paquetes, es elegir si trabajar en local o en remoto. Nosotros vamos a recomendar trabajar en remoto. Los motivos para ello y cómo hacerlo se expondrán en próximas entregas. Por ahora, debemos conocer simplemente las alternativas.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
EJERCICIO Responde a las siguientes preguntas indicando verdadero o falso y justicando brevemente tu respuesta: a) Para escribir código PHP necesitamos un IDE con un compilador, por ejemplo Aptana Studio. b) No es posible visualizar páginas php en local a no ser que utilicemos un emulador de servidor como Wamp, Xampp o similar. c) Trabajar en local quizás sea más rápido si tenemos una conexión a internet lenta, pero por el contrario no emulamos de forma exacta las condiciones de un servidor real. d) Si trabajamos en local sólo podremos crear código HTML, teniendo que posponer la creación de código PHP a un momento posterior. e) Trabajar en remoto nos obliga a pagar la contratación de un servicio de hosting.
Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
UNIDAD II PREPARANDO EL ENTORNO DE DESARROLLO. DESCARGAR E INSTALAR NOTEPAD++. Vamos a comenzar a preparar el entorno con el que vamos a trabajar para poder crear páginas web durante este curso. Lo primero que debemos hacer es descargar el editor de texto Notepad++ e instalarlo. Para ello nos vamos a ir a la dirección siguiente: http://notepad-plus-plus.org
Cuando la página haya terminado de cargar, hacemos click en la sección download del menú. Ten en cuenta que la apariencia de la página web puede cambiar cada pocos meses.
En la página web que nos aparecerá, descargamos la versión “Installer” actual. El installer es el paquete de instalación automática más fácil y rápido para instalar Notepad++.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Una vez descargado el archivo, lo ejecutamos para instalarlo en nuestro ordenador haciendo doble click sobre él. El proceso de instalación es muy simple y no entraremos a explicarlo con más detalle, simplemente vete aceptando para ir cumpliendo los pasos de la instalación. Cuando tengamos instalado el programa, ya dispondremos del editor de texto Notepad++, con el que podremos abrir y editar cualquier fichero HTML. Podremos acceder al programa desde Inicio -- > Programas -- > Notepad++ ó desde el icono de acceso directo en el escritorio si se ha creado.
EJEMPLO: COMENZAR A USAR NOTEPAD++ Desde el explorador de archivos de Windows, creamos una carpeta llamada curso_php_apr2 en la unidad C. Una vez creada la carpeta, entramos en ella. Abrimos Notepad++ y pulsamos en Archivo -- > Guardar. Como nombre de archivo escibimos CU00808B.php (este nombre de archivo es solo un ejemplo, puedes ponerle el que tú quieras) y lo guardamos dentro de la carpeta creada. Paso seguido, cierra el programa. Para editar este archivo (o cualquier otro) con el programa Notepad++, podemos hacer dos cosas. Bien abrir Notepad++ y elegir Archivo -- > Abrir y seleccionar el archivo, o bien hacemos lo siguiente: Clickamos sobre el archivo con el botón derecho del ratón y se mostrará un menu similar a éste (Nota: en algunos casos aparecen conflictos entre la versión de Notepad++ y la versión de Windows y este menú contextual no se muestra. En este caso, tendremos que abrir primero Notepad++ y luego la opción Abrir del menú Archivo.)
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
En el menú desplegado seleccionamos “Edit with Notepad++”. De una forma u otra, habremos abierto el archivo php con nuestro editor Notepad++. Ahora escribimos el siguiente código PHP y guardamos el archivo. <?php echo "Curso básico de PHP. "; ?>
Una vez realizados los pasos anteriores debemos seguir preparando el entorno de desarrollo antes de poder visualizar la página PHP creada porque todavía no disponemos de un servidor PHP que interprete nuestro código PHP. Es decir, no podrás ver la página web simplemente haciendo doble click sobre el archivo. Ten cuidado porque si copias el código en vez de escribirlo es posible que tengas problemas: hay muchos tipos de comillas: “curvadas”, “sin curvar”, etc. En el código las comillas son simples, si tú las Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
has copiado de otro sitio es posible que el formato de las comillas no sea el correcto. Esto puede pasar también con otros caracteres. Esto no significa que no puedas cortar y copiar código de otro sitio, sino que debes tener presente que se te pueden presentar problemas con el juego de caracteres (ten cuidado especialmente si pretendes copiar algo desde Microsoft Word porque es habitual que haya problemas con los caracteres). Si has seguido paso a paso todo lo que hemos expuesto y has llegado a visualizar en pantalla el texto, es que has completado correctamente la instalación de Notepad++, que es el editor que vamos a usar durante el curso (aunque si lo deseas también puedes seguir el curso usando otro editor). Si no has podido instalarlo, revisa las instrucciones y comprueba que las hayas seguido correctamente, consulta la ayuda de Notepad++ ó consulta en los foros de aprenderaprogramar.com para obtener ayuda.
EJERCICIO Cuando instalamos Notepad++, éste se instala dentro de una carpeta en nuestro computador, y dentro de esa carpeta habrá un archivo ejecutable (normalmente Notepad++.exe) que es el que se invoca cada vez que se quiere ejecutar el programa. Responde a la siguiente pregunta: ¿Cuál es la ruta del archivo ejecutable de Notepad++ dentro de tu computador? La respuesta depende del computador y sistema operativo que estés utilizando. Un ejemplo de respuesta puede ser la siguiente: C:\Program Files\Notepad++\Notepad++.exe
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
CONFIGURACIÓN BÁSICA DE NOTEPAD++ PARA CREAR PÁGINAS PHP Antes de poder comenzar a crear páginas PHP, necesitaremos realizar una configuración básica de nuestro entorno de desarrollo. En nuestro caso, la configuración será bastante simple y consistirá en elegir la codificación con la que guardaremos nuestros ficheros PHP y seleccionar el lenguaje con el que vamos a trabajar.
Lo primero que vamos a hacer es abrir el programa Notepad++. Para esto, nos vamos a Inicio -- > Programas -- > Notepad++ -- > Notepad++. Se nos abrirá el programa, mostrando una pantalla similar a la siguiente.
Para seleccionar la codificación con la que trabajaremos durante todo el curso, en la pestaña Formato, hacemos click sobre “Codificar en UTF-8 sin BOM”, tal y como se indica en la imagen siguiente.
Comprueba periódicamente que la opción de codificación sea siempre “Codificar en UTF-8 sin BOM”. Si no es así, puedes tener problemas y no obtener los resultados deseados. Ahora tendremos que indicar que vamos a utilizar el lenguaje de etiquetas PHP. Para ello, en la pestaña lenguaje abrimos P y seleccionamos PHP de entre todas las opciones posibles. Sería algo similar a lo que se muestra en la imagen siguiente. Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Ya tenemos todo listo para poder empezar a crear nuestras páginas PHP.
AUTOCOMPLETAR. UNA VENTAJA DE NOTEPAD++ Para facilitar la escritura de código Notepad++ cuenta con una opción de autocompletar, la cual se activa en la pestaña Configurar --> Preferencias. En la ventana que nos aparecerá, dentro de la pestaña Copia de seguridad/Autocompletar ó Autocompletar (autocompletion) debemos activar la casilla “Habilitar autocompletar en cada entrada” (Enable autocompletion on each input) y “Pistas para los parámetros de la función” (Function parameters hint on input). Ten en cuenta que la situación de los menús y opciones puede variar de una versión a otra de Notepad++, por lo que no siempre encontrarás estas opciones en el mismo sitio que las estamos describiendo.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
AUTOCERRADO DE ETIQUETAS. OTRA VENTAJA DE NOTEPAD++ Para activar el autocerrado inteligente de etiquetas HTML, en menú superior seleccionamos TextFX --> TextFX Settigns --> Autoclose XHTML/XML tag En algunas versiones de Notepad++ no aparece TextFX en el menú superior. En este caso, debemos: a) En el menú Configurar -- > Preferencias. En la ventana que nos aparecerá, tenemos que buscar la opción Autocompletar (autocompletion) como hicimos anteriormente y marcar la opción “html/xml close tag” b) O bien instalar el plugin TextFX Characters accediendo a Plugins, elegir TextFX Characters y pulsar Install. Una vez instalado el plugin, activar Autoclose XHTML/XML tag.
También es de interés activar TextFX --> TextFX Settigns --> Autoclose {([. En caso de no tener TextFX usaríamos en el menú Configurar - > Preferencias, Activar autoinsert {([.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Estas opciones nos permiten en general una escritura más rápida, aunque si en algún momento nos resultan molestas las podemos desactivar.
OTRAS VENTAJAS DE NOTEPAD++ Quizás te preguntes por qué hemos elegido Notepad++ para este curso. La respuesta es que tiene diversas ventajas, por ejemplo:
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
- Consume pocos recursos del sistema. No sobrecargarás tu ordenador porque el programa es al mismo tiempo que potente, ligero. - Dispone de la función autocompletar que ya hemos citado, que nos facilita ayuda mientras estamos escribiendo el código. - Permite abrir múltiples archivos simultáneamente, y reemplazar un texto en todos los archivos abiertos a la vez si así lo deseamos. - Permite abrir dos archivos y realizar una comparación línea a línea entre ellos, indicándonos en qué líneas existen diferencias entre un archivo y otro. - El código se nos muestra con un conjunto de colores que permite ver con claridad las etiquetas de apertura y cierre y otros elementos especiales de la codificación. - Permite ampliar sus posibilidades mediante la instalación de plugins gratuitos disponibles en internet. - Tiene muchísimas más posibilidades, pero no podemos citarlas todas. En conjunto, es un buen editor útil para programadores a nivel profesional y para principiantes. - Es software libre que podemos descargar gratuitamente desde internet.
Como verás Notepad++ nos parece un buen editor de código para programación. Esto no quiere decir que no haya otras editores igual de buenos y potentes. De hecho, si ya eres usuario de algún otro editor puedes seguir este curso usándolo.
EJERCICIO En el menú Ayuda (?) aparecerá una opción “Acerca de Notepad…” (About Notepad++). Consulta la información sobre Notepad++ y responde a esta pregunta: ¿Qué versión de Notepad++ tienes instalada en tu computador? Una opción interesante de Notepad++ es que dispone de numerosos plugins. Busca algún plugin que te resulte de interés, instálalo (consulta antes la documentación sobre el plugin y comprueba que sea un plugin actualizado y compatible con tu versión de Notepad++) y prúebalo. Para la instalación puedes utilizar el menú Plugins - > Plugins Manager o hacerlo de otras maneras. Una vez instalado y probado el plugin responde: a) ¿Cuál es el nombre del plugin? b) ¿Quiénes son el autor o autores? ¿Cuál es su página web? c) ¿Cuál es la utilidad del plugin? Nota: no es recomendable instalar plugins antiguos.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
DESCARGAR E INSTALAR EL CLIENTE FTP FILEZILLA. TRABAJAR REMOTAMENTE Una forma de trabajar en desarrollos webs es remotamente. Es decir, modificando directamente en el servidor, donde tengamos nuestro sitio web, los archivos necesarios. La otra forma de trabajo sería el trabajo en local, es decir, manteniendo los archivos en nuestro propio ordenador.
En general, los desarrollos web se hacen sobre servidores remotos y para trabajar con ellos tenemos que trabajar remotamente. Para esto, lo que tenemos que hacer en primer lugar es instalar un cliente FTP. Un cliente FTP es un programa que nos permite conectarnos a un servidor FTP para transferir archivos y realizar otras tareas (renombrar archivos, crear directorios, asignar permisos, etc.). Nosotros vamos a usar en este curso un cliente ftp gratuito y de gran popularidad porque es muy útil y potente. Para descargar este programa gratuito, lo primeros que vamos a hacer es ir a la dirección web siguiente: http://filezilla-project.org/ Aparecerá una web similar a la que se muestra en la siguiente imagen (aunque ten en cuenta que el aspecto puede ir variando cada pocos meses).
Ahora tendremos que descargar el cliente haciendo click en Download FileZilla Client. Busca el link de descarga y ten cuidado de elegir Filezilla Client y no Filezilla Server, ya que es el client el que buscamos. Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Tras realizar este paso, se nos abrirá una nueva página web con los links de descarga (el aspecto de la web puede cambiar cada pocos meses).
Para que comience la descarga del programa, haremos click en Download Now comprobando que sea la versión adecuada para nuestro sistema operativo (lee lo que indica junto al link de descarga). Una vez descargado, si usamos Windows lo instalaremos como cualquier otro programa de Windows. Tener en cuenta que si en vez de Windows estamos usando Linux o Macintosh, existen versiones de Filezilla propias de estos sistemas y debemos elegir la adecuada según el sistema que estemos usando. Una vez instalado el programa lo abrimos visualizando una imagen que será similar a la siguiente.
Ahora tendremos que crear una conexión con nuestro servidor FTP y conectarnos. Para ello hacemos click en Archivo -> Gestor de Sitios © aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Y en la pantalla que se nos mostrará, seleccionamos nuevo sitio. Aquí sería donde introduciríamos los datos de acceso si los tuviéramos. Como ahora no los tenemos, cerramos la ventana.
Para establecer una conexión con un servidor remoto en general tendremos que: -
Especificar el nombre de servidor: para conocerlo tenemos que consultar al proveedor que ofrece el servicio del servidor, o que nos hayan facilitado este dato.
-
Especificar como modo de acceso “Normal”
-
Introducir un nombre de usuario que nos habrá facilitado el proveedor que ofrece el servicio del servidor (o que habremos establecido nosotros mismos).
-
Introducir una contraseña que nos habrá facilitado el proveedor que ofrece el servicio del servidor (o que habremos establecido nosotros mismos). Ten en cuenta que en algunos servidores antes de establecer una conexión ftp hay que dar un paso previo que consiste en “crear una cuenta ftp”. Si no sabes si dispones de una cuenta ftp, consulta a tu proveedor. Una vez introducidos los datos de la conexión le daríamos a conectar y aparecería una pantalla similar a la siguiente, donde, como podemos observar, tenemos un explorador de archivos. Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Esto nos permitirá modificar directamente en el propio servidor los archivos deseados (antes de hacer modificaciones en el servidor es conveniente hacer copia de seguridad y guardarla en local de modo que si cometemos algún error o borrado accidental podamos recuperar los archivos) y subir o descargar los archivos locales que queramos.
Nota: explicaremos más adelante dentro de este mismo curso cómo crear una cuenta de hosting en un servidor, lo que nos permitirá conectar con el servidor usando Filezilla. Si no dispones de una cuenta con nombre de servidor, nombre de usuario y password no intentes conectarte usando Filezilla porque no podrás. En este momento del curso, lo único necesario es que compruebes que tienes Filezilla instalado en tu computador y que puedas abrir el programa sin problemas.
EJERCICIO Si has instalado Filezilla, éste se ejecuta gracias a que existe un archivo ejecutable localizado en una carpeta de nuestro computador. Responde a las siguientes preguntas: a) ¿En qué ruta se encuentra el archivo ejecutable de FileZilla en tu computador? La respuesta depende del computador y sistema operativo que estés empleando. Un ejemplo de respuesta puede ser este: C:\Program Files\FileZilla FTP Client\filezilla.exe
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
b) Consulta la opción de menú Ayuda (Help) y responde a las siguientes preguntas. ¿Cuál es la versión de Filezilla que has instalado? ¿Cuáles son los datos de tu sistema operativo? Puedes usar la opción <<Copy to clipboard>> para recuperar estos datos desde la ventana de la ayuda de Filezilla.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
LAS VENTAJAS DE GOOGLE CHROME. ¿POR QUÉ USAR CHROME? En este curso vamos a usar Google Chrome, pero si lo prefieres por algún motivo como tenerlo ya instalado, Mozilla Firefox también nos parece una opción recomendable, y puedes seguir este curso también con este navegador.
Otros navegadores como Internet Explorer también se pueden usar, pero en principio no es lo más recomendable por diversos motivos. Uno de ellos es que no dispone de las mismas herramientas que Chrome o Firefox, que son los navegadores más usados por programadores y desarrolladores web. Vamos a citar algunas ventajas de Google Chrome: a) El navegador se abre muy rápidamente en comparación con otros navegadores. Google Chrome es muy ligero, por eso tarda poco en abrirse. b) El navegador tiene una buena velocidad de carga de las páginas web por las que vamos navegando. Esto se debe a su estructura interna, que también es ligera. c) Por el mero hecho de instalarlo, ya disponimos de una potente herramienta de análisis y depuración de páginas web o “Inspeccionador de elementos”. Mozilla Firefox también viene con herramientas de análisis incorporadas, y además dispone de la extensión “Firebug”, muy valorada por los programadores. d) Si tenemos abiertas varias pestañas y una de ellas se tiene que cerrar debido a algún error o bloqueo, no se nos quedará colgado el programa al completo, sino únicamente la pestaña o pestañas afectadas.
DESCARGAR E INSTALAR EL NAVEGADOR GOOGLE CHROME. VISUALIZAR PÁGINAS HTML. Para poder visualizar nuestras páginas web, vamos a instalar el navegador Google Chrome. Lo primero que tenemos que hacer para instalar dicho navegador, es descargarlo de la web oficial de Google en la dirección: http://www.google.com/chrome?hl=es También puedes acceder simplemente escribiendo “descargar google chrome” en un buscador (Google, Yahoo, Bing, etc.) Una vez accedamos hemos de buscar el link de descarga.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Hacemos click en ‘Descargar Google Chrome’. Nos aparecerá una página donde se nos pide que aceptemos las condiciones. Aceptamos para instalar el navegador.
El proceso normalmente comienza mostrando una pantalla que indica “Gracias por probar Google Chrome” y de forma automática, comienza a su vez el proceso de instalación en nuestro ordenador (si te pide permiso para la instalación acepta para permitir el proceso).
Una vez descargardo e instalado, ya podremos ver páginas web con éste navegador. Para acceder a Google Chrome, nos iremos a Inicio --> Todos los programas --> Google Chrome. También podremos acceder desde el escritorio a través de un enlace directo. Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
LAS CUESTIONES MÁS BÁSICAS EN GOOGLE CHROME (Y EN GENERAL PARA CUALQUIER NAVEGADOR) Al abrir el navegador Google Chrome se nos mostrará una ventana similar a la siguiente. Ten en cuenta que el aspecto puede variar según la versión de Chrome que estemos usando, por tanto tendremos que buscar las opciones según aparezcan en nuestro computador, que puede diferir en algunos detalles de lo que indicamos aquí.
Una vez abierto Chrome podremos abrir tantas pestañas como queramos, introducir una dirección URL en la barra de direcciones, recargar la página actual (también podremos pulsar F5 como atajo de teclado para conseguir recargar una página) y acceder al menú de opciones de Google Chrome entre otras operaciones. Para cambiar la página web de inicio que viene por defecto en nuestro navegador Google Chrome (la que aparece cada vez que abrimos el navegador), procederemos de la siguiente forma: a) En algunas versiones de Chrome, tendremos que hacer click en ‘Llave inglesa’ y dentro del menú desplegable que nos aparece en la opción ‘opciones’. Se nos abrirá una nueva pestaña donde en © aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
la opción ‘Pagina de inicio’ pondremos por ejemplo http://aprenderaprogramar.com ( o la página que queramos). Otras versiones no traen llave inglesa.
b) En otras versiones de Chrome, haremos click en el icono a la derecha de la barra de direcciones para desplegar el menú y elegimos “Configuración”. En la opción “Iniciar sesión”, elegimos la opción “Abrir una página específica o un conjunto de páginas -- > Establecer páginas”, introducimos la URL de la queramos sea nuestra página de inicio, por ejemplo http://aprenderaprogramar.com ( o la página que queramos) y pulsamos aceptar. c) Otra opción para acceder a la configuración es escribir en la barra de direcciones lo siguiente (como si fuera una dirección web): chrome://settings/
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
LIMPIAR LA CACHÉ Y OTRAS OPERACIONES ÚTILES QUE USAREMOS CON FRECUENCIA Llamamos “caché” o “cache” a contenidos que se almacenan en nuestro navegador y que no se descargan desde internet, sino que los tenemos localmente en nuestro equipo. Estos contenidos pueden ser texto o imágenes y permite que cuando navegamos por una web las páginas se muestren más rápido ya que parte de la información no se descarga de internet (o no se actualiza desde los archivos fuente) sino que se mantiene en nuestro navegador. Sin embargo, cuando estamos creando páginas web esto puede dar lugar a resultados engañosos, ya que tras hacer una modificación puede que el navegador no la muestre por estar utilizando contenidos de la caché. Por tanto una operación que va a ser de gran utilidad, es limpiar la caché cuando deseemos que todo el contenido venga directamente de internet. Si no eliminamos la cache puede que lo que estemos visualizando en nuestra pantalla de ordenador sea información cacheada y, por lo tanto, no actualizada. Para limpiar la caché del navegador tenemos que hacer lo siguiente: Llave inglesa o icono para desplegar el menú --> Herramientas --> Eliminar (borrar) datos de navegación. También podemos acceder escribiendo directamente en la barra de direcciones chrome://settings/clearBrowserData como si se tratara de una dirección web.
En la pantalla que se nos muestra a continuación seleccionamos todas las opciones, y para definir desde cuándo en la opción “Eliminar elementos almacenados desde:” elegimos ‘el origen de los tiempos’ (es decir, borrarlo todo sin dejar nada).
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Para guardar una página web en local debemos simplemente ir a llave inglesa o icono de despliegue de menú y seleccionar ‘Guardar página como…’ y seleccionar el nombre y ubicación donde queremos guardar la página HTML. Para añadir una página a favoritos debemos clickar sobre marcadores (normalmente un icono con forma de estrella a la derecha de la barra de direcciones) y elegir el nombre y carpeta donde guardaremos el nuevo marcador favorito. Esto sirve para ir manteniendo una colección de enlaces a páginas web que visitamos con frecuencia, de forma que pulsando sobre el enlace accedemos directamente a la web sin necesidad de escribir la url en la barra de direcciones. Para visualizar esa colección de enlaces tenemos que desplegar el menú y elegir la opción Marcadores -- > Mostrar barra de marcadores. Si queremos ver las propiedades de una imagen clickamos sobre la imagen con el botón derecho del ratón y pulsamos en ‘Inspeccionar elemento’ en el menú desplegable que se nos abre. Así veremos el tamaño de la imagen. Para hacer zoom basta con utilizar los siguientes atajos de teclado: ‘Ctrl’ + ‘+’ (más zoom, es decir, pulsando la tecla CTRL y al mismo tiempo la tecla +, logramos acercar la vista), ‘Ctrl’ + ‘-‘ (menos zoom, es decir, alejar la vista). O si lo preferimos usar ‘Ctrl’ + ‘ruleta o rueda del ratón’ hacia arriba o hacia abajo, para acercar o alejar la vista. En cualquier caso, para volver a ver la página con su tamaño original sólo tenemos que pulsar ‘Ctrl’ + ‘0’.
CÓMO ACTUALIZAR GOOGLE CHROME Google Chrome se actualiza automáticamente cuando detecta que hay una nueva versión del navegador. El proceso de actualización se produce en segundo plano y no es necesario que realices Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
ninguna acción. No obstante, puedes comprobar si el navegador está actualizado pulsando sobre llave inglesa o icono para desplegar el menú --> Información de Google Chrome. Ahí te aparecerá un mensaje con la versión que estás usando actualmente, y te indicará si el navegador está actualizado o no. También puedes acceder a esta información escribiendo chrome://chrome/ en la barra de direcciones como si fuera una dirección web. Que el navegador se mantenga actualizado sirve para tratar de evitar posibles fallos de seguridad y ataques de virus o programas maliciosos.
EJERCICIO Consulta la opción de menú Ayuda (Help) de tu navegador y responde a las siguientes preguntas. ¿Qué navegador y qué versión de navegador estás empleando? Indica si las siguientes afirmaciones son verdaderas o falsas y justifica brevemente tu respuesta: a) Cuando creamos una página web con php y la visualizamos, al guardar la página con la opción Guardar como del navegador, guardaremos el código PHP que la generó. b) Cuando creamos una página web con php y la visualizamos, al guardar la página con la opción Guardar como del navegador, guardaremos el código HTML que la generó. c) Con la opción Guardar como del navegador no podemos guardar una página web debido a que el código PHP llega encriptado al navegador y éste no lo muestra al usuario.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
TRABAJAR EN LOCAL O CON UN SERVIDOR REMOTO PHP. ¿QUÉ ES MEJOR? En este artículo vamos a intentar mostrar las diferencias entre trabajar en local (en nuestro computador) o trabajar en un servidor remoto. Ambas opciones pueden ser válidas, aunque nosotros vamos a recomendar seguir este curso trabajando en remoto.
La principal diferencia se encuentra en que en un servidor remoto, ya dispondremos de las herramientas necesarias e instaladas. En el trabajo en local, tendremos que instalar las herramientas de trabajo necesarias: servidor web, PHP, MySQL, etc. (Las herramientas no tienen que ser exactamente las indicadas, sólo se muestran a modo de ejemplo). En un primer planteamiento podríamos pensar que sería mucho mejor trabajar en remoto porque el trabajo de la instalación de las herramientas y tecnologías necesarias ya estaría hecho. Pero esto puede ser algo no deseado porque no tendremos control total sobre esas herramientas y tecnologías, siendo el proveedor del hosting el que controlará las actualizaciones, configuraciones y herramientas instaladas. Aunque siempre podremos ponernos en contacto con dicho proveedor y indicarle que deseamos unas u otras configuraciones y ver si es posible el cambio por su parte. Además de las anteriores, otra de las diferencias entre estas dos formas de trabajar, es la actualización de los cambios en el servidor. Si trabajamos en remoto directamente sobre nuestro sitio web, los cambios se hacen instantáneamente ya que los archivos que modificamos son los que un usuario que navega por Internet puede observar. Esto tiene unos pros y unos contras. Como ventaja podemos indicar que, sabiendo lo que estamos haciendo y no cometiendo errores, tendremos una página actualizada al instante. Si cometemos errores y la página, con esos errores, no puede visualizarse, los usuarios de Internet tampoco podrán verla y esto es una desventaja. ¿Qué pasaría si trabajamos en local? Pues si trabajamos en local tendremos la ventaja de poder probar y visualizar todos los cambios en nuestro computador y hasta que esos cambios no sean de nuestro agrado, nadie más tendrá acceso a ellos, teniendo siempre nuestro servidor sin cambios. De esta manera, la página web no se vería modificada hasta que nosotros lo decidamos una vez hayamos probado los cambios. Ahora bien, cuando estos cambios sean de nuestro agrado y quedemos totalmente conformes, para que éstos sean visibles en Internet, tendremos que sobrescribir los archivos modificados localmente al servidor remoto. Es decir, hacemos un trabajo extra: primero, hacer las modificaciones en local, luego, trasladar esas modificaciones al servidor remoto. Si no tienes una buena conexión a Internet, lo más recomendable es trabajar en local y subir la página cuando esté terminada, ya que trabajar en remoto requiere una buena conexión a internet para poder guardar nuestro trabajo en el servidor remoto a medida que lo vayamos desarrollando.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Estas diferencias que hemos comentado serían las diferencias más claras entre estas dos formas de trabajar. ¿QUÉ ES MEJOR, TRABAJAR EN LOCAL O EN REMOTO?
La mejor forma de trabajo es la que mejor se adapta a nuestras necesidades y/o conocimientos. Las personas que están dando sus primeros pasos en programación PHP pueden elegir entre una opción u otra, y quizás ambas sean válidas. Nosotros vamos a recomendar que se trabaje en remoto por las siguientes razones: a) Se asemeja más a lo que va a ser el trabajo con desarrollos web reales. Aunque ahora se trate de aprendizaje, será un aprendizaje más cercano a lo que es la realidad. b) Nos podemos despreocupar (en cierta medida) de cuestiones de configuración del servidor e instalación de herramientas. c) Existen proveedores que ofrecen hosting gratuito, por lo que no habremos de contar con un dominio de internet propio ni una cuenta de hosting (alojamiento de archivos, bases de datos, etc.) de pago. Es cierto que las ofertas de servicio de hosting gratuito tienen limitaciones importantes, pero de cara al aprendizaje nos resultarán suficiente.
Las grandes empresas no suelen hacer modificaciones sustanciales de sus sitios web directamente sobre el sitio, sino que disponen de un servidor de pruebas (al que se denomina servidor de desarrollo) donde ensayan los cambios que, una vez contrastados, son trasladados al servidor de acceso público al que se suele denominar servidor de producción. Es decir, las grandes empresas no suelen trabajar en local (alojando todo en sus propios computadores) entre otras cosas porque buscan emular con la mayor fiabilidad posible lo que van a ser los ambientes y circunstancias de los servidores donde finalmente se van a alojar sus sitios web. En este curso vamos a explicar cómo trabajar sobre un servidor remoto. No obstante, si ya tienes instalado un servidor local (como Wamp ó Xampp) y estás acostumbrado a él también podrás seguir el curso usando cualquiera de estas plataformas.
EJERCICIO
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Indica si las siguientes afirmaciones son verdaderas o falsas y justifica brevemente tu respuesta: a) Trabajar en remoto en desarrollos web alude a que la persona que crea la página web realiza el trabajo desde distintos puntos de conexión, lo que permite por ejemplo que cree una página web mientras está viajando. b) Hoy día es posible disponer de forma gratuita de una dirección web y servicio de hosting gratuito, con lo cual podemos crear páginas web basadas en PHP sin necesidad de contratar un servicio de hosting. c) Las grandes empresas siempre trabajan en local (en sus propios computadores) antes de trasladar los cambios a los servidores de producción, con el fin de evitar caídas del servicio. d) WampServer permite emular un servidor en nuestro propio computador. También haría posible que nuestro computador funcionara como servidor remoto para servir contenidos a través de internet.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
CREAR UNA CUENTA DE HOSTING GRATUITA EN UN SERVIDOR PHP Y ACCEDER VÍA CPANEL Y VÍA FTP En esta entrega vamos a crear una cuenta de hosting gratuita en un servidor web que nos permita trabajar con PHP y accederemos a éste vía Panel de Control (Cpanel) y vía FTP.
CREAR CUENTA DE HOSTING GRATUITA En Internet hay muchas páginas web que permiten crear una cuenta de hosting gratuito en un servidor php: por ejemplo www.000webhost.com, www.byethost.com, www.agilityhoster.com y varios más. Creando una cuenta en un hosting gratuito, disponemos de un servidor (que compartimos con otros usuarios) donde podemos alojar una página web. Para este curso, vamos a utilizar un servidor gratuito porque es adecuado para aprender. En concreto usaremos el servidor de Byethost (byethost.com), aunque podríamos usar cualquier otro porque todos ellos son similares. También, si dispones de una cuenta de hosting de pago y de un dominio, puedes utilizar cualquier servidor siempre que ofrezca soporte php y base de datos MySql. En nuestro caso, en primer lugar crearemos la cuenta de hosting gratuita. Para ello, accedemos a la página web de Byethost, introduciendo en nuestro navegador la siguiente dirección: www.byethost.com. Hazlo y vete siguiendo los pasos que indicamos. Nos aparecerá una página que ofrece diferentes opciones (ten en cuenta que el aspecto puede variar cada pocos meses):
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Buscamos el enlace donde diga “Free hosting” (alojamiento gratuito) y pulsamos sobre él. Ahora debemos buscar la opción para crear una cuenta (sign up):
Una vez accedemos a la página de creación de una cuenta, se nos mostrará un formulario donde tendremos que rellenar una serie de datos. Aquí tendremos que tener en cuenta que el nombre de usuario que insertemos, estará ligado a la url de acceso a nuestro sitio. Es decir, si como nombre de usuario (username) introducimos ‘lacocinademarco’, la dirección de nuestro sitio Web será similar a la siguiente ‘http://lacocinademarco.byethost31.com’: En nuestro caso introduciremos una serie de datos a modo de ejemplo tal y como podemos ver en la imagen que se muestra a continuación.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Una vez hayamos finalizado de introducir los datos solicitados, haremos click sobre el botón Registrar (Register) y nos aparecerá una página Web indicándonos que se nos ha enviado un correo electrónico a la dirección de correo que hayamos facilitado en el formulario y en ese correo nos indicarán un enlace web (dirección url) donde debemos activar nuestra cuenta. El último paso que nos quedaría para crear nuestra cuenta de hosting gratuita sería entrar a nuestro correo y hacer click en el enlace de activación del correo de Byethost que nos acaba de llegar. Dear byethost7.com's Member, Thank you for registering with byethost7.com. Please click on the link below to activate your account. If the page does not display, you may copy and paste the link to your browser. http://securesignup.net/activate.php?user=b7_1022999&email=contacto@aprenderaprogramar.com&hash=8ggfg8sfdfd17c9 8efdghj99638c764&token=-576345454 While you wait for your account to activate, please 'like' us at http://www.facebook.com/free.byethost best regards byethost7.com
Acto seguido se nos indicará que la activación fue realizada con éxito y se nos enviará un nuevo correo electrónico con la información detallada de nuestros datos de acceso. El correo que nos envía Byethost con la información de acceso detallada tiene más o menos el siguiente contenido:
“Dear Valued Customer, Thank you for registering at byethost7.com. We are…”
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Además nos envían los datos de acceso (los que ponemos aquí son a modo de ejemplo, tú debes haber recibido tus propios datos de acceso): Cpanel Username: b7_datos Cpanel Password: elpassword Your url: http://apr2.byethost7.com or http://www.apr2.byethost7.com FTP Server: ftp.byethost7.com FTP Loging: b7_datos FTP Password: elpassword MySQL Database Name: must create in Cpanel MySQL Username: b7_datos MySQL Password: elpassword MySQL Server: see CPanel Cpanel URL: http://cpanel.byethost7.com
Estos datos son importantes pues son los que nos permitirán gestionar todo lo necesario relativo a nuestra página web. Conviene imprimirlos además de mantenerlos bien localizados en un archivo de texto dentro de nuestro ordenador.
ACCEDER VÍA PANEL DE CONTROL (CPANEL) Para acceder vía Cpanel, debemos ir a la url que nos hayan facilitando, en este ejemplo http://cpanel.byethost7.com, e introducir el nombre de usuario y la contraseña.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
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 información de la cuenta, un área de administrador de archivos que nos proporciona un explorador de archivos parecido al de Windows o Filezilla pero que además nos permitirá descomprimir archivos .zip y, una tercera área con el que podremos acceder a las bases de datos previamente creadas.
ACCEDER VÍA FTP CON FILEZILLA El proceso es el explicado en la anterior entrega del curso dedicada a Filezilla, con la salvedad que los datos necesarios son los que encontraremos en el Cpanel en el área marcada de información del sistema, que serán los mismos que hayamos recibido por correo electrónico. Una vez abierto Filezilla, introducimos nombre de servidor, nombre de usuario y contraseña y de esta manera accedemos al sistema de archivos de nuestro servidor. Te recomendamos que guardes los datos de la conexión, para ello accede a FileZilla y haz en Archivo -> Gestor de Sitios para almacenar el acceso. Accede al servidor usando FileZilla para comprobar que esté todo correcto. Si logras acceder debes ser capaz de visualizar el sistema de carpetas y archivos en el servidor:
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Si no logras acceder a Cpanel o no logras acceder al sistema de archivos remoto usando FileZilla, escribe una consulta en los foros aprenderaprogramar.com.
EJERCICIO Cuando se trabaja con un servidor es importante saber cómo visualizar el sistema de archivos en el servidor, cómo subir, bajar y borrar archivos: a) Crea un archivo en tu computador denominado prueba.txt y súbelo al servidor remoto usando FileZilla. Para ello, desde el explorador de Windows arrastra el archivo hasta la ventana de FileZilla donde se encuentran los archivos remotos. Una vez subido (transferido de tu computador al servidor) en la parte inferior te aparecerá Transferencias Satisfactorias (1) que indica que se ha transferido un archivo. Pincha sobre la ventana del sistema de archivos en remoto y pulsa F5 para refrescar la vista, ahí debe aparecer el archivo prueba.txt. b) Borra el archivo del servidor remoto usando FileZilla. Para ello pincha encima del nombre de archivo y pulsa la tecla Supr (borrar ó Del). c) También se puede acceder al sistema de archivos mediante un file manager o similar desde el panel de control (Cpanel o similar) del servidor. Accede al file manager y sube el archivo prueba.txt al servidor. d) Borra el archivo prueba.txt del servidor usando el file manager.
PREPARAR EL ENTORNO PARA TRABAJAR EN REMOTO
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
En entregas anteriores ya se indicó como acceder vía FTP al servidor remoto. Por lo tanto, no vamos a volver a explicar como conectarnos a nuestro servidor mediante FTP y daremos por supuesto que ya estamos conectados.
Una vez estemos conectados, nos aparecerá una imagen similar a la siguiente
Ahora debemos entrar en el directorio remoto htdocs (en otros servidores el nombre del directorio de trabajo suele ser public_html ó www). Este directorio es en el que debemos crear nuestras páginas en PHP ya que será el directorio que el servidor use para servir las páginas web. Los archivos en este directorio serán accesibles escribiendo la dirección web raíz de nuestro sitio. Si tenemos un dominio propio, accederemos escribiendo http://www.nombreDominio/index.php. Si hemos creado una cuenta de hosting gratuito será accesible desde el navegador escribiendo la dirección web que nos haya indicado el proveedor del servicio, por ejemplo: http://apr2.byethost7.com/index.php Esta dirección nos la indica el proveedor del servicio de hosting gratuito: recordar la entrega donde explicamos la creación de la cuenta de hosting gratuito donde indicábamos que el dominio una vez registrada nuestra cuenta en el hosting era http://apr2.byethost7.com. (Esta dirección es un ejemplo. En tu caso, si has creado tu cuenta gratutita, tendrás tu propia dirección que te permita acceder). Esto indica que dentro del directorio htdocs, tenemos creado un fichero en PHP llamado index.php y su contenido será el mostrado en el navegador al acceder a la URL anteriormente indicada.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Nota: Si no ponemos el nombre del fichero en la ruta del navegador, es decir, si simplemente escribimos http://apr2.byethost7.com, por defecto el servidor buscará un fichero llamado index.php, index.html ó index.htm para enviar la respuesta html al navegador. Es decir, si se escribe http://apr2.byethost7.com/miarchivo.php se buscará el archivo miarchivo.php, pero si se escribe http://apr2.byethost7.com el servidor buscará el archivo index existente y ese será el que devuelva.
MI PRIMERA PÁGINA EN PHP Al entrar en el directorio htdocs, es posible que veamos que ya existe una página index.htm (ó index.html ó similar). La razón de esto es que en algunos servidores cuando creamos una cuenta gratuita, el proveedor de hosting automáticamente nos crea dicho fichero que por ejemplo puede contener un mensaje de bienvenida. Antes de crear nuestra primera página en PHP, borraremos la página index.html ya que su contenido no nos interesa. Para esto, haremos click con el botón derecho del ratón sobre el fichero que deseamos borrar y en el menú desplegable, que nos aparecerá, pulsaremos en borrar.
Una vez borrado el archivo, crearemos en local (en nuestro ordenador) un archivo al que llamaremos index.php. Para ello usaremos Notepad++. Una vez creado el archivo, lo subiremos al servidor remoto, arrastrándolo desde el directorio local donde lo hayamos creado, al directorio remoto actual, es decir, trasladamos el archivo desde nuestro ordenador hasta el servidor. Una vez realizados estos pasos, tendremos en el servidor remoto un archivo llamado index.php que estará vacío y que editaremos haciendo click con el botón derecho del ratón sobre el archivo que deseamos editar.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Hay que aclarar que el archivo index.php lo podemos editar tanto en local como en remoto. Se puede hacer de ambas maneras, siendo ambas correctas. La diferencia radicará en que si trabajamos en local cada vez que queramos ver los cambios en la página web tendremos que subir el archivo al servidor, y cada vez que lo subamos “sobreescribir” el archivo. Si trabajamos editando en remoto, una vez editado el archivo y guardados los cambios, directamente quedará modificado el archivo en el servidor, con lo cual directamente veremos los cambios en la página web. Supongamos que hemos hecho click sobre el archivo en remoto y pulsado el botón derecho, y a su vez la opción “Ver/Editar” (View/Edit):
Ahora, normalmente, al ser la primera vez que editamos con FileZilla un archivo con extensión PHP, nos dará la opción de seleccionar el programa con el que queremos abrir dicho archivo. Indicaremos que queremos abrirlo con el Notepad++. Si no nos pide el programa con el que queremos editar, podemos establecerlo manualmente de la siguiente manera: desplegar el menú “Edición” (Edit) de Filezilla y pulsar sobre “Opciones” (Settings). En la ventana que se abre, en el lateral izquierdo seleccionamos “Edición de archivo -- > Asociaciones de tipo de archivo” (File editing -- > Filetype associations), y en el lado derecho en el cajetín de texto escribimos: php “C:\Program Files\Notepad++\Notepad++.exe”, donde la ruta entre comillas representa la ruta donde se encuentra el fichero ejecutable del Notepad+ +. Esta ruta puede ser diferente según el sistema operativo e instalación que hayamos hecho. Comprueba cuál es la ruta en tu computaor e introduce la ruta correcta para tu caso.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Una vez establecido Notepad++ como editor para trabajar en remoto con Filezilla, cuando pulsamos sobre un archivo en remoto y con botón derecho elegimos “Ver/Editar” (View/Edit), se nos abrirá Notepad++ para editar el archivo correspondiente. En nuestro caso vamos a editar el archivo index.php que habíamos subido al servidor anteriormente.
Ahora sólo nos falta crear nuestra primera página PHP. Para ello simplemente añadiremos este código en el archivo index.php (más adelante se explicarán los conceptos propios de PHP y entenderemos mejor lo que hacemos ahora mismo; no te preocupes ahora si tienes dudas, las iremos solucionando poco a poco). <?php echo "Mi primera página en PHP - aprenderaprogramar.com"; ?>
Cuando terminemos de editar el archivo, lo guardamos (para ello podemos usar la combinación de teclas Ctrl + s ó hacerlo a través del Menú archivo --> Guardar de Notepad++). Una vez guardado en Notepad++ hacemos click sobre el programa FTP FileZilla que teníamos en segundo plano. Automáticamente nos indicará que el archivo ha cambiado (a file previosly opened has been changed) y
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
nos preguntará si deseamos subir los cambios (¿Volve a subir este archivo al servidor? ó Upload this file back to the server?). Contestaremos que sí (yes).
Y ahora visualizaremos nuestra página en el navegador escribiendo la dirección web que es nuestro dominio raíz. Si hemos creado una cuenta gratuita, esta dirección web nos la habrá facilitado el proveedor del servidio de hosting gratuito y podrá ser (esto es un ejemplo) similar a: http://apr2.byethost7.com/index.php o http://apr2.byethost7.com. Recordar que en el segundo caso, cuando no especificamos el archivo que hay que abrir, es el propio servidor el que se encarga automáticamente de buscar el archivo index.html ó index.php.
Con este sencillo ejemplo hemos creado nuestra primera página web usando el lenguaje de programación PHP.
EJERCICIO Crea los siguientes archivos y súbelos mediante ftp al directorio raíz de tu sitio web:
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
a) Crea un archivo denominado curso.php donde aparezca el siguiente texto. <<Curso php de aprenderaprogramar.com comenzado el 24/09/2083>> donde la fecha a incluir sea la fecha en que hayas subido el archivo. Comprueba que el archivo se visualiza al escribir la dirección web correcta que será similar a http://apr2.byethost7.com/curso.php (en tu caso, tendrás que utilizar la dirección web que vayas a utilizar para el curso). Responde a esta pregunta: ¿Cuál es el código que contiene el archivo? ¿Cuál es la dirección web para acceder al archivo y visualizar el texto? b) Crea un archivo denominado alumno.php donde aparezca el siguiente texto. <<Curso php de aprenderaprogramar.com alumno Juan Perez desde el país: Colombia>> donde el nombre a incluir será tu nombre y el país tu país. Comprueba que el archivo se visualiza al escribir la dirección web correcta que será similar a http://apr2.byethost7.com/alumno.php (en tu caso, tendrás que utilizar la dirección web que vayas a utilizar para el curso). Responde a esta pregunta: ¿Cuál es el código que contiene el archivo? ¿Cuál es la dirección web para acceder al archivo y visualizar el texto?
CONCEPTOS BÁSICOS DE PHP Un archivo PHP normalmente suele contener HTML y trozos de código PHP. Por ello antes de estudiar PHP es necesario haber estudiado HTML. A veces, se dice que PHP es un lenguaje “embebido” en HTML, es decir, incrustado en código HTML. Todos los fragmentos de código PHP deben comenzar con la siguiente cadena de caracteres: <?php ,y finalizar con ?>
Los símbolos <?php y ?> se dice que son los delimitadores del código PHP. Normalmente, una página PHP básica sería algo así: <!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo de una web con PHP - aprenderaprogramar.com</title> <meta charset="utf-8"> </head> <body> <?php /* Aquí vendría el código PHP */ /* Este código PHP podría ser una consulta a base de datos */ /* Y además podríamos mostrar esos datos */ ?>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
</body> </html>
En este código podemos identificar los siguientes elementos: -
La primera línea es una etiqueta relativa a la versión/variante de HTML que declaramos usar. Esta primera etiqueta no es estrictamente necesaria. Sirve únicamente para indicar qué estándar de HTML es el que declaramos usar.
-
Las etiquetas de apertura y cierre de html que delimitan el código HTML.
-
Las etiquetas de apertura y cierre head que delimitan la cabecera del código HTML.
-
Las etiquetas body que delimitan el cuerpo del código HTML y que es donde suele ir el contenido central de un documento HTML (texto, imágenes, formularios, etc.).
-
Dentro de las etiquetas body, además de código HTML, podemos tener código PHP embebido. En este caso hemos incluido únicamente un fragmento de código PHP, pero en el cuerpo del documento HTML podríamos incluir diversos fragmentos de código HTML mezclados con diversos fragmentos de código PHP. Cada fragmento de código PHP tiene que ir escrito con sus delimitadores. Esta estructura no se repite siempre. De hecho, más adelante veremos que el código PHP puede ir en más lugares además de dentro de las etiquetas body. Por otro lado, decir que es habitual que el código PHP vaya embebido dentro de código HTML en un archivo con extensión .php, pero como ya hemos visto, un archivo con extensión .php podría contener exclusivamente código PHP. Escribe el código que mostramos a continuación en el editor Notepad++ y guárdalo con el nombre prueba1.php. <!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo de una web con PHP - aprenderaprogramar.com</title> <meta charset="utf-8"> </head> <body> <?php echo "Mi primera página con PHP embebido en HTML aprenderaprogramar.com"; ?> </body> </html>
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
A continuación súbelo al servidor como ya explicamos en una entrega anterior, y ahora escribe en tu navegador la dirección web correspondiente al archivo (que será similar a http://apr2.byethost7.com/prueba1.php). Debes de visualizar algo parecido a esto.
EJERCICIO Crea el siguiente archivo y súbelo mediante ftp al directorio raíz de tu sitio web. El archivo llevará por nombre curso2.php y en él debe existir la estructura de un documento HTML, aparecer en la parte superior de la página un título h1 con el texto <<Cursos aprenderaprogramar.com>>, seguido de un título h2 con el texto <<Curso php desde cero>>, y a continuación hacer que se muestre insertando php el siguiente texto. <<Curso php de aprenderaprogramar.com comenzado el 24/09/2083>> donde la fecha a incluir sea la fecha en que hayas subido el archivo. Debajo de este texto debes crear un contenedor div con color de fondo amarillo donde pueda leerse “Este es el pie de página”. Comprueba que el archivo se visualiza al escribir la dirección web correcta que será similar a http://apr2.byethost7.com/curso2.php (en tu caso, tendrás que escribir la dirección web que vayas a utilizar para el curso). Responde a esta pregunta: ¿Cuál es el código que contiene el archivo? ¿Cuál es la dirección web para acceder al archivo y visualizar el texto?
VARIABLES EN PHP
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Las variables en PHP son representadas con un signo de dólar ($) seguido por el nombre de la variable. El nombre de la variable es sensible a minúsculas y mayúsculas. Es decir, las siguientes declaraciones de variables son distintas entre ellas:
$variable, $Variable, $variAble, $VariAble, etc. representan a distintas variables. Recordar que una variable es un espacio de la memoria del ordenador (en este caso del servidor) a la que asignamos un contenido que a grandes rasgos puede ser un valor numérico (sólo números, con su valor de cálculo) o alfanumérico (sólo texto o texto con números, sin valor de cálculo). Para declarar un nombre de variable válido, éste tiene que empezar con una letra (o si no empieza con una letra, tendrá que hacerlo con un carácter de subrayado), seguido de cualquier número de letras, números y caracteres de subrayado, sin espacios. Veamos algunos ejemplos:
Posible nombre de variable
Validez
$4variable
Nombre de variable inválido.
$_4variable
Nombre de variable válido.
$variable4
Nombre de variable válido.
$otra
Nombre de variable válido.
$1_otra
Nombre de variable inválido.
$variable_de_nombre_muy_largo
Nombre de variable válido.
$ABC
Nombre de variable válido.
$ABC $A_y_B_x_C
Nombre de variable inválido. Nombre de variable válido.
Cuando el intérprete PHP detecta un error en la sintaxis al declarar una variable, cuando tratamos de accecer a la página php nos aparecerá un mensaje de error. Por ejemplo si en un archivo php incluimos
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
una línea como $ A B C = 5; donde el nombre de variable es inválido ya que tiene espacios intermedios, nos aparecerá un mensaje de error: Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE or '$' in /home/miraiz/domains/midominio.com/public_html/prueba.php on line 3. Este mensaje nos informa de que hay un problema en el archivo php y nos indica la línea donde el intérprete considera que está el problema.
DIFERENCIAS ENTRE LOS OPERADORES DE ASIGNACIÓN E IGUALDAD Asignación (=) El operador de asignación es "=". Se podría pensar que es como un "igual a". No lo es. El operador igual en programación no tiene el mismo sentido que en matemáticas. En programación, significa que el valor de la expresión de la derecha se establece en el operando de la izquierda. Fíjate en este ejemplo y en los comentarios. <?php $a = 3; // asignamos el valor 3 a la variable $a $b = "cadena"; // asignamos el valor "cadena" a la variable $b ?>
Igualdad (==) El comparador de igualdad es ==. Como su propio nombre indica, sirve para comparar dos valores o variables y no para asignar valores. Este operador devuelve el resultado de la operación lógica de 'igual a' tal y como podemos apreciar en el siguiente ejemplo. Ejemplo <?php $a = 3; $b = 3; $a == $b; // El resultado de la comparación es TRUE porque $a es igual a $b $a = 3; $b = 4; $a == $b; // El resultado de la comparación es FALSE porque $a no es igual a $b ?>
TIPOS DE DATOS
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
En PHP no es obligatorio indicar el tipo de datos al que pertenece una variable como en otros lenguajes, sino que los tipos de datos son establecidos directamente por el intérprete PHP, que es el encargado de interpretar el código. Ahora veremos en una tabla los distintos tipos de datos que se pueden usar en PHP. TIPO DE DATO
DEFINICIÓN Los integers, o enteros, pueden tener distintos valores numéricos enteros que se expresan con diferentes notaciones.
integer
$variable = 18; // Número entero positivo $variable = -18; // Número entero negativo $variable = 0x12; // Notación hexadecimal, en principio no la utilizaremos.
float o double
string
Este tipo de datos son los números de punto flotante a los que normalmente llamamos “números decimales”, por ejemplo, 9.876. Ambos tienen mucha precisión, pero double es el más preciso (con más decimales). La sintaxis para utilizarlos es bastante simple: $variable = 9.876; El tipo de datos string, también conocido como cadena de caracteres, se expresa con la siguiente sintaxis: $variable = "Yo soy una cadena"; Se trata de un tipo lógico. Sus posibles valores son true (verdadero) o false (falso).
boolean
$variable = true; $variable = false;
INSTRUCCIÓN ECHO Esta instrucción muchas veces se dice que sirve para que se muestre por pantalla un texto, una variable, o una combinación de texto y variables. Pero realmente no es así: echo no es una instrucción que sirva para mostrar algo por pantalla (aunque podemos usarla para esto), sino que sirve para insertar texto dentro del documento HTML subyacente al código PHP. Por ejemplo: echo "salida por pantalla. "; hará que se inserte este texto en el documento html. Si lo hacemos entre las etiquetas <body> y </body> lo veremos por pantalla porque cualquier texto insertado en ese lugar se mostrará por pantalla, no porque la instrucción echo dé lugar a que se muestre por pantalla.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Sin embargo echo "<h1>Salida por pantalla. </h1> "; no hará que se muestren por pantalla las etiquetas h1 y el texto, sino que introducirá en el documento HTML las etiquetas con el texto, éstas etiquetas funcionarán como código HTML y lo que se mostrará por pantalla será formato de título h1 (letras más grandes de lo normal).
Salida por pantalla con
En general en php son válidas tanto las comillas dobles como las comillas simples, por lo que se puede escribir tanto echo "<h1>Salida por pantalla. </h1> "; como echo '<h1>Salida por pantalla. </h1>'; Los paréntesis no son necesarios (echo en realidad no es una función sino que es lo que se denomina una <<construcción del lenguaje>>, de ahí que no sean estrictamente necesarios los paréntesis), pero se pueden incluir si se desea. Ejemplo: echo ('con paréntesis y comillas simples'); Crea un archivo php con el siguiente código, ponle un nombre como usoDeEcho.php y súbelo al servidor. Luego invócalo usando la ruta adecuada según la dirección web con la que estés trabajando (será similar a http://apr2.byethost7.com/usoDeEcho.php.)
<?php echo "salida por pantalla. "; $a = 5; echo $a; echo " El valor de a es $a."; ?>
La visualización en tu navegador deberá ser similar a esta. Puede variar ligeramente dependiendo del navegador que uses.
Ten en cuenta que $a se muestra por pantalla como 5 porque el intérprete de PHP considera que debe mostrarse siempre el valor de la variable, incluso si va dentro de un texto. Prueba a escribir la siguiente línea: echo " El valor de la variable \$a es $a.";
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Comprobarás que se muestra por pantalla “salida por pantalla. 5 El valor de la variable $a es 5.” Cuando antecedemos un nombre de variable del carácter \ hacemos que se interprete como texto en lugar de como una variable. El carácter \ se suele llamar “carácter de escape” porque permite que se considere texto algo que en principio se iba a interpretar como otra cosa (como una variable por ejemplo).
Crea ahora un archivo php con el siguiente código, ponle un nombre como usoDeEcho2.php y súbelo al servidor. Luego invócalo usando la ruta adecuada según la dirección web con la que estés trabajando (será similar a http://apr2.byethost7.com/usoDeEcho2.php.) <html> <head> <title> Ejemplo php aprenderaprogramar.com </title> <meta charset="utf-8"> </head> <body> <?php echo 'con comillas simples<br/>'; echo ('con paréntesis y comillas simples<br/>'); echo ("con paréntesis y comillas dobles<br/>"); echo '<h1>Salida por pantalla</h1><br/>'; echo "salida por pantalla. "; $a = 5; echo $a; echo " El valor de a es $a."; ?> </body> </html>
La visualización en tu navegador deberá ser similar a: con comillas simples con paréntesis y comillas simples con paréntesis y comillas dobles
Salida por pantalla salida por pantalla. 5 El valor de a es 5.
Puedes comprobar que <br/> no se muestra por pantalla porque es código HTML, y el navegador cuando detecta este código HTML introduce un salto de línea en lugar de mostrarlo por pantalla. Para comprender bien la utilidad de la instrucción echo piensa en esta equivalencia:
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
<body> <? php
Docencia Informática
- - - - - - - - Equivale a - - - - - - - >
<body>
echo '<h1>Cuzco</h1>'
<h1>Cuzco</h1>
?>
</body>
</body> El navegador recibe el HTML “equivalente” generado y lo interpreta, dando lugar a los resultados que se mostrarán por pantalla.
EJERCICIO 1 Crea el siguiente archivo y súbelo mediante ftp al directorio raíz de tu sitio web. El archivo llevará por nombre curso3.php y en él debe existir la estructura de un documento HTML, aparecer en la parte superior de la página un título h1 con el texto <<Cursos aprenderaprogramar.com>>, seguido de un título h2 con el texto <<Curso php desde cero>>, y a continuación hacer que se muestre usando echo el siguiente texto dentro de un div con color de fondo amarillo: <<Curso php de aprenderaprogramar.com usando la instrucción echo>>. Debajo de este texto debes usar echo para crear un contenedor div con color de gris donde pueda leerse “Este es el pie de página”. Comprueba que el archivo se visualiza al escribir la dirección web correcta que será similar a http://apr2.byethost7.com/curso3.php (en tu caso, tendrás que escribir la dirección web que estés utilizando para el curso). Responde a esta pregunta: ¿Cuál es el código que contiene el archivo? ¿Cuál es la dirección web para acceder al archivo y visualizar el texto?
EJERCICIO 2 Crea un archivo php donde no exista html directamente pero que genere una página web con todo el código html que lleva normalmente (introduce las etiquetas html, head, title, meta charset, body, algunos párrafos de texto y algunas imágenes). Para hacer esto toda la estructura de la página web debe ser insertada a través de instrucciones echo. Responde a esta pregunta: ¿Cuál es el código que contiene el archivo? ¿Cuál es la dirección web para acceder al archivo y visualizar el texto?
ESTRUCTURAS CONDICIONALES En PHP existen una serie de instrucciones que permiten tomar decisiones lógicas cuando programamos: •
if...else
•
if...elseif...else
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
•
switch
CONDICIONAL IF…ELSE EN PHP Estas instrucciones son quizás las más usadas de todos los lenguajes de programación, ya que son las más básicas. IF (en español: si…) ELSE (en español: sino…). Estructura general de un condicional if else if(expresión) { ... sentencias 1, 2, 3 … ; } else { ... sentencias A, B, C …; } En este trozo de código estaríamos diciendo que si la expresión se cumple se ejecutan las sentencias 1, 2, 3…, y en caso de que no se cumpliese la expresión se ejecutarían las sentencias que están dentro del else, es decir, las sentencias A, B, C … Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.
<?php $galletas = true; if($galletas == true){ echo 'Hay galletas'; } else { echo 'No hay galletas'; } ?>
En este ejemplo, estamos dando un valor $galletas y comprobamos si el valor de esta variable es true o no, introduciéndolo en la expresión del condicional. Tal cual está, este ejemplo produciría el resultado
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
'Hay galletas', aunque si cambiásemos $galletas = true; por $galletas = false daría como resultado la segunda sentencia.
Escribe ahora este otro código guárdalo con un nombre de archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php $galletas = true; if($galletas == true){ ?> <br/> <p>&nbsp;&nbsp;&nbsp;&nbsp;---------------------------------</p> <?php
echo
galletas';
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hay
echo
'<br/>';
echo
'<br/>';
echo
'&nbsp;&nbsp;&nbsp;&nbsp;---------------------------------'; } else { echo 'No hay galletas'; } ?>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Como podrás comprobar, el código produce el mismo resultado. Unicamente hemos introducido algunos caracteres para mejorar la forma en que se ve (recordar que &nbsp; equivale a un espacio en blanco en HTML). Compara las similitudes y diferencias entre los dos códigos que hemos escrito. En nuestro ejemplo2 podrás comprobar que hemos escrito un fragmento de código php, luego un fragmento de código html y luego otro fragmento en php. Si te fijas, no hemos utilizado las etiquetas de apertura y cierre de html, aunque hubiera sido quizás más correcto hacerlo, es decir, escribir: <html> <?php $galletas = true; if($galletas == true){ ?> <br/> <p>&nbsp;&nbsp;&nbsp;&nbsp;---------------------------------</p> <?php
echo
galletas';
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hay
echo
'<br/>';
echo
'<br/>';
echo
'&nbsp;&nbsp;&nbsp;&nbsp;---------------------------------'; } else { echo 'No hay galletas'; } ?> </html>
Como comprobarás, a veces los navegadores son capaces de interpretar el código aunque falten algunas etiquetas o contenga algunos errores. Esta es una de las cuestiones que diferencia HTML de lenguajes de programación en sentido estricto como C, Java o Visual Basic, donde la sintaxis es mucho más estricta.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
En este código además podemos señalar: •
Usamos el código &nbsp; que en HTML significa “un espacio”. Recuerda que HTML omite los espacios antes y después de una cadena de texto. Por ello hemos de especificar que se introduzcan espacios con &nbsp;.
•
Un salto de línea, que introducimos gracias a la etiqueta <br/>, podemos escribirlo tanto fuera del código php como dentro de él. Para introducirlo dentro de php, hemos de ponerlo dentro de un echo, que es la forma que tenemos de indicarle a php de que dé salida a esa etiqueta como código html. ¿Qué pasaría si introdujéramos una etiqueta html como <br/> directamente dentro del código php? Pruébalo y comprobarás que en el navegador se muestra un mensaje de error de este tipo: Parse error: syntax error, unexpected '<' in /home/m/dom/mi.com/public_html/prueba.php on line 11 Esta es una cuestión que debes de tener en cuenta: para introducir html debes de cerrar un bloque php o usar una instrucción echo dentro del bloque php. La instrucción echo viene significando “dar salida html a lo que va a continuación”.
CONDICIONALES IF...ELSE IF...ELSE EN PHP La estructura de estas instrucciones viene a ser muy similar que la anterior. Su significado: “Si ocurre esto, haz esto, sino si ocurre esta otra cosa, haz esto otro, sino si ocurre esta otro cosa, haz …” Estructura general de un condicional if else if else <?php if(expresión) { ... sentencias 1, 2, 3, …; } else if(expresión) { ... sentencias A, B, C, …; } else { ... sentencias M, N, O, …; } ?> Esta es la síntaxis con la que debe ser usada else if. Un else if se ejecutará, siempre y cuando, no haya alguna respuesta verdadera en el if o else if anterior; luego de que se llega al final de los else if, y ninguno ha sido verdadero, se ejecutará lo que está dentro del else final. Pueden haber varios else if, pero estos están siempre dentro de un if y terminarán con un else (sólo uno) final.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como ejemplo3.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php $test = 33; if ($test > 40) { echo "Sí, $test es mayor que 40."; } else if ($test > 35) { echo "Sí, $test es mayor que 35."; } else if ($test > 30) { echo "Sí, $test es mayor que 30."; } else { echo "No, $test es menor que 40, 35 y 30."; } ?>
En este caso la respuesta sería: Sí, 33 es mayor que 30. Si el valor de $test se cambia a 22, la respuesta sería: No, 22 es menor que 40, 35 y 30.
OPERADOR CONDICIONAL TERNARIO Para escribir condicionales la estructura básica de lenguajes como PHP, JavaScript, Java, y otros es la sentencia if. Otro tipo de condicionales como el switch o el else if pueden ser reemplazados por if. Hay otra sintaxis de condicional que se denomina operador condicional ternario y que se escribe con expresiones que incluyen una interrogación y dos puntos como: a ? b : c; La sintaxis y significado del operador condicional ternario (válida para diferentes lenguajes, como PHP, JavaScript, Java, etc.) es la siguiente: expresiónConValorBooleano ? expresión1 : expresión2; Interpretación: si la expresiónConValorBooleano es cierta se ejecuta la expresión1, y en caso contrario se ejecuta la expresión2.
Ejemplos. Supongamos que tenemos cuatro variables: A = 5, B = 3, C = -7 y D = 5
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Expresión
Resultado
A==5 ? dispara(): espera();
Se ejecuta dispara()
A<B ? dispara(): espera();
Se ejecuta espera()
B<C ? dispara(): espera();
Se ejecuta espera()
A<B && B>C ? dispara(): espera();
Se ejecuta espera()
A<B && B>C || B==3 ? dispara(): espera(); A==5 ? A=20: A=1; B = B==3 ? B*10: B*100;
Se ejecuta dispara() Si A valía 5 ahora vale 20, caso contrario ahora vale 1. Se trata de una asignación: si B valía 3, ahora B vale 10 veces lo que valía, caso contrario ahora B vale 100 veces lo que valía.
El operador ternario puede ser insertado en sentencias de ejecución donde no se permite la inserción de if, por ejemplo en una operación de asignación o en la variable de control de un bucle. Usar el operador condicional ternario tiene ventajas e inconvenientes.
VENTAJAS E INCONVENIENTES DEL OPERADOR CONDICIONAL TERNARIO En la siguiente tabla resumimos las ventajas e inconvenientes del operador condicional ternario comparándolo con el if tradicional.
Condicional ternario
If tradicional
Permite la escritura compacta, permitiendo Obliga a escribir más sentencias para conseguir el mismo ahorrar escritura de código. resultado. Resulta más difícil de leer, entender y depurar
Resulta más fácil de leer, entender y depurar
No todos los programadores lo usan, algunos ni Todos los programadores lo usan y lo conocen. siquiera lo conocen. Se admite en la sintaxis de los lenguajes en No es válido en ciertas ubicaciones donde sólo se admiten lugares donde no se admite la sentencia if expresiones, pero puede hacerse la evaluación antes del punto donde sea necesario el condicional. Criticado por algunos expertos, adorado por otros
Compiladores: Julio Encalada y Diana Granda
Uso y aceptación cuasi-universal
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
EJEMPLOS DE USO EN PHP Escribe este código, guárdalo como archivo php y comprueba los resultados de ejecución. Razona sobre los resultados obtenidos y trata de explicar paso a paso la lógica de todo lo que hace el código. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8"> </head> <body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos PHP</h3></div> <?php $A=5; $B=3; $C=-7; $D=5; $msg = ''; $A==5 ? $msg='A es 5<br/>': $msg='A no es 5<br/>'; echo $msg; $A<$B ? $msg='A es menor que B<br/>': $msg='A es mayor o igual que B<br/>'; echo $msg; $B<$C ? $msg='B es menor que C<br/>': $msg='B es mayor o igual que C<br/>'; echo $msg; ?> </body> </html>
El resultado esperado es que se muestre por pantalla: Cursos aprenderaprogramar.com Ejemplos PHP A es 5 A es mayor o igual que B B es mayor o igual que C
EJERCICIO 1 Ejecuta este código y responde: a) ¿Qué resultado se obtiene por pantalla? b) Modifica el código sustituyendo el operador ternario por if else para que el resultado obtenido sea el mismo.
<?php $haceFrio = 15; $respuesta ="";
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
$temperatura = ($haceFrio<20) ? $respuesta = "Hace frio" : $respuesta = "No hace frio"; echo $respuesta; ?>
Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
EJERCICIO 2 Define las variables $tipo, $grosor, $diametro y $marca. Establece que el tipo sea “Rueda de camión”, el grosor 0.33, el diámetro 1.25 y la marca “Kimashuki”. Crea el código PHP donde a través de condicionales if realices la siguiente comprobación: si el diámetro es superior a 1.4 debe mostrarse por pantalla el mensaje “La rueda es para un vehículo grande”. Si es menor o igual a 1.4 debe mostrarse por pantalla el mensaje “La rueda es para un vehículo pequeño”. En otro caso, debe mostrarse “No existe un tamaño de rueda válido”.
Modifica los valores de diámetro y comprueba que los resultados obtenidos por pantalla sean correctos. Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP Los operadores de comparación permiten comparar dos valores, tal y como su nombre indica. En general, esto nos servirá para tomar decisiones. Por ejemplo, quizás tenemos que decidir si autorizar una operación según exista saldo suficiente en su cuenta bancaria o no. Para ello en PHP disponemos de los operadores que se indican en la siguiente tabla.
Nombre
Ejemplo
Resultado
Mayor que
$a > $b
true si $a es mayor que $b false en caso contrario
Menor que
$a < $b
true si $a es menor que $b false en caso contrario
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Mayor o igual que
$a >= $b
true si $a es mayor o igual que $b false en caso contrario
Menor o igual que
$a <= $b
true si $a es menor o igual que $b false en caso contrario
Diferente
$a <> $b ó $a != $b
Idéntico o estrictamente igual
$a === $b
No idéntico ó estrictamente distinto
$a ¡== $b
Igual
$a == $b
true si $a es diferente a $b false en caso contrario true si $a es igual a $b y son del mismo tipo false en caso contrario true si $a no es igual a $b o no son del mismo tipo false en caso contrario true si $a es igual a $b false en caso contrario
La sintaxis coincide con la empleada en otros lenguajes de programación. Además de los operadores habituales existen los operadores === que se interpreta como “es estrictamente igual” y !== que se interpreta como “no es estrictamente igual”. Estos operadores resultan un poco más complejos de comprender por lo que volveremos a hablar de ellos más adelante. De momento tener en cuenta que si una variable contiene $texto1= “1” y hacemos la comparación $texto1 === 1 , obtendremos false, es decir, que no es igual (porque un texto no es igual a un número). Sin embargo una comparación como $texto == 1 devolverá true ya que esta comparación no es estricta y trata de realizar automáticamente conversiones para comprobar si se puede establecer una equivalencia entre los dos valores. En este caso se busca el equivalente numérico del texto y luego se hace la comparación, motivo por el cual se obtiene true. Es decir, si se compara un número con una cadena de caracteres o la comparación implica cadenas de caracteres numéricas, cada cadena de caracteres es convertida en un número y la comparación se realizará numéricamente excepto cuando el operador utilizado es === o ¡== porque, en estos casos, también comparamos el tipo. OPERADORES LÓGICOS EN PHP Los operadores lógicos, nos permiten crear condiciones para las distintas estructuras en PHP, tanto en estructuras condicionales como en estructuras repetitivas. Los operadores lógicos más importantes son and (en español: y) y or (en español: o)
Nombre
Ejemplo
© aprenderaprogramar.com, 2006-2029
Resultado
Módulo: Programación III
Docencia Informática
and ó &&
$a and $b
true si $a es true y $b es true false en caso contrario
or ó ||
$a or $b
true si $a o $b es true, o ambos false en caso contrario
xor
$a xor $b
not ó !
!$a
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 condición puede ser tan larga como se quiera o necesite y usar tantos operadores lógicos como se quiera o necesiten. El uso de los paréntesis otorgará la prioridad de la ejecución de unas operaciones y otras (como en matemáticas). Las expresiones donde se utilizan operadores lógicos y relacionales devuelven un valor booleano, es decir, verdadero (true) o falso (false). Por ejemplo si $a = 7 y $b = 5 la expresión $a < $b devuelve false (es falsa). Si $a = true y $b = false la expresión $a && $b devuelve false (es falsa porque no se cumple que $a y $b sean verdaderas). Si $a = true y $b = false la expresión $a || $b devuelve true porque uno de los dos operandos es verdadero. Si $a = true la expresión !a devuelve false (el opuesto o contrario). El operador || se obtiene en la mayoría de los teclados pulsando ALT GR + 1, es decir, la tecla ALT GR y el número 1 simultáneamente. Los operadores && y || se llaman operadores en cortocircuito porque si no se cumple la condición de un término no se evalúa el resto de la operación. Por ejemplo: ($a == $b && $c != $d && $h >= $k) tiene tres evaluaciones: la primera comprueba si la variable a es igual a b. Si no se cumple esta condición, el resultado de la expresión es falso y no se evalúan las otras dos condiciones posteriores. En un caso como ( $a < $b || $c != $d || $h <= $k) se evalúa si a es menor que b. Si se cumple esta condición el resultado de la expresión es verdadero y no se evalúan las otras dos condiciones posteriores. El operador ! recomendamos no usarlo hasta que se tenga una cierta destreza en programación. Una expresión como (!$esVisible) devuelve false si ($esVisible == true), o true si ($esVisible == false). En general existen expresiones equivalentes que permiten evitar el uso de este operador cuando se desea. OPERADOR DE NEGACIÓN APLICADO SOBRE NÚMEROS O TEXTO Si $a = true su negación !$a devuelve false. ¿Pero qué ocurre si $a es un número o un texto? Si $a es un número se considera que equivale a false si su valor numérico es 0, o que equivale a true si su valor numérico es distinto de cero. Seguidamente se aplica la negación. Por tanto si $a = 7, a se considera equivalente a true y !$a es false. Si $a = 0, a se considera equivalente a false y !$a es true. Para cadenas de texto, la cadena vacía se considera equivale a false y cualquier otra cadena se considera que equivale a true. Si $texto1 = "" (cadena vacía) entonces !$texto1 vale true.
ORDEN DE PRIORIDAD, PRELACIÓN O PRECEDENCIA
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Los operadores lógicos y matemáticos tienen un orden de prioridad o precedencia. Este es un esquema general que indica el orden en que deben evaluarse en la mayoría de los lenguajes de programación:
) ( Paréntesis
^ Exponenciación
*,/ Multiplicación, división
,– + Suma, resta
Mod , \ (div) Resto, Cociente
, <> , > , < , >= , <= = Igual, distinto, mayor, menor, mayor o igual, menor o igual
No (Not) No se cumple que
y (And) Y se cumple que
o (Or) O se cumple que
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Una expresión como $A+$B == 8 && $A-$B == 1 siendo $A = 3 y $B = 5 supondrá que se evalúa primero $A+$B que vale 8, luego se evalúa $A-$B que vale -2. Luego se evalúa si se cumple que la primera operación es cierta y luego si la segunda también es cierta, resultando que no, por lo que la expresión es falsa.
COMPARACIÓN DE CADENAS DE TEXTO CON OPERADORES RELACIONALES Dos cadenas de texto se pueden comparar resultando que se comparan letra a letra por el valor del equivalente numérico de cada letra. Cada letra tiene un número asociado: por ejemplo la a es el número 97, la b el 98, etc. Si comparamos "avellana" < "sandia" obtenemos true. Sin embargo, los códigos numéricos pueden generar resultados no previstos. Por ejemplo, ¿qué código numérico es menor, el de la a ó el de la A? Aún más, resulta que todos los códigos numéricos de mayúsculas son menores que los de minúsculas, con lo cual podemos obtener que ‘Zulú’ < ‘avellano’ devuelve true (cosa que a priori nos resultará ciertamente extraña). Para comparar cadenas en base a un orden alfabético necesitaremos usar entonces otras técnicas que comentaremos más adelante.
EJEMPLO Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php $a = 3; $b = 9; $result = ($a <= 3 and $b <> 9); if ( $result == true) { echo "Se cumple la condición"; }else { echo "No se cumple la condición"; } ?>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
EJERCICIO Dadas las variables de tipo entero con valores $A = 5, $B = 3, $C = -12 indicar si la evaluación de estas expresiones daría como resultado verdadero o falso: a) $A > 3 i) $C / $B < $A b) $A > $C
j) $C / $B == -10
c) $A < $C
k) $C / $B == -4
d) $B < $C
l) $A + $B + $C == 5
e) $B != $C
m) ($A+$B == 8) && ($A-$B == 2)
f) $A == 3
n) ($A+$B == 8) || ($A-$B == 6)
g) $A * $B == 15
o) $A > 3 && $B > 3 && $C < 3
h) $A * $B == -30
p) $A > 3 && $B >= 3 && $C < -3
Crea el código PHP donde declares estas variables, les asignes valores y muestres por pantalla el valor de verdad que tienen cada una de las expresiones antes indicadas. ¿Coincide lo que se muestra con pantalla con lo que tú esperarías que se mostrara?
OPERADORES ARITMÉTICOS BÁSICOS EN PHP En PHP disponemos de los operadores habituales en los distintos lenguajes de programación. Estos operadores nos permiten realizar operaciones aritméticas: suma, resta, multiplicación, división, etc. así como obtener el módulo o resto de una división entre dos enteros.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
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.
4
Multiplicación
$a * $b
El resultado de la multiplicación.
32
División
$a / $b
El resultado de la división.
2
Resto o módulo
$a % $b
El resto de la división de $a entre $b (1)
0
Nota: Los números se convierten a enteros antes de efectuar la operación. Es decir, 9 % 4.5 da como resultado 1 y no 0 porque calcula el resto de 9 entre 4, no de 9 entre 4.5 (1)
El operador resto o módulo es un operador útil en algunos procesos repetitivos en programación. Fíjate en los valores que toma cuando van progresando los valores que toma una variable. En el ejemplo que mostramos a continuación sirve para contar hasta dos y empezar de nuevo repetitivamente.
$a $a % 3 1 1 2
2
3
0
4
1
5
2
6
0
7
1
8
2
Destacar que el operador % es de uso exclusivo entre enteros. 7%3 devuelve 1 ya que el resto de dividir 7 entre 3 es 1. 8%2 devuelve 0 ya que el resto de dividir 8 entre 2 es cero. Al valor obtenido lo denominamos módulo (en otros lenguajes en vez del símbolo % se usa la palabra clave mod) y a este operador a veces se le denomina “operador módulo”. Aunque en otros lenguajes existe un operador de exponenciación para calcular potencias, en PHP no es así. Para calcular una potencia podemos hacer varias cosas:
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
a) Recurrir a multiplicar n veces el término. Por ejemplo min 3 lo podemos calcular como min*min*min. Obviamente esto no es práctico para potencias de exponentes grandes. b) Usar un bucle que dé lugar a la repetición de la operación multiplicación n veces. Estas opciones las comentaremos más adelante. c) Usar herramientas propias del lenguaje que permiten realizar esta operación. Esta opción es la más sencilla. Basta con escribir pow(base, exponente) para que PHP realice el cálculo de la potencia. Por ejemplo pow(2, 3) devuelve dos elevado a 3 que resulta 8. Las operaciones con operadores siguen un orden de prelación o de precedencia que determinan el orden con el que se ejecutan. Con los operadores matemáticos la multiplicación y división tienen precedencia sobre la suma y la resta. Si existen expresiones con varios operadores del mismo nivel, la operación se ejecuta de izquierda a derecha. Para evitar resultados no deseados, en casos donde pueda existir duda se recomienda el uso de paréntesis para dejar claro con qué orden deben ejecutarse las operaciones. Por ejemplo, si dudas si la expresión 3 * a / 7 + 2 se ejecutará en el orden que tú deseas, especifica el orden deseado utilizando paréntesis: por ejemplo 3 * ( ( a / 7 ) + 2 ).
OPERADORES DE INCREMENTO Y DECREMENTO
Nombre
Ejemplo
Resultado
Pre-incremento
++$a
Incrementa $a en uno y luego devuelve $a
Post-incremento
$a++
Devuelve $a y luego incrementa $a en uno
Pre-decremento
--$a
Decrementa $a en uno y luego devuelve $a
Post-decremento
$a--
Devuelve $a y luego decrementa $a en uno.
++ y -- son sólo válidos para variables numéricas y sirven para incrementar una unidad el valor de la variable. Dependiendo de dónde se coloquen (antes o después de la variable) el resultado del cálculo puede diferir debido al momento en que se ejecuta la adición de la unidad. Tener en cuenta que ++, --, +=, -= y *= son expresiones que siempre se aplican sobre variables. Por ejemplo no es válido escribir 2++ porque 2 no es una variable. Todas estas operaciones pueden sustituirse por otra equivalente más evidente. Muchos programadores prefieren no usar estos operadores porque hacen menos legible el código. A otros programadores les gusta usarlos porque les ahorra escribir. Nosotros preferimos no usarlos, pero es cierto que los puedes encontrar cuando tengas que revisar el código escrito por otra persona. © aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
EJEMPLO Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php $a = 8; echo ++$a; echo "<br />"; echo $a; ?>
Escribe este otro código y guárdalo con un nombre de archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php $a = 8; echo $a++; echo "<br />"; echo $a; ?>
En los dos ejemplos anteriores podemos observar claramente la diferencia entre el pre-incremento y el post-incremento. Lo mismo ocurre con el pre-decremento y post-decremento. OPERADORES DE ASIGNACIÓN
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Con el uso de los operadores de asignación, podremos simplificar (escribir abreviadamente) algunas expresiones de asignación. No te recomendamos que utilices expresiones abreviadas durante el aprendizaje básico de php. No obstante, es adecuado conocer el significado de estas expresiones por si te enfrentas a tener que interpretar código escrito por otras personas.
Nombre
Ejemplo
Resultado
Suma
$a += $b;
$a = $a + $b;
Resta
$a -= $b;
$a = $a - $b;
Multiplicación
$a *= $b;
$a = $a * $b;
División
$a /= $b;
$a = $a / $b;
Resto o módulo
$a %= $b;
$a = $a % $b;
Los operadores +=, -= y *= son formas abreviadas de escribir operaciones habituales. Tener en cuenta que ++, --, +=, -= y *= son expresiones que siempre se aplican sobre variables.
EJERCICIO 1 Crea un código PHP donde crees las variables $primerNumero y $segundoNumero y asigna valor 8 al primer número y 5 al segundo número: a) El resto de dividir el primer número entre 5. b) El resultado de dividir el primer número entre el segundo. c) El resultado de sumar los dos números. Para comprobar si tu código y respuestas son correctas puedes consultar en los foros aprenderaprogramar.com.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
EJERCICIO 2 Crea un código PHP donde crees las variables $a y $b y usando los operadores adecuados haz que se muestren los siguientes mensajes por pantalla. Nota: para mantener los valores iniciales de las variables y poder volver a emplearlos usa variables auxiliares, por ejemplo $inicio = $a; te permitirá mantener en %inicio el valor original de $a y volver a recuperar el valor inicial de $a antes de hacer una nueva operación. Mensajes a mostrar por pantalla: Operadores de incremento Valores iniciales: a = 4, b = 2 Operador ++ (anterior): ++a * b == 10 (Ahora el valor de a es: 5) Operador ++ (posterior): a++ * b == 8 (Ahora el valor de a es: 5) Operador -- (anterior): --a * b == 6 (Ahora el valor de a es: 3) Operador -- (posterior): a-- * b == 8 (Ahora el valor de a es: 3) Operadores de asignación compuestos Valores iniciales: a = 4, b = 2 Asignación compuesta de suma: a += b equivale a = a + b (Ahora el valor de a es: 6) Asignación compuesta de resta: a -= b equivale a = a - b (Ahora el valor de a es: 2) Asignación compuesta de multiplicación: a *= b equivale a = a * b (Ahora el valor de a es: 8) Asignación compuesta de división: a /= b equivale a = a / b (Ahora el valor de a es: 2) Asignación compuesta de módulo: a %= b equivale a = a % b (Ahora el valor de a es: 0)
SWITCH PHP Las instrucciones if...else if...else if permiten resolver prácticamente todas las decisiones que haya que tomar en programación, pero en ocasiones nos encontraremos con casos en que queremos evaluar condiciones con una estructura que hacen más cómodo usar una instrucción alternativa: switch.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Supongamos una evaluación de este tipo: if ($variable == Valor1) { ... sentencias; } else if( $variable == Valor2) { ... sentencias; } else if ($variable == Valor3) { ... sentencias;
}
else { ... sentencias; }
Se trata de un caso en que tenemos varias alternativas para realizar una acción determinada según el valor tomado por una variable. Para estos casos la mayoría de los lenguajes de programación incluyen una instrucción que permite "seleccionar" entre los posibles valores de una variable: la instrucción switch (en español: seleccionar). La instrucción switch es una forma de expresión de un anidamiento múltiple de instrucciones if ... else. Su uso no puede considerarse, por tanto, estrictamente necesario, puesto que siempre podrá ser sustituida por el uso de if. No obstante, a veces resulta útil al introducir eficiencia y mayor claridad en el código.
ESTRUCTURA GENERAL DE UNA EXPRESIÓN SWITCH La sintaxis será (expresión será normalmente una variable cuyo contenido queremos evaluar, pero puede ser una operación matemática, una expresión booleana, etc.): switch (expresión) {
. . .
© aprenderaprogramar.com, 2006-2029
case valor1:
instrucciones; break;
case valor2:
instrucciones;
break;
Módulo: Programación III
Docencia Informática
default: sentencias; break; }
switch (expresión) { case valor1: case valor2: case valor3: instrucciones; break; case valor4: instrucciones; break; . . . default: sentencias; break; }
Esquemáticamente a modo de diagrama de flujo:
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
break es opcional (pero en general recomendable) y provoca que una vez encontrada una coincidencia termine la evaluación de casos (provoca un salto pasando el control del programa o flujo de ejecución a la instrucción inmediata siguiente fuera del switch). Si no se incluye, se evaluarían el resto de casos (ejecutándose si fueran ciertos). De no incluirse break, podría producirse que se ejecuten dos o más casos. La cláusula default es opcional y representa las instrucciones que se ejecutarán en caso de que no se verifique ninguno de los casos evaluados. El último break dentro de un switch (en default si existe esta cláusula, o en el último caso evaluado si no existe default) también es opcional, pero lo incluiremos siempre para ser metódicos. Se permite evaluar tanto números como cadenas de texto o valores booleanos. switch solo permite evaluar valores concretos de la expresión: no permite evaluar intervalos (pertenencia de la expresión a un intervalo o rango) ni expresiones compuestas.
EJEMPLO Vamos a ver ahora cómo podemos obtener un mismo resultado usando if o usando switch. Escribe ahora el código de ejemplo de uso de if que mostramos a continuación y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
<?php //Ejemplo uso if else aprenderaprogramar.com $variable=2;
if($variable==1) {
echo '$variable es igual a 1.'; } else if($variable==2) {
echo
'$variable es igual a 2.'; } else if($variable==3) {
$variable=2; case 1: a 1.';
}
echo '$variable es igual break; case 3:
es igual a 3.';
case 2:
echo
echo '$variable break;
default:
echo '$variable no es igual a 1,
2 o 3.';
switch($variable) {
'$variable es igual a 2.'; break;
echo
'$variable es igual a 3.'; } else {
<?php
echo '$variable no es igual a 1, 2 o 3.'; } ?>
?>
Escribe ahora el código de ejemplo de uso de switch hemos mostrado y guárdalo con un nombre de archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado. El resultado comprobamos que en ambos casos es: $variable es igual a 2. Si cambiamos $variable=2 por $variable=5 al inicio de código el resultado sería: $Variable no es igual a 1, 2 o 3. Una diferencia importante respecto a las instrucciones if ... else if ... else es que se requiere de la instrucción break para salir del switch al terminar las instrucciones correspondientes a un case. Sólo podemos especificar un valor en cada case, no se admite indicar más de un valor. Sin embargo, si dejamos un case en blanco y omitimos el break, damos lugar a que se ejecuten ciertas instrucciones si el valor coincide con alguno de los case en juego. Esto lo veremos más claro con un ejemplo. Escribe ahora estos otros códigos y guárdalos con nombres de archivo como ejemplo3.php y ejemplo4.php. A continuación, sube los ficheros al servidor y visualiza el resultado.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
<?php $variable=2; switch($variable) {
<?php
case 1:
//Ejemplo uso if else aprenderaprogramar.com $variable=2;
if($variable==1) {
echo '$Variable es igual a 1.';
//Se ejecuta si $variable vale 1 echo '$Variable es igual a 1.'; break;
} else if($variable==2 OR $variable==3) { echo '$Variable es igual a 2 o 3.'; }else {
echo '$Variable no es igual a 1,
?>
case 3:
//Se ejecuta si $variable vale 2 o 3 echo '$Variable es igual a 2 o 3.'; break;
2 o 3.'; }
case 2:
default:
//Se ejecuta en cualquier otro caso echo '$Variable no es igual a 1, 2 o 3.'; } ?>
En cualquiera de las dos formas mostradas, la salida obtenida sería: $variable es igual a 2 o 3. En este caso, al evaluarse la segunda instrucción case no se encuentra ningún break por lo que se siguen ejecutando las instrucciones siguientes al tercer case, aún cuando $variable es diferente de 3, ya que al no existir un break anterior los casos 2 y 3 quedan “agrupados”. Más aún, si borramos el break del tercer case también se ejecutarán las instrucciones siguientes a default, y la salida sería entonces: $variable es igual a 2 o 3. $variable no es igual a 1, 2 o 3. Por ello es muy importante que cuando escribas una instrucción switch pongas break en todos los case, o bien que si dejas algún break sin escribir sea porque conscientemente quieras hacerlo y no por olvido.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
EJERCICIO 1 Analiza el siguiente código PHP: //Ejemplo de uso switch PHP aprenderaprogramar.com switch ($mes) { case 1: echo ("El mes es enero"); break; case 2: echo ("El mes es febrero"); break; case 10: echo ("El mes es octubre"); break; default: echo ("El mes no es enero, febrero ni octubre"); break; }
Responde a las siguientes cuestiones: a) ¿Qué es lo que hace este código? b)Completa el código de forma que añadas las etiquetas y definas el valor de $mes = 1. Sube el fichero al servidor y comprueba el resultado. ¿Cuál es el código completo? ¿Cuál es el resultado obtenido por pantalla?
Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
EJERCICIO 2 Considera estás desarrollando una web donde trabajas con tipos de motor (suponemos que se trata del tipo de motor de una bomba para mover fluidos). Define una variable $tipoMotor y asígnale valor 3. Los valores posibles son 1, 2, 3, 4. A través de un condicional switch haz lo siguiente: a) Si el tipo de motor es 0, mostrar un mensaje indicando “No hay establecido un valor definido para el tipo de bomba”. b) Si el tipo de motor es 1, mostrar un mensaje indicando “La bomba es una bomba de agua”. c) Si el tipo de motor es 2, mostrar un mensaje indicando “La bomba es una bomba de gasolina”.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
d) Si el tipo de motor es 3, mostrar un mensaje indicando “La bomba es una bomba de hormigón”. e) Si el tipo de motor es 4, mostrar un mensaje indicando “La bomba es una bomba de pasta alimenticia”. f) Si no se cumple ninguno de los valores anteriores mostrar el mensaje “No existe un valor válido para tipo de bomba”.
¿Cuál es el código completo? ¿Cuál es el resultado obtenido por pantalla?
FUNCIONES CON CADENAS DE CARACTERES EN PHP Las cadenas de caracteres en PHP se definen, como ya sabemos, entre comillas dobles o simples (podemos usar dobles o simples indistintamente). Es decir, podemos definir una variable como cadena de caracteres de la siguiente forma: $cadena = "George Washington"; o también $cadena = 'George Wasington';
Para la manipulación de estas variables o cadenas de caracteres nos será útil conocer las funciones básicas de manipulación. No vamos a entrar a describir cada una de las funciones para cadenas de caracteres que PHP posee, que son muchas. Simplemente veremos las más básicas y de uso más común.
FUNCIÓN STRLEN La función strlen obtiene la longitud de una cadena y devuelve un número entero. Es decir, obtenemos el número de caracteres que forman la cadena completa. Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php $cad = "cadena"; //Prueba a cambiar el texto cadena por otro $n = strlen($cad); echo "La longitud de la cadena es: $n"; ?>
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
FUNCIÓN SUBSTR La función substr devuelve una subcadena de la cadena original, es decir, una parte de la cadena original. Esta función tiene 3 parámetros: 1. La variable que contiene la cadena. 2. Número que representa la posición (inclusive) en la que comenzará a ser extraída la subcadena. 3. Número que indica la cantidad de caracteres que serán extraídos. Este argumento es opcional. Si se omite se tomará hasta el final de la cadena original. Tener en cuenta que la numeración de la posición de los caracteres empieza por cero. Por ejemplo para la cadena 'GPS', que tiene 3 caracteres, el carácter en posición 0 es G, en posición 1 es P y en posición 2 es S. No existe la posición 3 debido a que se comienza a contar por el cero.
Escribe este código en un editor como Notepad++ y guárdalo con un nombre de archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php $cad = "cadena"; $sub1 = substr($cad, 2); $sub2 = substr($cad, 2, 2); echo "La subcadena número uno es la siguiente: $sub1 <br />"; echo "La subcadena número dos es la siguiente: $sub2"; ?>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Escribe este otro ejemplo y visualízalo en tu navegador (nota: & nbsp representa un espacio en blanco): <?php $cad = "aprenderaprogramar.com"; $sub1 = substr($cad, 0); //La cadena completa $sub2 = substr($cad, 0, 8); //La subcadena aprender $sub3 = substr($cad, 8, 1 ); //La subcadena a $sub4 = substr($cad, 9); //La subcadena programar echo "&nbsp; &nbsp; La subcadena número uno es la siguiente: $sub1 <br />"; echo "&nbsp; &nbsp; La subcadena número dos es la siguiente: $sub2 <br />"; echo "&nbsp; &nbsp; La subcadena número tres es la siguiente: $sub3 <br />"; echo "&nbsp; &nbsp;La subcadena número cuatro es la siguiente: $sub4"; ?>
Fíjate en las siguientes cuestiones: a) La numeración de caracteres empieza en cero y no en uno. Así en este último ejemplo el caracter 0 es la a, el 1 la p, el 2 la r,el 3 la e y así sucesivamente. b) La posición en que comienza la extracción va incluida en la subcadena extraida. Esto significa que substr ($cad, 0, 1) significa que sólo se extrae el primer caracter de la cadena.
OPERADOR DE CONCATENACIÓN La concatenación es el proceso de unir varias porciones de texto en una sola cadena. Este operador se expresa como un punto '.'
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Escribe el siguiente código, súbelo al servidor y visualízalo en tu navegador. <?php $cad1 = "aprendera"; $cad2 = "programar"; $cadt = $cad1 . $cad2; echo "La cadena número uno concatenada con la cadena número 2 es: $cadt <br />"; // Ahora concatenaremos la cadena ejemplo con la concatenación de $cad2 y $cad1 echo "Ejemplo: " . ($cad2 . $cad1); ?>
En este ejemplo vemos cómo las cadenas se pueden concatener en el orden que nosotros deseemos.
EJERCICIO Crea el código PHP que cumpla con lo que se indica a continuación: a) Declara una variable cuyo contenido sea la cadena "Didáctica y divulgación de la programación" b) Usando la función substr extrae cada una de las palabras de la cadena anterior a una variable. Como tenemos 6 palabras, debes tener 6 variables con las subcadenas. c) Usando la concatenación muestra por pantalla lo siguiente: <<Las palabras primera, tercera y sexta son: Didáctica, divulgación, programación>> d) Usando strlen muestra por pantalla lo siguiente: <<La palabra primera es Didáctica y tiene 9 caracteres, la palabra tercera es divulgación y tiene 11 caracteres. La palabra sexta es programación y tiene 12 caracteres>>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
ESTRUCTURAS REPETITIVAS O BUCLES EN PHP Las estructuras repetitivas (bucles) son aquellas que reiteran una o un grupo de instrucciones "n" veces y dependen de una variable de control del ciclo. Es decir, ejecutan una o varias instrucciones un número de veces definido. Las instrucciones básicas que permiten construir este tipo de estructuras son while, do ... while y for.
LA INSTRUCCIÓN WHILE La instrucción while (que en castellano se traduciría como “mientras…”) ejecuta una porción de programa mientras se cumpla una cierta condición. Mientras la condición sea verdadera, se ejecutan las instrucciones contenidas en el while. Cuando deja de cumplirse la condición, se sale del ciclo y se continúa ejecutando el resto del programa. Si la condición no se cumple ni la primera vez que se comprueba, las líneas en el interior del while no se ejecutarán ni una vez. La estructura general o sintaxis habitual de un bucle while es la siguiente:
<?php while (condición) { ... sentencias; } ?>
En este fragmento de código estaríamos indicando que mientras se cumpla la condición se realizan las sentencias, y en este caso si no se cumpliese la condición se seguiría ejecutando el programa o mostrando los contenidos de la página web justo después del cierre de la instrucción while (que queda determinado por el símbolo de cierre } ). Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php $galletas = 0; while ($galletas < 10){ echo "$galletas, "; $galletas++; }
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática ?>
En este ejemplo, las instrucciones dentro del while se ejecutarían 10 veces, mostrando los números de 0 a 9 separados por coma. Hay que tener especial cuidado en no crear estructuras repetitivas que se ejecuten infinitamente (bucles infinitos). En el ejemplo anterior, si no incrementamos el valor de la variable $galletas, la condición del while se cumpliría siempre y tendríamos un problema porque habríamos creado un bucle infinito, quedando el programa ‘atascado’ en dicho while.
EJERCICIO 1 Crea el código PHP donde generes: a) Un bucle while que cuente desde 50 hasta 40 (fíjate que en este caso es decreciente) b) Un bucle while que a partir de una variable $contador que toma valores de 1 a 5, muestre por pantalla el doble del valor de $contador, es decir, que muestre 2, 4, 6, 8, 10.
Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
LA INSTRUCCIÓN DO … WHILE La estructura repetitiva do-while (en castellano equivaldría a hacer… mientras) es muy similar a la estructura while, excepto que la expresión verdadera es verificada al final de cada iteración en lugar de al principio. La diferencia principal con los bucles while es que está garantizado que se ejecuten las instrucciones que contienen, al menos una vez (la verificación de si se tiene que repetir el proceso se realiza al final de la repetición de la estructura. La estructura general o sintaxis habitual de un bucle do … while es la siguiente:
<?php do {
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
…sentencias } while(condición); ?>
En este fragmento de código estaríamos indicando que se ejecute una primera vez “sí o sí” las sentencias, y que después se evalúe la condición para comprobar si se deben ejecutar nuevamente las sentencias. Como vemos, aunque no se cumpla la condición las sentencias se ejecutarían al menos una primera vez. Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php $galletas = 0; do { echo "$galletas, "; $galletas++; } while ($galletas < 10); ?>
EJERCICIO 2 Crea el código PHP donde generes: a) Un bucle do…while que cuente desde 50 hasta 40 (fíjate que en este caso es decreciente) b) Un bucle do…while que a partir de una variable $contador que toma valores de 1 a 5, muestre por pantalla el doble del valor de $contador, es decir, que muestre 2, 4, 6, 8, 10. Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
LA INSTRUCCIÓN FOR La estructura repetitiva for (en castellano se traduciría como “desde…”) se utiliza generalmente cuando tenemos bien determinada la cantidad de repeticiones a realizar. Se diferencia de las anteriores en que se debe incluir en la propia instrucción una variable de control, la cual se incrementa o decrementa de forma automática. La estructura de estas instrucciones viene a ser muy similar a la anterior. La estructura general o sintaxis habitual de un bucle for es la siguiente: <?php for ($variable=valor_inicial; condición; incremento) { ... sentencias; } ?>
•
En este fragmento de código estaríamos indicando que mientras se cumpla la condición se realizan las sentencias, y en este caso si no se cumpliese la condición se seguiría ejecutando el programa justo después del cierre de la instrucción for (}). Todo esto es igual a la instrucción while anteriormente citada, salvo que en la propia declaración de la estructura se encuentra la variable de control, que en cada repetición se incrementa automáticamente. Esta instrucción consta, por tanto, de tres parámetros: Inicialización de la variable que se utilizará en la condición.
•
Condición que se debe cumplir para permanecer en el ciclo.
•
Modificación de la variable utilizada en la condición.
Escribe ahora este otro código guárdalo con un nombre de archivo como ejemplo3.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php for ($galletas = 0; $galletas < 10; $galletas++){ echo "$galletas, "; } ?>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Este ejemplo muestra a la salida, la misma información que mostraba la instrucción while. Como podemos observar, el valor inicial y el incremento de la variable $galletas, van en la propia instrucción.
EJERCICIO 3 Crea el código PHP donde generes: a) Un bucle for que cuente desde 50 hasta 40 (fíjate que en este caso es decreciente y que por tanto la variable deberá operar como $galletas– –). b) Un bucle for que a partir de una variable $contador que toma valores de 1 a 5, muestre por pantalla el doble del valor de $contador, es decir, que muestre 2, 4, 6, 8, 10. Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
MODIFICAR EL PASO O STEP DE LA VARIABLE CONTADORA Crea el siguiente código, guárdalo con un nombre de archivo como ejemplo4.php y visualiza los resultados en tu navegador. <?php for ( $i = 0; $i < 50; $i+=5 ){ echo "&nbsp;&nbsp; $i <br/> "; } ?>
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Fíjate que en este caso a la variable contador la hemos denominado i. Es habitual usar nombres como i, j, k para las variables contadoras en bucles. Otra cosa interesante es que usando la instrucción += conseguimos que la variable contadora no vaya de uno en uno, sino que el paso (step) de la variable sea el número que nosotros deseemos. En este caso, hemos utilizado un incremento de 5 unidades en cada repetición del bucle. También podemos lograr el mismo efecto pero con decrementos usando – =.
EJERCICIO 4 Crea el código PHP donde generes: a) Un bucle for que cuente desde 50 hasta 500 de 25 en 25. b) Un bucle for que a partir de una variable de control $j que toma valores de 100 a 500 de 100 en 100, muestre por pantalla el resultado de dividir la variable de control por 20. En este caso, el resultado será 5 (que es 100/20…), 10 (que es 200/20…), 15, 20, 25.
CONCEPTOS BÁSICOS DE PHP Un archivo PHP normalmente suele contener HTML y trozos de código PHP. Por ello antes de estudiar PHP es necesario haber estudiado HTML. A veces, se dice que PHP es un lenguaje “embebido” en HTML, es decir, incrustado en código HTML. Todos los fragmentos de código PHP deben comenzar con la siguiente cadena de caracteres: <?php ,y finalizar con ?>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Los símbolos <?php y ?> se dice que son los delimitadores del código PHP. Normalmente, una página PHP básica sería algo así: <!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo de una web con PHP - aprenderaprogramar.com</title> <meta charset="utf-8"> </head> <body> <?php /* Aquí vendría el código PHP */ /* Este código PHP podría ser una consulta a base de datos */ /* Y además podríamos mostrar esos datos */ ?> </body> </html>
En este código podemos identificar los siguientes elementos: -
La primera línea es una etiqueta relativa a la versión/variante de HTML que declaramos usar. Esta primera etiqueta no es estrictamente necesaria. Sirve únicamente para indicar qué estándar de HTML es el que declaramos usar.
-
Las etiquetas de apertura y cierre de html que delimitan el código HTML.
-
Las etiquetas de apertura y cierre head que delimitan la cabecera del código HTML.
-
Las etiquetas body que delimitan el cuerpo del código HTML y que es donde suele ir el contenido central de un documento HTML (texto, imágenes, formularios, etc.).
-
Dentro de las etiquetas body, además de código HTML, podemos tener código PHP embebido. En este caso hemos incluido únicamente un fragmento de código PHP, pero en el cuerpo del documento HTML podríamos incluir diversos fragmentos de código HTML mezclados con diversos fragmentos de código PHP. Cada fragmento de código PHP tiene que ir escrito con sus delimitadores. Esta estructura no se repite siempre. De hecho, más adelante veremos que el código PHP puede ir en más lugares además de dentro de las etiquetas body. Por otro lado, decir que es habitual que el código
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
PHP vaya embebido dentro de código HTML en un archivo con extensión .php, pero como ya hemos visto, un archivo con extensión .php podría contener exclusivamente código PHP. Escribe el código que mostramos a continuación en el editor Notepad++ y guárdalo con el nombre prueba1.php. <!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo de una web con PHP - aprenderaprogramar.com</title> <meta charset="utf-8"> </head> <body> <?php echo "Mi primera página con PHP embebido en HTML aprenderaprogramar.com"; ?> </body> </html>
A continuación súbelo al servidor como ya explicamos en una entrega anterior, y ahora escribe en tu navegador la dirección web correspondiente al archivo (que será similar a http://apr2.byethost7.com/prueba1.php). Debes de visualizar algo parecido a esto.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
EJERCICIO Crea el siguiente archivo y súbelo mediante ftp al directorio raíz de tu sitio web. El archivo llevará por nombre curso2.php y en él debe existir la estructura de un documento HTML, aparecer en la parte superior de la página un título h1 con el texto <<Cursos aprenderaprogramar.com>>, seguido de un título h2 con el texto <<Curso php desde cero>>, y a continuación hacer que se muestre insertando php el siguiente texto. <<Curso php de aprenderaprogramar.com comenzado el 24/09/2083>> donde la fecha a incluir sea la fecha en que hayas subido el archivo. Debajo de este texto debes crear un contenedor div con color de fondo amarillo donde pueda leerse “Este es el pie de página”. Comprueba que el archivo se visualiza al escribir la dirección web correcta que será similar a http://apr2.byethost7.com/curso2.php (en tu caso, tendrás que escribir la dirección web que vayas a utilizar para el curso). Responde a esta pregunta: ¿Cuál es el código que contiene el archivo? ¿Cuál es la dirección web para acceder al archivo y visualizar el texto?
MATRICES O ARRAYS DE DOS DIMENSIONES Las matrices decimos que son arrays (arreglos) de dos dimensiones. También podemos verlas como tablas donde cada elemento tiene una fila y una columna. Para comprenderlas mejor podemos recordar las matrices matemáticas de 2 dimensiones. Un ejemplo de matriz en matemáticas podría ser esta:
1
14
8
3
6
19
7
2
3
13
4
1
En una matriz normalmente hablamos de filas y columnas y decimos que la matriz tiene m filas y n columnas. Así, cada elemento queda identificado por su fila i y su columna j. Por ejemplo, en la matriz que hemos mostrado anteriormente podríamos decir que tenemos 3 filas (fila 0, fila 1 y fila 2) y cuatro
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
columnas (columna 0, columna 1, columna 2, columna 3). Podríamos decir que el elemento de la fila 1, columna 3 es igual a 2. De la misma manera podríamos decir:
$valor [0] [0] = 1; $valor [0] [1] = 14; $valor [0] [2] = 8; $valor [0] [3] = 3; $valor [1] [0] = 6; $valor [1] [1] = 19; $valor [1] [2] = 7; $valor [1] [3] = 2; $valor [2] [0] = 3; $valor [2] [1] = 13; $valor [2] [2] = 4; $valor [2] [3] = 1;
Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo3.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php $animal[0][0] = "Perro"; $animal[0][1] = "Gato"; $animal[1][0] = "Lombriz"; $animal[1][1] = "Burro"; $animal[2][0] = "Murciélago"; $animal[2][1] = "Cocodrilo"; echo $animal[2][1]; echo $animal[0][0]; ?>
El resultado esperado es que se muestre por pantalla lo siguiente:
Hay que recordar que los arrays siempre comienzan numerándose desde cero. Otra forma de asignar valores a un array matriz es similar a la que ya describimos para los vectores. Escribe este código y guárdalo con un nombre de archivo como ejemplo4.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php $animal = array(
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
array("Perro", "Gato"), array("Lombriz", "Burro"), array("Murciélago", "Cocodrilo") ); echo $animal[2][1]; echo $animal[0] [0]; ?>
La sintaxis que hemos empleado equivale a lo siguiente: $animal [0] [0] = "Perro"; $animal [0] [1] = "Gato"; $animal [1] [0] = "Lombriz"; $animal [1] [1] = "Burro"; $animal [2] [0] = "Murciélago"; $animal [2] [1] = "Cocodrilo"; De ahí que por pantalla se muestre "Cocodrilo" y "Perro", al igual que en el ejemplo anterior.
También obtenemos el mismo resultado usando este código, que es una mezcla de ambos tipos de sintaxis: <?php $animal[0] = array("Perro", "Gato"); $animal[1] = array("Lombriz", "Burro"); $animal[2] = array("Murciélago", "Cocodrilo"); echo $animal[2][1]; echo $animal[0][0]; ?>
La visualización obtenida es la misma: por pantalla se muestra "Cocodrilo" y "Perro", al igual que en el ejemplo anterior..
ARRAYS MULTIDIMENSIONALES Los arrays multidimensionales son los que tienen más de dos dimensiones. Estos tipos de arrays se definen como las matrices pero añadiendo más índices. Escribe este código, guarda el archivo php, súbelo al servidor y visualiza el resultado en tu navegador. <?php $animal[0][0][0] = "Perro";
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
$animal[0][0][1] = "Gato"; $animal[0][0][2] = "Lombriz"; $animal[1][0][0] = "Burro"; $animal[1][0][1] = "Murciélago"; $animal[1][0][2] = "Cocodrilo"; echo "<br/>&nbsp;&nbsp;&nbsp;" . $animal[1][0][1]; echo "<br/>&nbsp;&nbsp;&nbsp;" . $animal[0][0][3]; ?>
En este ejemplo hemos incluido una línea que tiene poco sentido, o podría interpretarse como un error:
echo "<br/>&nbsp;&nbsp;&nbsp;" . $animal[0][0][3]; Fíjate que estamos invocando un localizador [0][0][3] que no existe, o al que aún no le hemos asignado valor. Dependiendo del lenguaje y de la versión el resultado puede ser uno u otro. En principio, debe tratar de evitarse invocar a una variable tipo array a la que no se haya asignado valor, ya que esto supone una inconsistencia o incoherencia. En general, si esto ocurre, PHP devolverá un valor “vacío”, que en este caso supondría que en la pantalla no se muestra nada asociado a esta variable. Por eso en la pantalla vemos únicamente “Murciélago” y nada más. Escribe el código que incluimos más abajo y visualiza el resultado. Si te fijas, cuando declaramos un array dentro de otro array lo que hacemos es añadir una dimensión más al array. Por ejemplo, si quisiéramos declarar un array de tres dimensiones de nombre $miFecha podríamos escribir: <?php $miFecha = array( //Declara array array( //Dimensión [0][…][…] array("13 de enero de 2015", "11 de febrero de 2018"),//[0][0][…] array("13 de enero de 2020", "11 de febrero de 2015"),//[0][1][…] ),
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
array( //Dimensión [1][…][…] array("3 de agosto de 2017", "1 de octubre de 2016"),//[1][0][…] array("3 de agosto de 2013", "1 de octubre de 2019"),//[1][1][…] ), array( //Dimensión [2][…][…] array("10 de junio de 2020", "11 de marzo de 2019"), //[2][0][…] ), array(//Dimensión [3][…][…] array("22 de marzo de 2020", "28 de mayo de 2019"), //[3][0][…] array("22 de marzo de 2019", "28 de mayo de 2018"), //[3][1][…] array("22 de marzo de 2018", "28 de mayo de 2017"), //[3][2][…] array("22 de marzo de 2017", "28 de mayo de 2016"), //[3][3][…]
)
); echo "<br/>&nbsp;&nbsp;&nbsp;" . $miFecha[3][2][0]; ?>
En este ejemplo hemos definido valores para los siguientes índices de array: $miFecha [0] [0] [0], $miFecha [0] [0] [1] $miFecha [0] [1] [0], $miFecha [0] [1] [1] $miFecha [1] [0] [0], $miFecha [1] [0] [1] $miFecha [1] [1] [0], $miFecha [1] [1] [1] $miFecha [2] [0] [0], $miFecha [2] [0] [1] $miFecha [3] [0] [0], $miFecha [3] [0] [1] $miFecha [3] [1] [0], $miFecha [3] [1] [1] $miFecha [3] [2] [0], $miFecha [3] [2] [1] $miFecha [3] [3] [0], $miFecha [3] [3] [1] Compruébalo solicitando la visualización de todas estas variables, como vemos en este ejemplo. <?php
© aprenderaprogramar.com, 2006-2029
M贸dulo: Programaci贸n III
Docencia Inform谩tica
$miFecha = array( array( array("13 de enero de 2015", "11 de febrero de 2018"), array("13 de enero de 2020", "11 de febrero de 2015"), ), array( array("3 de agosto de 2017", "1 de octubre de 2016"), array("3 de agosto de 2013", "1 de octubre de 2019"), ), array( array("10 de junio de 2020", "11 de marzo de 2019"), ), array( array("22 de marzo de 2020", "28 de mayo de 2019"), array("22 de marzo de 2019", "28 de mayo de 2018"), array("22 de marzo de 2018", "28 de mayo de 2017"), array("22 de marzo de 2017", "28 de mayo de 2016"),
)
); echo "<br/>&nbsp;&nbsp;&nbsp;" [0] [0]. "<br>"; echo $miFecha [1] [0]. "<br>"; echo $miFecha [0] [0]. "<br>"; echo $miFecha [1] [0]. "<br>"; echo $miFecha [0] [0]. "<br>"; echo $miFecha [0] [0]. "<br>"; echo $miFecha [1] [0]. "<br>"; echo $miFecha [2] [0]. "<br>"; echo $miFecha [3] [0]. "<br>"; echo $miFecha
. $miFecha[3][2][0]; [0] [0] [1]. "<br>"; [0] [1] [1]. "<br>"; [1] [0] [1]. "<br>"; [1] [1] [1]. "<br>"; [2] [0] [1]. "<br>"; [3] [0] [1]. "<br>"; [3] [1] [1]. "<br>"; [3] [2] [1]. "<br>"; [3] [3] [1]. "<br>";
Compiladores: Julio Encalada y Diana Granda
echo echo echo echo echo echo echo echo echo ?>
$miFecha $miFecha $miFecha $miFecha $miFecha $miFecha $miFecha $miFecha $miFecha
[0] [0] [1] [1] [2] [3] [3] [3] [3]
A帽o: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
EJERCICIO Crea el código PHP de 3 archivos que den respuesta al siguiente planteamiento: Queremos almacenar en una matriz el número de alumnos con el que cuenta una academia, ordenados en función del nivel y del idioma que se estudia. Tendremos 3 filas que representarán al Nivel básico, medio y de perfeccionamiento y 4 columnas en las que figurarán los idiomas (0 = Inglés, 1 = Francés, 2 = Alemán y 3 = Ruso). Se pide realizar la declaración de la matriz y asignarle los valores indicados en la siguiente imagen a cada elemento de las siguientes maneras (crea un archivo php por cada una de estas maneras): 1
6 3
14
19
8
7
3
2
13
4
1
a) Con una sintaxis basada exclusivamente en índices, y mostrar por pantalla los alumnos que existen en cada nivel e idioma. b) Con una sintaxis basada en el uso anidado de la palabra array, y mostrar por pantalla los alumnos que existen en cada nivel e idioma. c) Con una sintaxis que combine el uso de array y el uso de índices, y mostrar por pantalla los alumnos que existen en cada nivel e idioma.
Nota: por ejemplo, debe mostrarse por pantalla que el número de alumnos en el nivel básico, idioma inglés, hay 1 alumno; en el nivel básico, idioma francés, hay 14 alumnos, etc.
ARRAYS ASOCIATIVOS EN PHP Anteriormente hemos visto lo que son los arrays tradicionales en PHP y cómo operar con ellos de forma muy elemental. Hemos aprendido que los arrays pueden denominarse “variables con localizador” o “variables con índice”.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Por tanto los elementos del array son datos que están asociados, a su vez, a un elemento del array llamado índice. Supongamos el array nombre[0], nombre[1], nombre[2]. El nombre de variable para el array es “nombre” mientras que los índices son 0, 1 y 2. El índice se caracteriza por conectar los elementos del array por medio de una numeración que empieza por cero. Así, el primer elemento del array tiene índice cero, el segundo tiene índice uno, y así sucesivamente. Pero en realidad, resulta que este índice es numérico solo por defecto; es decir, tenemos la posibilidad de crear nuestro propio índice dentro de un array. Cuando hacemos esto, estamos convirtiendo el array en lo que se denomina un array asociativo. Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php //Ejemplo arrays aprenderaprogramar.com $colores_vehiculos = array( 'coche' => 'Rojo', 'moto' => 'verde', 'avion' => 'amarillo' ); echo $colores_vehiculos['moto']; ?>
Si te fijas en el código, hemos asignado a la variable $colores_vehiculos un array asociativo. Al ser asociativo tenemos que especificar un índice. Los índices que hemos especificado son: coche, moto y avion. Es decir, en vez de usar 0, 1 y 2 hemos usado coche, moto y avion.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Para declarar arrays asociativos, en el paréntesis de definición del array, tenemos que asociar el índice con el valor por medio del operador =>. Fíjate que el índice debe ir escrito entre comillas simples. Después, para acceder a un elemento del array asociativo tenemos que escribir la variable asignada al array, y posteriormente escribir entre corchetes el índice que hemos asignado a dicho elemento. Tenemos la posibilidad de utilizar cualquier tipo de dato para especificar un índice. Por defecto es un número, pero también podemos poner cadenas de texto, como en el ejemplo anterior e incluso variables. Escribe este código y comprueba el resultado en tu servidor. <?php //Ejemplo arrays aprenderaprogramar.com $indice = 'coche'; $colores_vehiculos = array( $indice => 'Rojo', 'moto' => 'verde', 'avion' => 'amarillo' ); echo $colores_vehiculos[$indice]; ?>
Como ves en este ejemplo hemos usado una variable tipo cadena de texto como índice de un array. Finalmente, los arrays asociativos también pueden usarse en la forma de declaración habitual escribiendo $nombreVariable [indice] = valor. Escribe este ejemplo de código, guárdalo con un nombre de archivo y súbelo al servidor. <?php //Ejemplo arrays aprenderaprogramar.com $colores_vehiculos ['coche'] = 'Rojo'; $colores_vehiculos ['moto'] = 'verde'; $colores_vehiculos ['avion'] = 'amarillo'; echo $colores_vehiculos['moto']; ?>
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Comprobarás que en la pantalla del navegador se muestra el texto “verde”.
EJERCICIO Crea el código PHP de dos archivos que den respuesta al siguiente planteamiento: Queremos almacenar en una matriz el número de alumnos con el que cuenta una academia, ordenados en función del nivel y del idioma que se estudia. Tendremos 3 niveles: Nivel básico, medio y de perfeccionamiento, que se corresponden con las filas de la matriz, y 4 idiomas (Inglés, Francés, Alemán y Ruso), que se corresponden con las columnas de la matriz. Se pide realizar la declaración de la matriz y asignarle los valores indicados en la siguiente imagen cumpliendo con: 1 6
14
19
8
7
3
2
3
13
4
1
a) Con una sintaxis ejemplo de uso de arrays asociativos donde el primer índice del array (niveles) es un número y el segundo un texto indicativo del idioma. Se debe mostrar por pantalla los alumnos que existen en cada nivel e idioma. Ejemplo: numeroAlumnos[0]['frances'] representará el número de alumnos que existen en el nivel básico, idioma francés. b) Con una sintaxis ejemplo de uso de arrays asociativos donde tanto el primer índice del array (niveles) como el segundo (idiomas) sea un texto indicativo. Se debe mostrar por pantalla los alumnos que existen en cada nivel e idioma. Ejemplo: numeroAlumnos['basico']['frances'] representará el número de alumnos que existen en el nivel básico, idioma francés.
Nota: en ambos casos debe mostrarse por pantalla que el número de alumnos en el nivel básico, idioma inglés, hay 1 alumno; en el nivel básico, idioma francés, hay 14 alumnos, etc.
FUNCIÓN COUNT Antes de poder recorrer un array, debemos saber cuál es su tamaño para poder recorrerlo. Supongamos que un array tiene tres elementos: tenemos que dar una instrucción para que se extraiga el valor asociado a cada uno de los elementos del array, que normalmente será algo similar a “para cada uno de los tres elementos del array, extraer su valor”.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Sin embargo, si el array tiene 24 elementos, la instrucción será del tipo “para cada uno de los veinticuatro elementos del array, extraer su valor”. Como vemos, muchas veces nos es necesario saber el número de elementos que hay en el array para poder recorrerlo, y para ello nos va a resultar útil la función count. La función count devuelve el número de elementos que hay en el array. Es decir para un array de 4 elementos, la función count devolverá el número 4. Recuerda que si se trata de valores numéricos de índices, los cuatro valores numéricos serán normalmente 0, 1, 2 y 3 en lugar de 1, 2, 3 y 4. Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php //Ejemplo count aprenderaprogramar.com $estacion[0] = "Primavera"; $estacion[1] = "Verano"; $estacion[2] = "Otoño"; $estacion[3] = "Invierno"; echo count($estacion); ?>
Puedes comprobar que se muestra el número 4 porque el array tiene 4 elementos.
RECORRIDOS DE ARRAYS UNIDIMENSIONALES
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Ahora que ya conocemos qué son los arrays, debemos conocer cómo recorrerlos para extraer o comprobar los valores que contiene cada uno de los elementos del array. Esta es una tarea habitual en programación que en general va a tener gran utilidad para nosotros. Lo arrays se pueden recorrer de muchas formas, nosotros no las explicaremos todas. Trataremos de ver en principio las más habituales y sencillas.
Recorrido de arrays mediante for Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo3.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php //Ejemplo arrays aprenderaprogramar.com $array[0] = "Uno"; $array[1] = "Dos"; $array[2] = "Tres"; $array[3] = "Cuatro"; $array[4] = "Cinco"; $array[5] = "Seis"; $array[6] = "Siete"; $array[7] = "Ocho"; for($i=0;$i<count($array);$i++) { echo $array[$i].'<br />'; } ?>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Como ejercicio y teniendo en cuenta lo explicado en las entregas anteriores sobre los distintos tipos de instrucciones de repetición, escribe el código que dé lugar al mismo resultado que el ejemplo anterior pero usando la instrucción while y comprueba que obtienes el mismo resultado.
CONOCER COUNT Ejecuta este código: <?php //Ejemplo arrays aprenderaprogramar.com $array[5] = "Uno"; $array[6] = "Dos"; $array[7] = "Tres"; $array[8] = "Cuatro"; $array[9] = "Cinco"; $array[10] = "Seis"; $array[11] = "Siete"; $array[12] = "Ocho"; echo 'Elementos inicializados en el array: '.count($array).'<br/>'; for($i=0;$i<count($array);$i++) { echo $array[$i].'...<br/>'; } echo $array[15].'aaa<br/>'; echo count($otroArray[14][33]).' elementos<br/>'; ?>
El resultado obtenido será el siguiente: Elementos inicializados en el array: 8 ... ... ... ... ... Uno... Dos... Tres... aaa 0 elementos
Analicemos lo que está ocurriendo. El array $array no tiene definidos cuáles son sus elementos de índice 0, 1, 2, 3 y 4. En cambio sí tiene definidos valores para sus elementos de índice 5, 6, 7, 8, 9, 10, 11
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
y 12. Hay 8 elementos con valores definidos pero sus índices no son 0, 1, 2, 3, 4, 5, 6, 7 como es lo habitual, sino que son 5, 6, 7, 8, 9, 10, 11 y 12. Al ejecutar el for comenzando con un valor de la variable de control igual a cero, se ejecuta echo $array[0].’…<br/>’; Al no tener un valor asignado, $array[0] devuelve vacío y simplemente se muestran tres puntos por pantalla. Lo mismo ocurre con los índices 1, 2, 3, 4 y sólo es al llegar al índice cinco cuando se muestran valores por pantalla. Sin embargo, sólo se mostrarán los elementos con índice 5 a 8 del array, quedando el resto de elementos sin ser mostrado. Además comprobamos que podemos invocar a elementos del array por encima del índice máximo definido sin obtener error, y que incluso podemos invocar a un nombre de array que no hemos declarado ni utilizado, con cualquier índice, sin obtener error. En este ejemplo podríamos mostrar todos los elementos del array realizando un “pequeño cambio”: for($i=5;$i<count($array)+5;$i++) Sin embargo esta solución no es satisfactoria porque no la podemos aplicar como solución para recorrer cualquier array. A modo de resumen diremos lo siguiente: count nos devuelve el número de elementos inicializados del array. Si los índices del array no son secuencialmente 0, 1, 2, 3 , etc. el recorrido con un for tradicional puede resultar no satisfactorio, por lo que habremos de pensar en otras alternativas para recorrer el array. Hablaremos de esto más adelante.
COUNT CON ARRAYS MULTIDIMENSIONALES En el caso de arrays de más de una dimensión, la función count devuelve el número de elementos que hay en un nivel del array definido y para un índice definido. Llamamos nivel del array a cada uno de los corchetes existentes en el array. Por ejemplo si hemos definido $ejem[2][5][1][6][2] = 33; y $ejem[2][5] [3][1][9] = 55; decimos que en el primer nivel del array, correspondiente al primer índice, hay un solo índice: el 2. En el segundo nivel del array para índice 2 hay un solo índice: el 5. En el tercer nivel del array con índice 1 hay un solo índice: el 6. En el tercer nivel del array con índice 3 hay un solo índice: el 1. En el cuarto nivel del array con índice 6 hay un solo índice: el 2. En el cuarto nivel del array con índice 1 hay un solo indice: el 9. Con un ejemplo comprenderemos mejor el funcionamiento de count en arrays multidimensionales.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Ejecuta este código: <?php //Ejemplo arrays aprenderaprogramar.com $miEspArray[6]=99; $miEspArray[22]=87; echo 'Numero de elementos de miEspArray es '.count($miEspArray).'<br/>'; echo "--------------------"; $array2[0][0][0] = "Prueba1"; $array2[0][0][1] = "Prueba2"; $array2[0][0][2] = "Prueba3"; $array2[0][1][0] = "Prueba4"; $array2[0][1][1] = "Prueba5"; $array2[1][0][1] = "Prueba6"; $array2[1][1][2] = "Prueba7"; $array2[1][2][1] = "Prueba8"; $array2[2][0][0] = "Prueba9"; $array2[2][0][1] = "Prueba10"; $array2[5][0][1] = "Prueba11"; echo '<br/>Numero de indices en el primer nivel: '.count($array2); echo '<br/>Numero de indices en el segundo nivel de array[0]: '.count($array2[0]); echo '<br/>Numero de indices en el segundo nivel de array[1]: '.count($array2[1]); echo '<br/>Numero de indices en el segundo nivel de array[2]: '.count($array2[2]); echo '<br/>Numero de indices en el segundo nivel de array[3]: '.count($array2[3]); echo '<br/>Numero de indices en el segundo nivel de array[5]: '.count($array2[5]); echo '<br/>Numero de indices en el tercer nivel de array[0][0]: '.count($array2[0][0]); echo '<br/>Numero de indices en el tercer nivel de array[0][1]: '.count($array2[0][1]); echo '<br/>Numero de indices en el tercer nivel de array[1][0]: '.count($array2[1][0]); echo '<br/>Numero de indices en el tercer nivel de array[1][1]: '.count($array2[1][1]); echo '<br/>Numero de indices en el tercer nivel de array[1][2]: '.count($array2[0][0]); echo '<br/>Numero de indices en el tercer nivel de array[2][0]: '.count($array2[2][0]); echo '<br/>Numero de indices en el tercer nivel de array[5][0]: '.count($array2[5][0]); ?>
El resultado obtenido será el siguiente: Numero de elementos de miEspArray es 2 -------------------Numero de indices en el primer nivel: 4 Numero de indices en el segundo nivel de array[0]: 2 Numero de indices en el segundo nivel de array[1]: 3 Numero de indices en el segundo nivel de array[2]: 1 Numero de indices en el segundo nivel de array[3]: 0 Numero de indices en el segundo nivel de array[5]: 1 Numero de indices en el tercer nivel de array[0][0]: 3
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Numero de indices en el tercer nivel de array[0][1]: 2 Numero de indices en el tercer nivel de array[1][0]: 1 Numero de indices en el tercer nivel de array[1][1]: 1 Numero de indices en el tercer nivel de array[1][2]: 3 Numero de indices en el tercer nivel de array[2][0]: 2 Numero de indices en el tercer nivel de array[5][0]: 1
Fíjate que por ejemplo count($array2[0][1]) nos devuelve el número de elementos existentes de tipo $array2[0][1][x] donde x es cualquier índice, es decir, el número de elementos de tercer nivel del array para los índices iniciales 0 y 1.
RECORRIDO DE ARRAYS MULTIDIMENSIONALES Para recorrer un array multidimensional, tendremos que ir anidando tantas estructuras repetitivas como dimensiones tenga el array. Con un ejemplo se verá todo mucho más claro. Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo4.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php //Ejemplo arrays aprenderaprogramar.com $array[0][0] = "Uno"; $array[0][1] = "Dos"; $array[1][0] = "Tres"; $array[1][1] = "Cuatro"; for($i=0;$i<count($array);$i++) { for($j=0;$j<count($array[$i]);$j++) { echo $array[$i][$j].'<br />'; } } echo "--------------------"; $array2[0][0][0] = "Cinco"; $array2[0][0][1] = "Seis"; $array2[0][0][2] = "Siete"; $array2[0][1][0] = "Ocho"; $array2[0][1][1] = "Nueve"; for($i=0;$i<count($array);$i++) { for($j=0;$j<count($array[$i]);$j++) { for($k=0;$k<count($array[$i][$j]);$k++) { echo $array[$i][$j][$k].'<br />'; } } } ?>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Fíjate que para poder obtener el resultado deseado los elementos de los arrays deben estar definidos usando índices que comiencen en 0 y sean progresivamente 1, 2, 3, 4… Si no fuera así estos bucles, al estar definidos partiendo de 0, no funcionarían. Fíjate también en la lógica de los bucles, por ejemplo el primer bucle lo podríamos leer así: para cada elemento desde 0 hasta el número de elementos de primer nivel, y para cada elemento desde 0 hasta el número de elementos de segundo nivel con el índice extraido previamente, mostrar el contenido del array. Si por ejemplo en el primer nivel tenemos dos índices que son 0 y 1, comenzaremos con el índice 0 y se verá para el índice 0 cuántos índices hay en el segundo nivel (son 2). De este modo lo primero que se mostrará son los índices [0][0] y [0][1]. Una vez completado el recorrido del índice 0 se pasa al índice 1 y se sigue el mismo proceso.
Nota: en algunas versiones o situaciones pedir un elemento no definido de un array puede dar lugar a que aparezca un error. Por ejemplo, si el elemento $array[2][3] no existe e hiciéramos una llamada a ese elemento como echo $array[2][3] podría aparecer un error tipo “undefined offset…” similar a éste:
Recorrido de arrays mediante foreach PHP incorpora una forma “cómoda” para poder recorrer todos los elementos de un array. Esta forma se basa en el uso de la instrucción foreach.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Este tipo de recorridos se suele usar cuando obtenemos datos de una base de datos. El tipo de array que nos suele devolver una consulta a la base de datos es similar al siguiente: $datosArray = array( '675832145'), '674562178'), '689765432'),
array('nombre' => 'Antonio', 'apellidos' => 'Gómez Gómez', 'telefono' => array('nombre' => 'Pedro', 'apellidos' => 'Guillén Gastón', 'telefono' => array('nombre' => 'Dolores', 'apellidos' => 'Candela Quema', 'telefono' =>
. . . . array('nombre' => 'Rubén', 'apellidos' => 'Guardia Jurado', 'telefono' => '654213896'), );
Recuerda que la anterior forma de expresión es equivalente a esta otra: $datosArray[0] ['nombre'] = 'Antonio' $datosArray[0] ['apellidos'] = 'Gómez Gómez' $datosArray[0] ['telefono'] = '675832145' $datosArray[1] ['nombre'] = 'Pedro' $datosArray[1] ['apellidos'] = 'Guillén Gastón' $datosArray[1] ['telefono'] = '674562178' $datosArray[2] ['nombre'] = 'Dolores' $datosArray[2] ['apellidos'] = 'Candela Quema' $datosArray[2] ['telefono'] = '689765432'
La diferencia está en que en el primer caso los índices del array son en algunos casos cadenas (se trata de arrays asociativos) mientras que en el segundo caso los índices del array son números (se trata de arrays tradicionales). En el primer caso los valores 0, 1 y 2 son asignados automáticamente por php porque no se ha especificado otra cosa. Para recorrer arrays de forma cómoda se usa la instrucción foreach. Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo5.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php //Ejemplo foreach aprenderaprogramar.com $rows = array(
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
array( 'nombre' => 'Antonio', 'apellidos' => 'Gómez Gómez', 'telefono' => '675832145'), array( 'nombre' => 'Pedro', 'apellidos' => 'Guillén Gastón', 'telefono' => '674562178'), array( 'nombre' => 'Dolores', 'apellidos' => 'Candela Quema', 'telefono' => '689765432'), array( 'nombre' => 'Rubén', 'apellidos' => 'Guardia Jurado', 'telefono' => '654213896') ); foreach($rows as $valor) {
echo 'Nombre: ' .
$valor['nombre'] . '<br />'; } ?>
Como podemos observar, vamos a ir recorriendo todas las filas y mostrando el nombre. $valor es una variable temporal que sólo existe durante la ejecución de la instrucción foreach, y esta variable va tomando en cada repetición o iteración el valor del siguiente elemento dentro del array principal. En este caso, el elemento que hay dentro del array es otro array. A su vez, indicamos que para cada uno de los arrays extraidos en el recorrido, se nos muestre el item del array cuyo índice es ‘nombre’. En este caso podríamos obtener el mismo resultado usando este código: echo $rows[0]['nombre']. '<br />'; echo $rows[1]['nombre']. '<br />'; echo $rows[2]['nombre']. '<br />'; echo $rows[3]['nombre']. '<br />'; Pero piensa que para recorrer un array de varios cientos de elementos no resultará práctico escribirlos uno a uno… Como ejercicio escribe el código que muestre los nombres y apellidos del array anterior.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Si te resulta un poco complicado el ejercicio anterior, prueba con este código que es más sencillo, y luego vuelve a revisar el código anterior. <?php $estacion[0] = "Primavera"; $estacion[1] = "Verano"; $estacion[2] = "Otoño"; $estacion[3] = "Invierno"; foreach($estacion as $valor) {
echo '&nbsp; &nbsp; &nbsp;'.
$valor.'<br/>'; } ?>
El resultado que obtenemos es similar al que se ve en la siguiente imagen. Como puedes comprobar, la variable $valor (variable transitoria) va tomando en cada repetición del bucle el contenido de los elementos o items del array que estamos recorriendo.
EJERCICIO 1 Crea un array con nombre paisLimitrofe donde los elementos del array serán cadenas de texto con los países limítrofes (con frontera) con el tuyo. Por ejemplo si vivimos en Perú tenemos como países limítrofes Ecuador, Colombia, Brasil, Bolivia y Chile. a) Utilizando un bucle for, muestra por pantalla los países limítrofes. b) Utilizando un bucle for each, muestra por pantalla los países limítrofes.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
EJERCICIO 2 Escribe y ejecuta el siguiente código y responde a las siguientes preguntas: $equipo = array(portero=>'Casillas', defensa=>'Hierro', medio=>'Ces', delantero=>'Ronaldo'); foreach($equipo as $posicion=>$jugador) { echo "El " . $posicion . " es " . $jugador; }
a) ¿$equipo es una variable normal, un array tradicional ó un array asociativo? b) ¿portero es un índice de un array, un contenido de un elemento de un array o un contenido de una variable simple? c) ¿Al ejecutar el código obtienes un resultado por pantalla u obtienes un error? ¿Qué es lo que hace el código?
EJERCICIO 3 Supón que quieres representar lo siguiente: hay 2 equipos españoles, en el primero el portero es Frank, el defensa Pepe, el medio Luis y el delantero Raul. En el segundo, el portero es Tiger, el defensa Mourin, el medio Katz y el delantero Alberto. Hay 1 equipo mexicano, donde el portero es Suarez, el defensa Koltz, el medio Fernandez y el delantero Ramirez. Hay 2 equipos argentinos. En el primero el portero es Higuita, el defensa Mel, el medio Rubens y el delantero Messi. En el segundo el portero es Kostenmeiner, el defensa Lenkins, el medio Marash y el delantero Juanes. a) Representa los datos usando un array de tres dimensiones con índices numéricos donde el primer índice indica el país, el segundo el equipo y el tercero la posición del jugador. Presenta la información del país, equipo, posiciones y jugadores de cada equipo usando un bucle for.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
b) Representa los datos usando un array de tres dimensiones con índices numéricos donde el primer índice indica el país, el segundo el equipo y el tercero la posición del jugador. Presenta la información del país, equipo, posiciones y jugadores de cada equipo usando un bucle for each. c) Representa los datos usando arrays arrays asociativos donde el primer índice indica el país, el segundo el equipo y el tercero la posición del jugador (un ejemplo de cómo declarar un elemento sería por ejemplo: $equipos['Mexico']['Equipo1']['defensa']="koltz"; ). A continuación usando un bucle foreach recorre los elementos del array mostrando la información del país, equipo, posiciones y jugadores de cada equipo.
UNIDAD III FUNCIONES EN PHP Una de las herramientas más importantes en cualquier lenguaje de programación son las funciones. Una función es un conjunto de instrucciones que a lo largo del programa van a ser ejecutadas multitud de veces. Es por ello, que este conjunto de instrucciones se agrupan en una función. Las funciones pueden ser llamadas y ejecutadas desde cualquier punto del programa.
Además, una función puede recibir parámetros externos de los cuales dependa el resultado de dicha función. Es decir, según el parámetro o parámetros con los que se invoque a la función, ésta devolverá un resultado u otro. Las funciones deben estar definidas antes de realizar la llamada a la función (como es lógico). Sintaxis general para declarar una función en PHP: function nombre (parámetro1, parámetro2, …, parámetroN) { instrucción1 instrucción2 . . . instrucciónN }
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Para llamar (hacer que se ejecute) la función usaremos esta sintaxis: nombre(par1, par2, par3, …, parN); donde par1, par2, par3, …, parN son los parámetros (información) que le pasamos a la función. Una función puede necesitar de ningún, uno o varios parámetros para ejecutarse. Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php //Ejemplo funciones
aprenderaprogramar.com
//Declaración de funciones function mostrarTexto($texto) { echo "<strong>El texto a mostrar es el siguiente: </strong>"; echo $texto; } //Fin de la declaración de funciones mostrarTexto("Me gusta mucho la web de aprenderaprogramar.com"); ?>
En este ejemplo hemos visto cómo hemos definido una función cuyo nombre es mostrarTexto. Esta función espera un parámetro cuando es invocada (parámetro que se ha denominado $texto). Una vez se ejecuta, la función ejecuta una serie de instrucciones y devuelve el control al punto desde el que fue invocada. Podemos hacer varios comentarios: a) En algunos lenguajes de programación se distinguen los términos “procedimiento” cuando un fragmento de código de este tipo ejecuta una serie de instrucciones sin devolver un valor, frente al término “función” que se aplica cuando un fragmento de código de este tipo ejecuta una serie de instrucciones y devuelve un valor. En PHP no se distingue entre una cosa y otra, simplemente se habla de “función” en general. b) En algunos lenguajes de programación como Java el tipado o especificación de tipos que se van a recibir por parte de la función (o el tipo de dato que va a devolver la función) es mucho más fuerte. Si te fijas, la función mostrarTexto recibe un parámetro denominado $texto, pero en ningún lado se especifica si dicho parámetro es tipo integer, float, double ó string. ¿De qué tipo es? Realmente no lo sabemos: el
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
intérprete PHP se encarga de automáticamente reconocer el tipo que se le pasa a la función. Además, intentará ejecutar el código sea como sea el tipo del parámetro pasado. Si le resultara imposible ejecutar el código, devolvería un error. La utilidad fundamental de las funciones es no tener que repetir partes de código comunes, que sería necesario repetir varias veces. Esas partes de código comunes se agrupan en funciones y simplemente llamaremos a la función cada vez que necesitamos ejecutar ese código. De esta manera, evitamos la repetición que hace más largo y difícil de entender un programa o desarrollo web. También podemos crear funciones que devuelvan datos (valores concretos). Estas funciones, que podríamos denominar “funciones en sentido estricto”, son aquellas que ejecutan un código y como punto final de dicho código incluyen una sentencia return seguida del resultado de la función. La sentencia return indica que cuando se alcanza se ha llegado al final de la función y se devuelve como resultado de la misma el contenido especificado a continuación del return. Después de un return puede devolverse una variable, un número, una cadena de texto, etc. Por ejemplo return "No dispone de permisos" significa que la función devuelve esta cadena de texto. Otro ejemplo: return $calculo; indica que la función devuelve el contenido que se encuentre almacenado en la variable $calculo. Otro ejemplo: return "Lo sentimos ".$usuario." pero no dispone de permisos. Para solicitar información puede escribir a ".$emailAdministrador; haría que la función devuelva una cadena de texto donde intervienen diversas variables. Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php // Ejemplo funciones
aprenderaprogramar.com
function operaciones($n1, $n2, $operacion) { $resultado = 0; if($operacion == "Sumar") { $resultado = $n1 + $n2; }else if($operacion == "Restar") { $resultado = $n1 - $n2; }else if($operacion == "Multiplicar") { $resultado = $n1 * $n2; } return $resultado; // Devolver el resultado } // Llamar a la función operaciones $r = operaciones(5, 7, "Sumar"); echo $r . "<br>"; // O podemos imprimir directamente echo operaciones(15, 8, "Restar"); ?>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Fíjate que a diferencia de la función mostrarTexto, la función operaciones nos devuelve un valor concreto, de forma que se sustituye su invocación allí donde aparece por el valor que devuelve. Así, la instrucción echo operaciones(15, 8, "Restar"); equivale a lo que sería escribir echo <<aquí el valor devuelto por la función operaciones invocada con los parámetros 15, 8 y “Restar” >> , es decir, sería lo mismo que escribir echo (15-8); ó echo 7; Además, fíjate que la función mostrarTexto requería un parámetro, mientras que la función operaciones requiere tres parámetros. Si invocas la función sin pasarle el número de parámetros adecuado obtendrás un error del tipo <<Warning: Missing argument 3 for operaciones()>>. Por último, tener en cuenta que una función puede ser invocada sin parámetros. <?php //Ejemplo funciones mostrarTextoError {
aprenderaprogramar.com function
echo "<strong>Se ha producido un
error </strong>"; // Aquí pueden venir varias líneas de instrucciones } ?>
Esta función carece de parámetros. Para invocarla escribiríamos mostrarTextoError(). Cada vez que realizáramos la invocación se ejecutaría el código dentro de la función. Esta función podemos decir que es “tipo procedimiento” porque no devuelve un resultado (no tiene sentencia return).
EJERCICIO Crear las siguientes funciones en PHP y código para comprobar su funcionamiento: a) Una función que reciba cinco números enteros como parámetros y muestre por pantalla el resultado de sumar los cinco números (tipo procedimiento, no hay valor devuelto). b) Una función que reciba cinco números enteros como parámetros y devuelva el resultado de sumar los cinco números (tipo función, hay un valor devuelto). Asigna el resultado de una invocación a
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
la función con los números 2, 5, 1, 8, 10 a una variable de nombre $tmp y muestra por pantalla el valor de la variable. c) Una función que reciba como parámetros el valor del radio de la base y la altura de un cilindro y devuelva el volumen del cilindro, teniendo en cuenta que el volumen de un cilindro se calcula como Volumen = númeroPi * radio * radio * Altura siendo númeroPi = 3.1416 aproximadamente.
FUNCIONES BÁSICAS EN PHP PHP además de permitirnos definir nuestras propias funciones, dispone de una gran cantidad de funciones propias del lenguaje a las que se denomina “funciones nativas” o “funciones del core o núcleo php”. Ya conocemos algunas de ellas como strlen y substr. Vamos a ver otras funciones muy usadas relacionadas con el manejo de cadenas de caracteres (texto).
FUNCIÓN STR_REPLACE Esta función se utiliza para reemplazar caracteres dentro de una cadena de caracteres. Es decir, nos permite definir una cadena que debe ser reemplazada con otra dentro de una frase o palabra. La función devuelve la frase original con todas las apariciones de la cadena a buscar reemplazadas con una cadena de reemplazo especificada. La sintaxis básica habitual para esta función es:
str_replace ("cadena a buscar", "cadena de reemplazo", $variableOFraseOriginal)
Veámoslo con un ejemplo para entenderla mejor. Escribe este código y guárdalo con un nombre de archivo como ejemplo1.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php //Ejemplo funciones básicas aprenderaprogramar.com $texto = "Donde dije digo digo Diego."; echo str_replace("Diego", "recortes", $texto); echo "<br />"; echo $texto; ?>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Como podemos observar, en la cadena de caracteres $texto, hemos sustituido la palabra o conjunto de caracteres "Diego" por "Recortes" y hemos devuelto el resultado sin modificar la variable de entrada. Fíjate que en el código que hemos escrito no hemos reemplazado el valor de la variable $texto por un nuevo contenido. Unicamente hemos impreso por pantalla el resultado que nos devuelve la función. Si hubiéramos escrito lo siguiente sí hubiéramos cambiado el contenido de la variable: $texto = str_replace("Diego", "recortes", $texto); La función permite pasar opcionalmente un parámetro adicional que permite saber a posteriori el número de reemplazos que se han realizado:
str_replace ("cadena a buscar", "cadena de reemplazo", $variableOFraseOriginal, $numReemplazos)
Veámoslo con un ejemplo para entenderlo mejor: <?php //Ejemplo funciones básicas aprenderaprogramar.com $texto = "El dijo: es tarde ahora, pero es mejor si hay tres"; echo str_replace("es", "**", $texto, $reemplazos ); echo '<br/>Se han realizado: '.$reemplazos. ' reemplazos<br/>'; echo $texto; ?>
El resultado esperado es: El dijo: ** tarde ahora, pero ** mejor si hay tr** Se han realizado: 3 reemplazos El dijo: es tarde ahora, pero es mejor si hay tres
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Fíjate que se reemplaza la cadena "es" indistintamente según esté separada por espacios o dentro de una palabra. Si sólo quisiéramos reemplazar la cadena si está separada por espacios podríamos indicar los espacios dentro de la cadena: echo str_replace(" es ", " ** ", $texto, $reemplazos ); Aquí hemos indicado que se reemplace espacio-e-s-espacio con espacio-*-*-espacio. Si fuera necesario establecer reglas complejas de reemplazo, por ejemplo “reemplazar todas las palabras que empiecen por a y terminen por a con otra palabra, tendríamos que usar lo que se denominan expresiones regulares, pero no vamos a estudiar ahora la forma de definir y emplear expresiones regulares con PHP.
FUNCIONES STRTOLOWER Y STRTOUPPER Las funciones strtolower y strtoupper transforman una cadena de caracteres en la misma cadena en minúsculas o mayúsculas respectivamente. Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo4.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php //Ejemplo funciones básicas aprenderaprogramar.com $cadena = "EstO eS UnA cadeNA de CARActeres"; echo strtolower($cadena); echo "<br />"; echo strtoupper($cadena); ?>
Como vemos el comportamiento de las funciones es sencillo. Simplemente devuelven la cadena de caracteres pasada como argumento en minúsculas o mayúsculas respectivamente. Ten en cuenta que muchas veces para realizar comparaciones o para almacenar datos será interesante uniformizar la información que se almacena. Por ejemplo, si se pide una ciudad, un usuario puede introducir Buenos Aires, otro Buenos aires, otro BUENOS AIRES. Si usamos estas funciones, podemos uniformizar y hacer que siempre se muestren o guarden de una misma manera, lo cual facilitará el trabajo posterior.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
FUNCIÓN COUNT_CHARS Y SUBSTR_COUNT La función count_chars sirve para contar el número de apariciones de un carácter en una cadena. La sintaxis a emplear es la siguiente:
count_chars ( $cadena, $opcModo)
$opcModo es un entero opcional. Si no se especifica vale 0 por defecto. Sus valores admitidos son: 0: se devolverá un array con el valor numérico ascii como índice y la frecuencia de cada carácter ascii como valor. 1: se devolverá un array con el valor numérico ascii como índice y la frecuencia de cada carácter que aparezca al menos una vez como valor. 2: se devolverá un array de caracteres que no aparecen en la cadena, con el valor numérico ascii como índice y la frecuencia de cada carácter ascii que no aparece como valor. 3: devuelve una cadena que contiene todos los caracteres únicos. 4: devuelve una cadena que contiene todos los caracteres no utilizados. Nota: los códigos numéricos ascii van de 0 a 255 y no todos son visibles por pantalla. Ejemplo: <?php //Ejemplo count_chars aprenderaprogramar.com $cadena = 'es jueves'; $miArray = count_chars ( $cadena, 1); foreach ($miArray as $indiceNum => $veces) {
echo 'Letra: '.chr($indiceNum).' , encontrada '.
$veces.'
veces<br/>'; } ?>
El resultado esperado es: Letra: , encontrada 1 veces. Letra: e , encontrada 3 veces. Letra: j , encontrada 1 veces. Letra: s , encontrada 2 veces. Letra: u , encontrada 1 veces. Letra: v , encontrada 1 veces
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Otra función útil es substr_count($cadena, $subcadena). Esta función nos devuelve el número de veces que aparece la subcadena dentro de la cadena. Por ejemplo: <meta charset="utf-8"> <?php //Ejemplo curso PHP aprenderaprogramar.com $cadena1 = 'Pedro Juan Luis Marco Luis Pedro Juan Luis Pedro'; $cadena2 = 'Luis'; echo 'Luis aparece '.substr_count($cadena1, $cadena2). ' veces' ?>
El resultado esperado es <<Luis aparece 3 veces>>
OTRAS FUNCIONES PARA CADENAS DE TEXTO PHP define numerosas funciones nativas para el manejo de cadenas de texto. Vamos a ver algunas: FUNCIÓN strlen($cadena)
substr
($cadena,
$inicio, $opcNumCar)
FUNCIÓN
ucfirst($cadena);
UTILIDAD Devuelve la longitud o número de caracteres de la cadena
EJEMPLOS aprenderaprogramar.com Ver entregas anteriores del curso
Si no se especifica $opcNumCar devuelve la subcadena entre la posición $inicio y el fin de cadena siendo la posición inicial la cero. Si se especifica Ver entregas anteriores del curso $opcNumCar extrae $opcNumCar caracteres desde la posición $inicio (inclusive).
UTILIDAD Devuelve la cadena con la primera letra en mayúsculas
EJEMPLOS aprenderaprogramar.com $saludo = "hoy es viernes"; ucfirst($saludo); //Hoy es viernes $saludo = "hoy es viernes";
ucwords($cadena);
Devuelve la cadena con cada una de sus palabras con la primera letra en mayúsculas
echo ucwords($saludo); //Hoy Es Viernes
strpos ($cadena , $subCadena, $opcPosInicio )
Devuelve la posición en que comienza la subcadena a partir de la posición inicial (cero) si no se especifica $opcPosInicio, o a partir de la posición $opcPosInicio si se especifica. Si no se encuentra la subcadena devuelve false.
Compiladores: Julio Encalada y Diana Granda
$saludo = "hoy es viernes"; echo strpos($saludo, "es"); //4
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
$saludo = "*** hoy es viernes ***"; trim
($cadena,
$opcCaracteres)
ltrim
($cadena,
$opcCaracteres)
rtrim
($cadena,
$opcCaracteres)
Si no se especifica $opcCaracteres, devuelve la cadena eliminando espacios en blanco, tabuladores, saltos de línea y retornos de carro del principio y final de la cadena. Si se especifica $opcCaracteres, se eliminan los caracteres especificados.
echo trim($saludo, "*");
Si no se especifica $opcCaracteres, devuelve la cadena eliminando espacios en blanco, tabuladores, saltos de línea y retornos de carro del principio de la cadena. Si se especifica $opcCaracteres, se eliminan los caracteres especificados.
echo ltrim($saludo, "*");
Si no se especifica $opcCaracteres, devuelve la cadena eliminando espacios en blanco, tabuladores, saltos de línea y retornos de carro del final de la cadena. Si se especifica $opcCaracteres, se eliminan los caracteres especificados.
echo rtrim($saludo, "*");
chop
Igual que rtrim
str_repeat($cadena,
Devuelve la cadena repetida $numVeces siendo éste un número entero.
//hoy es viernes Nota: puede no funcionar como se espera debido a juego de caracteres, configuración local y configuración del servidor. $saludo = "*** hoy es viernes ***";
//hoy es viernes *** Nota: puede no funcionar como se espera debido a juego de caracteres, configuración local y configuración del servidor. $saludo = "*** hoy es viernes ***";
//*** hoy es viernes Nota: puede no funcionar como se espera debido a juego de caracteres, configuración local y configuración del servidor.
$saludo = 'hola '; $numVeces)
str_repeat($saludo, 3); //hola hola hola
strstr
($cadena,
$desde, $opcBoolean)
Devuelve la subcadena desde la primera aparición de $desde (incluida) hasta el final si no se especifica opcBoolean ó este es false. Si $opcBoolean es true devuelve la subcadena desde el inicio hasta la primera aparición de $desde (excluida).
strchr
Igual que strstr
chr ( $ascii )
Devuelve el carácter correspondiente al código numérico entero $ascii según el código ascii
$saludo = "hoy es viernes"; echo strstr($saludo, "es", false); //es viernes
echo chr(65). ' es la salida'; // A es la salida
Existen más funciones para cadenas en PHP pero los programadores no las suelen conocer todas, ya que algunas son para tareas muy específicas. No te preocupes por memorizar las funciones ni por conocerlas todas, simplemente sé consciente de su existencia y aprende a buscarlas cuando te resulten necearias. Si en algún momento necesitas realizar tareas muy específicas con cadenas en PHP puedes conocer todas las funciones existentes sobre cadenas acudiendo a la documentación oficial de PHP sobre funciones de cadenas, disponible en http://php.net/manual/es/ref.strings.php
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
EJERCICIO Crear archivos php que ejecuten la tarea indicada: a) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso", indicar cuántas veces aparece cada vocal usando funciones para cadenas PHP. b) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso", indicar qué consonantes son las que aparecen y cuántas veces aparecen usando funciones para cadenas PHP. c) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso", mostrar la cadena donde todas las a hayan sido sustituídas por el símbolo *. Por ejemplo en lugar de <<El abecedario…>> se habrá de mostrar <<El *beced*rio…>> d) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso", mostrar la subcadena desde la primera aparición de <<completo>> excluyendo completo, es decir, deberá mostrarse << es algo largo y detallarlo exhaustivamente es costoso>>. Para ello usa una o varias funciones para cadenas PHP.
COMPARACIÓN DE CADENAS PHP Cuando tengamos que comparar cadenas en PHP, se recomienda hacer uso de las funciones nativas del lenguaje previstas para ello. Si se tratan de hacer comparaciones usando el operador == se pueden obtener resultados extraños. Usar el operador === puede dar mejores resultados, pero en general trataremos de usar funciones como strcmp previstas específicamente para esto.
FUNCIÓN STRCMP Esta función realiza la comparación segura de Strings y devuelve un valor numérico. Su sintaxis habitual es la siguiente:
if (strcmp ($cadena1 , $cadena2 ) == 0) { … }
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
strcmp es sensible a mayúsculas y minúsculas, es decir, no considera igual Martes que martes. La función devuelve un valor numérico que puede ser: 0: cuando ambas cadenas son iguales. En caso contrario el valor devuelto es distinto de cero, por lo que si queremos saber si dos cadenas son distintas podemos usar if (strcmp ($cadena1 , $cadena2 ) !== 0) { … } Un valor numérico menor que 0 si la cadena 1 es menor que la cadena 2 Un valor numérico mayor que cero si la cadena 2 es mayor que la cadena 1.
¿Qué significa que una cadena sea mayor que otra? La comparación se hace en función de los códigos numéricos equivalentes de cada carácter. Por ejemplo la letra A tiene código numérico 65 y la letra a código numérico 97. Debido a que los códigos numéricos no permiten una ordenación alfabética precisa (al no ordenar correctamente mayúsculas y minúsculas, palabras con tilde, caracteres como la ñ, etc.), éste no es un buen medio para ordenar alfabéticamente palabras y sólo tiene una utilidad limitada.
Los parámetros aportados a la función deben ser Strings. En caso de que algún parámetro no sea una cadena de texto, el resultado que devuelve la función puede ser impredecible. Escribe este código y visualiza los resultados que produce: <meta charset="utf-8"> <?php //Ejemplos curso PHP aprenderaprogramar.com $cadena1 = '1e3'; $cadena2 = '1000'; if ($cadena1 == $cadena2) {echo 'Según == las dos cadenas son iguales';} else {echo 'Según == las dos cadenas NO son iguales'; } echo '<br/>'; if ($cadena1 === $cadena2) {echo 'Según === las dos cadenas son iguales';} else {echo 'Según === las dos cadenas NO son iguales'; } echo '<br/>'; if (strcmp($cadena1, $cadena2) == 0) {echo 'Según strcmp las dos cadenas son iguales';} else {echo 'Según strcmp las dos cadenas NO son iguales'; } ?>
El resultado será similar a este: Según == las dos cadenas son iguales, Según === las dos cadenas NO son iguales, Según strcmp las dos cadenas NO son iguales. Recordar que para hacer comparaciones seguras de cadenas de texto usaremos strcmp u otra función PHP prevista para ello en lugar de los operadores == ó ===.
OTRAS FUNCIONES PARA COMPARAR CADENAS CON PHP PHP define otras funciones nativas para comparar de cadenas de texto. Vamos a ver algunas de ellas:
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
FUNCIÓN
Docencia Informática
UTILIDAD
strcasecmp ($cadena1 , $cadena2 )
Devuelve como resultado 0 si ambas cadenas son iguales, o un valor numérico menor o mayor de cero en caso contrario. No diferencia entre mayúsculas y minúsculas.
EJEMPLOS aprenderaprogramar.com $cadena1 = 'martes'; $cadena2 = 'Martes'; strcasecmp ($cadena1, $cadena2) // Devuelve 0, son iguales $cadena1 = 'martes';
strncmp ($cadena1, $cadena2, $numCaract)
Compara el número de caracteres numCaract entre la cadena 1 y la cadena 2 teniendo en cuenta mayúsculas y minúsculas como diferentes.
$cadena2 = 'Martes de feria'; strncmp ($cadena1 , $cadena2 , 6)==0 // Devuelve false, no son iguales $cadena1 = 'martes';
strncasecmp ($cadena1 , $cadena2, $numCaract)
Compara el número de caracteres numCaract entre la cadena 1 y la cadena 2 sin tener en cuenta mayúsculas y minúsculas.
$cadena2 = 'Martes de feria'; strncasecmp ($cadena1 , $cadena2 , 6) // Devuelve 0, son iguales
substr_compare ($cadena1, $cadena2, $posicionCad1, $opcLongitud, $opcBoolDiferencia)
Compara una subcadena de cadena 1 que comienza en posición posicionCad. Se compara hasta que una cadena termina si no se especifica opcLongitud, o el número de caracteres indicado si sí se especifica. Por defecto diferencia mayúsculas y minúsculas, pero estableciendo opcBoolDiferencia true no distinguirá entre mayúsculas y minúsculas.
$cadena1 = 'martes'; $cadena2 = 'Martes de feria'; substr_compare ($cadena1 , $cadena2 , 0, strlen($cadena1), true) // Devuelve 0, son iguales
RELLENO DE CADENAS CON STR_PAD Esta función realiza un relleno de cadenas ampliando la cadena hasta una longitud especificada y rellenándola con el carácter o caracteres especificados hasta dicha longitud. La sintaxis es:
str_pad ( string $cadnea , int $nuevaLongitud $opcCarRelleno, opcTipoDeRelleno)
Donde opcCarRelleno es opcional e indica el carácter o caracteres de relleno que se emplearán. Si no se especifica, se tomará el espacio en blanco como carácter de relleno. opcTipoDeRelleno es opcional e indica cómo se rellenará hasta alcanzar la nueva longitud: por la derecha, por la izquierda o por ambos lados. Los valores que puede tomar son: STR_PAD_RIGHT, STR_PAD_LEFT, o STR_PAD_BOTH. Si no se especifica por defecto se rellenará usando STR_PAD_RIGHT (por la derecha). Escribe este código y comprueba los resultados:
<?php
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
$cadena='aprenderaprogramar.com'; echo '<p>'.str_pad($cadena,28,'*').'</p>'; echo '<p>'.str_pad($cadena,48,'cool!').'</p>'; echo '<p>'.str_pad($cadena,2,'a').'</p>'; echo '<p>'.str_pad($cadena,28,'*',STR_PAD_RIGHT).'</p>'; echo '<p>'.str_pad($cadena,29,'@',STR_PAD_BOTH).'</p>'; ?>
El resultado esperado es: aprenderaprogramar.com****** aprenderaprogramar.comcool!cool!cool!cool!cool!c aprenderaprogramar.com aprenderaprogramar.com****** @@@aprenderaprogramar.com@@@@ Fíjate que en este caso la longitud de la cadena es de 22 caracteres. Si le ponemos que la nueva longitud es 29 y que rellene a ambos lados comienza colocando un carácter a derecha y otro a izquierda, pero tras colocar 6 sólo le queda 1 por colocar y éste carácter queda a derecha.
Existen más funciones para cadenas en PHP pero los programadores no las suelen conocer todas, ya que algunas son para tareas muy específicas. Si en algún momento necesitas realizar tareas muy específicas con cadenas en PHP puedes conocer todas las funciones existentes acudiendo a la documentación disponible EJERCICIO
oficial de PHP sobre funciones de en http://php.net/manual/es/ref.strings.php
cadenas,
Crear archivos php que ejecuten la tarea indicada: a) Dadas las cadenas "aprender" y "aprende", mostrar por pantalla la cadena rellena con * a derecha e izquierda en un número de asteriscos que será siempre 5 a cada lado aunque se cambien las cadenas. b) Dadas las cadenas "aprender" y "aprende", mostrar por pantalla si sus tres primeros caracteres son iguales o no usando una función de comparación de subcadenas. c) Dada la cadena "ApRendEr A proGraMar.cOm" transformar la cadena a minúsculas y rellenarla a derecha e izquierda con una longitud de asteriscos igual a la mitad de su longitud si es par ó igual a la mitad de (su longitud más 1) si es impar. Mostrar por pantalla la cadena en minúsculas y con el relleno indicado.
FUNCIONES PARA MANEJO DEL TIEMPO, FECHA Y HORAS PHP
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Con frecuencia cuando creamos webs o apps tenemos que trabajar con fechas y calendarios. Por ejemplo en la página web de un hotel o un restaurante es posible que trabajemos con fechas y horas de comienzo de reserva, de fin de reserva, etc. PHP dispone de funciones nativas para facilitar el trabajo con fechas, horas y tiempos.
El manejo del “tiempo” es un aspecto controvertido en la programación. La primera dificultad y más obvia es que existen cientos de dispositivos electrónicos y no todos manejan la misma fecha. Por ejemplo mi computador personal puede indicar que hoy es lunes 25 de enero de 2048 y la hora es las 12:35:44 mientras que el servidor al que estoy conectado, suponiendo que está en mi misma ciudad, puede indicar que hoy es lunes 25 de enero de 2048 y la hora es las 12:33:21. Otro servidor, en otro país, puede indicar que la fecha es domingo 24 de enero de 2048 y la hora es las 23:51:15 debido a la diferencia horaria entre países. Aquí, claro está, nos estaríamos refiriendo a horas locales. Para poder disponer de horas de referencia globales para todo el mundo se crearon estándares como: a) GMT o tiempo medio de Greenwich: ha sido un estándar ampliamente usado. GMT era el tiempo medido en el observatorio británico de Greenwich, que se definió como meridiano cero de la tierra. Así cada país podía expresar su hora en función de la hora del meridiano de Greenwich. Por ejemplo GMT+0 indicaba que la hora era la misma que la hora oficial en el meridiano de Greenwich, mientras que GMT+3 indicaba que la hora eran 3 horas más que en el meridiano de Greenwich (es decir, si es Greenwich eran las 09:00 en un país cuya hora fuera GMT+3 serían las 12:00). b) UTC o tiempo universal coordinado: es el estándar que se ha adoptado como referencia que indica un tiempo único independientemente de en qué lugar del planeta nos encontremos, basado en las mediciones de relojes atómicos distribuidos por distintos países. Es el estándar que se está imponiendo en los sistemas informáticos. La circunferencia terrestre se dividió en 24 husos horarios de modo que cada huso quedaba referenciado a un tiempo común (lo que se denominaba el tiempo de Greenwich).
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Aunque desde el punto de vista de su definición técnica UTC y GMT no son lo mismo, a efectos prácticos hablar de GMT+3 es lo mismo que hablar de UTC+3. A pesar de este gran avance, el trabajo con el tiempo sigue presentando grandes dificultades en los sistemas informáticos, tanto por la falta de sincronización entre dispositivos como por la disparidad en cuanto a cómo medir el tiempo y con qué grado de precisión, existencia de horarios de verano e invierno, etc. Por ello encontrarás que es relativamente frecuente encontrar que a medida que los lenguajes de programación evolucionan vayan introduciendo cambios en la forma de manejar el tiempo. Una cuestión a tener en cuenta es que el tiempo oficial de Greenwich, tiempo GMT ó UTC, no se corresponde con el tiempo local en Greenwich debido a la existencia del horario de verano. Por ejemplo, Lisboa se encuentra en el huso horario de Greenwich, pero en verano la hora local está adelantada una hora respecto al tiempo oficial de Greenwich por motivos de ahorro energético. Esto da lugar a que el 5 de agosto a las 21:00 en Lisboa se corresponda con el 5 de agosto 20:00 UTC debido al horario de verano, a pesar de que Lisboa se encuentre en el mismo huso horaria que Greenwich.
FUNCIONES TIME Y DATE Estas dos funciones nos permitirán mostrar o capturar la fecha y hora, lo cual tiene una gran cantidad de aplicaciones. Por ejemplo, supón que tienes una tienda on-line y para cada operación de venta tienes que registrar la fecha y hora de la venta. Estas funciones resultarán útiles para ello. La función time devuelve la hora GMT actual medida como el número de segundos desde el 1 de Enero de 1970 00:00:00 GMT (hora del meridiano de Greenwich) obtenidos a partir de la hora actual local del servidor. Cuando hablamos de “hora actual del servidor” nos referimos a una hora local, que es distinta según el país donde nos encontremos. En cambio la hora GMT es única y no depende del país. Hay que tener cuidado con esta circunstancia. Por ejemplo, si trabajas con un servidor localizado en Estados Unidos lo más probable es que el servidor trabaje con la hora de Estados Unidos. Si quieres obtener la hora local de tu país, tendrás que tenerlo en cuenta para restarle o sumarle cierto número de horas a la hora que te devuelva el servidor.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Por otro lado, la función date muestra la fecha en el formato que le indiquemos. En general, te recomendamos que hagas pruebas para comprobar que los resultados de fecha y hora obtenidos son los adecuados, ya que la configuración de cada servidor y la versión de PHP empleada puede afectar a los resultados. Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php //Ejemplo curso PHP aprenderaprogramar.com $time = time(); echo date("d-m-Y (H:i:s)", $time); ?>
En este ejemplo hemos especificado como formato para mostrar la fecha d-m-Y (H:i:s) (donde d representa día, m representa mes, Y representa año, H representa hora, i representa minutos y s representa segundos) desde el valor de time u otra fecha dada en segundos desde el 1 de Enero de 1970 00:00:00 GMT. Como podemos observar, la función date da formato a la variable en segundos $time. Hay distintos formatos para la función date, a continuación indicaremos los más importantes. La función time() devuelve un valor numérico entero largo, por ejemplo 1335169779. Este número representa el número de segundos transcurridos desde el 1 de enero de 1970 00:00:00 GMT. Para transformar ese número en una fecha “entendible por las personas” usamos la función date, cuya sintaxis general es: date (“formato de salida”, valorTimeValido) En cuanto a valorTimeValido, será un número entero, generalmente contenido en una variable. En cuanto a “formato de salida”, disponemos de las siguientes equivalencias:
Para representar el día de la semana:
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Carácter de formato
Significado aprenderaprogramar.com
Valores que devuelve
d (minúscula)
Día del mes, con 2 dígitos. Si es menor de 10, lleva un 0 inicial.
01 a 31
D (mayúscula)
Texto representativo del día, con 3 letras y en inglés
Mon (lunes) hasta Sun
j (minúscula)
Día del mes con un dígito (sin ceros iniciales)
1 a 31
l (letra ele minúscula)
Texto representativo del día, con todas las letras y en inglés
Monday (lunes) hasta Sunday
N (mayúscula)
Representación numérica del día de la semana según ISO-8601, siendo 1 el lunes y 7 el domingo
1 (lunes) a 7 (domingo)
S (mayúscula)
Sufijo para el día del mes en inglés
st, nd, rd ó th
w (minúscula)
Representación numérica del día de la semana siendo 0 domingo y 6 el sábado
0a6
z (minúscula)
Día del año desde 0 hasta 365 (un año normal irá de 0 a 364 y uno bisiesto de 0 a 365)
0 a 365
(domingo)
(domingo)
Para representar el mes: Carácter de formato
Significado aprenderaprogramar.com
Valores que devuelve
F (mayúscula)
Texto representativo del mes, con todas las letras y en inglés
January (enero) a December
m (minúscula)
Mes en formato numérico con dos dígitos, incluyendo cero inicial si es menor que 10
M (mayúscula)
Texto representativo del mes, con tres letras iniciales en inglés
n (minúscula)
Mes en formato numérico con un dígito, sin ceros iniciales
1 hasta 12
t (minúscula)
Número de días que tiene el mes
28 hasta 31
Carácter de formato
Significado aprenderaprogramar.com
Valores que devuelve
L (mayúscula)
Indica si un año es bisiesto o no (1 si es bisiesto, 0 si no lo es)
0ó1
Y (mayúscula)
Año en formato numérico de 4 dígitos
1000 a 9999
y (minúscula)
Año en formato numérico de 2 dígitos (los dos últimos del año)
El que corresponda, p.ej. 78
(diciembre) 01 hasta 12 Jan (enero) hasta Dec (diciembre)
Para representar el año:
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Número de año según ISO-8601. En general devuelve el mismo resultado que Y mayúscula
o (minúscula)
1000 a 9999
Para representar la hora:
Carácter de formato
Significado aprenderaprogramar.com
Valores que devuelve
a (minúscula)
Incluye am ó pm en minúsculas detrás de la hora para indicar antes del meridiano o pasado el meridiano
am ó pm
A (mayúscula)
Igual que a pero en mayúsculas
AM ó PM
B (mayúscula)
Hora internet, también llamada Swatch Internet Time o Biel Mean Time (BMT), poco usada.
000 a 999
g (minúscula)
Número de hora desde 1 hasta 12 sin ceros iniciales
1 a 12
G (mayúscula)
Número de hora desde 0 hasta 23 sin ceros iniciales
0 a 23
h (minúscula)
Número de hora desde 01 hasta 12, con ceros iniciales
01 a 12
H (mayúscula)
Número de hora desde 00 hasta 23, con ceros iniciales
00 hasta 23
i (minúscula)
Minutos desde 00 hasta 59, con ceros iniciales
00 a 59
s (minúscula)
Segundos desde 00 hasta 59, con ceros iniciales
00 a 59
Para representar la zona horaria: Carácter de formato e (minúscula)
I (letra i mayúscula)
Significado aprenderaprogramar.com Representa la zona horaria en inglés (p.ej. GMT, Atlantic/Azores, America/Denver) Indica si se está en horario de verano (0 indica que no se está en horario de verano, 1 que sí se está en horario de verano).
Valores que devuelve Según corresponda
0ó1
Indica la diferencia respecto a la zona horaria de O (letra o mayúscula)
Greenwich u hora GMT, en horas con cuatro dígitos y símbolo.
Por ejemplo +0300 ó -0500
P (mayúscula)
Indica la diferencia respecto a la zona horaria de Greenwich u hora GMT, en horas con cuatro dígitos con separador dos puntos y símbolo.
Por ejemplo +03:00 ó -05:00
T (mayúscula)
Abreviatura de la zona horaria (abreviatura en inglés)
Según corresponda
Z (mayúscula)
Diferencia en segundos entre la hora utilizada y la hora UTC, con signo positivo o negativo
-43200 hasta 50400
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Además disponemos de: La letra W mayúscula para representar la semana del año según ISO-8601, considerando que las semanas comienzan en lunes. Por ejemplo, un año tiene 52 semanas y con este formato podemos obtener que estamos en la semana 24 del año. La letra c minúscula para representar la fecha y hora completa en formato ISO-8601 (tipo 20890312T12:19:21+03:00). La letra r minúscula para representar la fecha y hora completa con formato RFC-2822 (tipo Mon, 21 Jan 2089 11:41:05 -0300). Escribe ahora este código y guárdalo con un nombre de archivo como ejemplo2bis.php. A continuación, sube el fichero al servidor y visualiza el resultado. <?php //Ejemplo curso PHP aprenderaprogramar.com $time = time(); echo "<br/>"; echo $time; echo "<br/>"; echo date("dm-Y (H:i:s)", -3600); echo "<br/>"; echo date("d-m-Y (H:i:s)", 0); echo "<br/>"; echo date("d-m-Y (H:i:s)", 3600); echo "<br/>"; echo date("Y-m-d (H:i:s)", $time); echo "<br/>"; echo date("Y-m-d ", $time); echo "<br/>"; echo ("Según el servidor la hora actual es: ". date("H:i:s", $time)); ?> ?>
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Con este ejemplo podemos comprobar algunas cosas. En primer lugar, que la función time() devuelve un número, mientras que la función date devuelve un String o cadena de texto. En segundo lugar, que para obtener fechas anteriores al 1 de enero de 1970 debemos usar números negativos. En tercer lugar, que el momento 0 que es el 01-01-1970 00:00:00 GMT, cuando es mostrado por un servidor concreto, es adaptado a su horario local. En el servidor del ejemplo, el horario local es GMT + 01:00, es decir, su hora es la hora GMT +01:00, por eso nos devuelve como hora cero la una de la mañana del 1 de enero de 1970. No te preocupes si te resulta un poco confuso, simplemente ten en cuenta que debes hacer pruebas para ver cómo responde el servidor con el que estés trabajando. En cuarto lugar, que podemos hacer que la fecha se muestre en el formato u orden que queramos, usando los términos clave “ d, m, Y, H, i, s” en el orden que queramos. En quinto lugar, que podemos concatenar cómo se muestra una fecha (o almacenarla en otra variable si quisiéramos) concatenando el resultado de la función date con una cadena de texto cualquiera.
OTRAS FUNCIONES PARA FECHA, HORA Y TIEMPO PHP PHP define otras funciones nativas para manejo de fechas, horas y tiempo. Vamos a ver algunas de ellas: FUNCIÓN
UTILIDAD
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 año: cuatro dígitos
Devuelve la hora UTC (GMT) para una fecha local indicada, expresada esta hora GMT en segundos (el número 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 más parámetros se tomarán 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.
Compiladores: Julio Encalada y Diana Granda
EJEMPLOS aprenderaprogramar.com echo "Tiempo Unix para el 15-Enero-2089 a las 12h 0m 0s = " . mktime(12,0,0,1,15,2089); // Tiempo Unix para el 15-Enero-2089 a las 12h 0m 0s = 3753975600 (el resultado variará según dónde esté localizado el servidor, porque las 12 h del 15 de enero de 2089 corresponden a distintas fechas-horas GMT según dónde se encuentre el servidor.
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
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 año: cuatro dígitos
Devuelve la hora UTC (GMT) expresada en segundos para una fecha GMT indicada en los argumentos recibidos. El valor devuelto es el gmmktime(12,0,0,1,15,2089) número de segundos transcurridos desde el 1 de enero de 1970 00:00:00 GMT, valores // 3756628800 independientemente de la negativos indican momentos anteriores a esta hora local del servidor fecha. Si faltan uno o más parámetros se tomarán los de la fecha GMT actual de derecha a izquierda. El valor obtenido no depende del servidor, ya que la hora GMT es única.
Nota: tener en cuenta que usamos UTC ó GMT como si fueran equivalentes. Para entender cómo las funciones time y mktime trabajan con tiempo local hemos realizado la siguiente prueba. Hemos colocado el siguiente código en un servidor en Denver (USA), y en un servidor en Madrid (España): echo "Tiempo Unix para el 15-Enero-2089 a las 12h 0m 0s = " . mktime(12,0,0,1,15,2089); El resultado obtenido en Denver (USA) es 3756654000 El resultado obtenido en Madrid (España) es 3756625200 ¿Por qué obtenemos un resultado diferente? La diferencia entre uno y otro tiempo es de 28800 segundos, que equivalen a 8 horas. Hemos comprobado la hora en Denver en el momento de realizar el test y eran las 06:20:00 de la mañana, mientras que en Madrid eran las 14:20:00 horas. Como vemos, tenemos una diferencia horaria de 8 horas entre Denver y Madrid. Cuando en Madrid son las 12:00 horas del 15 de enero de 2089, en Denver serán las 04:00 horas del 15 de enero de 2089. Las 12:00 horas de un día tienen lugar en distintos instantes de tiempo en Denver y en Madrid, por eso los resultados indican que cuando son las 12 horas en Denver ha transcurrido más tiempo desde las 0 horas del 1 de enero de 1970 GMT que cuando son las 12 horas en Madrid, o dicho de otra manera, las 12 horas de un día tienen lugar antes en Madrid que en Denver. El tiempo Unix sí será igual si pedimos el valor mktime(4,0,0,1,15,2089) en Denver: obtendremos 3756625200, el mismo resultado que en Madrid a las 12 del mediodía. Esto indica que ese instante de tiempo (4 de la mañana de 15 de enero de 2089 en Denver y 12 de la mañana de la misma fecha en Madrid) es el mismo instante, es decir, podríamos estar hablando por teléfono dos personas en ese momento, siendo las 4 de la mañana en Denver y las 12 en Madrid.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Si pedimos la hora en Madrid para el 1 de enero de 1970 a las 00:00:00 de 1970 nos devuelve <<Tiempo Unix para el 1 de enero de 1970 a las 00:00:00 = -3600>> ¿Qué significa -3600? Este valor está referido al tiempo UTC e indica qué adelanto o atraso (en segundos) tiene la hora local respecto al tiempo UTC. O dicho de otro modo, cuánto tiempo ha transcurrido desde las 00:00 horas del 1 de enero de 1970 UTC dada una fecha local. Cuando en Madrid son las 00:00:00 del 1 de enero de 1970 en el tiempo UTC de referencia (podemos pensar que es la hora en Greenwich, meridiano de referencia, aunque esto no es exacto) decimos que faltan 3600 segundos (1 hora) para llegar al 1 de enero de 1970. El valor negativo indica que la fecha es anterior al 1 de enero de 1970 00:00:00 GMT, y en concreto en este caso serían las 23 horas del 31 de diciembre de 1969 GMT cuando en Madrid son las 00:00:00 horas del 1 de enero de 1970. Si pedimos la hora en Denver para el 1 de enero de 1970 a las 00:00:00 de 1970 nos devuelve <<Tiempo Unix para el 1 de enero de 1970 a las 00:00:00 = 25200>> ¿Qué significa 25200? Este valor está referido al tiempo UTC e indica que cuando en Denver son las 00:00:00 del 1 de enero de 1970 el tiempo UTC de referencia está 7 horas por delante, es decir, a las 0 horas en Denver son las 7 horas UTC. -3600 segundos equivalen a 1 hora por delante de GMT. En invierno en Madrid la hora local es GMT+0100 25200 segundos equivalen a 7 horas por detrás de GMT. En invierno en Denver la hora local es GMT0700 Tener en cuenta que la hora UTC (GMT) es única (la indicada por los organismos internacionales encargados), mientras que las hora locales varían según el país, e incluso según la zona de un país en que nos encontremos. Existen más funciones para fechas y tiempo en PHP pero los programadores no las suelen conocer todas, ya que algunas son para tareas muy específicas. No te preocupes por memorizar las funciones ni por conocerlas todas, simplemente sé consciente de su existencia y aprende a buscarlas cuando te resulten necearias. Si en algún momento necesitas realizar tareas muy específicas con tiempo y fechas en PHP puedes conocer todas las funciones existentes sobre esta materia acudiendo a la documentación oficial de PHP sobre fecha y hora, disponible en http://php.net/manual/es/ref.datetime.php EJERCICIO Crea un documento HTML que conste de un título h1 con el texto <<Calendario>>. En la página deberá mostrarse el mes y año actuales (en el momento en que hagas el ejercicio) y para cada día del mes, indicar si es lunes, martes, miércoles, jueves, viernes, sábado o domingo. Ejemplo: suponiendo que hagas el ejercicio en mayo de 2050, debería mostrarse: Día 1: Domingo, Día 2: Lunes, Día 3: Martes, Día 4: Miércoles, … etc. hasta Día 31: Martes.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Ampliación voluntaria del ejercicio: si tienes conocimiento de maquetación con HTML y CSS te proponemos que cambies el aspecto para que en lugar de mostrarse como texto, el calendario se muestre con aspecto de calendario habitual. Para la maquetación puedes usar una tabla de 7 columnas por 7 filas (total 49 celdas) con ancho de tabla 300 píxeles y tamaño de fuente en la tabla 24 píxeles. La primera columna corresponderá a lunes y la última a domingo como mostramos en el siguiente ejemplo. El aspecto, suponiendo que te encuentras en el mes de mayo de 2050, sería el siguiente:
MAYO DE 2050 Lu Ma Mi Ju Vi Sa Do 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Ten en cuenta que debe generarse el calendario del mes en que te encuentres según la hora local del sistema (de tu servidor).
FUNCIONES PARA EXPRESAR FECHAS EN UN LENGUAJE PHP es un lenguaje con marcada influencia anglosajona debido a sus orígenes y desarrollo. Pero cuando estamos creando páginas web es frecuente que queremos obtener fechas expresadas en el lenguaje con el que estamos desarrollando la web. Vamos a estudiar cómo hacerlo.
SETLOCALE La función setlocale es una función PHP utilizada para indicar la configuración regional que debe ser usada para realizar determinadas tareas. Su sintaxis es la siguiente:
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
setlocale ( $procesosAfectados, $codConfiguracion1, $ codConfiguracion2, … , $ codConfiguracionN); También se admite: setlocale ( $procesosAfectados, $arrayDeCodigosDeConfiguracion);
Esta función pretende que por ejemplo en lugar de 2089 July, Mon 21st pueda aparecer algo como “21 de julio de 2089” si lo deseamos. Para ello indicaríamos que el proceso afectado es la fecha y que la configuración es el español: setlocale (LC_TIME, "es_ES"); Esta idea, aparentemente buena, se topa con numerosas dificultades en la práctica: a) No todos los servidores admiten todo tipo de cambios. b) Según el servidor que estemos utilizando, será posible usar unos lenguajes o no. c) La comunicación entre las aplicaciones web y otros entornos como bases de datos se puede ver afectada y pueden surgir problemas. d) No todos los servidores admiten el mismo nombre – código de configuración e) Más problemas que no vamos a citar aquí. En resumen, debes tener presente que el cambio de la configuración local del servidor puede ser compleja o no responder como cabría esperar: podrás ver miles de consultas en foros sobre este tipo de problemas, y muchas de ellas sin respuesta. Es recomendable hacer pruebas y si es necesario programar pequeños scripts o funciones para lograr el funcionamiento que nosotros deseamos. Con esto queremos decir que puede resultar más sencillo trabajar del modo natural tal y como esté configurado el servidor, en lugar de tratar de alterar esta configuración para que el servidor trabaje en nuestro idioma. Los valores posibles para $procesosAfectados son los siguientes: Valor $procesosAfectados LC_ALL LC_COLLATE
LC_CTYPE
LC_MONETARY LC_NUMERIC LC_TIME LC_MESSAGES
Aplicación Para todos los procesos Para la comparación de strings Para la clasificación y conversión de caracteres, por ejemplo cuando se use strtoupper()
Afecta a aspectos como el símbolo 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 función strftime()
Para las respuestas del sistema.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Nosotros en este curso vamos a limitarnos a estudiar y ver un ejemplo de uso para mostrar fechas usando la función de php strftime que estudiaremos a continuación combinada con el uso de setlocale con LC_TIME. El uso de setlocale puede tener efectos colaterales (afectar a otros procesos) por lo que recomendamos no usarlo sin hacer pruebas exhaustivas para verificar la respuesta esperada. Los códigos de países dependen del sistema operativo con el que estemos trabajando. La función setLocale admite que se introduzca una lista de códigos de países con la esperanza de que algunos de ellos sea reconocido por el sistema (lo cual habla ya de las dificultades que se encuentran para realizar este tipo de operaciones). A continuación señalamos algunas formas de códigos de algunos países: País
Código (*)
Otro código (*)
México
es_MX.UTF-8
es_MX
España
es_ES.UTF-8
es_ES
Argentina
es_RA.UTF-8
es_RA
Colombia
es_CO.UTF-8
es_CO
Venezuela
es_VE.UTF-8
es_VE
Perú
es_PE.UTF-8
es_PE
Chile
es_CL.UTF-8
es_CL
Guatemala
es_GT.UTF-8
es_GT
Ecuador
es_EC.UTF-8
es_EC
Cuba
es_CU.UTF-8
es_CU
Bolivia
es_RB.UTF-8
es_RB
País
Código (*)
Otro código (*)
República Dominicana
es_DO.UTF-8
es_DO
Honduras
es_HN.UTF-8
es_HN
El Salvador
es_SV.UTF-8
es_SV
Paraguay
es_PY.UTF-8
es_PY
Nicaragua
es_NI.UTF-8
es_NI
Costa Rica
es_CR.UTF-8
es_CR
Puerto Rico
es_PR.UTF-8
es_PR
Panamá
es_PA.UTF-8
es_PA
Uruguay
es_UY.UTF-8
es_UY
Guinea Ecuatorial
es_GQ.UTF-8
es_GQ
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
(*) Tener en cuenta que no todos los códigos funcionarán, ya que depende del servidor con el que estemos trabajando el que sean reconocidos o no. Recomendamos usar es_ES.UTF-8. Hay más códigos aparte de los aquí indicados. El ejemplo de uso de setlocale lo veremos a continuación junto al de la función strftime.
FUNCIÓN STRFTIME PHP La función strftime es una función PHP utilizada para obtener una cadena de texto expresada en el lenguaje de la configuración local del servidor (por defecto o establecida a través de setlocale). Su sintaxis es la siguiente: strftime ($cadenaConMarcas, $valorTiempoEnSegundos)
$valorTiempoEnSegundos indica los segundos transcurridos desde el 1 de enero de 1970 00:00:00 GMT. Si se omite $valorTiempoEnSegundos se toma el valor correspondiente a la hora actual local del servidor. El valor $cadenaConMarcas hace referencia al uso de códigos especiales que devuelven un determinado resultado. Por ejemplo echo strftime (Hoy es %A); nos devolverá “Hoy es lunes” si la configuración de idioma del servidor es español, ó “Hoy es monday" si la configuración de idioma del servidor es inglés, ya que el código %A equivale a “día de la semana”. Otro ejemplo: echo 'Fecha actual: '.strftime("%A, %d de %B de %Y").'<br/>'; devolverá algo similar a <<jueves, 04 de septiembre de 2089>> si la configuración de idioma del servidor es español. En la siguiente tabla se resumen los códigos disponibles: Uso para
Código
Descripción
Ejemplo valores devueltos
Día
%a
Día, en forma abreviada
Dom hasta Sab
Día
%A
Día, completo
Domingo hasta Sábado
Día
%d
El día del mes con dos dígitos (con ceros iniciales)
01 a 31
Día
%e
El día del mes, con un espacio precediendo si < 10.
1 a 31
Día
%j
Día del año, 3 dígitos con ceros iniciales
001 a 366
Día
%u
1 (para Lunes) hasta 7 (para Domingo)
Día
%w
Representación numérica ISO-8601 del día de semana Representación numérica del día de la semana
Semana
%U
Número de semana del año dado, comenzando con el primer Domingo como primera semana
13 (para la 13ª semana del año)
Semana
%V
Número de semana según ISO-8601
01 hasta 53
Semana
%W
Mes
%b
Número de semana del año, comenzando con el primer Lunes como la primera semana Nombre del mes abreviado
Mes
%B
Nombre del mes completo
Enero hasta Diciembre
Mes
%h
Nombre del mes abreviado, igual que %b
Ene hasta Dic
Mes
%m
01 (para Enero) hasta 12 (para Diciembre)
Año
%C
Representación de dos dígitos del mes Representación de dos dígitos del siglo (año dividido entre 100, truncado a un entero)
Compiladores: Julio Encalada y Diana Granda
0 (para Domingo) hasta 6 (para Sábado)
46 (para la 46ª semana del año) Ene hasta Dic
19 para el Siglo XX
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Representación de dos dígitos del año según ISO8601
Año
%g
Año
%G
La versión de cuatro dígitos completa de %g
Ejemplo: 2089 para 13 de Enero de 2089
Año
%y
Representación de dos dígitos del año
Ejemplo: 09 para 2009, 79 para 1979
Año
%Y
Representación de cuatro dígitos del año
Ejemplo: 2038
Hora
%H
Representación de dos dígitos de la hora
00 hasta 23
Hora
%k
Hora
%I
Hora
%l (ele)
Hora
%M
Representación de dos dígitos de la hora, con un espacio precediendo a los dígitos simples Representación de dos dígitos de la hora La hora en formato de 12 horas, con un espacio si < 10 Representación de dos dígitos de los minutos
Hora Hora
%p %P
'AM' o 'PM' en MAYÚSCULAS basados en la hora dada 'am' o 'pm' en minúsculas basados en la hora dada
Ejemplo: AM para 00:31, PM para 22:23 Ejemplo: am para 00:31, pm para 22:23
Hora
%r
Lo mismo que "%I:%M:%S %p"
Ejemplo: 09:34:17 PM para 21:34:17
Hora Hora
%R %S
Lo mismo que "%H:%M" Representación de dos dígitos de los segundos
Ejemplo: 16:44 para 4:44 PM 00 hasta 59
Hora
%T
Lo mismo que "%H:%M:%S"
Ejemplo: 21:34:17 para 09:34:17 PM
Hora
%X
Hora
%z
Representación preferida de la hora basada en la configuración regional, sin la fecha El índice de la zona horaria.
Hora
%Z
La abreviatura de la zona horaria
Ejemplo: EST para Hora del Este de EEUU
Marca preferida de la fecha y hora basadas en la configuración regional Lo mismo que "%m/%d/%y"
Ejemplo: Tue Feb 5 00:45:10 2009 para el 5 de Febrero de 2009 a las 12:45:10 AM Ejemplo: 02/05/89, 5 de Febrero de 2089
Fecha y hora Fecha y hora Fecha y hora Fecha y hora
%c %D %F %x
Lo mismo que "%Y-%m-%d" (normalmente usado en las marcas de fecha de bases de datos) Representación preferida de la fecha basada en la configuración local, sin la hora
Ejemplo: 89 para 6 de Enero de 2089
0 hasta 23 01 hasta 12 1 hasta 12 00 hasta 59
Ejemplo: 03:59:16 o 15:59:16 Ejemplo: -0500 para Hora Este de EEUU
Ejemplo: 2089-02-05 para 5 Febrero 2089 Ejemplo: 02/05/09 para el 5 de Febrero de 2009
Además de las marcas indicadas existen otras como %n para insertar un salto de línea ó %t para insertar una tabulación. Ten en cuenta que no todos los servidores disponen de todos los códigos ni todos los servidores responderán como se espera cuando trates de hacer que muestren una fecha en un formato dado. Por ejemplo algunos servidores no admiten %p ni %P, en este caso si intentas que se muestre AM/PM no se mostrará nada. Tendrás que resolverlo escribiendo código específico para lograrlo. Para probar el funcionamiento de esta función, en combinación con setlocale, escribe este código y comprueba qué resultados obtienes: <meta charset='utf-8'> <?php $miFecha= gmmktime(12,0,0,1,15,2089); echo 'Antes de setlocale strftime devuelve: '.strftime("%A, %d de %B de %Y", $miFecha).'<br/>'; echo 'Antes de setlocale date devuelve: '.date("l, d-m-Y (H:i:s)", $miFecha).'<br/>'; setlocale(LC_TIME,"es_ES"); echo 'Después de setlocale es_ES date devuelve: '.date("l, d-m-Y (H:i:s)",
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
$miFecha).'<br/>'; echo 'Después de setlocale es_ES strftime devuelve: '.strftime("%A, %d de %B de %Y", $miFecha).'<br/>'; setlocale(LC_TIME, 'es_ES.UTF-8'); echo 'Después de setlocale es_ES.UTF-8 date devuelve: '.date("l, d-m-Y (H:i:s)", $miFecha).'<br/>'; echo 'Después de setlocale es_ES.UTF-8 strftime devuelve: '.strftime("%A, %d de %B de %Y", $miFecha).'<br/>'; setlocale(LC_TIME, 'de_DE.UTF-8'); echo 'Después de setlocale de_DE.UTF-8 date devuelve: '.date("l, d-m-Y (H:i:s)", $miFecha).'<br/>'; echo 'Después de setlocale de_DE.UTF-8 strftime devuelve: '.strftime("%A, %d de %B de %Y", $miFecha).'<br/>'; ?>
El resultado que nosotros hemos obtenido con un servidor ubicado en Denver (USA) es el siguiente: Antes de setlocale strftime devuelve: Saturday, 15 de January de 2089 Antes de setlocale date devuelve: Saturday, 15-01-2089 (05:00:00) Después de setlocale es_ES date devuelve: Saturday, 15-01-2089 (05:00:00) Después de setlocale es_ES strftime devuelve: s�bado, 15 de enero de 2089 Después de setlocale es_ES.UTF-8 date devuelve: Saturday, 15-01-2089 (05:00:00) Después de setlocale es_ES.UTF-8 strftime devuelve: sábado, 15 de enero de 2089 Después de setlocale de_DE.UTF-8 date devuelve: Saturday, 15-01-2089 (05:00:00) Después de setlocale de_DE.UTF-8 strftime devuelve: Samstag, 15 de Januar de 2089
Nota: comprueba que usas como codificación para tu archivo php “Codificación UTF-8 sin BOM”. Ten en cuenta que los resultados que obtengas pueden ser distintos a estos ya que dependen de la configuración que tenga establecida tu servidor. Vamos a comentar los resultados obtenidos: Hemos creado la variable $miFecha cuyo contenido es el número de segundos desde el 1 de enero de 1970 00:00:00 GMT para la fecha 15 de enero de 2089 12:00:00 GMT. Como la hora local tiene un retraso de 7 horas respecto de la hora GMT, al pedir que se muestre por pantalla la fecha y hora con strftime se nos muestra <<Saturday, 15 de January de 2089>>. Este valor nos viene en inglés porque la configuración local del servidor es “idioma inglés”. Al cambiar la configuración local de idioma con setlocale a es_ES obtenemos la fecha en español, pero en lugar de sábado se nos muestra s?bado. La función date sigue devolviendo la fecha en inglés porque esta función no es sensible a la configuración local de idioma. Al cambiar la configuración local de idioma con setlocale a 'es_ES.UTF-8' ya obtenemos la fecha correctamente escrita en español. A modo de ejemplo, hemos cambiado la configuración a alemán para comprobar lo que se visualiza (la fecha escrita en alemán).
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Podríamos haber escrito setlocale(LC_TIME, 'es_ES','es_ES.UTF-8'); ¿Qué ocurrirá en este caso? Se tomará el primer código reconocido dentro de la lista de códigos. En este caso es_ES es un código reconocido, aunque no es el que nos da los resultados deseados. Como vemos, el trabajo relacionado con fecha, hora e idioma puede resultar problemático y no tenemos más remedio que realizar pruebas hasta obtener el resultado deseado.
FUNCIÓN DATE_DEFAULT_TIMEZONE_SET PHP La función date_default_timezone_set es una función PHP utilizada para establecer una zona horaria específica como configuración local para el servidor. De esta manera, podemos hacer que al pedir la fecha y hora actual nos muestre la fecha y hora de un país (o región de un país) concreto. Su sintaxis es la siguiente: date_default_timezone_set ($valorDeTimezone);
La configuración así establecida afectará a todas las funciones de fecha y hora. Los valores de $valorDeTimezone han de escogerse entre los valores admitidos. En la siguiente tabla se muestran algunos de ellos (nota: algunos valores pueden no ser reconocidos, recomendamos hacer pruebas para comprobarlo): Zonas horarias para México, España y Argentina: País
Zona
Zona
Zona
México
America/Mexico_City
America/Hermosillo
America/Matamoros
America/Cancun
America/Tijuana
America/Mazatlan
America/Merida
America/Santa_Isabel
America/Chihuahua
America/Monterrey
America/Bahia_Banderas
America/Ojinaga
España
Europe/Madrid
Atlantic/Canary
Argentina
America/Argentina/Buenos_Aires
America/Argentina/Tucuman
America/Argentina/Mendoza
America/Argentina/Cordoba
America/Argentina/Catamarca
America/Argentina/San_Luis
America/Argentina/Salta
America/Argentina/La_Rioja
America/Argentina/Rio_Gallegos
America/Argentina/Jujuy
America/Argentina/San_Juan
America/Argentina/Ushuaia
Zonas horarias para otros países: País
Zona
© aprenderaprogramar.com, 2006-2029
País
Zona
Módulo: Programación III
Docencia Informática
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
República Dominicana
America/Santo_Domingo
Guinea Ecuatorial
Africa/Malabo
Para probar el funcionamiento de esta función, en combinación con setlocale, escribe este código y comprueba qué resultados obtienes: <meta charset='utf-8'> <?php $miFecha=
gmmktime(12,0,0,1,15,2089);
setlocale(LC_TIME,
'es_ES.UTF-8');
echo
'Después
de
setlocale es_ES.UTF-8 strftime devuelve: '.strftime("%A, %d de %B de %Y %H:%M", $miFecha).'<br/>'; echo 'Fecha actual: '.strftime("%A, %d de %B de %Y %H:%M").'<br/>'; date_default_timezone_set ('Europe/Madrid'); echo 'Establecida zona horaria Europe/Madrid obtenemos: '.strftime("%A, %d de %B de %Y %H:%M", $miFecha).'<br/>'; echo 'Ahora fecha actual es: '.strftime("%A, %d de %B de %Y %H:%M").'<br/>'; ?>
El resultado que nosotros hemos obtenido con un servidor ubicado en Denver (USA) es el siguiente: Después de setlocale es_ES.UTF-8 strftime devuelve: sábado, 15 de enero de 2089 05:00 Fecha actual: jueves, 04 de septiembre de 2044 04:31 Establecida zona horaria Europe/Madrid obtenemos: sábado, 15 de enero de 2089 13:00 Ahora fecha actual es: jueves, 04 de septiembre de 2044 12:31 Fíjate cómo de obtener la hora local en Denver hemos pasado a obtener la hora local en Madrid (8 horas adelantada respecto a la de Denver) gracias al uso de date_default_timezone_set. No siempre se obtienen los resultados deseados, por lo que es imprescindible realizar pruebas.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
EJERCICIO 1 Crea una función php de nombre mostrarDiasMes que reciba como argumentos un mes (valor numérico de 1 a 12) y un año (valor numérico de 4 dígitos) y muestre por pantalla el texto “extendido” correspondiente a la fecha en idioma español. Por ejemplo mostrarDiasMes(1, 2089) deberá devolver: 1 de enero de 2089, 2 de enero de 2089, 3 de enero de 2089, 4 de enero de 2089… hasta 31 de enero de 2089”. Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
EJERCICIO 2 Repite el ejercicio anterior, pero en esta ocasión mostrando la fecha en formato de hora tal y como se usa en Holanda y en idioma holandés.
FORMAS DE ENVÍO DE LOS DATOS DE UN FORMULARIO. MÉTODOS GET Y POST. EJEMPLOS Cuando un usuario rellena un formulario en una página web los datos hay que enviarlos de alguna manera. Vamos a considerar las dos formas de envío de datos posibles: usando el método POST o usando el método GET. Debes conocer cómo se generan formularios HTML antes de leer esta entrega.
Por ejemplo: <form action="http://aprenderaprogramar.com/prog/newuser.php" method="get"> podría ser el encabezado de un formulario donde se usa el método get. En el ejemplo anterior la acción que se ejecutará cuando el usuario pulse el botón “Enviar” (submit) será el envío de los datos a la url especificada usando el método get. Veamos el aspecto de un formulario cualquiera para hacernos una idea general.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Este formulario consta de varios campos que al usuario se le solicitan como Nombre, Apellidos, Correo electrónico, País y Mensaje. Posiblemente los nombres de los campos en el código HTML sean del tipo nombre_user, apellidos_user, email_user, pais_user y msg. Un formulario se escribe en HTML. Si no tienes claro cómo se generan formularios HTML, te recomendamos leas el curso HTML desde cero de aprenderaprogramar.com. Por ejemplo, este es el código de un formulario: <!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo del uso de formularios - aprenderaprogramar.com</title> </head> <body> <form method="get" action="action.php"> Selecciona tus intereses: <br /> <input name="cbipeliculas" type="checkbox" />Películas <br /> <input name="cbilibros" type="checkbox" checked="checked" />Libros
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
<br /> <input name="cbiinternet" type="checkbox" />Internet </form> </body> </html>
La diferencia entre los métodos get y post radica en la forma de enviar los datos a la página cuando se pulsa el botón “Enviar”. Mientras que el método GET envía los datos usando la URL, el método POST los envía de forma que no podemos verlos. Un resultado usando el método GET sería el siguiente: http://www.aprenderaprogramar.com/newuser.php?nombre=Pepe&apellido=Flores&email=h52turam %40uco.es&sexo=Mujer En esta URL podemos distinguir varias partes: http://www.aprenderaprogramar.com/newuser.php es la dirección web en sí. El símbolo ? indica dónde empiezan los parámetros que se reciben desde el formulario que ha enviado los datos a la página. Las parejas dato1=valor1, dato2=valor2, dato3=valor3… reflejan son el nombre y el valor de los campos enviados por el formulario.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Por ejemplo: nombre=Pepe, apellidos=Flores, etc. nos dice que el campo del formulario que se denomina nombre llega con valor “Pepe” mientras que el campo del formulario que se denomina apellidos llega con valor “Flores” Tener en cuenta que para separar la primera pareja se usa el símbolo ‘?’ y para las restantes el símbolo ‘&’. Otro aspecto a tener en cuenta es que determinados caracteres no son recibidos en la URL de la misma forma exactamente en que fueron escritos en el formulario. Por ejemplo, el valor del campo email que se recibe en la URL es h52turam%40uco.es, mientras que el usuario en el formulario habrá introducido con toda seguridad h52turam@uco.es. Como vemos, el carácter @ ha sido sustituido por los caracteres %40. Estas equivalencias se introducen automáticamente en la transmisión de datos debido a que las URLs no admiten determinados caracteres como letras con tildes, arrobas y otros. No debes preocuparte por esta codificación, ya que si posteriormente rescatamos los valores mediante otros mecanismos volveremos a obtener el texto original. Simplemente, conviene conocer esta circunstancia para no pensar que están ocurriendo cosas extrañas o errores. Hemos visto el resultado de un envío por el método get. En el caso de un envío de datos usando el método POST, aunque estos datos también serán enviados (de una forma que podemos denominar “oculta”), no los podremos ver en la URL. Para poder recuperar los valores de los campos en el caso de un envío con el método post necesitaríamos otras herramientas (por ejemplo valernos del lenguaje PHP para recuperar el valor de esos campos). El resultado final con ambos métodos podemos decir que es el mismo: la información se transmite de un lado a otro. La diferencia radica en que con el método GET podemos ver directamente los parámetros pasados ya que están dentro de la URL mientras que con el método POST los parámetros quedan ocultos y para rescatarlos hay que usar otras herramientas. Un ejemplo de uso del método post sería este: <form action="http://aprenderaprogramar.com/prog/newuser.php" method="post"> Cuando usamos el método post los datos enviados desde el formulario no son visibles, pero sí son recuperables usando las instrucciones adecuadas. EJERCICIO Crea un archivo HTML que contenga un formulario que contenga un checkbox (¿Desea recibir factura?), dos input radio (Varón/Mujer), tres input tipo texto (Nombre, Dirección, Email) y un combobox para forma de envío (normal, por avión o urgente), junto con un botón de envío. Establece como url de envío la dirección recibe.php y método de envío get y comprueba que se recuperan los datos enviados correctamente a través de la url.
RECUPERANDO DATOS DEL FORMULARIO. VARIABLES $_REQUEST, $_GET y $_POST
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Cuando un usuario pulsa el botón enviar de un formulario, la información que contenían sus campos es enviada a una dirección URL desde donde tendremos que recuperarla para tratarla de alguna manera. Por ejemplo, si realiza una compra, tendremos que recuperar los datos para completar el proceso de pago. La información del formulario “viaja” almacenada en variables que podremos recuperar y utilizar mediante PHP.
La recuperación de variables con PHP es bastante fácil, ya sean datos de un formulario enviado por el método post (parámetros no visibles) o por el método get (parámetros en la URL sí visibles). Antes que nada hay que aclarar que hay varios métodos para recuperar variables con PHP. Para los formularios tenemos los métodos GET, POST, y REQUEST.
RECUPERAR VARIABLES CON GET GET nos permite recuperar parámetros desde la URL o desde formularios enviados con el método GET. Escribe este código y guárdalo con un nombre de archivo como ejemplo1.html. A continuación, sube el fichero al servidor, introduce un nombre en el campo del formulario y visualiza el resultado. <form name="formulario" method="get" action="ejemploGet.php"> Nombre: <input type="text" name="nombre" value=""> <input type="submit" /> </form>
Antes de pulsar sobre el botón enviar, debemos crear el fichero ejemploGet.php que es el indicado en el formulario para el envío de los datos. © aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Escribe este código y guárdalo con un nombre de archivo como ejemploGet.php. A continuación, sube el fichero al servidor en la misma carpeta donde subiste el ejemplo1.html <?php //Ejemplo aprenderaprogramar.com $nombre = $_GET['nombre'];
echo $nombre;
?>
Fíjate que la instrucción $_GET['nombreDelParametro'] sirve para recuperar la información recibida. Una vez completemos el paso anterior, pulsaremos sobre el botón enviar del ejemplo1.html y veremos una imagen similar a la siguiente.
Vamos a explicar el proceso que ha tenido lugar. El primer archivo es un documento HTML. Para ser más correctos, deberíamos haberlo escrito de esta manera: <!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo aprenderaprogramar.com</title> </head> <body> <form name="formulario" method="get" action="ejemploGet.php"> Nombre: <input type="text" name="nombre" value=""> <input type="submit" /> </form> </body> </html>
Sin embargo, comprobamos que los navegadores tratan de interpretar y mostrar el resultado de un código HTML (o PHP) incluso cuando la sintaxis o la definición del documento no es del todo correcta. Esto debemos conocerlo, sin embargo recomendamos que siempre se trate de ser lo más correctos posibles a la hora de escribir código web. Vemos que hemos definido un formulario en cuya cabecera hemos puesto que el método de envío de los datos va a ser el método get y que la URL de destino va a ser ejemploGet.php. A su vez, el
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
formulario tiene un campo cuyo atributo name es “nombre”. Ese atributo define el nombre de la variable que vamos a poder recuperar en la URL de destino. En el archivo php hemos incluido la línea $nombre = $_GET['nombre']; que significa que creamos una variable php denominada $nombre donde almacenamos la información del campo ‘nombre’ que recibe la URL a través del método get proviniente del formulario. Si tuviéramos otros campos que hubiéramos definido como apellidos, teléfono, edad, el tratamiento sería similar. Por ejemplo: $apellidos = $_GET['apellidos']; $telefono = $_GET['celular']; $edadPersona = $_GET['edad']; Fíjate en que una cosa es la variable en la que almacenamos la información recuperada, y otra cosa es el nombre del campo del formulario de donde proviene. Por ejemplo en $apellidos = $_GET['apellidos']; coinciden el nombre de la variable que utilizamos con el nombre del campo del formulario. Sin embargo, en $telefono = $_GET['celular']; no coinciden. En este caso, el campo que proviene del formulario se llama ‘celular’ mientras que la información que venga en ese campo la almacenamos en una variable a la que hemos llamado $telefono. Finalmente, en $edadPersona = $_GET['edad']; estamos almacenando en una variable a la que hemos llamado $edadPersona la información proviniente de un campo del formulario denominado ‘edad’. Con frecuencia los nombres de las variables y de los campos del formulario se hacen coincidir, pero en otras ocasiones no. Esto queda a elección del programador. Como podemos observar, recuperar datos enviados por un formulario con el método GET es bastante simple usando PHP.
EJERCICIO RESUELTO Nº 1 Diseñar un formulario web que pida la altura y el diámetro de un cilindro en metros. Una vez el usuario introduzca los datos y pulse el botón calcular, deberá calcularse el volumen del cilindro y mostrarse el resultado en el navegador.
SOLUCIÓN La solución esquematizada en pseudocódigo es la siguiente:
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
1.Inicio 2.Mostrar “Introduzca el diámetro, en metros” : Pedir D 3.Mostrar “Introduzca la altura, en metros” : Pedir H 4.R = D/2 : Pi = 3,141593 5.V = Pi * (R ^ 2) * H 6.Mostrar “El volumen del cilindro es de”, V, “metros cúbicos” 7. Fin
Esquematizar la solución en pseudocódigo es una buena idea antes de realizar la programación, pues nos permite definir conceptualmente cómo va a ser nuestro código antes de escribirlo. Es sobre todo adecuado para personas que se están iniciando en la programación. En primer lugar, crearemos el archivo html con el formulario. <!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo aprenderaprogramar.com</title> <meta charset="utf-8"> </head> <body> <form name="formularioDatos" method="get" action="ejemploGet1.php"> <p> CÁLCULO DEL VOLUMEN DE UN CILINDRO </p> <br/> Introduzca el diámetro en metros: <input type="text" name="diam" value=""> <br/> <br/> Introduzca la altura en metros: <input type="text" name="altu" value=""> <br/> <br/> <input value="Calcular" type="submit" /> </form> </body> </html>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Por otro lado, crearemos el archivo php con el tratamiento de datos: <?php //Ejemplo aprenderaprogramar.com $diametro = $_GET['diam']; $altura = $_GET['altu']; $radio = $diametro/2; $Pi = 3.141593; $volumen = $Pi*$radio*$radio*$altura; echo "<br/> &nbsp; El volumen del cilindro es de". $volumen. "metros cúbicos"; ?>
Fíjate que hemos escrito la potencia del radio como $radio * $radio. En otros lenguajes existe el operador de exponenciación, pero en php esta operación se tiene que realizar recurriendo a una función matemática. Esta función la estudiaremos en otro momento. Finalmente obtenemos un resultado. Haz pruebas introduciendo como valores de diámetro y altura 2,15 y 1,75 en vez de 2.15 y 1.75. Posiblemente no obtengas un resultado adecuado si usas las comas, ya que en PHP el separador de la parte decimal de un número es el punto.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
EJERCICIO RESUELTO Nº 2 Diseñar un desarrollo web simple con php que pida al usuario el precio de tres productos en tres establecimientos distintos denominados “Tienda 1”, “Tienda 2” y “Tienda 3”. Una vez se introduzca esta información se debe calcular y mostrar el precio medio del producto.
SOLUCIÓN La solución esquematizada en pseudocódigo es la siguiente:
1. Inicio 2. Mostrar “Introduzca el precio del producto en el establecimiento número 1, en euros” : Pedir Precio1 3. Mostrar “Introduzca el precio del producto en el establecimiento número 2, en euros” : Pedir Precio2 4. Mostrar “Introduzca el precio del producto en el establecimiento número 3, en euros” : Pedir Precio3 5. Media = (Precio1 + Precio2 + Precio3) / 3 6. Mostrar “El precio medio del producto es”, Media, “euros” 7. Fin
<!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
<html> <head> <title>Ejemplo aprenderaprogramar.com</title> <meta charset="utf-8"> </head> <body> <form name="formularioDatos" method="get" action="ejemploGet2.php"> <p> CÁLCULO DEL PRECIO MEDIO DE UN PRODUCTO </p> <br/> Introduzca el precio del producto en el establecimiento número 1, en euros: <input type="text" name="precio1" value=""> <br/> <br/> Introduzca el precio del producto en el establecimiento número 1, en euros: <input type="text" name="precio2" value=""> <br/> <br/> Introduzca el precio del producto en el establecimiento número 3, en euros: <input type="text" name="precio3" value=""> <br/> <br/> <input value="Calcular" type="submit" /> </form> </body> </html>
Es posible que durante el desarrollo del curso te encuentres visualizaciones de este tipo, donde podrás comprobar que los acentos o tildes no se ven bien.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Recordarte que la solución a esto es, cuando estamos trabajando con Notepad++, elegir en el menú Formato la opción “Codificar en UTF-8 sin BOM”. En caso de que por error el archivo esté en otro formato, elige la opción “Convertir en UTF-8 sin BOM” para dejar correctamente la codificación del archivo. También puede ser necesario introducir la etiqueta: <meta charset="utf-8"> entre las etiquetas <head> … </head> para lograr que la visualización sea correcta.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Por otro lado necesitamos el archivo php para mostrar los resultados: <?php //Ejemplo aprenderaprogramar.com $precio1 = $_GET['precio1']; $precio2 = $_GET['precio2']; $precio3 = $_GET['precio3']; $media = ($precio1+$precio2+$precio3)/3;
echo "<br/> &nbsp; DATOS RECIBIDOS";
echo "<br/> &nbsp; Precio producto establecimiento 1: ". $precio1. " euros"; echo "<br/> &nbsp; Precio producto establecimiento 2: ". $precio2. " euros"; echo "<br/> &nbsp; Precio producto establecimiento 2: ". $precio3. " euros <br/>"; echo "<br/> &nbsp; El precio medio del producto es de ". $media. " euros"; ?>
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
¿DESDE DÓNDE SE RECUPERAN LOS DATOS? Si has realizado el ejercicio anterior habrás comprobado que la URL una vez se pulsa el botón de envío del formulario es de este tipo: http://www.aprenderaprogramar.com/ejemploGet2.php?precio1=18.55&precio2=21&precio3=27.55 Aquí podemos comprobar que los datos están en la URL. Ahora bien, los datos venían del formulario. ¿Desde dónde se están recuperando los datos? Para responder a esta pregunta escribe una URL de este tipo: http://www.aprenderaprogramar.com/ejemploGet2.php?precio1=10&precio2=15&precio3=20 DATOS RECIBIDOS Precio producto establecimiento 1: 10 euros Precio producto establecimiento 2: 15 euros Precio producto establecimiento 2: 20 euros El precio medio del producto es de 15 euros Llegamos a una conclusión: los datos pasan del formulario a la URL, y desde la URL son recuperados por el intérprete PHP usando $_GET[‘nombreDelParametro’]. Por tanto los datos no vienen directamente del formulario, sino que son recuperados a través de la URL.
EJERCICIO PROPUESTO Diseñar un desarrollo web simple con PHP que dé respuesta a la necesidad que se plantea a continuación. Un operario de una fábrica recibe cada cierto tiempo un depósito cilíndrico de dimensiones variables, que debe llenar de aceite a través de una toma con cierto caudal disponible. Se desea crear una aplicación web que le indique cuánto tiempo transcurrirá hasta el llenado del depósito. El caudal disponible se considera estable para los tiempos que tardan los llenados de depósitos y lo facilita el propio operario, aportando el dato en litros por minuto.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
ORIENTACIÓN PARA LA SOLUCIÓN La solución esquematizada en pseudocódigo es la siguiente:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Fin
Inicio Mostrar “Introduzca el caudal disponible en litros / minuto”: Pedir Q Mostrar “Introduzca el diámetro del depósito, en metros” : Pedir D Mostrar “Introduzca la altura del depósito, en metros” : Pedir H Pi = 3,141593 R=D/2 V = Pi * (R ^ 2) * H : Vlitros = V * 1000 tminutos = Vlitros / Q Mostrar “El tiempo que transcurrirá hasta el llenado del depósito es de”, tminutos, “minutos”
Realiza el ejercicio y comprueba los resultados. Para que tengas una referencia, si el caudal disponible es de 125 litros por minuto y los valores de diámetro y altura del cilindro son 2.15 y 1.75, el resultado que debes obtener es que el depósito tarda en llenarse será de aproximadamente 50 minutos.
RECUPERANDO DATOS DEL FORMULARIO. VARIABLES $_POST Cuando un usuario pulsa el botón enviar de un formulario, la información que contenían sus campos es enviada a una dirección URL desde donde tendremos que recuperarla para tratarla de alguna manera. Por ejemplo, si realiza una compra, tendremos que recuperar los datos para completar el proceso de pago. La información del formulario “viaja” almacenada en variables que podremos recuperar y utilizar mediante PHP. Una de las formas de recuperación consiste en usar $_POST.
RECUPERAR VARIABLES CON POST POST nos permite recuperar datos enviados desde formularios con el método POST. Escribe este código y guárdalo con un nombre de archivo como ejemplo1.html. A continuación, sube el fichero al servidor, introduce un nombre en el campo y visualiza el resultado.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
<form name="formulario" method="post" action="ejemploPost.php"> Nombre: <input type="text" name="nombre" value=""> <input type="submit" /> </form>
Antes de pulsar sobre el botón enviar, debemos crear el fichero ejemploPost.php que es el indicado en el formulario para el envío de los datos. Escribe este código y guárdalo con un nombre de archivo como ejemploPost.php. A continuación, sube el fichero al servidor en la misma carpeta donde subiste el fichero html. <?php $nombre = $_POST['nombre'];
echo $nombre;
?>
Una vez completemos el paso anterior, pulsaremos sobre el botón enviar del ejemplo1.html y veremos una imagen similar a la siguiente.
Vamos a explicar el proceso que ha tenido lugar. El primer archivo es un documento HTML. Para ser más correctos, deberíamos haberlo escrito de esta manera: <!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo aprenderaprogramar.com</title> <meta charset="utf-8"> </head> <body>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
<form name="formulario" method="post" action="ejemploPost.php"> Nombre: <input type="text" name="nombre" value=""> <input type="submit" /> </form> </body> </html>
Sin embargo, comprobamos que los navegadores tratan de interpretar y mostrar el resultado de un código HTML (o PHP) incluso cuando la sintaxis o la definición del documento no es del todo correcta. Esto debemos conocerlo, sin embargo recomendamos que siempre se trate de ser lo más correctos posibles a la hora de escribir código web. Vemos que hemos definido un formulario en cuya cabecera hemos puesto que el método de envío de los datos va a ser el método post y que la URL de destino va a ser ejemploPost.php. A su vez, el formulario tiene un campo cuyo atributo name es “nombre”. Ese atributo define el nombre de la variable que vamos a poder recuperar en la URL de destino. En el archivo php hemos incluido la línea $nombre = $_POST['nombre']; que significa que creamos una variable php denominada $nombre donde almacenamos la información del campo ‘nombre’ a través del método post proveniente del formulario. Si tuviéramos otros campos que hubiéramos definido como apellidos, teléfono, edad, el tratamiento sería similar. Por ejemplo: $apellidos = $_POST['apellidos']; $telefono = $_POST['celular']; $edadPersona = $_POST['edad']; Fíjate en que una cosa es la variable en la que almacenamos la información recuperada, y otra cosa es el nombre del campo del formulario de donde proviene. Por ejemplo en $apellidos = $_POST['apellidos']; coinciden el nombre de la variable que utilizamos con el nombre del campo del formulario. Sin embargo, en $telefono = $_POST['celular']; no coinciden. En este caso, el campo que proviene del formulario se llama ‘celular’ mientras que la información que venga en ese campo la almacenamos en una variable a la que hemos llamado $telefono. Finalmente, en $edadPersona = $_POST['edad']; estamos almacenando en una variable a la que hemos llamado $edadPersona la información proveniente de un campo del formulario denominado ‘edad’. Con frecuencia los nombres de las variables y de los campos del formulario se hacen coincidir, pero en otras ocasiones no. Esto queda a elección del programador. Como podemos observar, recuperar datos enviados por un formulario con el método POST es bastante simple usando PHP.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
EJERCICIO RESUELTO Nº 1 Diseñar un formulario web que pida la altura y el diámetro de un cilindro en metros. Una vez el usuario introduzca los datos y pulse el botón calcular, deberá calcularse el volumen del cilindro y mostrarse el resultado en el navegador.
SOLUCIÓN La solución esquematizada en pseudocódigo es la siguiente:
1.Inicio 2.Mostrar “Introduzca el diámetro, en metros” : Pedir D 3.Mostrar “Introduzca la altura, en metros” : Pedir H 4.R = D/2 : Pi = 3,141593 5.V = Pi * (R ^ 2) * H 6.Mostrar “El volumen del cilindro es de”, V, “metros cúbicos” 7. Fin
Esquematizar la solución en pseudocódigo es una buena idea antes de realizar la programación, pues nos permite definir conceptualmente cómo va a ser nuestro código antes de escribirlo. Es sobre todo adecuado para personas que se están iniciando en la programación. En primer lugar, crearemos el archivo html con el formulario. <!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo aprenderaprogramar.com</title> <meta charset="utf-8"> </head> <body> <form name="formularioDatos" method="post" action="ejemploPost1.php"> <p> CÁLCULO DEL VOLUMEN DE UN CILINDRO </p> <br/> Introduzca el diámetro en metros: <input type="text" name="diam" value=""> <br/> <br/> Introduzca la altura en metros: <input type="text" name="altu" value=""> <br/> <br/> <input value="Calcular" type="submit" />
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
</form> </body> </html>
Por otro lado, crearemos el archivo php con el tratamiento de datos: <?php //Ejemplo aprenderaprogramar.com $diametro = $_POST['diam']; $altura = $_POST['altu']; $radio = $diametro/2; $Pi = 3.141593; $volumen = $Pi*$radio*$radio*$altura; echo "<br/> &nbsp; El volumen del cilindro es de". $volumen. "metros cúbicos"; ?>
Fíjate que hemos escrito la potencia del radio como $radio * $radio. En otros lenguajes existe el operador de exponenciación, pero en php esta operación se tiene que realizar recurriendo a una función matemática. Esta función la estudiaremos en otro momento. Finalmente obtenemos un resultado. Haz pruebas introduciendo como valores de diámetro y altura 2,15 y 1,75 en vez de 2.15 y 1.75. Posiblemente no obtengas un resultado adecuado si usas las comas, ya que en PHP el separador de la parte decimal de un número es el punto.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
EJERCICIO RESUELTO Nº 2 Diseñar un desarrollo web simple con php que pida al usuario el precio de tres productos en tres establecimientos distintos denominados “Tienda 1”, “Tienda 2” y “Tienda 3”. Una vez se introduzca esta información se debe calcular y mostrar el precio medio del producto.
SOLUCIÓN La solución esquematizada en pseudocódigo es la siguiente:
1. Inicio 2. Mostrar “Introduzca el precio del producto en el establecimiento número 1, en euros” : Pedir Precio1 3. Mostrar “Introduzca el precio del producto en el establecimiento número 2, en euros” : Pedir Precio2 4. Mostrar “Introduzca el precio del producto en el establecimiento número 3, en euros” : Pedir Precio3 5. Media = (Precio1 + Precio2 + Precio3) / 3 6. Mostrar “El precio medio del producto es”, Media, “euros” 7. Fin
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
<title>Ejemplo aprenderaprogramar.com</title> <meta charset="utf-8"> </head> <body> <form name="formularioDatos" method="post" action="ejemploPost2.php"> <p> CÁLCULO DEL PRECIO MEDIO DE UN PRODUCTO </p> <br/> Introduzca el precio del producto en el establecimiento número 1, en euros: <input type="text" name="precio1" value=""> <br/> <br/> Introduzca el precio del producto en el establecimiento número 1, en euros: <input type="text" name="precio2" value=""> <br/> <br/> Introduzca el precio del producto en el establecimiento número 3, en euros: <input type="text" name="precio3" value=""> <br/> <br/> <input value="Calcular" type="submit" /> </form> </body> </html>
Es posible que durante el desarrollo del curso te encuentres visualizaciones de este tipo, donde podrás comprobar que los acentos o tildes no se ven bien.
Recordarte que la solución a esto es, cuando estamos trabajando con Notepad++, elegir en el menú Formato la opción “Codificar en UTF-8 sin BOM”. En caso de que por error el archivo esté en otro formato, elige la opción “Convertir en UTF-8 sin BOM” para dejar correctamente la codificación del
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
archivo. También puede ser necesario introducir la etiqueta: <meta charset="utf-8"> entre las etiquetas <head> … </head> para lograr que la visualización sea correcta.
Por otro lado necesitamos el archivo php. <?php //Ejemplo aprenderaprogramar.com $precio1 = $_POST['precio1']; $precio2 = $_POST['precio2']; $precio3 = $_POST['precio3']; $media = ($precio1+$precio2+$precio3)/3;
echo "<br/> &nbsp; DATOS RECIBIDOS";
echo "<br/> &nbsp; Precio producto establecimiento 1: ". $precio1. " euros";
echo
"<br/> &nbsp; Precio producto establecimiento 2: ". $precio2. " euros";
echo "<br/>
&nbsp; Precio producto establecimiento 2: ". $precio3. " euros <br/>";
echo "<br/>
&nbsp; El precio medio del producto es de ". $media. " euros"; ?>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
EJERCICIO PROPUESTO Diseñar un desarrollo web simple con PHP que dé respuesta a la necesidad que se plantea a continuación. Un operario de una fábrica recibe cada cierto tiempo un depósito cilíndrico de dimensiones variables, que debe llenar de aceite a través de una toma con cierto caudal disponible. Se desea crear una aplicación web que le indique cuánto tiempo transcurrirá hasta el llenado del depósito. El caudal disponible se considera estable para los tiempos que tardan los llenados de depósitos y lo facilita el propio operario, aportando el dato en litros por minuto.
ORIENTACIÓN PARA LA SOLUCIÓN La solución esquematizada en pseudocódigo es la siguiente:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Fin
Inicio Mostrar “Introduzca el caudal disponible en litros / minuto”: Pedir Q Mostrar “Introduzca el diámetro del depósito, en metros” : Pedir D Mostrar “Introduzca la altura del depósito, en metros” : Pedir H Pi = 3,141593 R=D/2 V = Pi * (R ^ 2) * H : Vlitros = V * 1000 tminutos = Vlitros / Q Mostrar “El tiempo que transcurrirá hasta el llenado del depósito es de”, tminutos, “minutos”
Realiza el ejercicio y comprueba los resultados. Para que tengas una referencia, si el caudal disponible es de 125 litros por minuto y los valores de diámetro y altura del cilindro son 2.15 y 1.75, el resultado que debes obtener es que el depósito tarda en llenarse será de aproximadamente 50 minutos.
RECUPERANDO DATOS DE FORMULARIOS. VARIABLES $_REQUEST Cuando un usuario pulsa el botón enviar de un formulario, la información que contenían sus campos es enviada a una dirección URL desde donde tendremos que recuperarla para tratarla de alguna manera. Por ejemplo, si realiza una compra, tendremos que recuperar los datos para completar el proceso de pago. La información del formulario “viaja” almacenada en variables que podremos recuperar y utilizar mediante PHP. Una de las formas de recuperación consiste en usar $_REQUEST. © aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
RECUPERAR VARIABLES CON REQUEST REQUEST nos permite capturar variables enviadas desde formularios con los métodos GET o POST. Vamos a ver dos ejemplos de formularios (ejemplo1.html y ejemplo2.html), que en un caso se enviarán usando GET y en otro usando POST. Ambos formularios enviarán la información (action) a una página común desde donde recuperaremos los datos usando $_REQUEST. El código de los archivos html sería el siguiente para ejemplo1.html y ejemplo2.html. Escribe el código en un editor de texto como Notepad++ y visualízalos en tu navegador: <form name="formulario" method="get" action="ejemploRequest.php"> Nombre: <input type="text" name="nombre" value=""> <input type="submit" /> </form>
<form name="formulario" method="post" action="ejemploRequest.php"> Nombre: <input type="text" name="nombre" value=""> <input type="submit" /> </form>
Como podemos observar, el ejemplo1.html envía los datos por GET mientras que el ejemplo2.html envía los datos por POST. Ahora bien, la acción o destino donde se enviarán los datos es la misma en los dos casos, la dirección ejemploRequest.php. Escribe este código y guárdalo con un nombre de archivo como ejemploRequest.php. A continuación, sube el fichero al servidor en la misma carpeta donde subiste el ejemplo1.html y ejemplo2.html <?phpn //Ejemplo aprenderaprogramar.com $nombre = $_REQUEST['nombre'];
echo
$nombre; ?>
A continuación, observa el resultado obtenido al introducir el nombre tanto en el ejemplo1.html como en el ejemplo2.html, y verás que es el mismo.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Vamos a explicar el proceso que ha tenido lugar. El primer archivo es un documento HTML. Para ser más correctos, deberíamos haberlo escrito de esta manera: <!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo aprenderaprogramar.com</title> <meta charset="utf-8"> </head> <body> <form name="formulario" method="get" action="ejemploRequest.php"> Nombre: <input type="text" name="nombre" value=""> <input type="submit" /> </form> </body> </html>
Sin embargo, comprobamos que los navegadores tratan de interpretar y mostrar el resultado de un código HTML (o PHP) incluso cuando la sintaxis o la definición del documento no es del todo correcta. Esto debemos conocerlo, sin embargo recomendamos que siempre se trate de ser lo más correctos posibles a la hora de escribir código web. Vemos que hemos definido un formulario en cuya cabecera hemos puesto que el método de envío de los datos va a ser el método GET y que la URL de destino va a ser ejemploRequest.php. A su vez, el formulario tiene un campo cuyo atributo name es “nombre”. Ese atributo define el nombre de la variable que vamos a poder recuperar en la URL de destino. En el archivo php hemos incluido la línea $nombre = $_REQUEST['nombre']; que significa que creamos una variable php denominada $nombre donde almacenamos la información del campo ‘nombre’ que recibe la URL a través del método GET proviniente del formulario. Si tuviéramos otros campos que hubiéramos definido como apellidos, teléfono, edad, el tratamiento sería similar. Por ejemplo: $apellidos = $_REQUEST['apellidos']; $telefono = $_REQUEST['celular']; $edadPersona = $_REQUEST['edad'];
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Fíjate en que una cosa es la variable en la que almacenamos la información recuperada, y otra cosa es el nombre del campo del formulario de donde proviene. Por ejemplo en $apellidos = $_REQUEST['apellidos']; coinciden el nombre de la variable que utilizamos con el nombre del campo del formulario. Sin embargo, en $telefono = $_REQUEST['celular']; no coinciden. En este caso, el campo que proviene del formulario se llama ‘celular’ mientras que la información que venga en ese campo la almacenamos en una variable a la que hemos llamado $telefono. Finalmente, en $edadPersona = $_REQUEST['edad']; estamos almacenando en una variable a la que hemos llamado $edadPersona la información proviniente de un campo del formulario denominado ‘edad’. Con frecuencia los nombres de las variables y de los campos del formulario se hacen coincidir, pero en otras ocasiones no. Esto queda a elección del programador.
EJERCICIO RESUELTO Nº 1 Diseñar un formulario web que pida la altura y el diámetro de un cilindro en metros. Una vez el usuario introduzca los datos y pulse el botón calcular, deberá calcularse el volumen del cilindro y mostrarse el resultado en el navegador. El envío de datos debe hacerse por GET y la recuperación con REQUEST.
SOLUCIÓN La solución esquematizada en pseudocódigo es la siguiente:
1.Inicio 2.Mostrar “Introduzca el diámetro, en metros” : Pedir D 3.Mostrar “Introduzca la altura, en metros” : Pedir H 4.R = D/2 : Pi = 3,141593 5.V = Pi * (R ^ 2) * H 6.Mostrar “El volumen del cilindro es de”, V, “metros cúbicos” 7. Fin
Esquematizar la solución en pseudocódigo es una buena idea antes de realizar la programación, pues nos permite definir conceptualmente cómo va a ser nuestro código antes de escribirlo. Es sobre todo adecuado para personas que se están iniciando en la programación. Crearemos el archivo html: <!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html><head> <title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8"> </head> <body> <form name="formularioDatos" method="get" action="ejemploRequest1.php"> <p> CÁLCULO DEL VOLUMEN DE UN CILINDRO </p>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
<br/> Introduzca el diámetro en metros: <input type="text" name="diam" value=""> <br/> <br/> Introduzca la altura en metros: <input type="text" name="altu" value=""> <br/> <br/> <input value="Calcular" type="submit" /> </form> </body> </html>
Por otro lado, crearemos el archivo php con el tratamiento de datos: <?php //Ejemplo aprenderaprogramar.com $diametro = $_REQUEST['diam']; $altura = $_REQUEST['altu']; $radio = $diametro/2; $Pi = 3.141593; $volumen = $Pi*$radio*$radio*$altura; echo "<br/> &nbsp; El volumen del cilindro es de". $volumen. "metros cúbicos"; ?>
Fíjate que hemos escrito la potencia del radio como $radio * $radio. En otros lenguajes existe el operador de exponenciación, pero en php esta operación se tiene que realizar recurriendo a una función matemática. Esta función la estudiaremos en otro momento.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Finalmente obtenemos un resultado. Haz pruebas introduciendo como valores de diámetro y altura 2,15 y 1,75 en vez de 2.15 y 1.75. Posiblemente no obtengas un resultado adecuado si usas las comas, ya que en PHP el separador de la parte decimal de un número es el punto.
EJERCICIO RESUELTO Nº 2 Diseñar un desarrollo web simple con php que pida al usuario el precio de tres productos en tres establecimientos distintos denominados “Tienda 1”, “Tienda 2” y “Tienda 3”. Una vez se introduzca esta información se debe calcular y mostrar el precio medio del producto. El envío de datos debe hacerse por POST y la recuperación con REQUEST.
SOLUCIÓN La solución esquematizada en pseudocódigo es la siguiente:
1. Inicio 2. Mostrar “Introduzca el precio del producto en el establecimiento número 1, en euros” : Pedir Precio1 3. Mostrar “Introduzca el precio del producto en el establecimiento número 2, en euros” : Pedir Precio2 4. Mostrar “Introduzca el precio del producto en el establecimiento número 3, en euros” : Pedir Precio3 5. Media = (Precio1 + Precio2 + Precio3) / 3 6. Mostrar “El precio medio del producto es”, Media, “euros” 7. Fin
<!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
Compiladores: Julio Encalada y Diana Granda
HTML
4.01
Transitional//EN"
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
"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> CÁLCULO DEL PRECIO MEDIO DE UN PRODUCTO </p> <br/> Introduzca el precio del producto en el establecimiento número 1, en euros: <input type="text" name="precio1" value=""> <br/> <br/> Introduzca el precio del producto en el establecimiento número 1, en euros: <input type="text" name="precio2" value=""> <br/> <br/> Introduzca el precio del producto en el establecimiento número 3, en euros: <input type="text" name="precio3" value=""> <br/> <br/> <input value="Calcular" type="submit" /> </form> </body> </html>
Es posible que durante el desarrollo del curso te encuentres visualizaciones de este tipo, donde podrás comprobar que los acentos o tildes no se ven bien.
Recordarte que la solución a esto es, cuando estamos trabajando con Notepad++, elegir en el menú Formato la opción “Codificar en UTF-8 sin BOM”. En caso de que por error el archivo esté en otro
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
formato, elige la opción “Convertir en UTF-8 sin BOM” para dejar correctamente la codificación del archivo. También puede ser necesario introducir la etiqueta: <meta charset="utf-8"> entre las etiquetas <head> … </head> para lograr que la visualización sea correcta.
Por otro lado necesitamos el archivo php. <?php //Ejemplo aprenderaprogramar.com $precio1 = $_REQUEST['precio1']; $precio2 = $_ REQUEST ['precio2']; $precio3 = $_ REQUEST ['precio3']; "<br/> &nbsp; DATOS RECIBIDOS"; $precio1. " euros"; " euros";
$media = ($precio1+$precio2+$precio3)/3;
echo
echo "<br/> &nbsp; Precio producto establecimiento 1: ".
echo "<br/> &nbsp; Precio producto establecimiento 2: ". $precio2.
echo "<br/> &nbsp; Precio producto establecimiento 2: ". $precio3. " euros <br/>";
echo "<br/> &nbsp; El precio medio del producto es de ". $media. " euros"; ?>
EJERCICIO PROPUESTO
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Diseñar un desarrollo web simple con PHP que dé respuesta a la necesidad que se plantea a continuación. Un operario de una fábrica recibe cada cierto tiempo un depósito cilíndrico de dimensiones variables, que debe llenar de aceite a través de una toma con cierto caudal disponible. Se desea crear una aplicación web que le indique cuánto tiempo transcurrirá hasta el llenado del depósito. El caudal disponible se considera estable para los tiempos que tardan los llenados de depósitos y lo facilita el propio operario, aportando el dato en litros por minuto.
ORIENTACIÓN PARA LA SOLUCIÓN La solución esquematizada en pseudocódigo es la siguiente:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Fin
Inicio Mostrar “Introduzca el caudal disponible en litros / minuto”: Pedir Q Mostrar “Introduzca el diámetro del depósito, en metros” : Pedir D Mostrar “Introduzca la altura del depósito, en metros” : Pedir H Pi = 3,141593 R=D/2 V = Pi * (R ^ 2) * H : Vlitros = V * 1000 tminutos = Vlitros / Q Mostrar “El tiempo que transcurrirá hasta el llenado del depósito es de”, tminutos, “minutos”
Realiza el ejercicio y comprueba los resultados. Para que tengas una referencia, si el caudal disponible es de 125 litros por minuto y los valores de diámetro y altura del cilindro son 2.15 y 1.75, el resultado que debes obtener es que el depósito tarda en llenarse será de aproximadamente 50 minutos.
Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
RESUMEN DE LAS DIFERENCIAS ENTRE $GET, $POST Y $REQUEST
MÉTODO
GET
CONCEPTO
OBSERVACIONES
GET lleva los datos de forma "visible" al cliente Los datos son visibles por la URL, por ejemplo: (navegador web). El medio de envío es la URL. www.aprenderaprogramar.com/ action.php? Para recoger los datos que llegan en la url se usa nombre=pedro&apellidos1= gomez $_GET.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
POST
POST consiste en datos "ocultos" (porque el cliente no los ve) enviados por un formulario cuyo método de envío es post. Es ideal para formularios. Para recoger los datos que llegan por este método se usa $_POST.
La ventaja de usar POST es que estos datos no son visibles al usuario de la web. En el caso de usar get, el propio usuario podría modificar la URL escribiendo diferentes parámetros a los reales en su navegador, dando lugar a que la información tratada no sea la prevista.
REQUEST
No es un método de envío propiamente dicho, es decir, no podemos poner en un formulario HTML que el method sea REQUEST. Con la variable $_REQUEST recuperaremos los datos de los formularios enviados tanto por GET como por POST.
La ventaja principal de esta forma de recuperar los datos de un formulario es que no tenemos que saber con cual método fue enviado. La desventaja principal, como veremos en el siguiente ejemplo, es que no podremos diferenciar una variable enviada por GET o por POST.
Ahora nos podemos estar preguntado: ¿Qué pasaría si envío una variable nombre con un formulario por método post y además en la página de recuperación de datos también está definida dicha variable en la url y obtengo dicho variable con $_REQUEST? ¿Cuál me devolvería? Pues bien, para contestar a esta cuestión planteemos el siguiente ejercicio. Escribe este código y guárdalo con un nombre de archivo como ejemploPostGetRequest.html. A continuación, sube el fichero al servidor. <!DOCTYPE
HTML
PUBLIC "-//W3C//DTD
HTML
4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Ejemplo aprenderaprogramar.com</title> <meta charset="utf-8"> </head> <body> <form name="formularioDatos" method="post" action="ejemploGetPostRequest.php? nombre=pepito"> Introduzca su nombre: <input type="text" name="nombre" value=""> <br/> <br/> <input value="Enviar" type="submit" /> </form> </body> </html>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Introduciremos un nombre diferente a pepito, con lo que en la página de recuperación de datos, tendremos dos valores para 'nombre'. Y ahora comprobaremos cuál nos devuelve $_REQUEST['nombre']. Para ello escribe este código y guárdalo con un nombre de archivo como ejemploPostGetRequest.php. A continuación, sube el fichero al servidor en la misma carpeta donde subiste el ejemploPostGetRequest.html <?php //Ejemplo aprenderaprogramar.com echo "nombre = " . $_REQUEST['nombre']; ?>
Como podemos observar, el valor que toma $_REQUEST es primero el valor enviado por POST y después el enviado por GET (si no viniera en POST). Luego, como hemos observado, $_REQUEST da prioridad a los valores enviados por POST antes que a los enviados por GET. Recuerda también que una URL es modificable por el usuario fácilmente. Por ejemplo si un formulario envía datos así: www.aprenderaprogramar.com/action.php?nombre=pedro, el usuario podría modificar la URL escribiendo directamente en su navegador www.aprenderaprogramar.com/action.php?nombre=barack. Esto puede tener cierta importancia, sobre todo en el caso de transmisión de datos relativos a precios, ya que si el precio se transmite por get será manipulable por el usuario (algo indeseable). Get tiene la ventaja de que los datos son visibles y más fáciles de seguir y localizar, y el inconveniente de que puede ser manipulado más fácilmente.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
INTRODUCCIÓN AL MANEJO DE ARCHIVOS CON PHP. Cuando necesitamos crear, guardar, leer o escribir archivos en la creación de sitios web, el manejo de éstos se convierte en una prioridad. Para ello, vamos a ver una serie de funciones y algunos ejemplos para familiarizarnos con el manejo de archivos a nivel básico en php.
FUNCIÓN FOPEN La función fopen() sirve para abrir ficheros (archivos). Su sintaxis general:
<?php
//Ejemplo aprenderaprogramar.com $fp = fopen(fichero, modoDeApertura);
?>
Donde $fp es el descriptor o identificador del fichero abierto que necesitaremos más tarde. fichero puede ser un archivo de texto, un archivo con extensión .php, o incluso la URL de una página web (por ejemplo http://www.paginaweb.com/). “Abrir” una web con fopen() puede ser muy útil cuando queremos comprobar si la web existe, o si está activa. Si fichero empieza con "http://", se abre una conexión hacia la web especificada. Siempre debe ponérsele una barra ( / ) al final. Si fichero empieza con “ftp://", se abre una conexión al servidor especificado. Si fichero no empieza con ninguna de las cosas anteriormente dichas, se abre una conexión "directa" con el archivo especificado. Si no existe el archivo o dirección especificadas, se devuelve un error. Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Hay distintos modos de apertura de archivos, vamos a ver los más habituales.
A la hora de abrir un archivo, hay que saber de qué forma queremos abrirlo. Podemos abrirlo para escritura y lectura, pero de distintas formas:
Modo
Observaciones
r
Abre el archivo sólo para lectura. La lectura comienza al inicio del archivo.
r+
Abre el archivo para lectura y escritura. La lectura o escritura comienza al inicio del archivo.
w
Abre el archivo sólo para escritura. La escritura comienza al inicio del archivo, y elimina el contenido previo. Si el archivo no existe, intenta crearlo.
w+
Abre el archivo para escritura y lectura. La lectura o escritura comienza al inicio del archivo, y elimina el contenido previo. Si el archivo no existe, intenta crearlo.
a
Abre el archivo para sólo escritura. La escritura comenzará al final del archivo, sin afectar al contenido previo. Si el fichero no existe se intenta crear.
a+
Abre el archivo para lectura y escritura. La lectura o escritura comenzará al final del fichero, sin afectar al contenido previo. Si el fichero no existe se intenta crear.
Ejemplos <?php
//Ejemplo aprenderaprogramar.com $fp = fopen("/apr2/fichero.txt", "r"); $fp = fopen("/apr2/fichero2.txt", "w"); $fp = fopen("http://www.aprenderaprogramar.com/texto.txt", "a+"); $fp = fopen("ftp://ftp.elmundo.es/fichero.txt", "w");
?>
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Ahora bien, con esta simple instrucción sólo tendremos el archivo abierto para leer, escribir, o leer y escribir. Pero ahora tendremos que hacer uso de las otras instrucciones para escribir o recuperar los datos que estimemos oportunos.
FUNCIÓN FCLOSE La función fclose(identificadorDelFichero) cierra un archivo abierto. Esta función debe ser utilizada después de abrir y manipular el archivo como veremos en los siguientes ejemplos.
FUNCIONES FGETS Y FEOF La función fgets() recupera el contenido de una línea de un archivo. Su sintaxis general es: <?php
//Ejemplo aprenderaprogramar.com fgets(descriptorDelFichero);
?>
Ejemplo <?php
// Ejemplo aprenderaprogramar.com // Leemos la primera línea de fichero.txt // fichero.txt tienen que estar en la misma carpeta que el fichero php // fichero.txt es un archivo de texto normal creado con notepad, por ejemplo. $fp = fopen("fichero.txt", "r"); $linea = fgets($fp); fclose($fp);
?>
Ahora bien, con esto sólo leeremos la primera línea del fichero de texto, si quisiéramos leer línea a línea hasta el final necesitaríamos el uso de un bucle while, por ejemplo. <?php
// Ejemplo aprenderaprogramar.com // Iremos leyendo línea a línea del fichero.txt hasta llegar al fin (feof($fp)) // fichero.txt tienen que estar en la misma carpeta que el fichero php // fichero.txt es un archivo de texto normal creado con notepad, por ejemplo.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
$fp = fopen("fichero.txt", "r"); while(!feof($fp)) {
$linea = fgets($fp); echo $linea . "<br />";
}
fclose($fp); ?>
Esto nos mostrará el contenido del fichero de texto línea a línea. Comprobarás que hemos incluido una nueva función denominada feof (que viene significando algo así como file end of file o “marca de final de archivo”). La sintaxis general para esta función es: feof (identificadorDelArchivo) La función feof nos devuelve true cuando hemos llegado al final de archivo y false si no lo hemos alcanzado todavía. La condición while (!feof($fp)) podríamos haberla escrito también de la siguiente manera: while (feof($fp)==false) . Esta sintaxis es equivalente, puedes utilizar la que prefieras, pero debes acostumbrarte a entender ambas formas de escritura. Finalmente, fíjate como una vez hemos de terminado de operar con el fichero escribimos la instrucción fclose(identificadorDelFichero) para cerrar la conexión, cosa que debemos hacer siempre.
FUNCIÓN FPUTS La función fputs() escribe una línea en un archivo. Su sintaxis general es: <?php
//Ejemplo aprenderaprogramar.com fputs(descriptorDelFichero, cadena);
?>
Ejemplo <?php
// Ejemplo aprenderaprogramar.com // Escribimos una primera línea en fichero.txt // fichero.txt tienen que estar en la misma carpeta que el fichero php $fp = fopen("fichero.txt", "w"); fputs($fp, "Prueba de escritura aprenderaprogramar.com"); fclose($fp);
?>
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Fíjate que al realizar la apertura del fichero en modo w, si el fichero no existe, será creado. Fíjate también como una vez hemos de terminado de operar con el fichero escribimos la instrucción fclose(identificadorDelFichero) para cerrar la conexión, cosa que debemos hacer siempre. Si ahora abrimos el fichero con algún editor de textos como Notepad, bloc de notas o cualquier otro, veremos lo siguiente:
EJERCICIO Crea las siguientes funciones en PHP: a) Una función (tipo procedimiento, no hay valor devuelto) denominada escribirTresNumeros que reciba tres números enteros como parámetros y proceda a escribir dichos números en tres líneas en un archivo denominado datosEjercicio.txt. Si el archivo no existe, debe crearlo. b) Una función denominada obtenerSuma (tipo función, devolverá un valor numérico) que reciba una ruta de archivo como parámetro, lea los números existentes en cada línea del archivo, y devuelva la suma de todos esos números. c) Una función denominada obtenerArrNum (tipo función, devolverá un array de valores numéricos) que reciba una ruta de archivo como parámetro, lea los números existentes en cada línea del archivo, y devuelva un array cuyo índice 0 contendrá el número existente en la primera línea, cuyo índice 1 contendrá el número existente en la segunda línea y así sucesivamente. d) Crea código php donde a través de la función escribirTresNumeros escribas en el fichero los números 2, 8, 14. Luego, mediante la función obtenerSuma muestra por pantalla el resultado de sumar los números existentes en el archivo. Finalmente, mediante la función obtenerArrNum obtén el array, recórrelo y muestra cada uno de los elementos del array.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
LECTURA Y ESCRITURA DE ARCHIVOS DE TEXTO CON PHP. En esta ocasión veremos unos ejemplos prácticos de lectura y escritura de ficheros de texto usando PHP. El primer lugar, debemos crear un archivo de texto (con cualquier editor, notepad por ejemplo, aunque también puede valer el bloc de notas de Windows) con algunas líneas de texto.
LECTURA DE FICHEROS Para leer un archivo de texto línea a línea en PHP vamos a utilizar la función fgets(). Por ejemplo si queremos leer línea por línea el archivo 'archivo.txt' que se encuentra ubicado en la misma carpeta que el archivo 'leer.php', tenemos que escribir en el archivo PHP: <?php //Ejemplo aprenderaprogramar.com $file = fopen("archivo.txt", "r"); while(!feof($file)) { echo fgets($file). "<br />"; } fclose($file); ?>
Como podemos observar, lo primero que debemos hacer es abrir el fichero 'archivo.txt' y luego ir leyendo línea a línea hasta llegar al final. Recordemos que “r” es el modo de apertura que abre el archivo sólo para lectura. La lectura comienza al inicio del archivo. Después cerramos el fichero. 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
Módulo: Programación III
Docencia Informática
El contenido del fichero de texto “archivo.txt” se supone que era el siguiente:
Prueba de escritura de aprenderaprogramar.com esto es una linea de texto esto es una linea de texto esto es una linea de texto esto es una linea de texto esto es una linea de texto fin de la prueba de aprenderaprogramar.com
Lo que hemos hecho con nuestro pequeño programa es ir extrayendo líneas mientras no se detecta el final del fichero (feof). La condición while(!feof($file)) también podría haberse escrito de esta otra manera: while(feof($file)==false), con lo que obtendríamos el mismo resultado.
ESCRITURA DE FICHEROS Para escribir un archivo de texto en PHP podemos utilizar la función fwrite(). Por ejemplo si queremos escribir línea por línea un archivo 'archivo.txt' que se encuentre ubicado en la misma carpeta que el archivo 'escribir.php', tenemos que escribir en el archivo PHP: <?php //Ejemplo aprenderaprogramar.com, archivo escribir.php $file = fopen("archivo.txt", "w"); fwrite($file, "Esto es
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
una nueva linea de texto" . PHP_EOL); fwrite($file, "Otra más" . PHP_EOL); fclose($file); ?>
Nota: PHP_EOL (end of line) introduce un salto de línea en PHP. Mediante la concatenación con un punto forzamos el salto de línea después del texto introducido. Una vez escribimos en nuestro navegador la ruta del fichero escribir.php se ejecuta el código asociado. Después de la ejecución, podemos ver el fichero creado con un editor de texto cualquiera y observaremos el siguiente contenido:
Tener en cuenta que el modo de apertura de archivo que hemos usado es w. Si recordamos el significado de este modo: w: Abre el archivo sólo para escritura. La escritura comienza al inicio del archivo, y elimina el contenido previo del archivo. Si el archivo no existe, intenta crearlo.
AÑADIR CONTENIDO A UN FICHERO DE TEXTO A veces no queremos reemplazar el contenido que exista en un fichero de texto, sino añadir un contenido adicional al final de lo que ya exista en el mismo. Vamos a ver cómo podemos hacerlo. A modo de ejemplo añadiremos unas líneas de texto al final del fichero anteriormente escrito: <?php //Ejemplo aprenderaprogramar.com $file = fopen("archivo.txt", "a"); fwrite($file, "Añadimos línea 1" . PHP_EOL); fwrite($file, "Añadimos línea 2" . PHP_EOL); fclose($file); ?>
Tener en cuenta que el modo de apertura de archivo que hemos usado es a. Si recordamos el significado de este modo:
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
a: Abre el archivo para sólo escritura. La escritura comenzará al final del archivo sin eliminar el contenido previo existente. Si el fichero no existe se intenta crear. Ahora podemos ver el fichero creado con un editor de texto cualquiera y observaremos el siguiente contenido (no se ha reemplazado el contenido existente, sino que se ha ampliado):
Observamos que hemos añadido las dos nuevas líneas al final del archivo.
EJERCICIO Crea el siguiente código PHP: a) Una función (tipo procedimiento, no hay valor devuelto) denominada escribirNumerosMod que reciba dos parámetros: un array de valores enteros y una cadena de texto que puede ser "sobreescribir" ó "ampliar". La función debe proceder a: escribir cada uno de los números que forman el contenido del array en una línea de un archivo datosEjercicio.txt usando el modo de operación que se indique con el otro parámetro. Si el archivo no existe, debe crearlo. Ejemplo: El array que se pasa es $numeros = array(5, 9, 3, 22); y la invocación que se utiliza es escribirNumerosMod($numeros, "sobreescribir"); En este caso, se debe eliminar el contenido que existiera previamente en el archivo y escribir en él 4 líneas, cada una de las cuales contendrá los números 5, 9, 3 y 22. b) Una función (tipo procedimiento, no hay valor devuelto) denominada leerContenidoFichero que reciba como parámetro la ruta del fichero y muestre por pantalla el contenido de cada una de las líneas del fichero.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
c) Crea código php donde a través de la función escribirNumerosMod escribas en el fichero los números 2, 8, 14. Luego, mediante la función leerContenidoFichero muestra el contenido del fichero. Ahora con la función escribirNumerosMod amplía el contenido del fichero y añádele los números 33, 11 y 16. Muestra nuevamente el contenido del fichero por pantalla. Finalmente, escribe el fichero pasándole un array con los número 4, 99, 12 y parámetro <<sobreescribir>> para eliminar los datos que existieran previamente. Muestra el contenido del fichero por pantalla y un mensaje de despedida.
LECTURA ARCHIVOS FILE_GET_CONTENTS.
DE
TEXTO
CON
PHP
USANDO
LA
FUNCIÓN
Además de con la función fopen podemos realizar la lectura de ficheros de texto usando la función file_get_contents de PHP. La lectura de ficheros usando esta función es relativamente sencilla. Como podremos observar en los siguientes ejemplos y ejercicios, con dicha función podremos leer archivos de texto sin necesidad de ir recorriéndolos línea a línea para obtener su contenido.
FUNCIÓN FILE_GET_CONTENTS. La sintaxis general a emplear es: file_get_contents($ruta_del_fichero); Ejemplo: crea un archivo denominado archivo.txt con diferentes líneas de texto. Para recuperar el contenido del archivo escribe este código php: <?php //Ejemplo aprenderaprogramar.com $texto = file_get_contents("archivo.txt"); echo $texto; ?>
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Como podrás observar, el fichero es mostrado sin saltos de línea. Para convertir esos caracteres de salto de línea a etiquetas <br /> que den lugar a que se visualice el salto de línea en HTML y poder así, visualizarlos en un navegador, necesitamos usar la función nl2br.
FUNCIÓN NL2BR La función nl2br convierte los saltos de línea a etiquetas <br /> con lo que podremos ver esos saltos de línea en cualquier navegador. Para el ejemplo anterior podemos incluirla y así poder ver los saltos de línea correctamente. Escribe este código en un archivo como ejemplo1.php y visualiza el resultado. <?php //Ejemplo aprenderaprogramar.com $texto = file_get_contents("archivo.txt"); $texto = nl2br($texto); echo $texto; ?>
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
OTROS USOS DE FILE_GET_CONTENTS Como dato adicional, la función file_get_contents, puede obtener el contenido de una página web en forma de código HTML, es decir, su código fuente. Para ello escribiremos la dirección de la web.
Ejemplo. <?php //Ejemplo aprenderaprogramar.com $texto = file_get_contents("http://www.aprenderaprogramar.com"); echo $texto; ?>
Haciendo un uso más avanzado de esta función podrías hacer cosas como: -
Introducir un fragmento de código de otra página web dentro de tu propia página web. Para ello extraerías el contenido usando esta función y seleccionarías aquella parte que quieres mostrar dentro de tu página web.
-
Hacer búsquedas de forma similar a como las hacen buscadores tipo Google o Yahoo. Una vez capturada la información de la página, tendrías que analizarla y almacenarla en bases de datos para darle el tratamiento que quisieras.
-
Copiar el contenido de una web en otra web. -
© aprenderaprogramar.com, 2006-2029
Diversas aplicaciones adicionales.
Módulo: Programación III
Docencia Informática
EJERCICIO 1 Crea un fichero que lleve por nombre miArchivoDePrueba.txt e introduce en él el siguiente texto: Una base de datos es un sistema informático a modo de almacén. En este almacén se guardan grandes volúmenes de información. Por ejemplo, imaginemos que somos una compañía telefónica y deseamos tener almacenados los datos personales y los números de teléfono de todos nuestros clientes, que posiblemente sean millones de personas. A continuación crea un archivo denominado ejemplo2.php donde usando la función file_get_contents recuperes en una variable el texto que se encuentra en ese fichero y lo muestres en el navegador. Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
EJERCICIO 2 Recupera el código fuente de tres páginas web diferentes y usando las funciones para cadenas de php muestra por pantalla cuántas veces aparece la etiqueta <h1> en cada una de ellas. Ejemplo de resultado a obtener: La etiqueta h1 aparece 34 veces en aprenderaprogramar.com. La etiqueta h1 aparece 45 veces en elmercurio.cl. La etiqueta h1 aparece 88 veces en clarin.com
¿QUÉ ES UNA BASE DE DATOS? Una base de datos, básicamente, es un lugar físico y software que permite almacenar, modificar y eliminar información. Dicho sistema se suele denominar “servidor de base de datos” y comercialmente existen distintas marcas comerciales o fabricantes de estos sistemas como puede ser Oracle, MySQL, Microsoft SQL SERVER, etc.
Para tener una idea más precisa sobre qué es y para qué sirve una base de datos puedes consultar la siguiente dirección:
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=554:que-es-y-para-que-sirveunabase-de-datos-principales-tipos-oracle-mysql-sqlserver-postgre&catid=46:lenguajes-y-entornos&Itemid=163
CREAR UNA BASE DE DATOS MySQL EN NUESTRO SERVIDOR. CREAR UNA TABLA. TIPOS DE DATOS BÁSICOS. En primer lugar tendremos que acceder al Panel de Control de nuestro servidor. Para ello, tendremos que teclear en nuestro navegador la dirección URL de acceso al panel de administración e introducir el login y password. Si no dispones de servidor o no recuerdas cómo acceder, cuestiones que hemos explicado anteriormente en este curso, vuelve a leer el apartado 'ACCEDER VÍA PANEL DE CONTROL (CPANEL)' disponible en esta dirección web: http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=529:hosting-gratuito-elegir-crear-la-cuentaenservidor-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.
Dentro de un panel de control de un hosting suelen aparecer apartados como: Información de la cuenta, Administración FTP, Correo electrónico, Bases de datos, etc.
Nosotros vamos a buscar el enlace a bases de datos ó al gestor de bases de datos phpMyAdmin (en otros paneles este enlace aparece con el nombre webAdmin). Buscaremos el enlace “phpMyAdmin”. Si hacemos click sobre dicho enlace, al no tener ninguna base de datos creada nos mostrará un mensaje indicándonos que no existe ninguna base de datos creada. Por tanto el primer paso que tenemos que dar es crear la base de datos (create database).
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Pulsaremos sobre la opción Create Database ó New Database para crear una nueva base de datos. En otros servidores quizás sea necesario acceder a un apartado denominado “MySql”, “Databases” o similar para poder acceder a crear una base de datos.
En el momento en que se nos pida, indicaremos un nombre para nuestra base datos (nombre que tendremos que recordar) y haremos click en Create Database. Ten en cuenta que el proceso puede ser ligeramente distinto según el hosting que estemos utilizando.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Una vez tengamos nuestra base de datos creada nos aparecerá un mensaje informativo y podremos ver datos importantes para nosotros como el nombre de la base de datos (por ejemplo el nombre de base de datos podría ser b7_10356956_nombreElegido):
En el hosting que estamos utilizando como ejemplo, el nombre de nuestra base de datos se indica con nuestro identificador de usuario seguido del nombre que le pusimos a la base de datos, es decir: b7_10356956_mibasededatos © aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Pero en otros hosting el nombre de la base de datos podrá crearse de forma diferente. El nombre de la base de datos es algo que debemos apuntar pues nos hará falta más adelante. Ahora para administrar la base de datos usaremos una aplicación denominada phpMyAdmin. Se trata de una aplicación específicamente preparada para administración de bases de datos MySql (MySql es uno de los sistemas de bases de datos gratuito más usados en todo el mundo). El acceso a base de datos suele estar protegido con nombre de usuario y password. Es posible que el nombre de usuario y password para acceder a tu base de datos sea la misma que para acceder al panel del hosting, pero también es posible que debas establecer un usuario y password específicos.
EJERCICIO Responde a las siguientes preguntas: a) ¿Cómo se llama tu proveedor de hosting? b) ¿Cuál es la dirección url raíz de que dispones en dicho hosting? c) ¿Cuántas bases de datos te permite crear tu hosting? d) ¿De qué panel de administración dispones en tu hosting (cPanel, Plesk, DirectAdmin, etc.)? e) ¿Cuál es el nombre de la base de datos que has creado?
PHPMYADMIN PARA ADMINISTRAR BASES DE DATOS En la entrega anterior del curso hemos creado una base de datos y para administrar la base de datos usaremos la aplicación denominada phpMyAdmin, una aplicación específicamente preparada para administración de bases de datos MySql. Para ir a phpMyAdmin pulsaremos sobre el enlace 'phpMyAdmin'. En otros servidores es posible que haya que acceder de otra manera.
Las bases de datos organizan la información en tablas. El primer paso que vamos a dar es crear una tabla donde introducir algunos datos a modo de ejemplo. Pinchamos sobre el nombre de la base de
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
datos y la pantalla que se nos muestra a continuación nos permite crear una tabla en dicha base de datos (si no te aparece esta opción pulsa en la pestaña “Operaciones”). Nosotros vamos a suponer que queremos almacenar el nombre, apellidos, dirección, teléfono, edad y altura de personas. Para ello crearemos una tabla que llamaremos <<agenda>> con 6 columnas. Por tanto escribimos como nombre “agenda”, número de columnas 6 y pulsamos continuar.
El siguiente paso es indicar los nombres y tipos de las columnas.
Los nombres de columnas que pondremos serán: nombre, apellidos, direccion, telefono, edad y altura (escribimos estos nombres sin tildes). En tipo elegimos VARCHAR para todos las columnas de tipo cadena de caracteres. El significado de VARCHAR podemos verlo como “texto de longitud variable”. En vez de texto de longitud variable podríamos haber escogido otro tipo de datos como números enteros, números autoincrementados de uno en uno para los campos tipo identificador, fechas, etc. El campo edad lo ponemos de tipo número entero (INT), mientras que el campo altura lo ponemos de tipo número decimal (FLOAT). De momento no nos interesa saber más y, por tanto, con las cuatro columnas tipo VARCHAR, una columna tipo entero y otra columna tipo flotante, es más que suficiente para
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
nuestro objetivo (en este curso no vamos a tratar MySQL más que en aspectos básicos para comprender cómo interacciona con PHP). Como longitud/valores para los tipos de datos VARCHAR pondremos 100 que será la longitud máxima en caracteres que podrán ocupar las columnas. En resumen, al introducir estos datos hemos declarado que vamos a crear una tabla con seis columnas, denominadas nombre, apellidos, direccion, telefono, edad y altura. El número de filas no está determinado. Además los datos que se almacenen no podrán tener más de 100 caracteres de longitud para los tipos VARCHAR. Para finalizar la creación de la tabla 'agenda', pulsamos sobre Guardar y finalizaremos el proceso. La tabla creada podemos verla como algo similar a esto: nombre
apellidos
direccion
telefono
edad
altura
Como vemos ahora la tabla está vacía porque todavía no hemos introducido ningún dato. Una vez creada la tabla 'agenda' introduciremos algunos datos de prueba. Para ello, pulsaremos sobre el nombre de la tabla (fíjate que en el lateral izquierdo de phpMyAdmin existe una especie de navegador que nos permite elegir la tabla a la que queremos ir). Una vez seleccionada una tabla, veremos que hay varias pestañas (Estructura, SQL, Insertar, Exportar, Importar, Operaciones). Fíjate en la parte de arriba y verás que te indica el nombre de la base de datos y la tabla en que te encuentras. Pulsaremos sobre la pestaña 'Insertar' para acceder a introducir los datos para una fila de nuestra tabla.
Nos aparecerá una imagen similar a la siguiente. Nos indica un nombre de columna y los valores para una fila (nombre, apellidos, direccion, telefono). Añadiremos algunos datos de prueba como: nombre “Manuel Jesús”, apellidos “López de la Rosa”, dirección “C/Juan Bautista Nº 3”, telefono “658954875”, edad 32 y altura 1.80. Añadiremos también otros datos como nombre “María”, apellidos “Manzano Cabezas”, direccion “C/Arco del triunfo Nº 7”, telefono 695001002, edad 19 y altura 1.99.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Después pulsaremos sobre continuar y ya tendremos los datos guardados en la tabla. Ahora la tabla tendrá este aspecto: nombre Manuel Jesús María
apellidos López 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 actúa como identificador único de cada fila, aunque no es obligatorio (de hecho en este caso no la tenemos). A partir de aquí, podremos realizar consultas, insertar datos o borrar datos usando PHP tal y como veremos en los próximos apartados del curso.
EJERCICIO
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
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
pais
habitantes
superficie
tieneMetro
Como tipo de dato para cada campo tendremos: id INT con índice PRIMARY y opción A_I marcada (A_I significa auto-increment, este campo se incrementará en 1 ud cada vez que se inserte una fila en la tabla), ciudad VARCHAR con largo máximo 80, pais VARCHAR con largo máximo 50, habitantes BIGINT (entero largo), superficie DOUBLE (decimal largo), tieneMetro BOOLEAN (valor booleano, verdadero o falso. Tener en cuenta que posiblemente esto se refleje como tipo TinyInt: los valores posibles son 0 como equivalente a falso ó 1 como equivalente a verdadero). A continuación inserta los siguientes datos en la tabla: id 1 2 3 4 5 6 7 8 9 10
ciudad México D.F. Barcelona Buenos Aires Medellín Lima Caracas Santiago Antigua Quito La Habana
pais México España Argentina Colombia Perú Venezuela Chile Guatemala Ecuador Cuba
habitantes 555666 444333 888111 999222 999111 111222 777666 444222 333111 111222
superficie 23434.34 1111.11 333.33 888.88 222.22 111.11 222.22 877.33 999.11 333.11
tieneMetro 1 0 1 0 0 1 1 0 1 0
Visualiza el contenido de la tabla y comprueba que es correcto conforme a lo esperado.
UNIDAD IV
USO DE PHP CON MySQL. CONSULTAS BÁSICAS Estas próximas entregas no pretenden ser un manual de MySQL aunque sí explicaremos como realizar consultas básicas desde PHP. Veremos algunas funciones básicas para acceder a una base de datos MySQL desde PHP para recuperar información, insertar información o borrar información.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Describiremos una serie de funciones básicas que nos servirán para ilustrar cómo utilizar PHP para realizar consultas a una base de datos: añadir nuevos registros, actualizar registros, borrar registros, etc. No vamos a estudiar en profundidad las bases de datos ni el lenguaje SQL. Vamos a tratar de ser prácticos, conocer algunas funciones para acceder a bases de datos con PHP y aprender a usarlas a través de ejemplos. Una cuestión a comentar es que el acceso a base de datos con PHP admite dos formas distintas: las funciones tipo mysql, por ejemplo mysql_connect, son las más antiguas, cuyo uso se desaconseja si se está trabajando con un servidor con una versión de MySql moderna. Las funciones tipo mysqli, por ejemplo mysqli_connect, son las más modernas, cuyo uso se recomienda siempre que se esté trabajando con servidores actualizados. Las funciones mysqli pueden escribirse de dos formas: con estilo orientado a objetos o con estilo por procedimientos. Nosotros vamos a ver cómo usar estas funciones con el estilo por procedimientos, que es más sencillo inicialmente.
FUNCIÓN mysqli_connect (mysql_connect) Esta función nos permite crear una conexión con una base de datos concreta. La sintaxis que usaremos para esta función es:
$nombreConexion = mysqli_connect($hostname , $nombreUsuario , $contraseña); Para servidores no actualizados usar mysql_connect en lugar de mysqli_connect
La función devuelve una conexión almacenada en la variable $nombreConexion, o FALSE en caso de error. Los parámetros que hemos indicado son: $hostname es un nombre de servidor (dato que debemos consultar en nuestra cuenta de hosting). $nombreUsuario es el nombre de usuario de base de datos, nombre que habremos especificado al crear la base de datos (si no lo hemos hecho, puede ser el mismo que para acceder a cPanel ó root). $contraseña es la contraseña de acceso para el usuario de base de datos, contraseña que habremos
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
especificado al crear la base de datos (si no lo hemos hecho, puede ser la misma que para acceder a cPanel ó root). Esta función la entenderemos mejor con el ejemplo que veremos más adelante.
FUNCIÓN mysqli_close (mysql_close) Esta función nos permite cerrar la conexión con una base de datos anteriormente abierta. Siempre es recomendable cerrar una conexión cuando hayamos terminado de usarla. La sintaxis que usaremos es:
mysqli_close($nombreConexión); Para servidores no actualizados usar mysql_close en lugar de mysqli_close
La función devuelve TRUE si se ha cerrado correctamente ó FALSE en caso de errror. El identificador o nombre de conexión será aquel que hayamos obtenido previamente usando la función mysqli_connect. Esta función la entenderemos mejor con el ejemplo que veremos más adelante.
FUNCIÓN mysqli_select_db (mysql_ select_db) Esta función nos permite seleccionar una base de datos concreta dentro de todas las existentes en el servidor al que nos conectemos. La sintaxis que vamos a emplear es:
mysqli_ select_db ($nombreConexión, $nombreBaseDatos); Para servidores no actualizados usar mysql_ select_db ($nombreBaseDatos, $nombreConexión);
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
La función devuelve TRUE si se ha realizado la selección correctamente ó FALSE en caso de errror. El nombre de conexión será aquel que hayamos obtenido previamente con la función mysqli_connect. Esta función la entenderemos mejor con el ejemplo que veremos más adelante.
FUNCIÓN mysqli_query (mysql_query) Esta función nos permite ejecutar una consulta a la base de datos que especifiquemos. La sintaxis que emplearemos es:
$result = mysqli_query($nombreConexion, "Consulta aquí"); ó mysqli_query($nombreConexion, $query); Para servidores no actualizados usar $result = mysql_query("Consulta aquí", $nombreConexion);
Donde "Consulta aquí" se refiere a una consulta realizada utilizando el lenguaje SQL de consultas a bases de datos, por ejemplo una consulta puede ser "SELECT * FROM agenda", que podría traducirse como “selecciona todas las filas de la tabla agenda”. Esta función devuelve TRUE o FALSE para indicar si las operaciones UPDATE, INSERT o DELETE han tenido éxito. Para la operación SELECT devuelve un nuevo identificador de resultado. UPDATE significa “actualizar”, INSERT significa “insertar” y DELETE significa “BORRAR”. SELECT significa “seleccionar”. El nombre de conexión será aquel que hayamos obtenido previamente con la función mysqli_connect. Esta función la entenderemos mejor con el ejemplo que veremos más adelante.
RECUPERAR UN RESULTADO: DATA_SEEK, FETCH_ASSOC (MYSQL_RESULT)
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Una sentencia de consulta normalmente devuelve “un conjunto de resultados” que según el ejemplo de sintaxis anterior tendríamos en una variable denominada $result. Por ejemplo, podríamos tener como resultados de una consulta lo siguiente: nombre Manuel Jesús María
apellidos López 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 cuestión que nos planteamos ahora es: ¿Cómo extraer el dato de una celda concreta? Por ejemplo el nombre de la primera fila? Para ello, usando la sintaxis mysqli escribiríamos esto:
mysqli_data_seek ($result, numeroDeFila); ó también válido $result->data_seek(numeroDeFila); $extraido= mysqli_fetch_array($result); ó también válido $extraido=$result->fetch_array();
Aquí estamos dando dos pasos: una sentencia como mysqli_data_seek ($result, 0); significaría “posiciónate en la fila 0 de los resultados” (la primera fila). También es válido escribir $result>data_seek(0); que tiene el mismo efecto. Si escribiéramos $result->data_seek(15); signficaría “posiciónate en la fila 16 de los resultados” (tener en cuenta que se empieza a contar por cero, de ahí que 0, 1, 2, … , 15 resulten 16 filas). La sentencia $extraido= mysqli_fetch_array($result); indica que los valores existentes en la fila se introduzcan en un array cuyos índices en principio pueden ser tanto asociativos (el nombre de la columna) como numéricos (empezanso por cero). Por ejemplo si la primera columna en la tabla de la base de datos es <<ciudad>> podemos usar $extraido['ciudad'] para acceder al valor existente en la fila con la que estemos trabajando para la columna ciudad. Igualmente podríamos usar $extraido[0] para referirnos a la primera columna, $extraido[1] para referirnos a la segunda columna, $extraido[2] para referirnos a la tercera columna y así sucesivamente.
Sintaxis mysql: mysql_result En servidores no actualizados se puede usar la función mysql_result aunque al no pertenecer a la serie de funciones mysqli no está recomendado su uso.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
La sintaxis es: mysql_result($result, $numeroDeFila, "identificadorDeLaColumna"); Esta función nos devuelve el contenido de la celda en la fila y columna indicadas en forma de string (cadena de caracteres) en caso de éxito, o FALSE en caso de error. $result es el resultado obtenido previamente con una invocación a la función mysql_query. numeroDeFila es un número de fila dentro del resultado obtenido teniendo en cuenta que los números de fila se cuentan empezando desde cero. identificadorDeLaColumna puede ser el índice del campo (por ejemplo 0), el nombre del campo (por ejemplo ciudad), o el nombre de la tabla punto nombre del campo (por ejemplo agenda.ciudad) Finalmente, se puede especificar el nombre del campo que queremos extraer dentro de la fila (esto es opcional). Esta función la entenderemos mejor con el ejemplo que veremos a continuación.
EJEMPLO DE USO DE LAS FUNCIONES ANTERIORES. Escribe este código en un editor y guárdalo en un archivo de nombre ejemplo1.php (recuerda que antes debes haber creado la base de datos y creado datos de ejemplo como hemos visto anteriormente). Recuerda también que debes cambiar y poner tus propios valores en las funciones mysqli_connect y mysqli_select_db. <html><head><meta charset="utf-8"></head> <body> <?php $link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****"); mysqli_select_db($link, " b7_10356956_mibasededatos"); $tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes $result = mysqli_query($link, "SELECT * FROM agenda"); mysqli_data_seek ($result, 0); $extraido= mysqli_fetch_array($result); echo "Nombre: ".$extraido['nombre']."<br/>"; echo "Apellidos: ".$extraido['apellidos']."<br/>"; echo "Dirección: ".$extraido['direccion']."<br/>"; echo "Teléfono: ".$extraido['telefono']."<br/>"; echo "Edad: ".$extraido['edad']."<br/>"; mysqli_free_result($result); mysqli_close($link); ?> </body> </html>
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
El código con la sintaxis que no usa mysqli (no recomendado) sería: <html> <body> <?php $link = mysql_connect("sql203.byethost7.com", "b7_10356956", "*****"); mysql_select_db("b7_10356956_mibasededatos", $link); mysql_query("SET NAMES 'utf8'"); //Para que se muestren las tildes $result = mysql_query("SELECT * FROM agenda", $link); echo "Nombre: ".mysql_result($result, 0, "nombre")."<br>"; echo "Apellidos: ".mysql_result($result, 0, "apellidos")."<br>"; echo "Dirección: ".mysql_result($result, 0, "direccion")."<br>"; echo "Teléfono:".mysql_result($result, 0, "telefono")."<br>"; echo "Edad:".mysql_result($result, 0, "edad")."<br>"; echo "Altura:".mysql_result($result, 0, "altura")."<br>"; mysql_free_result($result); mysql_close($link); ?> </body> </html>
En este código lo que hemos hecho es usar las funciones vistas anteriormente y la base de datos y tablas que creamos en anteriores apartados del curso. Con todo ello lo que hacemos es realizar una consulta a la base de datos y mostrar los resultados por pantalla. Interpretemos las líneas que hemos escrito:
$link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****"); Con esta línea introducimos el identificador de conexión en una variable denominada $link. Invocamos la función mysqli_connect pasándole como parámetros el nombre del hosting, el nombre de usuario y la contraseña. Estos datos debemos conocerlos (o consultarlos) previamente.
mysqli_select_db($link, "b7_10356956_mibasededatos"); Con esta línea seleccionamos la base de datos pasándole a la función como parámetros el identificador de conexión (que hemos obtenido y guardado en una variable previamente) y el nombre de base de datos.
$result = mysqli_query($link, "SELECT * FROM agenda");
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Con esta línea seleccionamos todos los registros (filas) y campos (columnas) existentes en nuestra base de datos. Para seleccionar todos los registros escribimos SELECT *. A continuación indicamos la tabla de la cual queremos obtener dichos registros y esto lo expresamos con la sintaxis FROM agenda, siendo agenda el nombre de la tabla en la base de datos. En la llamada a la función incluirmos el identificador de conexión que hemos obtenido previamente.
Con la sentencia mysqli_data_seek ($result, 0); nos posicionamos en la primera fila (fila cero) de los resultados de la consulta. Con la sentencia $extraido= mysqli_fetch_array($result); introducimos en un array al que denominamos $extraido los datos de la fila cero obtenidos de la consulta. Finalmente mostramos por pantalla los resultados. En la versión que no usa mysqli (no recomendada) con la sentencia mysql_result($result, 0, "nombre") obtenemos el campo “nombre” del primer registro (registro 0) del resultado de la consulta que hemos almacenado previamente en $result. El resultado de invocar el archivo que hemos creado será que se nos muestre por pantalla el nombre, apellidos, dirección, teléfono, edad y altura almacenados en la primera fila de nuestra base de datos. Algo similar a esto:
Resumiendo lo que hemos hecho, hemos usado la función mysqli_connect(), que abre una conexión con el servidor MySQL en el Host especificado (en este ejemplo la máquina donde está alojada el servidor MySQL es sql203.byethost7.com, pero tú tendrás que introducir tu propio dato). También hemos especificado un usuario (b7_10356956 en este ejemplo, pero tú tendrás que introducir tu propio dato), y un password para el usuario indicado (tendrás que escribir tu password de usuario de base de datos). © aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Si la conexión ha tenido éxito, la función mysqli_connect() devuelve un identificador de dicha conexión que es almacenado en la variable $link. Si no tuviera éxito, devuelve 0 (FALSE). Con mysqli_select_db() PHP le hemos dicho al servidor que en la conexión $link nos queremos conectar a la base de datos indicada. La siguiente función mysqli_query(), usando el identificador de la conexión ($link), envía una instrucción SQL al servidor MySQL para que éste la procese. El resultado de ésta operación es almacenado en la variable $result. Finalmente, elegimos la fila de resultados cero con mysqli_data_seek ($result, 0); y guardamos los resultados de esa fila en un array con $extraido= mysqli_fetch_array($result); . Si quisiéramos mostrar los siguientes registros tendríamos que incluir instrucciones con los números 1, 2, … La sentencia mysqli_free_result($result); libera la conexión establecida con la base de datos. La sentencia mysqli_close($link); cierra la conexión con la base de datos.
*Nota: Si tenemos algún problema en localizar la información de nuestro proveedor (nombre de base de datos, usuario, etc.). recordar que dicha información normalmente está disponible en el panel de control del servidor (cpanel o similar) tal y como vimos en entregas anteriores.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
En el panel de control que estamos usando nosotros para este ejemplo, si bajamos con el scroll hacia abajo, después de la información ftp que nos aparece marcada con un recuadro rojo, aparecerá la información relativa al servidor de base de datos. Si estás utilizando otro panel de control, tendrás que buscar el lugar específico donde figura esta información.
EJERCICIO Utilizando la tabla <<ciudades>> que hemos creado para el ejercicio de la entrega anterior del curso, cuyo contenido era: id 1 2 3 4 5 6
ciudad México D.F. Barcelona Buenos Aires Medellín Lima Caracas
© aprenderaprogramar.com, 2006-2029
pais México España Argentina Colombia Perú Venezuela
habitantes 555666 444333 888111 999222 999111 111222
superficie 23434.34 1111.11 333.33 888.88 222.22 111.11
tieneMetro 1 0 1 0 0 1
Módulo: Programación III 7 8 9 10
Santiago Antigua Quito La Habana
Docencia Informática Chile Guatemala Ecuador Cuba
777666 444222 333111 111222
222.22 877.33 999.11 333.11
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 continuación muestra por pantalla los valores de país y ciudad de cada fila. Ejemplo de resultados a obtener: Los resultados de la consulta a la base de datos son los siguientes: País: México --- Ciudad: México D.F. País: España --- Ciudad: Barcelona País: Argentina --- Ciudad: Buenos Aires … … País: Cuba --- Ciudad: La Habana
CONSULTAS MEJORADAS A BASE DE DATOS MySQL CON PHP. Ahora que conocemos de una forma básica como interactuar con una base de datos MySQL haciendo uso de distintas funciones o instrucciones PHP, vamos a profundizar un poco más en dichas consultas para, por ejemplo, recorrer todos los registros de la tabla agenda y visualizarlos de manera correcta (recordar que en apartados anteriores del curso sólo se mostraban los valores para el primer registro que se encontraba en la base de datos).
Para conseguir nuestro objetivo nos basaremos en el mismo código que ya hemos utilizado anteriormente y realizaremos una serie de cambios. Para empezar, añade algunas filas más a la tabla agenda de la base de datos para que quede así: nombre Manuel Jesús María Pedro Juana
apellidos López de la Rosa Manzano Cabezas Somoza Castro Pérez Rozas
direccion C/Juan Bautista Nº 3 C/Arco del triunfo Nº 7 C/Solera nº88, B Avda. Luarcato nº22
Compiladores: Julio Encalada y Diana Granda
telefono 658954875 695001002
edad 32 19
altura 1.80 1.99
88834321 888111222
44 22
1.66 1.77
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Lo primero que vamos a tratar de ver es cómo una invocación de mysqli_fetch_array devuelve un registro (una fila) de los resultados obtenidos en una consulta a la tabla de la base de datos. ¿Qué fila de los resultados es la que nos devuelve? Si la fila ha sido establecida usando mysqli_data_seek, nos devolverá la fila que hayamos especificado. Si no usamos mysqli_data_seek nos devuelve la primera fila de los resultados. Si mysqli_fetch_array vuelve a ser invocada sin especificar la fila a extraer, devuelve el siguiente registro o fila, siguiendo el orden que tienen los resultados de la consulta. Decimos que mysqli_fetch_array tiene vinculado un puntero o referencia a la fila que debe devolver. Este puntero o referencia puede definirse usando data seek, o en caso de no definirse, es inicialmente 0 (lo que significa que nos devolverá inicialmente la fila 0). Una vez invocada mysqli_fetch_array y devueltos los resultados de la fila 0, el puntero queda apuntando al siguiente registro, es decir, a la fila 1. Este proceso puede repetirse tantas veces como se desee y por cada llamada mysqli_fetch_array va avanzando una fila. Cuando ya no existen más filas en los resultados de la consulta la función devuelve NULL (no hay resultados). Para comprender el funcionamiento que hemos descrito ejecuta este código (que podemos denominar “bruto”, pero no te preocupes ahora por la eficiencia del código, céntrate en entender el funcionamiento de mysqli_fetch_array). Recuerda que debes cambiar los datos relacionados con la base de datos (nombre de servidor, nombre de base de datos, usuario, password) y escribir los que estés usando tú.
<html> <head><meta charset="utf-8"> </head> <body> <?php //Ejemplo aprenderaprogramar.com function mostrarDatos ($resultados) { if ($resultados !=NULL) { echo "Nombre: ".$resultados['nombre']."<br/> "; echo "Apellidos: ".$resultados['apellidos']."<br/>"; echo "Dirección: ".$resultados['direccion']."<br/>"; echo "Teléfono: ".$resultados['telefono']."<br/>"; echo "Edad: ".$resultados['edad']."<br/>";} else {echo "<br/>No hay más datos: <br/>".$resultados;} } $link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****"); mysqli_select_db($link, " b7_10356956_mibasededatos"); $tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente $result = mysqli_query($link, "SELECT * FROM agenda"); $extraido1= mysqli_fetch_array($result); mostrarDatos($extraido1); $extraido2= mysqli_fetch_array($result);
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
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 sólo tenemos cuatro registros. Si tuviéramos más registros el listado se alargaría para mostrarlos todos ellos. ¿Qué ocurre si la información existente en base de datos comprende muchos registros? En este caso la información se habrá almacenado en memoria y esto consume recursos del sistema. Para liberar esta memoria se utiliza la instrucción mysqli_free_result($result);
Escribe ahora este código y fíjate cómo hemos sintetizado el proceso eliminando variables auxiliares. Recuerda que debes cambiar los datos relacionados con la base de datos (nombre de servidor, nombre de base de datos, usuario, password) y escribir los que estés usando tú.
<html><head><meta charset="utf-8"> </head> <body> <?php //Ejemplo aprenderaprogramar.com function mostrarDatos ($resultados) { if ($resultados !=NULL) { echo "Nombre: ".$resultados['nombre']."<br/> "; echo "Apellidos: ".$resultados['apellidos']."<br/>"; echo "Dirección: ".$resultados['direccion']."<br/>"; echo "Teléfono: ".$resultados['telefono']."<br/>"; echo "Edad: ".$resultados['edad']."<br/>";} else {echo "<br/>No hay más datos!!! <br/>";} } $link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****"); mysqli_select_db($link, " b7_10356956_mibasededatos"); $tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente $result = mysqli_query($link, "SELECT * FROM agenda"); mostrarDatos(mysqli_fetch_array($result)); mostrarDatos(mysqli_fetch_array($result));
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
mostrarDatos(mysqli_fetch_array($result)); mostrarDatos(mysqli_fetch_array($result)); mostrarDatos(mysqli_fetch_array($result)); mostrarDatos(mysqli_fetch_array($result)); mysqli_free_result($result); mysqli_close($link); ?> </body></html>
Fíjate como mysqli_fetch_array($result) nos devuelve un array con los datos de una fila de las obtenidas como resultado y cada vez que lo invocamos nos devuelve la siguiente fila hasta que ya no existen más filas de resultados, momento en que nos devuelve NULL o vacío. Con una expresión como mostrarDatos(mysqli_fetch_array($result)); estamos pasándole a la función mostrarDatos el array que nos devuelve mysqli_fetch_array. Si la consulta nos ha devuelto 4 filas, podemos hacer 4 invocaciones obteniendo en cada invocación una fila. En la quinta invocación, ya obtenemos NULL (vacío) como resultado.
USO DE WHILE PARA EXTRAER TODOS LOS RESULTADOS DE UNA CONSULTA Hasta ahora hemos tratado de comprender el funcionamiento de mysqli_fetch_array. Pero obviamente ir recuperando resultados uno a uno no resulta eficiente. Piensa que el resultado de una consulta pueden ser cientos o miles de filas y no sería eficiente escribir línea a línea una extracción de datos. Vamos a recurrir por tanto a crear un bucle de forma que se extraigan de forma automatizada todos los registros que nos devuelve una consulta. La sintaxis que emplearemos es de este tipo:
while ($fila = mysqli_fetch_array($result)){ // Operaciones con los resultados que tenemos en $fila }
Esta expresión es una forma compacta donde se hacen varias cosas al mismo tiempo. Por un lado, se ejecuta $fila = mysqli_fetch_array($result) con lo cual $fila toma un valor que puede ser un array resultado ó vacío.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Luego se evalúa el while. while ($variable) lo que hace es entrar al bucle si $variable existe (no está vacío). while ($fila = mysqli_fetch_array($result)) da lugar a la entrada al bucle mientras no se hayan extraído todas las filas del resultado. Esta expresión sintética es útil porque nos permite recorrer muchas filas escribiendo un mínimo de código. También podríamos escribir esto: $hayResultados = true; //Forzamos la entrada al bucle while ($hayResultados==true){ $fila = mysqli_fetch_array($result); if ($fila) { //operaciones a realizar } else {$hayResultados = false;} }
O también esto:
while (($fila = mysqli_fetch_array($result))!=NULL){ //operaciones a realizar }
De las diversas alternativas planteadas la que requiere menos código y una vez se entiende resulta más clara es while ($fila = mysqli_fetch_array($result)), por eso es la que vamos a usar. Escribe el siguiente código y comprueba los resultados. Recuerda que debes cambiar los datos relacionados con la base de datos (nombre de servidor, nombre de base de datos, usuario, password) y escribir los que estés usando tú. De una forma u otra cada vez que invocamos la función mysql_fetch_array($result) obtenemos un array asociativo con índice del array los nombres de las columnas, por ejemplo $fila['nombre'], $fila['apellidos'], $fila['direccion'], $fila['telefono'], $fila['edad'], $fila['altura']. Si ya se han extraido todas las filas se produce la salida del bucle while. Los programadores suelen llamar a la variable donde se van extrayendo los resultados $row (en inglés, row es fila). Con mysql_fetch_array($result) también podemos acceder a través de índices numéricos, por ejemplo $fila[0], $fila[1], $fila[2], $fila[3], $fila[4], $fila[5]. <html><head><meta charset="utf-8"> </head> <body> <?php //Ejemplo aprenderaprogramar.com function mostrarDatos ($resultados) { if ($resultados !=NULL) { echo "-
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Nombre: ".$resultados['nombre']."<br/> "; echo "Apellidos: ".$resultados['apellidos']."<br/>"; echo "Dirección: ".$resultados['direccion']."<br/>"; echo "Teléfono: ".$resultados['telefono']."<br/>"; echo "Edad: ".$resultados['edad']."<br/>"; echo "**********************************<br/>";} else {echo "<br/>No hay más datos!!! <br/>";} } $link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****"); mysqli_select_db($link, " b7_10356956_mibasededatos"); $tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente $result = mysqli_query($link, "SELECT * FROM agenda"); while ($fila = mysqli_fetch_array($result)) { mostrarDatos($fila); } mysqli_free_result($result); mysqli_close($link); ?> </body></html>
El resultado esperado es que se muestren por pantalla todos los resultados de la consulta: - Nombre: Manuel Jesús - Apellidos: López de la Rosa - Dirección: C/Juan Bautista Nº 3 - Teléfono: 658954875 - Edad: 32 ********************************** - Nombre: María - Apellidos: Manzano Cabezas - Dirección: C/Arco del triunfo Nº 7 - Teléfono: 695001002 - Edad: 19 ********************************** - Nombre: Pedro - Apellidos: Somoza Castro - Dirección: C/Solera nº88, B - Teléfono: 88834321 - Edad: 44 ********************************** - Nombre: Juana - Apellidos: Pérez Rozas - Dirección: Avda. Luarcato nº22 - Teléfono: 888111222 - Edad: 22 ********************************** SINTAXIS NO MYSQLI (NO RECOMENDADA) Recordar que si estamos revisando código antiguo o en servidores no actualizados nos podemos encontrar que no se usan las funciones de tipo mysqli sino las mysql. A modo de ejemplo de cómo sería esta sintaxis, mostramos este código:
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
<html> // Ejemplo php con bases de datos aprenderaprogramar.com <body> <?php $link = mysql_connect("sql203.byethost7.com", "b7_10356956", "*****"); mysql_select_db("b7_10356956_mibasededatos", $link); $result = mysql_query("SELECT * FROM agenda", $link); // comienza un bucle que leerá todos los registros existentes while($row = mysql_fetch_array($result)) { // $row es un array con todos los campos existentes en la tabla echo "<hr>"; echo "Nombre: ".$row['nombre']."<br>"; echo "Apellidos: ".$row['apellidos']."<br>"; echo "Dirección: ". $row['direccion']."<br>"; echo "Teléfono:". $row['telefono']."<br>"; echo "Edad:".$row['edad']."<br>"; echo "Altura:".$row['altura']."<br>"; } // fin del bucle de instrucciones mysql_free_result($result); // Liberamos los registros mysql_close($link); // Cerramos la conexion con la base de datos echo "<hr>"; ?> </body> </html>
EJERCICIO 1 Utilizando la tabla agenda que hemos empleado en los ejemplos y funciones para manejo de cadenas PHP, realiza una consulta a la base de datos para extraer todos los nombres y determina cuántos nombres en la base de datos empiezan por M. Ejemplo de resultados a obtener: En la base de datos los nombres que empiezan por M son: 2
Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
EJERCICIO 2 Utilizando la tabla <<ciudades>> que hemos utilizado para ejercicios de entregas anteriores del curso, cuyo contenido era: id 1 2 3 4 5
ciudad México D.F. Barcelona Buenos Aires Medellín Lima
pais México España Argentina Colombia Perú
Compiladores: Julio Encalada y Diana Granda
habitantes 555666 444333 888111 999222 999111
superficie 23434.34 1111.11 333.33 888.88 222.22
tieneMetro 1 0 1 0 0
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
6 7 8 9 10
Caracas Santiago Antigua Quito La Habana
Venezuela Chile Guatemala Ecuador Cuba
111222 777666 444222 333111 111222
111.11 222.22 877.33 999.11 333.11
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 continuación calcula la suma de habitantes de todos los países y cuántas de estas ciudades tienen metro. Muestra el resultado por pantalla. Ejemplo de resultados a obtener: La suma de habitantes de México D.F., Barcelona, Buenos Aires, Medellín, Lima, Caracas, Santiago, Antigua, Quito y La Habana es: 5663886 habitantes De estas ciudades tienen metro: 5 ciudades.
INSERCIÓN DE DATOS CON PHP Y MySQL. EJEMPLOS Y EJERCICIOS RESUELTOS. Vamos a explicar cómo insertar registros en nuestra base de datos MySQL a través de código PHP. En concreto, añadiremos registros a la tabla agenda que habíamos creado previamente con phpMyAdmin. Para ello tendremos que realizar lo que se denomina una consulta SQL de inserción (insert into) e ir añadiendo tantos registros con sus correspondientes valores para los campos como deseemos.
Partiremos de nuestra base de datos donde tenemos una tabla denominada agenda con los siguientes datos: nombre Manuel Jesús María Pedro Juana
apellidos López de la Rosa Manzano Cabezas Somoza Castro Pérez Rozas
direccion C/Juan Bautista Nº 3 C/Arco del triunfo Nº 7 C/Solera nº88, B Avda. Luarcato nº22
telefono 658954875 695001002
edad 32 19
altura 1.80 1.99
88834321 888111222
44 22
1.66 1.77
Para realizar la inserción de datos vamos a utilizar una sintaxis de este tipo:
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
mysqli_query($link, "INSERT INTO nombreTabla VALUES (datoCol1, datoCol2, … datoColN)");
Donde mysqli_query indica que vamos a realizar una operación (en general se denominan consultas, aunque en este caso la operación sea una inserción de datos), $link es el identificador de conexión que hayamos obtenido con mysqli_connect, nombreTabla es el nombre de la tabla en la cual vamos a realizar la inserción de datos y datoCol1, datoCol2, …, datoColN representa los datos que vamos a insertar en la tabla. Tener en cuenta que debemos indicar los datos en el mismo orden en que se encuentran las columnas en la tabla. Por ejemplo para nuestra tabla agenda tendremos que seguir el orden: nombre, apellidos, direccion, telefono, edad, altura (orden de las columnas).
EJEMPLO DE INSERCIÓN DE DATOS EN UNA TABLA Escribe este código en un editor y guárdalo en un archivo con un nombre como ejemplo1.php. Luego ejecuta el código (una sola vez, ten en cuenta que si lo ejecutas varias veces insertarás varias veces repetidamente los datos en la base de datos). Recuerda también que debes cambiar y poner tus propios valores en las funciones mysqli_connect y mysqli_select_db. <?php //Ejemplo curso PHP aprenderaprogramar.com $link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****"); mysqli_select_db($link, " b7_10356956_mibasededatos"); $tildes = $link->query("SET NAMES 'utf8'"); //Para que se inserten las tildes correctamente mysqli_query($link, "INSERT INTO agenda VALUES ('Pedro2', 'Gómez Gómez', 'C/ Buenaventura 54', '699887766', 35, 1.98)"); mysqli_query($link, "INSERT INTO agenda VALUES ('Antonio2', 'Delgado Folken', 'C/ El Milagroso 77', '699667744', 88, 1.71)"); mysqli_close($link); // Cerramos la conexion con la base de datos echo 'Los datos han sido insertados en la base de datos'; ?>
Nota: si usáramos sintaxis no mysqli se usaría mysql_query ("INSERT INTO nombreDeLaTabla VALUES (datoCol1, datoCol2, … datoColN ", $link). Tenemos que tener cuidado de poner los valores en el insert en el orden en el que aparecen en la base de datos cuando creamos la tabla. Es decir, el primer valor será para la primera columna (en nuestro ejemplo tipo varchar y corresponderá con el nombre), el segundo será para la segunda columna (en nuestro ejemplo tipo varchar y se corresponderá con los apellidos), etc. También tendremos que prestar atención para que los tipos de datos insertados se correspondan con los de la tabla. Por ejemplo, no debemos insertar un valor numérico decimal si se espera un entero. Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Ahora vamos a ejecutar el código de la entrega anterior del curso para ver los nuevos registros añadidos por pantalla. Escribe este código en un editor y guárdalo en un archivo con un nombre como ejemplo2.php. Recuerda que debes cambiar y poner tus propios valores en las funciones mysqli_connect y mysqli_select_db. <html><head><meta charset="utf-8"> </head><body> <?php //Ejemplo curso PHP aprenderaprogramar.com function mostrarDatos ($resultados) { if ($resultados !=NULL) { echo "- Nombre: ".$resultados['nombre']."<br/> "; echo "- Apellidos: ".$resultados['apellidos']."<br/>"; echo "- Dirección: ".$resultados['direccion']."<br/>"; echo "- Teléfono: ".$resultados['telefono']."<br/>"; echo "- Edad: ".$resultados['edad']."<br/>"; echo "**********************************<br/>";} else {echo "<br/>No hay más datos!!! <br/>";} } $link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****"); mysqli_select_db($link, " b7_10356956_mibasededatos"); $tildes = $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente $result = mysqli_query($link, "SELECT * FROM agenda"); while ($fila = mysqli_fetch_array($result)){ mostrarDatos($fila); } mysqli_free_result($result); mysqli_close($link); ?> </body></html>
El resultado esperado es que se muestren por pantalla todos los resultados de la consulta:
- Nombre: Manuel Jesús - Apellidos: López de la Rosa - Dirección: C/Juan Bautista Nº 3 - Teléfono: 658954875 - Edad: 32 ********************************** - Nombre: María - Apellidos: Manzano Cabezas - Dirección: C/Arco del triunfo Nº 7 - Teléfono: 695001002 - Edad: 19 ********************************** - Nombre: Pedro - Apellidos: Somoza Castro - Dirección: C/Solera nº88, B - Teléfono: 88834321 - Edad: 44 ********************************** - Nombre: Juana - Apellidos: Pérez Rozas - Dirección: Avda. Luarcato nº22 - Teléfono: 888111222 - Edad: 22
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
********************************** - Nombre: Pedro - Apellidos: Gómez Gómez - Dirección: C/ Buenaventura 54 - Teléfono: 699887766 - Edad: 35 ********************************** - Nombre: Antonio - Apellidos: Delgado Folken - Dirección: C/ El Milagroso 77 - Teléfono: 699667744 - Edad: 88 **********************************
Hemos visualizado el contenido de la base de datos usando una consulta y mostrando los resultados por pantalla. Ten en cuenta que también puedes ver el contenido de la base de datos accediendo directamente a ella. Accede al panel de administración de tu servidor, luego a phpMyAdmin y comprueba cómo los nuevos valores insertados se encuentran en la tabla de la base de datos. Nota: los nuevos datos añadidos pueden aparecer al final o al principio de la tabla. Si quisiéramos ver los datos con un determinado orden tendríamos que incluir las instrucciones oportunas, pero no vamos a hablar de ello en este momento.
Vamos a resumir lo que hemos hecho: por un lado hemos accedido a la base de datos mediante código PHP y hemos insertado dos nuevas filas (al ejecutar ejemplo1.php) en la tabla agenda. Por otro lado visualizamos el contenido de la tabla agenda (ejemplo2.php) realizando una consulta a la base de datos y comprobamos que aparecen los dos nuevos registros añadidos, correspondientes a “Pedro Gómez Gómez” y “Antonio Delgado Folken”. Las operaciones de inserción en bases de datos son muy frecuentes en programación web. Ten en cuenta por ejemplo que cada vez que se registra un usuario en una página web hay que guardar la información del usuario (nombre, correo electrónico, etc.). Igualmente cada vez que se produce una compra mediante comercio electrónico hay que almacenar la información de la compra en la base de datos. Es por tanto una operación básica y de gran interés dentro de la programación con bases de datos. EJERCICIO Inserta en la tabla agenda de la base de datos que estamos utilizando los datos de una persona cuyo nombre es Jesús Murillo Moreno, de 34 años, cuyo teléfono es 655221122, vive en c/Pintor Murillo nº33, y tiene una altura de 1.67 metros. Presta atención al orden en que debes introducir los datos. Una vez realizada la inserción, comprueba visualizando los registros existentes en la tabla que la inserción se haya realizado correctamente. Luego accede al panel de administración del servidor y a la base de datos con phpMyAdmin. Visualiza los registros en la tabla y borra la fila correspondiente a
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
Jesús Murillo Moreno utilizando phpMyAdmin. Como puedes comprobar, podemos operar sobre la tabla tanto a través de phpMyAdmin como a través de código PHP.
BORRADO DE DATOS CON PHP Y MySQL. Una tarea habitual con bases de datos será el tener que borrar cierta información. Vamos a ver cómo realizar el borrado de ciertos registros que cumplan una condición y el borrado completo de todos los registros (filas) de una tabla. Para ello utilizaremos dos expresiones para operaciones (consultas) sobre bases de datos que describiremos a continuación: delete y truncate.
SENTENCIA DELETE Y CLÁUSULA WHERE La sentencia DELETE se suele usar para borrar unos registros de una tabla que cumplen una o varias condiones. Vamos a utilizar una sintaxis de este tipo:
mysqli_query($link, " DELETE FROM nombreTabla WHERE columna (>, <, =, etc.) valorEspecificado ");
Aquí estamos empleando la cláusula WHERE que nos sirve para indicar una condición. Por ejemplo DELETE FROM agenda WHERE altura > 1.90 significa “borrar todas las filas de la tabla agenda en las que en la columna altura exista un valor mayor que 1.90”. Fíjate que al indicar mayor (y no mayor o igual) una fila donde la altura sea exactamente 1.90 no será borrada. La cláusula WHERE también puede ser aplicada cuando hacemos consultas de tipo SELECT. Por ejemplo en entregas anteriores del curso usamos SELECT * FROM agenda como consulta que nos devolvía todas las filas de la tabla agenda. Si escribiéramos SELECT * FROM agenda WHERE edad <= 35 obtendríamos como resultado todas las filas de la tabla agenda donde la columna edad contiene un valor menor o igual a 35.
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
En una cláusula where podemos establecer una condición de igualdad (=) pero también podremos usar otras condiciones como mayor (>), menor(<), mayor o igual (>=), menor o igual (<=), y también condiciones múltiples y condiciones más complejas, pero no vamos a entrar en detalles sobre esto ahora. Igual que podemos hacer una consulta para obtener todas las filas de una tabla, también podremos borrar todos los registros de una tabla en concreto y, para ello, sólo basta con omitir las condiciones, es decir, hacer una consulta escribiendo lo siguiente: DELETE FROM nombreTabla Obviamente es peligroso hacer consultas de borrado de datos con bases de datos importantes, ya que un error a la hora de escribir la consulta puede dar lugar a la pérdida de datos. Nosotros estamos trabajando con una base de datos de pruebas, por lo que no nos preocuparemos por esta cuestión.
EJEMPLO Partiremos de nuestra base de datos donde tenemos una tabla denominada agenda con los siguientes datos: nombre Manuel Jesús María Pedro Juana Pedro Antonio
apellidos López de la Rosa Manzano Cabezas Somoza Castro Pérez Rozas Gómez Gómez Delgado Folken
direccion C/Juan Bautista Nº 3 C/Arco del triunfo Nº 7 C/Solera nº88, B Avda. Luarcato nº22 C/Buenaventura 54 C/ El Milagroso 77
telefono 658954875 695001002
edad 32 19
altura 1.80 1.99
88834321 888111222 699887766 699667744
44 22 35 88
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 también podemos hacerlo de forma automática con phpMyAdmin. Para ello accede al panel de administración de tu servidor, luego a phpMyAdmin, pulsa sobre el nombre de la base de datos y luego sobre la tabla. Ahora vete a la pestaña “Operaciones” y busca la opción “Copiar la tabla a:”. Pon como nombre agenda2 y elige la opción “Copiar estructura y datos”. Pulsa en continuar. Una vez hecho esto podrás comprobar que en la base de datos tienes dos tablas: agenda y agenda2 (tabla que acabamos de copiar con los mismos datos que teníamos en agenda). Escribe este código en un editor y guárdalo en un archivo con un nombre como ejemplo1.php. Ten en cuenta que deberás introducir los datos de tu propia base de datos (nombre, user, etc.). <?php //Ejemplo curso PHP aprenderaprogramar.com $link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****"); mysqli_select_db($link, "b7_10356956_mibasededatos"); mysqli_query($link, "DELETE FROM agenda2 WHERE altura > 1.90"); mysqli_close($link); // Cerramos la conexion con la base de datos echo 'Se ha ejecutado la consulta sobre la base de datos';
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
?>
Ejecuta el código. Con este ejercicio borraremos los registros de la tabla agenda cuya altura sea mayor que 1.90, es decir, en la tabla agenda dejará de haber personas con altura superior a 1.90 porque habrán sido borrados. Comprueba con phpMyAdmin que la tabla ha quedado así: nombre Manuel Jesús Pedro Juana Antonio
apellidos López de la Rosa Somoza Castro Pérez Rozas Delgado Folken
direccion C/Juan Bautista Nº 3 C/Solera nº88, B Avda. Luarcato nº22 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 hacíamos con la función DELETE sin condiciones, pero tiene algunas diferencias con ésta que explicaremos más adelante. La sintaxis a emplear es:
mysqli_query($link, " TRUNCATE TABLE nombreTabla");
Al igual que las operaciones de tipo DELETE, esta operación es peligrosa en el sentido de que si se ejecuta erróneamente puede dar lugar a la pérdida de datos.
EJEMPLO
© aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
Escribe este código en un editor y guárdalo en un archivo con un nombre como ejemplo2.php. Ten en cuenta que deberás introducir los datos de tu propia base de datos (nombre, user, etc.). Ejecuta el código sobre la tabla agenda2 para proceder al borrado de todas las filas de esta tabla. <?php //Ejemplo curso PHP aprenderaprogramar.com $link = mysqli_connect("sql203.byethost7.com", "b7_10356956", "*****"); mysqli_select_db($link, "b7_10356956_mibasededatos"); mysqli_query($link, "TRUNCATE TABLE agenda2"); mysqli_close($link); // Cerramos la conexion con la base de datos echo 'Se ha ejecutado la consulta TRUNCATE'; ?>
Con este código borraremos todos los registros de la tabla agenda. Accede a la tabla a través de phpMyAdmin y comprueba que no existen registros. ¿Cuál es la diferencia entre usar delete sin condiones y usar truncate? Vamos a explicarla a continuación.
DIFERENCIAS ENTRE DELETE Y TRUNCATE a) Ambas eliminan los datos, no la estructura de la tabla. b) Sólo DELETE permite la eliminación condicional de los registros (es decir, borrar sólo ciertas filas), TRUNCATE no lo permite. c) TRUNCATE es más rápida que DELETE. d) TRUNCATE reiniciará el contador para una tabla que contenga una clave autoincrementada. Si en nuestra tabla agenda tuviéramos un campo id autoincremental 1, 2, 3, 4, 5 … n (hasta el número de registros existentes) al hacer TRUNCATE el contador volverá a empezar en 1. En cambio DELETE mantendrá el contador de la tabla para una clave autoincrementada. Es decir, si borramos todos los registros de una tabla que tenía un campo contador autoincremental cuyo último valor era 3257, al insertar un dato después del borrado el valor del contador será 3258 en lugar de 1. e) TRUNCATE recrea una tabla, es decir, la tabla desaparece completamente y luego es creada de nuevo, mientras que DELETE no hace que desaparezca la tabla, sólo elimina sus registros.
Compiladores: Julio Encalada y Diana Granda
Año: 2015
¿Qué es PHP? ¿Para qué sirve PHP? Potente lenguaje de programación
CUÁNDO USAR DELETE Y TRUNCATE Usar TRUNCATE es más rapido que DELETE si vas a borrar toda una tabla y no te importan los indices (claves autoincrementadas) o bien quieres resetearlos (hacer que vuelvan a empezar desde 1). Usar DELETE para borrados selectivos (borrar determinados registros manteniendo otros). Hay otras cuestiones que se deben tener en cuenta, pero no te preocupes por esto ahora, lo irás descubriendo a medida que avances en conocimientos de programación y bases de datos.
EJERCICIO 1 Realiza una consulta y muestra por pantalla los datos correspondientes a filas de la tabla agenda donde la edad sea mayor o igual que 20 y la altura sea mayor o igual que 1.75. Para comprobar si tus respuestas y código son correctos puedes consultar en los foros aprenderaprogramar.com.
EJERCICIO 2 Crea una tabla que sea copia de agenda a la que denomines agenda3 y un archivo php que al ejecutarlo realice los siguientes procesos: a) Mostrar el contenido inicial de la tabla agenda3 por pantalla. b) Eliminar todos los registros de la tabla agenda3 cuyo campo edad sea mayor o igual a 34 y mostrar el contenido actual de la tabla por pantalla. c) Insertar dos nuevos registros en la tabla agenda3 (elige tú unos datos cualquiera) y mostrar el contenido actual de la tabla por pantalla. d) Eliminar todos los registros de la tabla agenda3 usando TRUNCATE y mostrar el contenido actual de la tabla por pantalla. © aprenderaprogramar.com, 2006-2029
Módulo: Programación III
Docencia Informática
e) Insertar tres nuevos registros en la tabla agenda3 (elige tú unos datos cualquiera) y mostrar el contenido actual de la tabla por pantalla. f) Eliminar todos los registros de la tabla agenda usando DELETE sin condiciones y mostrar el contenido actual de la tabla por pantalla.
Compiladores: Julio Encalada y Diana Granda
Año: 2015