+ All Categories
Home > Documents > Programacion en PHP

Programacion en PHP

Date post: 18-Mar-2016
Category:
Upload: aula-cero
View: 238 times
Download: 1 times
Share this document with a friend
Description:
Curso de programacion en PHP
Popular Tags:
240
Plataforma de Teleformación de IFES Página 1 de 240 Programación en PHP Version imprimible Este documento deber servir exclusivamente como material de apoyo al contenido del curso interactivo accesible a través de internet. Indice Evaluación inicial...................................................................... 4 Módulo I. Introducción............................................................... 5 U.D.1. Lenguajes de programación Web...................................... 5 U.D.2. ¿Qué es PHP?............................................................ 9 U.D.3. ¿Qué es apache?....................................................... 12 U.D.4. Instalación................................................................. 13 Página estática / dinámica...................................................... 21 Resumen módulo I............................................................... 21 Práctica: nuestra primera página web........................................ 21 Autoevaluación módulo I........................................................ 22 Módulo II. Conceptos básicos..................................................... 25 U.D.1. Panorámica del lenguaje............................................... 25 U.D.2. Variables................................................................... 31 U.D.3. Operadores............................................................... 35 U.D.4. Sentencias de control ................................................... 45 Resumen módulo II.............................................................. 58 Práctica: conceptos básicos.................................................... 58 Autoevaluación módulo II....................................................... 58 Módulo III. Conceptos avanzados................................................ 62 U.D.1. Cadenas................................................................... 62 U.D.2. Arrays...................................................................... 73 U.D.3. Funciones................................................................. 83
Transcript
  • Plataforma de Teleformacin de IFES Pgina 1 de 240

    Programacin en PHPVersion imprimible

    Este documento deber servir exclusivamente como material de apoyo

    al contenido del curso interactivo accesible a travs de internet.

    IndiceEvaluacin inicial...................................................................... 4Mdulo I. Introduccin............................................................... 5

    U.D.1. Lenguajes de programacin Web...................................... 5U.D.2. Qu es PHP?............................................................ 9U.D.3. Qu es apache?....................................................... 12U.D.4. Instalacin................................................................. 13Pgina esttica / dinmica...................................................... 21Resumen mdulo I............................................................... 21Prctica: nuestra primera pgina web........................................ 21Autoevaluacin mdulo I........................................................ 22

    Mdulo II. Conceptos bsicos.....................................................25U.D.1. Panormica del lenguaje............................................... 25U.D.2. Variables................................................................... 31U.D.3. Operadores............................................................... 35U.D.4. Sentencias de control................................................... 45Resumen mdulo II.............................................................. 58Prctica: conceptos bsicos.................................................... 58Autoevaluacin mdulo II....................................................... 58

    Mdulo III. Conceptos avanzados................................................ 62U.D.1. Cadenas................................................................... 62U.D.2. Arrays...................................................................... 73U.D.3. Funciones................................................................. 83

  • Pgina 2 de 240 Programacin en PHP

    U.D.4. Formularios............................................................... 94U.D.5. Manejo de ficheros.....................................................105Resumen mdulo III............................................................ 114Prctica: Conceptos avanzados.............................................. 114Autoevaluacin mdulo III..................................................... 114

    Prctica intermedia................................................................ 118Evaluacin primera................................................................ 119Mdulo IV. PHP y las bases de datos......................................... 120

    U.D.1. Estructura de una aplicacin web con bases de datos.......... 120U.D.2. Qu es MySQL?...................................................... 122U.D.3. El lenguaje SQL........................................................ 123U.D.4. Funciones de PHP con MySQL..................................... 154Arquitectura de 3 capas....................................................... 162Resumen mdulo IV............................................................ 162Prctica: PHP y las bases de datos......................................... 163Autoevaluacin mdulo IV.....................................................163Videotutoriales................................................................... 166

    Servidor local XAMPP....................................................... 166Crear una base de datos................................................... 166

    Evaluacin segunda............................................................... 167Mdulo V. Aplicaciones comunes en PHP.................................... 168

    U.D.1. Fecha y hora............................................................ 168U.D.2. Envo de correo electrnico.......................................... 175U.D.3. Sesiones................................................................. 183U.D.4. Control de acceso......................................................191U.D.5. Registro de accesos................................................... 201U.D.6. Plantillas................................................................. 206Resumen mdulo V............................................................ 215Prctica: Aplicaciones comunes en PHP................................... 215Autoevaluacin mdulo V..................................................... 215

    Evaluacin tercera................................................................. 219

  • Plataforma de Teleformacin de IFES Pgina 3 de 240

    Prctica final........................................................................ 220Evaluacin final.....................................................................221Glosario.............................................................................. 222FAQ................................................................................... 235Bibliografa.......................................................................... 238Enlaces.............................................................................. 239

  • Pgina 4 de 240 Programacin en PHP

    Programacin en PHP

    Evaluacin inicialEste recurso es de tipo Evaluacin.Debe conectarse a la plataforma para realizar la evaluacin. Recuerde que lasevaluaciones son obligatorias ya que determinan la nota final.

  • Plataforma de Teleformacin de IFES Pgina 5 de 240

    Programacin en PHP

    Mdulo I. IntroduccinU.D.1. Lenguajes de programacin Web

    Tipos de pginas web. Estticas y dinmicas.Las primeras pginas que aparecieron en Internet eran muy sencillas y pocointeractivas. Solo permitan mostrar informacin (texto o imgenes) y seguir enlaces anuevas pginas.Para compensar esta falta de interactividad aparecieron los lenguajes de programacindel lado del cliente (el navegador de Internet) que permitan una interactividadlimitada. En esta categora el principal lenguaje es Javascript. Un ejemplo tpico deprogramacin mediante Javascript es el de un men jerrquico desplegable.Pero hay multitud de funcionalidades que estn fuera del alcance de los lenguajes deprogramacin en el cliente. La interactividad que permiten se reduce prcticamente amejorar la apariencia de la informacin en la pgina web, y a aadir efectos visualesque aunque puedan ser curiosos no aportan un valor aadido.Con la llegada de los lenguajes del lado del servidor aparecieron las primeras pginasdinmicas. Hoy en da la mayor parte de Internet est formada por este tipo de pginas.El buscador de Internet que usamos cada vez que queremos encontrar pginas de unatemtica es una pgina dinmica. La Plataforma de Teleformacin de IFES es tambinuna pgina dinmica.

    Generacin de pginas webPara poder comprender la diferencia entre una pgina esttica y una pgina dinmicahay que tener presente el proceso que sigue una pgina web desde que la solicitamos(haciendo clic en un enlace del navegador) hasta que la recibimos y se muestra porpantalla.

  • Pgina 6 de 240 Programacin en PHP

    Pgina esttica

    Elementos del proceso:

    a) Navegador. Aplicacin que permite al usuario recibir y mostrarpginas web.b) Cliente. En el mbito de Internet, es el ordenador que estconectado a la red. Su funcin se limita a realizar peticiones de pginasweb y mostrar los resultados. Para esto hace uso del Navegador.c) Internet. Red informtica mundial, descentralizada, formada porla conexin directa entre computadoras u ordenadores mediante unprotocolo especial de comunicacin.d) Servidor web (hardware). Ordenador conectado a Internet que alojapginas web.e) Servidor web (software). Programa que transfiere pginas web a losclientes mediante el protocolo HTTP.

  • Plataforma de Teleformacin de IFES Pgina 7 de 240

    El trmino servidor web se usa indistintamente para denominar tanto al ordenadorconectado a Internet que aloja pginas web como a la aplicacin software que gestionala transferencia de pginas web.

    Pgina dinmica

    Ahora hay un nuevo elemento, el servidor de aplicacin.

    f) Servidor de aplicacin . Es el programa que colabora con el servidor web paragenerar pginas dinmicas.

    A diferencia de las pginas estticas, en las que se guardaba en el disco durodel servidor web el archivo html, las pginas dinmicas no estn directamentealmacenadas en el disco duro del servidor web. En su lugar, hay un programa que seejecuta en el servidor de aplicaciones, que es el encargado de crear el archivo que setransferir al cliente.

  • Pgina 8 de 240 Programacin en PHP

    Lenguajes de programacin webPara generar pginas web se han usado a lo largo del tiempo un gran nmero detecnologas. En los comienzos no haba ningn lenguaje de programacin especfico,por lo que se haca uso de lenguajes de uso ms general como C, C++, Basic o Pascal.Para comunicar estos programas con el servidor web se haca uso de la especificacinCGI (Common Gateway Interface o Pasarela de Interfaz Comn). Hoy en da an hayaplicaciones que siguen este enfoque, y comnmente se las conoce como CGI's.Pero el uso de lenguajes de uso general haca complicado el proceso de construirpginas web dinmicas. El cdigo se escriba de forma casi artesanal y era difcil demantener y actualizar. Adems el cdigo que funcionaba en un servidor web poda nofuncionar en otro o requerir de un esfuerzo grande para su instalacin. Para colmo detodos los males, por lo general, los CGI son poco eficientes.

    Afortunadamente hoy en da el panorama ha cambiado. El xito de Internet ha idoacompaado de la aparicin de lenguajes de programacin web que faciliten todo elproceso. Para especializarse en la creacin de pginas web dinmicas estos lenguajesintentan cumplir los siguientes objetivos:

    Ser de fcil uso, para permitir una curva de aprendizaje sencilla. Adaptarse rpidamente a la rpida evolucin de Internet, ofreciendo continuamentenuevas caractersticas y actualizaciones de seguridad. Tener una gran comunidad de usuarios que garanticen el xito del producto.

    De hecho han proliferado tanto que ahora hay una gran cantidad de tecnologasdisponibles, que lanzan los fabricantes con la intencin de acaparar la mayor cuota demercado posible. Aun as, hay tres tecnologas mediante las cuales se desarrollan lamayora de los sitios web.

    ASP- Active Server Pagessta es una tecnologa propietaria de Microsoft. Actualmente est engloba en suestrategia .NET. Su principal ventaja es su sencillez, adems de una muy buenaintegracin con otros productos de Microsoft como su entorno de desarrollo .NET quepermite crear aplicaciones en un tiempo rcord. Se integra muy bien con el servidorweb de Microsoft, el IIS (Internet Information Center).

  • Plataforma de Teleformacin de IFES Pgina 9 de 240

    JSP - Java Server Pagessta es una tecnologa basada en uno de los lenguajes de uso general ms populares,Java. Es quizs el ms complejo de los tres pero a su vez el ms potente. La grancomunidad de usuarios garantiza la existencia de numerosas herramientas, librerasde cdigo abierto y bases de conocimiento. Adems se integra muy bien en el servidorweb mayoritario, Apache, gracias a la extensin Tomcat.

    PHP - PHP Hypertext PreprocessorA su favor tiene el ser una iniciativa de cdigo abierto, por lo que es mantenido eimpulsado por una gran comunidad de programadores. Adems es el ms sencillo delos tres, por lo que atrae a usuarios de muy diferentes procedencias: programadores enlenguajes de programacin ms generalistas, diseadores que desean completar susconocimientos...

    U.D.2. Qu es PHP?

    Un poco de historiaYa hemos visto que PHP responde a las siglas PHP Hypertext Procesor. Pero, comosurgi?

    En el ao 1994 el programador dans-canadiense Rasmus Lerdorf lo cre para poderprogramar su pgina web personal, que consista bsicamente en un currculum vtaey un registro del trfico que reciba. Un ao ms tarde lo public con el nombre dePersonal Home Page Tools. En 1997 atrajo el inters de dos programadores israelesdel Technion que rescribieron el intrprete gramatical de este lenguaje creando la basede la primera versin realmente popular de PHP, PHP 3.

    En 1999 rescribieron el lenguaje y lo dotaron de mayor eficiencia mediante el motorZend, dando lugar a la versin PHP 4.

    La versin 5 de este lenguaje, que incluye un sistema novedoso, el PDO (Objetosde Informacin de PHP o PHP Data Objects) y mejoras utilizando las ventajas queprovee el nuevo Zend Engine 2. Los cambios que incorpora la versin son notables, yposicionan a PHP como un lenguaje dinmico muy potente.

  • Pgina 10 de 240 Programacin en PHP

    Mientras se escriben estas lneas, se est trabajando en la versin 6 de PHP, aunquetodava no hay una fecha prevista para su lanzamiento.

    Caractersticas de PHPA nivel tcnico se pueden destacar los siguientes aspectos:

    Es un lenguaje interpretado (tambin llamado de tipo script). La sintaxis es similar a los lenguajes de programacin estructurada ms

    populares, como C, por lo que resulta muy sencilla la transicin desde otroslenguajes.

    En el cdigo fuente se mezclan habitualmente fragmentos de cdigo PHPcon el cuerpo de la pgina HTML, generando dinmicamente el contenido dela misma.

    Dispone de una gran cantidad de mdulos (tambin llamados extensiones)que amplian su funcionallidad.

    Es un lenguaje portable, es decir, puede ser ejecutado en la mayora de lossistemas operativos. Tambin existen mdulos interprete para casi todoslos servidores web, y en muchos de ellos viene ya instalado en el paquetebsico.

    Soporta algunas caractersticas de la programacin orientada a objetos. Se integra bien con otras tecnologas, como XML, Javascript... Ofrece conexin a numerosas bases de datos en modo nativo: MySQL,

    Postgres, Oracle, SQL Server...

    Un uso comn es dotar a una aplicacin web de un servidor de base de datos, en elmundo PHP y Apache sta es MySQL, lo que en conjunto se ha denominado como lasolucin LAMP (Linux, Apache, MySQL y Php).

  • Plataforma de Teleformacin de IFES Pgina 11 de 240

    Durante este curso se recomienda el uso de Xampp 1.7.3, un servidor web local quepodr instalar en su ordenador, que viene con Apache, la versin 5.3.1 de PHP y laherramienta grfica phpMyAdmin 3.2.4 para gestionar bases de datos MySql. Msadelante veremos cmo descargar, instalar y configurar este software libre.

    Por qu PHP?Hay muchas razones para aprender a usar PHP:

    Como ya se ha dicho con anterioridad el aprendizaje de este lenguaje esmuy sencillo.

    No obstante PHP ofrece muchas caractersticas avanzadas al alcance delprogramador experto.

    Es seguro y robusto, cumpliendo con las exigencias de cualquier entornoprofesional.

    Es gratuito (open source), por lo que ha atrado a una gran comunidadde usuarios. Todos contribuyen de una u otra forma. Los desarrolladores

  • Pgina 12 de 240 Programacin en PHP

    expertos arreglando errores y aportando mejoras, los usuarios testeando elcdigo e intercambiando ideas que podran mejorar el lenguaje.

    Existe una gran cantidad de aplicaciones de cdigo abierto que estndesarrolladas en PHP. Conociendo PHP se tiene siempre la posibilidad deampliarlas, personalizarlas y darles el mantenimiento adecuado.

    La prctica totalidad de los proveedores de alojamiento de pginas webofrece soporte para este lenguaje y acceso a una base de datos MySQL.

    U.D.3. Qu es apache?Apache es un producto software desarrollado por una asociacin de carcter nolucrativo, la Apache Software Foundation (ASF). La ASF no solo desarrolla el servidorHTTP Apache, tambin engloba mltiples proyectos, algunos como extensiones delservidor web y otros independientes.Dentro de toda la gama de servidores web, Apache es sin duda el que mejorconsiderado est por parte de los usuarios. La prueba es que cerca del 60% de lossitios web estn alojados en servidores de este tipo (estadsticas de enero de 2011 dehttp://news.netcraft.com/archives/web_server_survey.html).

    Apache se ha ganado la confianza de los usuarios principalmente debido a lassiguientes razones:

    Es muy eficiente, robusto y seguro. Dispone de caractersticas avanzadas como mensajes de error altamente

    configurables, contenido negociable, autentificacin... Est disponible para la mayora de las Plataformas, incluyendo Windows y

    Linux. Es software libre, con las ventajas que esto supone. No solo es que sea

    gratuito, sino que adems dispone de una numerosa comunidad de usuariosque contribuyen a su continua mejora.

    La mayor objecin que se le ha puesto a Apache es que no dispone de un modo grficoamigable para su configuracin, por lo que su aprendizaje puede suponer ms esfuerzoque el de otros servidores.

    Durante este curso se propone la utilizacin de Apache como servidor al que se leaade como extensin el interprete de PHP.

  • Plataforma de Teleformacin de IFES Pgina 13 de 240

    Otros servidores webLa ventaja de este servidor es que dispone de un interfaz grfico amigable que hacems sencilla su instalacin, configuracin y despliegue de sitios web. Existen otrosservidores, que, o bien son pequeos productos con pocas caractersticas, o bien sondesarrollos de grandes empresas que no son accesibles al pblico en general.

    U.D.4. InstalacinLas pginas con cdigo PHP son archivos que usan la extensin .php . Como hemosvisto, para poder visualizarlas, tienen que estar alojadas en un servidor web remoto.Esta solucin no es factible para practicar con el lenguaje ya que tiene las siguientesdesventajas:

    Hay que contratar un servicio de alojamiento, lo que puede resultar costoso. Hay dependencia de la conexin a Internet. Gestionar los archivos que subimos al servidor a travs de FTP es algo

    engorroso y lento, por lo que no se pueden hacer pruebas de cdigo conagilidad.

    La solucin no puede ser ms sencilla. Haremos que nuestro ordenador acte comoservidor web. A esta forma de trabajo se le llama coloquialmente desarrollar en local.

    Dependiendo de las habilidades de cada uno en el manejo e instalacin deaplicaciones un poco ms complejas, como es el caso que nos lleva, del servidorApache y su mdulo para PHP, se necesitara un curso para todo ello. Apache se hacriticado en este aspecto de no contar con una instalacin y/o configuracin grfica/amigable al usuario, tanto novel como experto.

    Afortunadamente existen en el mercado soluciones que integran todo lo quenecesitamos para trabajar, y adems disponen de los llamados instaladoresautomticos, que nos dejan preparado y, lo ms importante, configurado de manerahomognea el entorno de desarrollo que vamos a emplear en todo este curso.

    De entre los instaladores disponibles, hemos elegido una solucin probada y que cubrevarios sistemas operativos (Windows, GNU/Linux y Mac), como dijimos anteriormente,se llama XAMPP y la versin ser la 1.7.3. En el curso vamos a usar la versinpara Windows, que ser la referente por facilidad de uso para los usuarios menosavanzados, aunque veremos algunas pantallas de Linux como alternativa (99%idnticas).

  • Pgina 14 de 240 Programacin en PHP

    En Linux y otros sistemas, podemos usar XAMPP o nos instalaremos Apache+PHP+MySQL por nuestra cuenta. Esto ltimo para usuarios avanzados, dado que hay queconfigurar el sistema, aunque ltimamente, en algunas distribuciones de Linux es muysencillo que el sistema nos instale y configure todo por si mismo bajo demanda.

    XAMPP en la versin elegida instala las siguientes versiones de Apache, Php y Mysql:

    Apache: versin 2.2.14 Php: versin 5.3.1 PhpMyAdmin: versin 3.2.4

    Requerimientos:

    64Mb de memoria RAM 58Mb de disco Windows 98, ME, XP Home.Windows NT,2000,XP Professional,GNU/

    Linux,MacOS.

    Hay que tener en cuenta que XAMPP evoluciona muy rpidamente y que en elmomento de realizar el curso puede encontrarse en una versin posterior. De todasformas es de esperar que la instalacin siga siendo muy similar o igual.

    Descargamos la versin deseada segn el sistema operativo que tengamos desde lasdirecciones siguientes:

    Windows: http://www.apachefriends.org/en/xampp-windows.html Linux: http://www.apachefriends.org/en/xampp-linux.html

    Instalacin paso a paso sobre Windows1. Ejecutamos el fichero descargado. Nos aparecer la siguiente ventanapreguntndonos dnde instalar XAMPP:

  • Plataforma de Teleformacin de IFES Pgina 15 de 240

    Le dejamos los valores que trae y hacemos clic en Install. En C:\ crear el directorioxampp.

    2. Una vez instalado, entramos en la carpeta C:\xampp y ejecutamos el archivo xampp-control. Nos mostrar la siguiente ventana:

  • Pgina 16 de 240 Programacin en PHP

    3. Para poner en funcionamiento el servidor apache, haremos clic en el botn Start quetiene a su derecha. Tambin haremos clic en el botn que hay a la derecha de MySql.

    Si todo ha ido bien, nos aparecer la siguiente pantalla:

  • Plataforma de Teleformacin de IFES Pgina 17 de 240

    La cual nos muestra el texto Running, lo que indica que tanto Apache como Mysqlestn en funcionamiento.

    Mientras estemos utilizando PHP y/o MySql no debemos cerrar esta ventana. Cuandoqueramos dejar de usar XAMPP no se debe terminar haciendo clic en el botn cerrarde la ventana, ya que esto lo que hace es minimizar el programa junto al reloj que hayabajo a la derecha. Deberemos hacer clic en el botn Exit. Si XAMPP se ha quedadominimizado, al hacer clic sobre el icono, se muestra la ventana de control.

    4. Vamos a comprobar que Apache est funcionando, para ello vamos a ir a la direccinhttp://localhost con nuestro navegador favorito y deberamos ver la siguiente pgina:

  • Pgina 18 de 240 Programacin en PHP

    Esta pgina web est siendo servida por Apache y PHP (mira la direccin en elnavegador). Pulsaremos en el idioma espaol (Spanish ) para continuar.

    5. Pulsaremos en el enlace Estado para probar toda la instalacin definitivamente:

  • Plataforma de Teleformacin de IFES Pgina 19 de 240

    Deberamos tener todos los componentes con el estado Activado (color verde) menoslos tres ltimos (color rojo).

    Los scripts que creemos deben estar guardados en la carpeta htdocs. Dentro deesta carpeta podremos crear ms carpetas. Por ejemplo, si tengo la ruta c:\xampp\htdocs\ejercicios\ejercicio1.php, para probar mi script, en el navegador, y una vezfuncionando XAMPP, escribir lo siguiente http://localhost/ejercicios/ejercicio1.php ynuestro navegador deber mostrar lo que haga nuestro script.

    Instalacin paso a paso sobre Linux1. Entre como administrador root en su sistema Linux

    Su

    2. Descomprima el archivo que ha bajado en /otp

    tar xvfz xampp-linux-1.7.3a.tar.gz C /opt

  • Pgina 20 de 240 Programacin en PHP

    Use slo este comando para instalar XAMPP.No use ninguna herramienta de Windows paradescomprimir el archivo ya que no funcionar.

    Si tiene una versin anterior, sta ser sobrescrita.

    Esto es todo. XAMPP ya est instalado en el siguiente directorio /opt/lampp

    3. Para que XAMPP empiece a funcionar, escriba el siguiente comando:

    /opt/lampp/lampp start

    y en su pantalla deber aparecer lo siguiente:

    Starting XAMPP 1.7.3a...LAMPP: Starting Apache...LAMPP: Starting MySQL...LAMPP started.

    Lo que indica que Apache y MySql estn ejecutndose.

    Para detener XAMPP deberemos escribir el siguiente comando:

    /opt/lampp/lampp stop

    y en la pantalla deber aparecer el siguiente mensaje:

    Stopping LAMPP 1.7.3a...LAMPP: Stopping Apache...LAMPP: Stopping MySQL...LAMPP stopped.

    4. Vamos a comprobar que est funcionando. Para ellos escribiremos en nuestronavegador favorito: http://localhost (XAMPP debe estar ejecutndose).Si todo ha ido bien, deberamos ver la siguiente pantalla

  • Plataforma de Teleformacin de IFES Pgina 21 de 240

    Los scripts que creemos deben estar guardados en el siguiente directorio /opt/lampp/htdocs/. Dentro de ese directorio podremos crear ms directorios. Por ejemplo, sitengo la ruta /opt/lampp/htdocs/ejercicios/ejercicio1.php, para probar mi script, enel navegador, y una vez funcionando XAMPP, escribir lo siguiente http://localhost/ejercicios/ejercicio1.php y el navegador deber mostrar lo que haga nuestro script.

    Pgina esttica / dinmicaEste recurso es de tipo Multimedia.Tiene que conectarse a la plataforma para acceder a este recurso.

    Resumen mdulo IEste recurso es de tipo Multimedia.Tiene que conectarse a la plataforma para acceder a este recurso.

  • Pgina 22 de 240 Programacin en PHP

    Prctica: nuestra primera pgina webEste recurso es de tipo Prctica.Tiene que conectarse a la plataforma para acceder a este recurso.

    Autoevaluacin mdulo I

    Pregunta 1:Javascript es un lenguaje de programacin que se ejecuta en la mquina cliente.

    Verdadero Falso

    Respuesta correcta: Verdadero

    Pregunta 2:Las pginas dinmicas se almacenan en el disco duro del servidor y cuando son

    solicitadas posteriormente, se recuperan y transfieren sin ningn procesadoprevio.

    Verdadero Falso

    Respuesta correcta: Falso

    Pregunta 3:Se puede programar una pgina web dinmica en el lenguaje de uso general C++

    y comunicarla con el servidor web mediante la especificacin CGI. Verdadero Falso

    Respuesta correcta: Verdadero

    Pregunta 4:PHP se encuentra actualmente en su versin 6.

    Verdadero Falso

    Respuesta correcta: Falso

  • Plataforma de Teleformacin de IFES Pgina 23 de 240

    Pregunta 5: PHP no permite interconectividad de forma nativa con bases dedatos.

    Verdadero Falso

    Respuesta correcta: Falso

    Pregunta 6:Una de las razones del xito de PHP es que es un producto de pago y por lo tanto

    el usuario puede reclamar nuevas caractersticas. Verdadero Falso

    Respuesta correcta: Falso

    Pregunta 7:La solucin LAMP consiste en un servidor web con: Linux, Apache, MySQL y

    PHP. Verdadero Falso

    Respuesta correcta: Verdadero

    Pregunta 8:Instalar un servidor Apache es, por lo general, un proceso complejo que slo est

    al alcance de usuarios expertos. Verdadero Falso

    Respuesta correcta: Verdadero

    Pregunta 9:La direccin base en la que se pueden ver las pginas que sirve nuestro servidor

    Apache en local es http://localhost Verdadero Falso

    Respuesta correcta: Verdadero

    Pregunta 10:

  • Pgina 24 de 240 Programacin en PHP

    Las pginas web que queramos alojar en nuestro servidor de Apache en local

    las deberemos poner por debajo de C:\xampp\htdocs\ (donde C:\xampp es eldirectorio en el que hemos intalado Apache).

    Verdadero Falso

    Respuesta correcta: Verdadero

  • Plataforma de Teleformacin de IFES Pgina 25 de 240

    Programacin en PHP

    Mdulo II. Conceptos bsicosU.D.1. Panormica del lenguaje

    En este mdulo y en el siguiente se van a describir los elementos y estructuras dellenguaje. Quien est familiarizado con la programacin estructurada encontrar que lamayora le son familiares. Concretamente la sintaxis de PHP es heredada del lenguajeC, Java y Perl. Si ya conocemos C o Java entonces tenemos el 90% del caminorecorrido, en lo que a sintaxis se refiere.

    Las explicaciones vienen acompaadas por ejemplos para facilitar su comprensin.Todos los ejemplos pueden ser probados tal y como se explica en la prctica delmdulo I. Para ello hay que crear un fichero con un editor de textos, como puede ser elBloc de Notas (ficheros planos), dndole un nombre y guardndolo con extensin .phpen la carpeta de publicacin C:\xampp\htdocs\practicasPHP.

    Puedes utilizar Notepad++, un editor de textogratuito y con buenas prestaciones, que te permiteguardar los archivos con extensin .php. Lo puedesdecargar desde la siguiente direccin http://notepad-plus-plus.org/downloads

    Los resultados de los programas que hagamos se visualizarn a travs del navegador,escribiendo en la barra de direcciones la URL de nuestra pgina en local.

    http://localhost/practicasPHP/miprograma.php

    Vamos a pasar directamente a dar una visin general del lenguaje.

    Bloques de cdigo PHPUna pgina web en PHP generalmente contiene dos tipos de cdigo: cdigo HTML ycdigo PHP. El cdigo de PHP que va a procesar el interprete puede estar dentro deuna de las siguientes etiquetas:

  • Pgina 26 de 240 Programacin en PHP

    ...

    Nosotros vamos a usar la primera (es la ms usual), las dos ltimas hay que activarlasexprsamente en la configuracin de PHP.

    Ejemplo 2.1.1. Aqu podemos ver una pgina muy sencilla. Tiene tres bloques decdigo: al comienzo la cabecera HTML, despus un fragmento en PHP y finalmente elcierre de la pgina otra vez en HTML.

    En un fichero PHP pueden alternarse tantos bloques HTML con bloques PHP comose quiera, siempre que estos ltimos estn abiertos y cerrados por las etiquetasadecuadas.

    Sentencias en PHPUna sentencia es una instruccin bsica que realiza alguna accin. Tambin se lellama a veces lnea de cdigo, aunque estrictamente hablando no tiene que ocuparexactamente una lnea en el fichero.

  • Plataforma de Teleformacin de IFES Pgina 27 de 240

    Es imprescindible que las sentencias estn bien diferenciadas. Para ello en PHP todasentencia debe ser terminada con un punto y coma " ; ". La nica excepcin a esto esla ltima sentencia antes del fin de un bloque de cdigo PHP, indicado por "?> ".

    Ejemplo 2.1.2. Los siguientes bloques de cdigo estn bien formados, ya que todas lassentencias, salvo la ltima, terminan con un punto y coma:

    Las instruccines echo y print()Una de las instrucciones bsicas de PHP es la instruccin echo . Se limita a interpretarel texto que se pone a continuacin e insertarlo en la pgina web. Una forma alternativade conseguir esto es haciendo uso de la etiqueta:

    La funcin print() tambin es equivalente a echo .

    Ejemplo 2.1.3. Los siguientes bloques de cdigo PHP son equivalentes y por lo tantoproducen el mismo resultado:

    Ejemplo 2.1.4. En muchas ocasiones querremos insertar un salto de lnea en la pginade salida. En HTML el salto de lnea se marca con la etiqueta , por lo que paraconseguir este resultado lo haremos de forma similar a como se hace a continuacin:

  • Pgina 28 de 240 Programacin en PHP

    echo "Esta es la segunda lnea.";

    ?>

    No se debe usar el formato corto de etiquetascuando se desarrollen aplicaciones o bibliotecas conintencin de redistribuirlas, o cuando se desarrollepara servidores que no estn bajo nuestro control,porque puede ser que el formato corto de etiquetasno est soportado en el servidor. Para generarcdigo portable y redistribuble, asegrate de nousar el formato corto de etiquetas.

    Funciones en PHPEn PHP hay dos tipos de funciones, las que estn definidas por el propio lenguaje y lasque puede crear a medida el programador. Estas ltimas las veremos en la U.D.3. delmdulo III.Pero en los trozos de cdigo que vienen a continuacin nos encontraremos que parahacer acciones complejas deberemos usar las funciones predefinidas del lenguaje PHP.stas se caracterizan por un identificador seguido por un parntesis,dentro del cualponemos los parmetros que tenemos que pasarle a la funcin.

    A medida que las vayamos usando, iremos describiendo las funciones definidas. Unejemplo de este tipo de funciones que hemos visto ya es la instruccin print() .

    Comentarios en PHPLos cometarios son ignorados por el interprete a la hora de generar la pgina. Detodas formas cumplen una funcin esencial, aumentar la legibilidad del cdigo, parasu posterior mantenimiento por nosotros o por otra persona. Con los comentariosdescribiremos la funcin de determinados fragmentos de cdigo.

    En PHP hay tres formas de poner comentarios:

  • Plataforma de Teleformacin de IFES Pgina 29 de 240

    que ocupa varias lneas */# Esta forma de poner comentarios de una lnea se usa menos

    ?>

    Hay que tener en cuenta que si bien los comentarios ayudan a comprender el cdigoy ,por lo tanto ,facilitan el mantenimiento del cdigo por nuestra parte o por la de otraspersonas. Un abuso de los mismos puede hacer difcil distinguir a primera vista elpropsito del cdigo. Lo ideal es escribir un cdigo limpio que resulte lo ms legibleposible y limitar el uso de comentarios a aquellas ocasiones en los que haya que haceruna aclaracin imprescindible.

    Tambin es habitual insertar anotaciones en el cdigo a medida que se estconstruyendo, cuando an no ha tomado su forma final. Este tipo de comentarios esconveniente eliminarlo en cuanto dejan de ser necesarios.

    Hay dos palabras que se usan habitualmente en los comentarios durante el desarrollo.

    No est de ms recordar que los comentarios son parte del cdigo PHP, por lo quehan de estar en bloques de cdigo PHP (es decir, abiertos por la etiqueta " ".

    Errores en PHPSin lugar a dudas, cuando programemos, cometeremos errores, como olvidar ponerun punto y coma al final de una instruccin, o no cerrar adecuadamente unas comillas.Cuando vayamos a intentar ver el resultado en el navegador aparecer un mensaje deerror (o varios) similar a ste.

  • Pgina 30 de 240 Programacin en PHP

    El mensaje est en ingls y es muy probable que no nos oriente de qu es lo queest fallando. Pero lo importante es que s que nos muestra dnde (en qu lnea) estfallando, por lo que podremos dirigirnos a ella y arreglar el fallo.

    Inhibir erroresEn ocasiones no querremos que el error se vea por pantalla. Para conseguir estopondremos el smbolo arroba "@" antes de la sentencia en la que se produce el fallo.

    Ejemplo 2.1.5. El primer trozo de cdigo muestra un mensaje de error al intentar abrirun archivo que no existe. En cambio en el segundo fragmento se hace uso del smbolo@ para evitar que dicho error se muestre por pantalla.

  • Plataforma de Teleformacin de IFES Pgina 31 de 240

    ?>

    U.D.2. Variables

    Datos en PHPEn PHP definimos los datos con los que vamos a trabajar como variables. Una variableno es ms que una estructura de datos cuyo valor puede cambiar durante la ejecucindel programa. PHP trabaja con cuatro tipos de datos sencillos: integer (nmero entero),float (nmero con decimales), string (cadena de texto) y boolean (verdadero o falso).

    El separador de decimales en PHP es el punto, como en la mayora de los lenguajes deprogramacin.

    Ejemplo 2.2.1. Veamos algunos ejemplos de los diferentes tipos de datos. Como seobserva, los tipos string se escriben entre comillas, que pueden ser simples o dobles.

    11 //esto es un dato de tipo integer43.95 //esto es un dato de tipo double"Cdigo postal" //esto es un dato de tipo string'08080' //esto tambin es un dato de tipo stringTRUE // esto es un dato de tipo boolean

    Para especificar un literal boolean, use alguna de las palabras clave TRUE o FALSE.Ambas son insensibles a maysculas y minsculas.

    Ejemplo 2.2.2. Si queremos escribir un dato que contenga comillas dobles loescribiremos encerrado entre comillas simples. Y si queremos escribir un dato quecontenga comillas simples lo encerraremos en comillas dobles.

    'Leopoldo Alas "Clarin" fu un gran escritor...'

    Nombre de variablesTodas las variables en PHP se distinguen por comenzar con el smbolo del dolar,"$", seguido del nombre de la variable. El nombre de una variable ha de empezar

  • Pgina 32 de 240 Programacin en PHP

    necesariamente por una letra o el smbolo guin bajo "_" seguido por cualquiercombinacin de nmeros, letras o guiones bajos.

    Ejemplo 2.2.3. Diferentes ejemplos de nombres de variables, vlidos y no vlidos.

    El tipo de una variable usualmente no es declarado por el programador; en cambio, esdecidido en tiempo de ejecucin por PHP dependiendo del contexto en el que es usadala variable.

    En el siguiente cdigo podemos comprobar que las variables $numero1 y $numero2 sehan definido como string (van entre comillas), pero como la operacin que realizamosentre ellas es una suma, PHP entienda que se tiene que tratar de nmeros, por ello enla variable $resultado almacena 30.

    Otros lenguajes de programacin usan el signo mspara concatenar cadenas. No es el caso de PHP,el cual utiliza el punto. Si cambiamos el signo mspor el punto, veremos que el resultado en este casoser 1020. El manejo de cadenas se estudiar msadelante.

  • Plataforma de Teleformacin de IFES Pgina 33 de 240

    Es importante tener en cuenta que en los nombresde variables se distingue entre maysculas yminsculas.

    Ejemplo 2.2.4. Mediante este ejemplo se puede ver que PHP distingue entremaysculas y minsculas en los nombres de variables.

    A pesar de que tenemos gran libertad a la hora de poner nombres a las variables, esrecomendable seguir los siguientes consejos para que el cdigo resulte ms legible:

    Usar nombres de variable que tengan significado. No usar nombres de variable demasiado largos (12-16 caracteres deberan

    ser suficientes en la mayora de los casos). No usar como nombre de variable palabras clave de PHP.

    Ejemplo 2.2.5. Los siguientes nombres de variable no son recomendables.

  • Pgina 34 de 240 Programacin en PHP

    Asignacin de datos a variablesComo se ha ido viendo en los ejemplos, a las variables se les asigna un dato medianteel smbolo igual "=".

    Ejemplo 2.2.6. Asignacin de un dato de tipo cadena a una variable.

    Hay que tener en cuenta que PHP es un lenguaje poco tipado, Las variables no tienenun tipo de datos predefinido, el tipo vendr dado segn el contenido de la variable o elcontexto donde se trate. Este es el punto mas dbil del lenguaje, aunque le aporta unasencillez y flexibilidad propias.

    ConstantesLas constantes son una manera de asignar a un identificador valores simples que novan a variar. La declaracin de una constante se realiza mediante la funcin define() .

    El nombre de la constante debe seguir las mismas reglas que las variables, solo que nolleva delante el smbolo del dlar, "$", ya que no es una variable. Una prctica habituales poner los nombres de las constantes en maysculas.

    Ejemplo 2.2.7. Mostramos a continuacin declaraciones de constantes. Algunas soncorrectas y otras incorrectas.

  • Plataforma de Teleformacin de IFES Pgina 35 de 240

    Ejemplo 2.2.8. Sabemos a ciencia cierta que el nmero PI no va a cambiar. En lugarde tener que teclearlo varias veces a lo largo del cdigo podemos definir una constantecon el identificador PI.

    Existen constantes predefinidas por el ncleo de PHP. Pero por el momento no lasvamos a utilizar.

    Si en mi cdigo coincide una constante que yo defina con otra predefinida por PHP, nome mostrara el valor indicado en la funcin define(), si no el valor que PHP le tieneasignado.

    Ejemplo 2.2.9. En el siguiente fragmento de cdigo el valor mostrado no ser Espaa,mostrar 5.3.1 que es el valor predefinido por PHP para esa constante. Que es laversin que estoy ejecutando de PHP.

    U.D.3. OperadoresLos operadores son utilizados para realizar clculos y manipular datos en el mbito deuna expresin. Las expresiones ms comunes que conocemos, como la multiplicacin,implican la participacin de dos operandos (los datos) y un operador (el smbolo dela multiplicacin). En PHP puede haber:

    Operadores unarios: La expresin manipula un nico dato. Operadores binarios: La expresin manipula dos datos. Operadores ternarios: La expresin manipula tres datos.

  • Pgina 36 de 240 Programacin en PHP

    Ejemplo 2.3.1. Los datos pueden ser introducidos directamente o estar almacenadosen variables. El resultado de la operacin se suele asignar a una variable, aunquepuede formar parte de una expresin mayor. Esta variable a la que se asigna elresultado puede ser parte de la expresin.

    Lo habitual es clasificar a los operadores segn el tipo de clculo o manipulacin querealizan.

    Operadores aritmticosEn PHP hay cinco operadores que realizan operaciones matemticas entre dos datos yun operador unario, el signo de negacin.

  • Plataforma de Teleformacin de IFES Pgina 37 de 240

    Ejemplo 2.3.2. Aqu se experimenta con varias operaciones aritmticas.

  • Pgina 38 de 240 Programacin en PHP

    $z = 5 % 3;echo $z;echo "";

    echo "El resultado de cambiar el signo a la variable $z es ";$z = -$z;echo $z;

    ?>

    Operadores de comparacinEn el siguiente mdulo se tratar de las sentencias de control. stas utilizan elresultado de unas expresiones especiales para decidir cules sern las instruccionesque ejecutarn luego. Las expresiones bsicas que utilizan son el resultado de unacondicin. Este resultado solo puede tomar dos valores: verdadero o falso.

    PHP tiene dos constantes predefinidas para designar los valores verdadero y falso,que son, como caba esperar, TRUE y FALSE. Se pueden usar tambin en minsculas,aunque conviene recordar que la prctica habitual en programacin es usar lasconstantes en maysculas.

    Cuando el resultado es verdadero la expresin de comparacin devolver TRUE, si laevaluacin de la expresin de comparacin es falsa PHP devolver como resultadoFALSE.

  • Plataforma de Teleformacin de IFES Pgina 39 de 240

    A nivel interno PHP no almacena TRUE o FALSE, sino que interpreta el valor 0 comofalso y el 1 como verdadero (realmente interpreta como verdadero cualquier valor quesea diferente de 0. Por ejemplo, en PHP el valor 5 es interpretado como verdadero ).

    Ejemplo 2.3.3. En este ejemplo aparece la construccin if ... else que se ver en laproxima unidad didctica.

  • Pgina 40 de 240 Programacin en PHP

    echo "";

    echo "Es 5 menor que 3? ";if (5 < 3) { echo "TRUE";}else { echo "FALSE";}echo "";

    echo "Es 5 mayor que 3? ";if (5 > 3) { echo "TRUE";}else { echo "FALSE";}

    ?>

    Operadores lgicosLos operadores lgicos sirven para relacionar los resultados de condiciones, es decir,combinan los resultados de valores TRUE y FALSE. Son tiles para representarexpresiones del tipo Es cierto que Madrid es la capital de Espaa y que a la vezMadrid es la ciudad ms poblada de Espaa?

  • Plataforma de Teleformacin de IFES Pgina 41 de 240

    Ejemplo 2.3.4. Al conjunto de combinaciones de valores que pueden tomar losoperandos y el resultado de la operacin se le conoce en lgica como tabla de verdad.En el siguiente ejemplo construiremos la tabla de verdad del operador AND. De formasimilar se podra construir la tabla de verdad del resto de los operadores.

  • Pgina 42 de 240 Programacin en PHP

    echo "TRUE ";}else {echo "FALSE";}echo "";

    echo "FALSE | TRUE | ";if (FALSE && TRUE) {echo "TRUE ";}else {echo "FALSE";}echo "";

    echo "FALSE | FALSE | ";if (FALSE && FALSE) {echo "TRUE ";}else {echo "FALSE";}

    ?>

    Operador de unin de cadenasEn la mayora de ejemplos anteriores, cuando hemos querido imprimir un textopor pantalla que estaba formado por varios fragmentos, hemos tenido que usaruna instruccin echo por cada uno de los fragmentos. El operador de unin de cadenasnos permite unir los fragmentos para, por ejemplo, usar una sola instruccin echo.

  • Plataforma de Teleformacin de IFES Pgina 43 de 240

    Ejemplo 2.3.5. Se pueden concatenar directamente cadenas de texto con datos de tipoentero. Los datos que se concatenan se pueden introducir directamente o extraer devariables.

    Operadores de asignacinEn la unidad didctica sobre variables hemos visto el operador bsico de asignacin,que es el smbolo igual "=". Pero hay otros operadores que permiten hacer unaoperacin y una asignacin a la vez y, por lo tanto, producen un cdigo mscomprimido. El uso de estos operadores es desaconsejable para el programadorprincipiante ya que puede llevar a un cdigo poco legible y como consecuencia aasignaciones errneas.

    Los operadores de asignacin comprimidos y sus equivalencias son:

  • Pgina 44 de 240 Programacin en PHP

    Precedencia de operadoresUn ltimo aspecto que conviene mencionar es, qu pasa cuando en una expresincompleja aparece ms de un operando? En ese caso, qu operaciones se evaluanantes?.

    Cuando hay expresiones complejas con ms de un operando, hay unos que se evaluanantes de otros, con el siguiente orden, teniendo en cuenta que los de arriba se evalanantes que los de abajo, y que los de la misma fila tienen igual precedencia (se evalande izquierda a derecha):

    En cualquier caso podemos alterar la precedencia mediante la inclusin de partentesisalrededor de las expresiones. De hecho es muy recomendable hacerlo incluso aunque

  • Plataforma de Teleformacin de IFES Pgina 45 de 240

    exista una regla de precedencia que produzca el mismo resultado, para dar mayorclaridad al cdigo.

    Ejemplo 2.3.6. La multiplicacin tiene precedencia sobre la suma por lo que, sinparntesis, en la expresin 2 + 5 * 4 se evala primero 5 * 4 y luego se le suma 2.

    U.D.4. Sentencias de controlHasta ahora solo hemos visto instrucciones muy sencillas. Adems lo nicoque podamos hacer con ellas es ejecutarlas secuencialmente. Pero, tenemosherramientas para elegir una alternativa entre dos? O para escribir 5 veces un textopor pantalla? Para hacer frente a estas situaciones se incluyen las sentencias decontrol.

    Estructuras condicionales.

    Instruccin ifLas instrucciones condicionales permiten ejecutar diferentes fragmentos de cdigoen funcin del resultado de una expresin condicional. La instruccin bsica es if . Lasintaxis es:

    if (condicin ) {Cdigo a ejecutar si la condicin es cierta}

  • Pgina 46 de 240 Programacin en PHP

    Cuando el cdigo a ejecutar si la condicin es cierta es una sola sentencia sepueden omitir las llaves "{" "}". En cualquier caso es preferible no omitirlos ya que danmayor claridad a cules son exctamente las sentencias que se ejecutan en el caso decumplirse la condicin.

    Ejemplo 2.4.1. Las dos construcciones siguientes son equivalentes, aunque espreferible siempre usar la primera por claridad:

    Ejemplo 2.4.2. Veamos la diferencia entre poner llaves para encuadrar un bloque detexto entre llaves y no hacerlo:

    Instruccin else En muchos casos no nos bastar con ejecutar un cdigo si ese cumple la condicinsino que querremos elegir entre dos opciones alternativas y mutuamente excluyentes.

  • Plataforma de Teleformacin de IFES Pgina 47 de 240

    En estos casos la sentencia if se completa con un bloque de cdigo que se ejecuta solosi es falsa la condicin:

    if (condicin ) { Cdigo a ejecutar si la condicin es cierta}else { Cdigo a ejecutar si la condicin es falsa}

    Ejemplo 2.4.3.

    Instruccin else ifTambin puede suceder que queramos encadenar diferentes condiciones. Para ellose puede encadenar una sentencia else con un nuevo condicional. A su vez la nuevasentencia if puede ser completada por un else.

    if (condicin1 ) { Cdigo a ejecutar si la condicin1 es cierta} else if (condicin2 ) { Cdigo a ejecutar si la condicin1 es falsa y la 2 cierta }else { Cdigo a ejecutar si ambas condiciones son falsas}

  • Pgina 48 de 240 Programacin en PHP

    Ejemplo 2.4.4. Se pueden encadenar varias sentencias else if como se ve en elsiguiente programa:

    Instruccin switchEn el caso anterior se elega entre varias opciones alternativas y excluyentes. PHPnos ofrece una instruccin que nos facilita la tarea, siempre que haya que elegir entrevarias posibles. A diferencia de la instruccin if , si queremos que se ejecuten variasinstrucciones, no ser necesario englobarlas entre llaves "{" "}". La ejecucin seguirhasta que encuentre el siguiente break.

    switch (expresion ) { case etiqueta1 : Cdigo a ejecutar si expresin == etiqueta1 break; case etiqueta2 : Cdigo a ejecutar si expresin == etiqueta1 break; case default : Cdigo a ejecutar si no se verifica ninguna etiqueta break; }

  • Plataforma de Teleformacin de IFES Pgina 49 de 240

    El bloque de cdigo detras de default se ejecuta en el caso de que no se hayaverificado ninguno de los casos anteriores. Terminar el bloque de instruccionesdefault con una instruccin break es opcional, pero es recomendable ya que mejora lalegibilidad.

    Ejemplo 2.4.5. Puede haber tantas sentencias case como sea necesario.

    Ejemplo 2.4.6. Aqu se puede observar dos estrategias que nos pueden ser tilesen algunos casos. La primera es formar un grupo de alternativas que producen unresultado. La segunda es omitir intencionadamente la instruccin break al final de unbloque.

  • Pgina 50 de 240 Programacin en PHP

    echo "Ya he desayunado."; break; default: echo "Tengo hambre"; break;}

    ?>

    Estructuras iterativasEn muchas ocasiones, al programar, hay una accin que se repite varias veces.Podramos poner varios bloques de cdigo iguales seguidos para conseguir esteefecto, pero esto nos conducira a un cdigo redundante y muy largo. Adems, qusucede si no conocemos las veces que queremos repetir el cdigo a priori?

    Instruccin whileEs la estructura ms sencilla. Repite indefinidamente la ejecucin de un bloque decdigo mientras la evaluacin de la condicin sea cierta. La forma que tenemos decontrolar cuantas veces se repite el bucle while es a travs de la condicin. Por lo tanto,en el cuerpo del bucle se han de modificar las variables que intervienen en la condicinde tal forma que en algn momento sea falsa.

    while (condicin ) { Cdigo a ejecutar mientras la condicin sea cierta}

    Ejemplo 2.4.7. El ejemplo ms tipo de ejecucin de un bucle es contar. Es importanteobservar dos cosas:

    1. La variable $i se inicializa fuera del bucle.2. La variable $i se modifica en la ltima instruccin del cuerpo delbucle. De esta forma cada vez que se evala la condicin ha cambiado.Cuando $i llega a valer 11 la condicin es falsa y el bucle termina.

  • Plataforma de Teleformacin de IFES Pgina 51 de 240

    while ($i

    Ejemplo 2.4.8. Un ejemplo un poco ms complejo. En la expresin condicin del buclese hace uso de una constante por primera vez en los ejemplos.

    Instruccin do ... whileEn PHP se dispone tambin de la estructura do ... while, que a diferencia de la anteriorevala la condicin al final en lugar de al principio del bucle. De esta forma el buclese ejecuta siempre al menos una vez y a partir de ese momento se repite mientras lacondicin sea cierta.

    do { Cdigo a ejecutar} while (condicin );

    Ejemplo 2.4.9. Uno de los casos en los que se usa esta estructura es cuando se estesperando recibir un dato en concreto y hay que realizar varias veces una lectura de un

  • Pgina 52 de 240 Programacin en PHP

    dato hasta que se recibe el dato esperado. Como an no conocemos ninguna forma derecibir datos, se ha optado por generarlos aleatoriamente. En este ejemplo se simula ellanzamiento de un dado de parchs.

    Instruccin for La instruccin for es probablemente la ms fcil de comprender para las personas queestn aprendiendo a programar, dado que, en la mayora de los casos se conoce elnmero de veces que se va a ejecutar el bucle antes de entrar al mismo. La sintaxisque tiene PHP es:

    for (inicializacin ; condicin ; incremento ) { Cdigo a ejecutar}

    El bucle se ejecutar mientras la condicin sea TRUE.

    Ejemplo 2.4.10. Aqu se puede ver un bucle for sencillo que, al igual que el bucle whiledel ejemplo 2.4.7., imprime 10 lneas numeradas. Como se puede observar es habitualutilizar la variable $i en el cuerpo del bucle. A esta variable se le llama a veces ndice.

  • Plataforma de Teleformacin de IFES Pgina 53 de 240

    ?>

    Ejemplo 2.4.11. La instruccin de incremento no tiene por qu hacer aumentar el valor,tambin lo puede hacer retroceder. En este ejemplo se imprime una cuenta atrs.

    Ejemplo 2.4.12. Tambin se puede hacer que la instruccin incremento aumente elvalor en cada paso un nmero distinto de 1. El siguiente programa cuenta los nmerosdel 3 al 15 de 3 en 3.

    Ejemplo 2.4.13. La condicin no tiene por qu ser necesariamente sobre la variabledeclarada como ndice . En este ejemplo se puede observar esto. El resultado es elmismo que con el ejercicio anterior.

  • Pgina 54 de 240 Programacin en PHP

    echo $j;echo "";}

    ?>

    De todas formas es muy recomendable que la condicin sea sobre el ndice. Tambinhay que evitar alterar el contenido del ndice en el cuerpo del bucle, pues puede llevar acomportamientos impredecibles si no se tiene cuidado.

    Anidamiento de bloques de cdigoHasta ahora hemos visto a las sentencias de control actuar de forma aislada. Peroen la mayora de las situaciones nos encontraremos que para obtener el resultadoesperado hemos de hacer que trabajen juntas. Esto no supone ningn problema. Unbloque de cdigo dentro de una sentencia de control puede contener varias sentenciascondicionales, y a su vez los bloques de cdigo de stas, nuevas sentenciascondicionales.

    Ejemplo 2.4.14. Aqu se puede ver un caso tpico del uso de sentencias de controlanidadas.

    El principal problema con el que nos podemos encontrar es tener un cdigo pocolegible. Para evitarlo es recomendable poner espacios delante de cada bloque decdigo de tal forma que el comienzo de las instrucciones comience a diferentes

  • Plataforma de Teleformacin de IFES Pgina 55 de 240

    distancias del margen dependiendo del bloque en el que se est. A esta tcnica se lellama sangrado.

    El sangrado ms habitual es de 4 espacios en blanco por cada nivel de anidamiento.Todos los fragmentos de cdigo que se han incluido hasta ahora se han puesto coneste estilo de sangrado con el que es ms frecuente encontrrselos.

    Ejemplo 2.4.15. Este cdigo es idntico al anterior pero sin sangrado. Es obvio que enste es mucho ms difcil comprender el flujo del programa.

    El sangrado no es obligatorio, el cdigo funcionara igual sin hacerlo, pero como se havisto en este ejemplo, los programas se vuelven prcticamente ilegibles.

    Ejemplo 2.4.16. Mediante el anidamiento se pueden conseguir resultados interesantescon muy poco cdigo. En el siguiente ejemplo se va a dibujar una tabla de multiplicar.

  • Pgina 56 de 240 Programacin en PHP

    ?>

    Terminacin de los buclesSi no controlamos bien la condicin del bucle, sta nunca se evaluar a falso y el buclese evaluar indefinidamente, dando lugar a un bucle infinito. ste es uno de los erroresms habituales. En bucles complejos puede ser fcil perder de vista cules son lasvariables que intervienen en la evaluacin de la condicin.

    Ejemplo 2.4.17. ste es un bucle infinito que escribir indefinidamente una frase porpantalla. El bucle no se detiene hasta que no paremos la descarga desde el navegadoro nos quedemos sin memoria.

    Antes de ejecutar este ejemplo, guarda lo que estshaciendo. Puede ser que se te bloquee el ordenadory tengas que reiniciarlo.

    breakLa ejecucin natural de los bucles se puede interrumpir mediante la sentencia break.En el cuerpo de cualquiera de los tipos de bucle que hemos visto, una sentencia breakcausa la finalizacin del mismo sin ejecutarse ninguna sentencia ms del cuerpo delbucle. En otras palabras, en cuanto se encuentra una sentencia break, se interrumpe laejecucin del bucle y se pasa a la siguiente lnea de cdigo despus del bucle.

    Ejemplo 2.4.18. Bucle que se interrumpe mediante un break.

  • Plataforma de Teleformacin de IFES Pgina 57 de 240

    Ejemplo 2.4.19. En ocasiones se pone intencionadamente un bucle infinito que sepretende romper con una sentencia break en su cuerpo.

    continueLa sentencia continue tiene cierta similitud con la sentencia break.

    Su funcionamiento es el siguiente. En cuanto se encuentra una sentencia continue seignoran el resto de las instrucciones del cuerpo del bucle pero no se sale del mismo,sino que se salta a la sentencia de evaluacin de la condicin . Obviamente, si en

  • Pgina 58 de 240 Programacin en PHP

    ese momento la condicin del bucle es verdadera, el bucle comenzar una nuevaejecucin.

    Ejemplo2.4.20. Este programa lista los nmeros del 1 al 10, indica los queson mltiplos de 3, y si son divisibles por 3 nos muestra el resultado de esta divisin.

    Las sentencias break y continue dan lugar, por lo general, a un cdigo ms complejoy propenso a errores, por lo que no se recomienda su uso por parte del programadorprincipiante.

    Resumen mdulo IIEste recurso es de tipo Multimedia.Tiene que conectarse a la plataforma para acceder a este recurso.

    Prctica: conceptos bsicosEste recurso es de tipo Prctica.Tiene que conectarse a la plataforma para acceder a este recurso.

    Autoevaluacin mdulo II

  • Plataforma de Teleformacin de IFES Pgina 59 de 240

    Pregunta 1:En las pginas dinmicas programadas en PHP se alternan bloques de cdigo

    HTML y bloques de cdigo PHP. Verdadero Falso

    Respuesta correcta: Verdadero

    Pregunta 2:Todas las instrucciones, salvo la ltima, han de acabar con un punto y coma.

    Verdadero Falso

    Respuesta correcta: Verdadero

    Pregunta 3:En PHP hay solo una forma de mostrar un texto en la pgina web, y es mediante

    la sentencia echo . Verdadero Falso

    Respuesta correcta: Falso

    Pregunta 4:PHP es un lenguaje de programacin fuertemente tipado. Soporta los tipos de

    dato integer , long , float , double , boolean y string.

    Verdadero Falso

    Respuesta correcta: Falso

    Pregunta 5:"$4ruedas" es un nombre de variable vlido.

    Verdadero Falso

    Respuesta correcta: Falso

    Pregunta 6:

  • Pgina 60 de 240 Programacin en PHP

    Cuando una expresin contiene varios operadores estos se evalan siempre de

    izquierda a derecha. Verdadero Falso

    Respuesta correcta: Falso

    Pregunta 7:La siguiente expresin es verdadera para todos los individuos que tiene el pelo

    rubio y los ojos azules.($pelo == "rubio") && ($ojos != "azules")

    Verdadero Falso

    Respuesta correcta: Falso

    Pregunta 8:El siguiente cdigo pintar por pantalla la frase "Ins es una chica muy alta."

    Verdadero Falso

  • Plataforma de Teleformacin de IFES Pgina 61 de 240

    Respuesta correcta: Verdadero

    Pregunta 9:Si al entrar en un bucle la condicin es verdadera y no se modifica en el cuerpo

    del bucle nunca se podr salir de l. Se trata de un bucle infinito. Verdadero Falso

    Respuesta correcta: Falso

    Pregunta 10:En PHP solo se puede anidar un mximo de una estructura condicional o iterativa

    dentro de otra. Verdadero Falso

    Respuesta correcta: Falso

  • Pgina 62 de 240 Programacin en PHP

    Programacin en PHP

    Mdulo III. Conceptos avanzadosU.D.1. Cadenas

    El manejo de cadenas en PHP es de vital importancia, ya que la nica forma quetenemos de comunicarnos con el usuario es a travs de texto. Hay que tener en cuentaque el resultado de un programa en PHP es una pgina web con formato HTML.

    Combinar cdigo HTML con cdigo PHPComo en una pgina web dinmica programada en PHP hay cdigo de dos tipos,lo mejor es mantenerlos bien diferenciados. Hay que ser especialmente cuidadosoprocurando que el cdigo sea muy legible. Esto facilitar el mantenimiento de la pginay har mucho ms sencillo dotarla de elementos de diseo.

    El objetivo ideal sera que un diseador web pudiera aplicar diseo a una pginaPHP sin tener que preocuparse de la programacin que contiene. En el mdulo Vveremos una breve introduccin a las plantillas que nos facilitan notablemente la tareade separar el cdigo HTML del cdigo PHP.

    Variables dentro de cadenasHasta ahora, siempre que hemos necesitado mostrar un texto compuesto por unacadena y el valor de una variable los hemos tenido que unir usando el operadorconcatenar " . ". Pero PHP ofrece una sintaxis alternativa que resulta ms compacta ypuede ser de utilidad en muchos casos.

  • Plataforma de Teleformacin de IFES Pgina 63 de 240

    echo "Belinda tiene $edad aos.";

    ?>

    Uso de la sentencia echo

    Es recomendable usar esta forma de conseguir salida cuando es predominante lacantidad de cdigo PHP sobre la cantidad de cdigo HTML. Lo mismo se aplica aluso de la funcin print() que produce los mismos resultados. Hay partidarios de usaruna forma y partidarios de usar la otra, lo que no es muy recomendable es mezclarlasdentro del mismo programa.

    Ejemplo 3.1.2. En este pequeo programa predomina el cdigo PHP sobre el cdigoHTML.

    Nmeros primos

  • Pgina 64 de 240 Programacin en PHP

    Uso de la sintaxis A la inversa, cuando predomina el cdigo HTML sobre el cdigo PHP es interesantemostrar la salida usando esta sintaxis, siempre y cuando la hayamos activado en laconfiguracin de PHP.

    Para activarlo hay que acceder al archivo php.ini, dentro del directorio C:\xampp\php, yaadirle la siguiente lnea: short_open_tag=1. Se puede aadir al final del archivo, peroantes aseguraos de que no existe ya dicha lnea.Una vez aadida esta lnea, debis reiniciar el servidor Apache para que los cambiossurtan efecto.

    En cualquier caso, no os aconsejo esta sintaxis, porque puede ocurrir que no estactivado en la configuracin PHP del sistema que aloje los scripts que estis creando yno tengis acceso al archivo de configuracin.

    Ojo al manipular el archivo de configuracin php.ini.Un uso incorrecto puede provocar que vuestroservidor Apache no funcione bien.

    Ejemplo 3.1.3. En este pequeo programa predomina el cdigo HTML sobre el cdigoPHP.

    El hombre del tiempo

    Hola, soy el hombre del tiempo.Mi mtodo para adivinar el clima es infalible.

  • Plataforma de Teleformacin de IFES Pgina 65 de 240

    Temperatura mnima prevista

    Temperatura mxima prevista

    grados.

    grados.

    Fragmentos de HTML dentro de estructurascondicionalesCuando tenemos que mostrar trozos de cdigo HTML muy grandes y este se encuentradentro de una estructura condicional, puede ser muy pesado construirlos a base desentencias echo . En este caso es preferible volver a cerrar el bloque de cdigo PHPcon la etiqueta ?>, escribir el cdigo HTML que se ejecuta condicionalmente, y abrirotra vez el cdigo PHP con la etiqueta produce un cdigocompacto y fcil de leer.

    Ejemplo 3.1.4. Aqu se ven las dos estrategias. La segunda es ms compacta y clara.

  • Pgina 66 de 240 Programacin en PHP

    echo ; echo No est autorizado a ver esta pgina.; echo ; echo Contacte con el administrador del sistema.; echo ; echo ; echo ; echo ; echo ;}

    ?>

    No est autorizado a ver esta pgina.Contacte con el administrador del sistema.

    Distribucin del cdigoLa ltima cuestin que nos queda por resolver es dnde situar el cdigo. Salvo elcdigo que muestra resultados por pantalla, que tiene que aparecer en el lugar

  • Plataforma de Teleformacin de IFES Pgina 67 de 240

    apropiado de la pgina, el cdigo PHP se puede situar en cualquier lugar. La mejoropcin es separarar en la medida de lo posible el cdigo encargado de:

    Inicializar las constantes y variables. Leer datos de entrada. Realizar operaciones.

    Este cdigo es conveniente ponerlo al principio de la pgina. Los resultados de lasoperaciones que se quieran mostrar se almacenan entonces en variables auxiliares yse muestran en el cuerpo de la pgina HTML donde corresponda haciendo uso de lasetiquetas .

    Ejemplo 3.1.5. sta es una pgina web en PHP bien construida. Usa un algoritmo parahallar el mximo comn divisor de dos nmeros generados aleatoriamente.

    Mximo comun divisor

  • Pgina 68 de 240 Programacin en PHP

    El mximo comn divisor de y es .

    Esto no es posible siempre. Por ejemplo, si tenemos que mostrar una lista de 11resultados el bucle que los recorre deber estar mezclado con el cdigo HMTL. Detodas formas con la experiencia iremos aprendiendo poco a poco a extraer la mayorparte del cdigo PHP al comienzo de la pgina.

    Manipulacin de cadenasPHP dispone de funciones predefinidas en el ncleo que nos permiten haceroperaciones con los textos almacenados en cadenas. Ya hemos visto las funcin echoy printf(), pero hay unas cuantas ms.

    Acceder a los caracteres de una cadenaSe puede acceder a los caracteres de las cadenas indicando la posicin del carcterque queremos extraer. Las posiciones van desde 0 hasta el nmero de caracteres(longitud) menos uno. Si intentamos acceder a una posicin ms all del final de lacadena nos devolver la cadena vaca (cadena sin ningn caracter = "").

    Ejemplo 3.1.6. Varias pruebas extrayendo caracteresde una cadena.

  • Plataforma de Teleformacin de IFES Pgina 69 de 240

    echo "Caracter en la posicin 9: '$cadena[9]'";

    //La cadena tiene longitud 10, en la posicin 12 no hay nadaecho "Caracter en la posicin 12: '$cadena[12]'";

    ?>

    strlen()strlen(cadena )

    Por lo general no conceremos la longitud de la cadena a priori. Esta funcin nospermite obtenerla

    strpos()En ocasiones nos interesar conocer la posicin de la primera aparicin de un carcteren una cadena. Si no se encuentra el carcter devuelve FALSE.

    strpos(cadena , carcter )

    Alternativamente podemos indicarle la posicin a partir de la cual queremos queempiece a buscar.

    strpos(cadena, carcter, posicin inicial )

    substr()Habr muchos casos en los que nos interesar extraer un trozo del texto de unacadena. Para hacerlo disponemos de esta funcin.

    substr(carcter, posicin inicial, posicin final )

    Ejemplo 3.1.7. El funcionamiento de las funciones se va a explicar con un ejemplotpico, la comprobacin de que una direccin de correo electrnico es correcto y laextraccin de datos del mismo.

  • Pgina 70 de 240 Programacin en PHP

    echo "Email a analizar: $email";echo "";echo "Tiene " . strlen($email) . " letras.";

    //Indica la posicin del caracter "@" o FALSE si no est$posicion_arroba = strpos($email, "@");

    //Busca la aparicin de un punto (.) partir de la arroba$posicion_punto = strpos($email, ".", $posicion_arroba);

    if ($posicion_arroba && $posicion_punto) {echo "Es una direccin de email vlida";$usuario = substr($email, 0, $posicion_arroba);$dominio = substr($email, $posicion_arroba + 1);echo "El nombre de usuario es: $usuario";echo "El dominio es: $dominio";} else {echo "No es una direccin de email vlida";if (!$posicion_arroba) {echo "Le falta el caracter arroba";}if (!$posicion_punto) {echo "El dominio no es vlido";}}

    ?>

    trim()Elimina los espacios en blanco al principio y final de una cadena.

    trim(cadena )

    str_replace() En un texto, reemplaza las apariciones de una cadena por otra.

    str_replace(cadena original, cadena a buscar, cadena reemplazar )

  • Plataforma de Teleformacin de IFES Pgina 71 de 240

    Ejemplo 3.1.8. En este ejemplo se supone que podemos recibir direcciones de correoelectrnico errneas, y las intentamos arreglar. El primer error que eliminamos esla aparicin de espacios en blanco al principio y al final de la direccin. El segundocuando los usuarios escriben el dominio pernambuco.es cuando el correcto espernambuco.com.

    strtoupper() y strtolower()La funcin strtoupper() convierte los textos a maysculas, y strtolower() a minsculas.

    strtoupper(cadena )strtolower(cadena )

    Ejemplo 3.1.9. En este ejemplo vamos a pasar la direccin de correo a minsculas.

  • Pgina 72 de 240 Programacin en PHP

    Ejemplo 3.1.10. Un uso muy habitual de estas funciones es para comparar cadenas.Para PHP la cadena "MADRID" es diferente a la cadena "Madrid", pero mediante estasfunciones se pueden comparar como iguales.

    number_format()Esta funcin es til cuando hay que mostrar datos de tipo double, es decir, nmeroscon decimales. Permite especificar el nmero de decimales que queremos que semuestren, en lugar de los diez decimales que se muestran habitualmente.

    number_format(nmero, decimales )

    Ejemplo 3.1.11. Esta funcin ya apareci en una prctica del mdulo anterior.

  • Plataforma de Teleformacin de IFES Pgina 73 de 240

    echo "A pagar " . number_format($a_pagar, 2) . " euros.";

    ?>

    U.D.2. Arrays

    Hasta ahora hemos trabajado en nuestros programas con una pequea cantidad dedatos, y la cantidad de los mismos no variaba a lo largo del programa. Pero la mayorade los programas que hacen algo til requieren tratar gran cantidad de datos. En estecaso sera muy incomodo tener una variable para cada dato.

    Afortunadamente cuando se tratan muchos datos, stos suelen ser de unos tipos muysimilares entre s. Para tratarlos en grupos, PHP ofrece tipos de datos compuestos, esdecir, tipos de datos que permiten almacenar varios datos en una misma variable.

    El tipo de datos compuesto ms sencillo es el array . Es una estructura muy potente,flexible y de uso muy intuitivo. Un array est compuesto por varios elementos. Cadaelemento almacena un valor diferente. Y para poder localizar un elemento, disponemosdel ndice (algo as como una direccin).

    Arrays indexados numricamenteEl tipo ms sencillo de array es el indexado numricamente, en los que el ndicede cada elemento corresponde con su posicin. Hay que tener en cuenta que, al igualque suceda con las cadenas, el primer elemento de un array tiene ndice 0 (y no 1como cabra esperar).

    Inicializar un arrayLos arrays se suelen almacenar en variables, como cualquier otro tipo de datos.La forma ms sencilla de crear un array es asignando los valores de sus elementos ala vez que se crea. Para ello primero declaramos el nombre de la variable y usamos la

  • Pgina 74 de 240 Programacin en PHP

    funcin array() , a la que le pasamos como parmetros un grupo de valores separadospor comas.

    Ejemplo 3.2.1. Creacin de un array por asignacin directa mediante la funcin array():

    La segunda forma de crear un array es aadindole elementos al final del array. Paraaadir un elemento a un array se usa su identificador seguido de corchetes "[ ]", sin elndice, y se le asigna un valor.

    Ejemplo 3.2.2. Aqu se puede ver cmo se crea un array mediante la adicin deelementos.

    Ejemplo 3.2.3. Se pueden combinar ambas formas, primero declarar un arraydirectamente y cuando sea necesario ir aadiendo elementos.

  • Plataforma de Teleformacin de IFES Pgina 75 de 240

    Acceder a un elemento de un arrayNecesitaremos acceder a los elementos de un array para asignarles valores o para leersu contenido. Esto es muy sencillo, basta poner el ndice del elemento al que queremosacceder entre corchetes "[ ... ]".

    Ejemplo 3.2.4. Aqu se leen los valores de los elementos de un array para sacarlos porpantalla. Luego se asigna un nuevo valor al primer elemento (recordamos, con ndice0).

    Recorrer un arrayLos arrays se suelen utilizar para almacenar listas de valores. Por ello, una de lasacciones ms habituales, es recorrerlos de principio a fin para leer o modificar uno ovarios de ellos.

    Las estucturas iterativas (bucles) que se vieron en la unidad didctica 4 del mduloII son idneas para recorrer arrays. Lo nico que hay que hacer es limitar el nmerode iteraciones al nmero de elementos del array. Para esto disponemos de la funcincount().

    count(array )

    Ejemplo 3.2.5. La funcin count() nos dice cuantos elementos contiene un array.

  • Pgina 76 de 240 Programacin en PHP

    echo "La lista contiene " . count($frutas) . " frutas.";

    ?>

    Ejemplo 3.2.6. Recorriendo un array para mostrarlo por pantalla.

    Ejemplo 3.2.7. Recorriendo un array para modificar todos sus elementos. Aqu se usandos arrays que estn relacionados por sus posiciones.

  • Plataforma de Teleformacin de IFES Pgina 77 de 240

    Ejemplo 3.2.8. Recorriendo un array para buscar un elemento. Se vuelve a haceruso de dos arrays relacionados por las posiciones de sus ndices. En este cdigose da por supuesto que se va a encontrar el valor buscado. No es seguro, fallarasi preguntaramos por la edad de una persona cuyo nombre estuviera en el arraynombres.

    Ordenar un arrayLa funcin sort() ordena los elementos de un array. Si el array est formado porcadenas de texto considera menores las minsculas que las maysculas.

    sort(array )

    Ejemplo 3.2.9. En esta ejemplo se ordena una lista de nombres, primero por elprocedimiento normal. Luego se muestra la forma de ordenar el mismo array sin hacerdistincin entre maysculas y minsculas.

  • Pgina 78 de 240 Programacin en PHP

    }echo "";

    echo "Ordenacin sin distinguir maysculas y minsculas:";$astros_minusculas = array_map("strtolower", $astros);array_multisort($astros_minusculas, SORT_ASC, SORT_STRING,$astros);

    for ($i = 0; $i < count($astros); $i++) { echo "$astros[$i]";}

    ?>

    Arrays no secuenciales

    Hasta ahora lo arrays que hemos visto tenan como ndices la sucesin 0 (1er elemnto),1 (2 elemento), 2 (3er elemento) ...

    En PHP los ndices de un array no tiene por qu ser consecutivos, pueden incluso estardesordenados.

    El ndice de los arrays asociativos no tiene por qu ser necesariamente un entero,puede ser tambin un numero decimal o una cadena. Este tipo de arrays es ms difcilde usar y aunque permite una mayor flexibilidad, pueden ser fuente de muchos erroresdifciles de detectar si no se usan con cuidado.

    Arrays asociativosstos son un caso especfico de arrays no secuenciales en los que el ndice es unacadena de texto. Pueden resultar tiles para guardar listas en las cuales se asocia unvalor a una palabra clave.

  • Plataforma de Teleformacin de IFES Pgina 79 de 240

    La creacin de este tipo de arrays se puede hacer de dos formas. La primera esmediante la funcin array() de forma parecida a como lo hacamos antes, solo queahora deberemos especificar un valor para el ndice.

    Ejemplo 3.2.10. Cuando se declaran explcitamente los ndices se escribe el valor delindice seguido por "=>" y el valor del elemento que contiene.

    Como se puede observar en el ejemplo, si queremos hacer referencia a un elemento deun array indexado por una cadena dentro de un texto entre comillas, lo tendremos queencerrar entre llaves "{ }". Si no, nos dar un error al interpretar la comilla de aperturadel ndice del array como la comilla final de la cedena.

    Ejemplo 3.2.11. En la siguiente sentencia, PHP dar un error.

    La segunda forma de crear un array asociativo es aadiendo elementos al array yasignndoles de forma explcita cual es su ndice.

    Ejemplo 3.2.12. Veamos esta segunda forma de inicializar arrays declarandoexplcitamente sus ndices.

  • Pgina 80 de 240 Programacin en PHP

    Hay que tener cuidado con este sistema de creacin pues se usa indistintamente paracrear un elemento y para acceder a su valor.

    Ejemplo 3.2.13. En este ejemplo primero se relaciona un array con otro a travs dendices de tipo cadena. Los valores del primer array sirven a su vez como ndices delsegundo.

    Aun as, al igual que ocurra con los arrays no secuenciales, su uso no esrecomendable si no se tiene dominio sobre el lenguaje de programacin PHP.

    Arrays no homogneos.Como estamos viendo, PHP establece muy pocas limitaciones a las estructuras de losarrays. Aunque hasta el momento todos los arrays que hemos visto los hemos usadopara manipular datos del mismo tipo (arrays de enteros, arrays de cadenas...) sta esuna restriccin que no era necesaria.

  • Plataforma de Teleformacin de IFES Pgina 81 de 240

    PHP permite mezclar en los elementos de los array valores de diferentes tipos. Inclusopermite que los ndices de los elementos de un mismo array sean de diferentes tipos.Pero una vez ms esta es una estrategia peligrosa a seguir y a la que en la mayora delos casos no ser necesario recurrir.

    Arrays multidimensionalesEl contenido de un elemento de un array puede, a su vez, ser un array. De esta formase pueden construir arrays multidimensionales.

    Ejemplo 3.2.14. Aqu se muestra como almacenar una matriz (array de dosdimensiones) que contiene una sopa de letras generada aleatoriamente (la funcinchr() devuelve un carcter dado su nmero ascii).

  • Pgina 82 de 240 Programacin en PHP

    ?>

    Mostrar el contenido de un arrayEjemplo 3.2.15. PHP dispone de la funcin print_r() a la que se le pasa comoargumento un array e imprime por pantalla su contenido. Para poderlo ver bien se usala etiqueta HTML ... que sirve para mostrar el texto y los saltos de lnea talcual.

    Desbordamiento de arraysSi se intenta acceder a un elemento que no existe en un array, PHP nos devolver lacadena vaca (""). sta es una causa de error muy habitual, sobre todo si luego vamosa hacer operaciones con ese dato.

  • Plataforma de Teleformacin de IFES Pgina 83 de 240

    Ejemplo 3.2.16. Aqu se accede al quinto elemento del array, que no existe.

    Otra forma de recorrer un array

    foreachPHP 4 introdujo un constructor foreach, muy parecido al de Perl y algunos otroslenguajes. Proporciona un modo fcil de iterar sobre arrays. foreach trabaja solo sobrearrays y dar un error al intentar usarlo en una variable con un tipo de datos diferente ouna variable no inicializada.

    foreach (array as $valor){ sentencias}

    En cada ciclo, el valor del elemento actual es asignado a $valor y el ndice interno delarray avanza en uno (as en el prximo ciclo se estar mirando el siguiente elemento).

    Ejemplo 3.2.17. Recorremos el array, y nosotros no tenemos que controlar el ndice.

  • Pgina 84 de 240 Programacin en PHP

    U.D.3. FuncionesPHP es un lenguaje estructurado y como tal dispone de funciones. Las funciones noson ms que fragmentos de cdigo a los que se puede llamar desde cualquier parte delcdigo. Gracias a esto permiten:

    Reutilizar cdigo que se usa frecuentemente. Estructurar lgicamente el cdigo para que sea ms comprensible. Separar el cdigo en diferentes ficheros para poder compartirlo en diferentes

    pginas PHP.

    Funciones definidas por el usuario

    Declaracin de una funcinAntes de poder utilizar una funcin, sta ha de ser escrita. Por lo tanto, el lugar enel que se suelen situar las funciones es al comienzo del archivo, de tal forma queestn disponibles a partir de ese momento. Situarlas al comienzo tambin ayuda a unaestructuracin del cdigo ms lgica.

    Las funciones se declaran, como las variables, con un nombre , precedido de la palabrafunction , unos parntesis (para albergar los datos de entrada, llamados argumentos oparmetros) y unas llaves que incluyen el cuerpo de la funcin. Dentro del cuerpo de lafuncin podemos declarar variables, llamadas a otras funciones y dems sentencias.

    function nombre_funcion (arg1, arg2, arg3, ...) { bloque de cdigo return valor ; //Opcional}

    Llamada a una funcin

    Para utilizar una funcin se escribe su nombre, seguido de parntesis y dentro de stosse escriben los datos que se quieren pasar a la funcin (o variables que contienendichos datos).

    nombre_funcion (arg1, arg2, arg3, ...);

  • Plataforma de Teleformacin de IFES Pgina 85 de 240

    Si la funcin devuelve un dato, ste se puede asignar a una variable o usardirectamente como parte de una expresin.

    Ejemplo 3.3.1. A continuacin se muestra una funcin muy sencilla, que no tieneargumentos.

    Devolucin de un valor

    Las funciones son mucho ms tiles si pueden devolver un dato. Para ello usan lasentencia return . Una vez que se llega a esta instruccin, no se ejecuta el cdigo quese pueda encontrar a continuacin.

    Ejemplo 3.3.2. La siguiente funcin devuelve aleatoriamente un da de la semana.

    Argumentos

  • Pgina 86 de 240 Programacin en PHP

    Aun as, estas funciones que hemos visto son muy sencillas y no permiten hacergrandes cosas. Lo ms habitual es que a las funciones se les pasen datos, queluego operen con stos y que al terminar la funcin devuelva el resultado. A los datosque recibe una funcin se les llama argumentos o parmetros.

    En la declaracin de la funcin, tras la palabra clave function , va el nombre de lafuncin seguido por una lista de argumentos entre parntesis y separados por comas.Dentro del cuerpo de la funcin estos datos se pueden utilizar como una variablecualquiera.

    Ejemplo 3.3.3. Funcin sencilla que recibe un parmetro y devuelve un resultado.Luego es llamada dentro de un bucle para mostrar el cuadrado de los nmeros de 1 a10;

    Paso de argumentos por valor

    Cuando se pasan valores a las funciones hay varias formas de hacerlo. Elcomportamiento predefinido es lo que se conoce como paso por valor. Esto quieredecir que la variable que recibe el valor hace una copia del mismo y a partir de esemomento acta como una variable independiente de manera que si cambias el valordel argumento dentro de la funcin, no se ve modificado fuera de ella.

    Paso de argumentos por referenciaEn ocasiones es preferible no hacer la copia del dato que se pasa. Esto puede interesarcuando se trabaje con arrays (la copia de muchos datos puede perjudicar el tiempode ejecucin del programa) o, ms comunmente, cuando se quiere alterar el valorde la variable para obtener algn efecto. A esto se le llama paso de parmetros por

  • Plataforma de Teleformacin de IFES Pgina 87 de 240

    referencia. Para indicar que un parmetro se pasa por referencia se le antepone elsmbolo ampersand, "&".

    Una funcin puede emplear argumentos pasados por valor y por referencia.

    Ejemplo 3.3.4. Comparacin entre el paso por valor y por referencia.

    Ejemplo 3.3.5. No se puede hacer que una funcin devuelva dos valores. Pero en sulugar es posible pasar por referencia las variables a devolver y modificar su contenidoen el cuerpo de la funcin. Aqu se emplea esta estratagema para intercambiar elcontenido de dos variables.

  • Pgina 88 de 240 Programacin en PHP

    $argumento1 = $argumento2; $argumento2 = $auxiliar;}

    $numero1 = 5;$numero2 = 8;echo "($numero1, $numero2)";

    intercambiar($numero1, $numero2);echo "($numero1, $numero2)";

    ?>

    Alcance de las variables

    Dentro de las funciones tambin podemos declarar nuevas variables, pero, qu pasasi hay una variable dentro de una funcin que se llama igual que una variable que seencuetra fuera de la funcin? La respuesta es que la variable de dentro de la funcin esdiferente de la que est fuera y por lo tanto su valor es independiente.

    A esto se le llama alcance de una variable. Las variables que se declaran dentro de unafuncin solo existen en el cuerpo de la funcin.

    Ejemplo 3.3.6. Este cdigo muestra el alcance de una variable dentro de una funcin.No hay que confundir este ejemplo con el ejemplo 3.3.4. En este caso no hay ningnargumento.

  • Plataforma de Teleformacin de IFES Pgina 89 de 240

    Ejemplo 3.3.7. Puede darse el caso de que queramos acceder a una variable globaldentro del cuerpo de la funcin. Para conseguirlo le antepondremos la palabra claveglobal a la primera referncia de la variable, con lo que el interprete PHP sabe queestamos llamando a la variable externa.

    No obstante, es altamente recomendable usar en las funciones nombres de variablesdiferentes a los de las variables del programa principal para evitar confusiones.Tampoco es conveniente usar variables globales dentro de las funciones. Siempre quese pueda es mejor pasar estas variables como parmetros, mejora notablemente lafiabilidad y claridad del cdigo.

    Creacin de bibliotecasPara conseguir un cdigo lo ms claro posible es deseable que ste seabreve. Una forma de conseguirlo es extraer las funciones que se declaran a unarchivo independiente con extensin .php. Una ventaja de esta estrategia es que sepueden hacer accesibles estas funciones a ms de una pgina en PHP.

    Ejemplo 3.3.8. Una biblioteca de funciones guardada en el archivo utils.php . Se haoptado por poner un breve comentario antes de cada funcin explicando su cometidopara contribuir a la legibilidad y mantenibilidad del cdigo.

  • Pgina 90 de 240 Programacin en PHP

    // Archivo utils.php

    // Devuelve el argumento elevado al cuadradofunction cuadrado($numero) { return $numero * $numero;}

    // Devuelve la raz cuadrada del argumentofunction raiz($numero) { return sqrt($numero);}

    // Devuelve verdadero si el nmero es igual o mayor que cerofunction es_positivo($numero) { return ($numero >= 0);}

    ?>

    Ejemplo 3.3.9. En los ficheros de biblioteca se puede incluir cualquier tipo de cdigo.Tambin se pueden poner archivos de configuracin, de constantes predefinidas, etc.En este caso se guarda en el archivo config.php.

    Las instruccines include() y require()Para tener disponibles las funciones de un fichero externo hay que indicarle al cdigoPHP que las ha de incorporar al script actual. Mediante estas instrucciones se incluyeun fichero en el punto en el que se importa. La diferencia es que require() lanza un errorfatal en el caso de no encontrar el fichero mientras que include() no lo hace.

  • Plataforma de Teleformacin de IFES Pgina 91 de 240

    Ejempo 3.3.10. La inclusin de bibliotecas se suele poner al principio para que estndisponibles en el resto del cdigo.

    Hay que tener en cuenta el orden en el que se cargan los archivos externos, sobre todosi unos hacen uso de cdigo de otros.

    Otros tipos de funcionesHasta ahora hemos visto las funciones que nosotros definimos. Pero a lo largo demuchos ejemplos hemos ido usando funciones como rand() o number_format() que yaestaban disponibles en el lenguaje. stas son funciones del ncleo de PHP y, por lotanto, no hace falta hacer un include() para poder usarlas.

    Extensiones de PHP

    Las funciones que incorpora de forma predefinida PHP estn agrupadas enextensiones.

    Ejemplo 3.3.11. Para saber qu extensiones estn instaladas en nuestro interprete dePHP tenemos una opcin muy til, la funcin phpinfo() que genera una pgina con lainformacin del intrprete que tenemos instalado.

  • Pgina 92 de 240 Programacin en PHP

    Debe aparecernos una pantalla similar a la siguiente:

  • Plataforma de Teleformacin de IFES Pgina 93 de 240

  • Pgina 94 de 240 Programacin en PHP

    Referencia sobre funcionesToda la referencia sobre funciones se puede encontrar en la pgina oficial sobre PHP:

    http://es.php.net/manual/es/funcref.php

    Hay una gran multitud de funciones en PHP de las cuales probablemente usaremosunas pocas. Las extensiones ms tiles son:

    Funciones matemticas - http://es.php.net/manual/es/ref.math.php

    Funciones de cadenas - http://es.php.net/manual/es/ref.strings.php

    Funciones de mysql - http://es.php.net/manual/es/ref.mysql.php

    Funciones de fecha y hora - http://es.php.net/manual/es/ref.datetime.php

    La pgina dispone tambin de un buscador que resulta bastante til.

    U.D.4. Formularios

    Hasta este momento todas las pginas que hemos visto a travs de ejemplos tenanuna caracterstica, no eran interactivas. Hacan operaciones en funcin de los datos delos que ya disponan pero eran incapaces de recibir datos del navegador.

    Una de las formas ms habituales de recibir datos por parte de una pgina webdinmica es a travs de formularios web. Estrictamente hablando, los formularios noson parte del lenguaje PHP sino del lenguaje HTML. Pero para recibir los datos de unformulario en HTML hace falta, por lo general, una pgina dinmica que los procese.

    Hay que tener en cuenta que adems de formularios HTML hay otras tecnologas quepermiten el envo de datos a pginas web, como Flash u otras pginas web dinmicas.

    Formularios HTMLLos formularios pueden llegar a ser muy complejos, con una gran cantidad de camposde entrada, validacin de datos por Javascript, campos ocultos... Pero el objetivo delcurso no es explicar su funcionamiento, as que se har un repaso muy superficial.

    Un formulario est formado por tres tipos de elementos: Etiquetas de comienzo y final,campos de entrada de datos y botones para realizar acciones.

  • Plataforma de Teleformacin de IFES Pgina 95 de 240

    Declaracin del formularioUn formulario se distingue por estar encuadrado entre una etiqueta de comienzo deformulario y una de final de formulario . La etiqueta de comienzo deformulario ha de tener al menos tres atributos.

    name - No es obligatorio pero s muy recomendable darle un nombre alformulario para que sea fcil de identificar.

    method - Este parmetro puede tomar dos valores segn la forma de enviarlos datos:

    get - Los datos se envan codificados en la URL (direccin de lapgina destino).

    post - Los datos se envan ocultos. action - Indica la pgina destino que se encargara de procesar los datos que

    enva el formulario.

    Campos de entrada de datos Botones de acciones

    CamposUna vez declarado el formulario hemos de poner un campo para cada uno de los datosque queremos recibir. Hay 6 tipos de campos:

    Texto - Se usa para recibir una lnea de texto.

    Seleccin nica - Se usa para elegir una opcin entre varias. Las opcionesque son excluyentes entre s han de tener el mismo nombre.

    Seleccin mltiple - Se usa para elegir opciones de forma independiente.Esto es, se pueden elegir todas, algunas o


Recommended