Esta lección contiene un índice de las lecciones que impartí en clase durante el primer trimestre del curso 2017/18 (y parte del segundo), así como los ejercicios que realizaron los alumnos.
Este índice se basa en las guías de estudio que ofrecí a mis alumnos de la modalidad semipresencial en la plataforma Moodle de la Conselleria de Educación. El trabajo propuesto a estos alumnos fue el mismo que siguieron en clase mis alumnos de la modalidad presencial, aunque la distribución temporal no fuera exactamente la misma.
La información se ofrece distribuida en semanas, ya que es así como estaba organizada la modalidad semipresencial.
Es importante tener en cuenta que este índice enlaza a las lecciones actuales, no a las lecciones tal y como se encontraban en el curso 2017/18, y en algunos casos estas lecciones y ejercicios pueden haberse reducido o ampliado de forma significativa. Si algunos apartados no enlazan a ninguna lección, es porque por alguna razón he eliminado esa lección de los apuntes actuales.
También se pueden consultar las lecciones impartidas en el curso anterior, 2016/17, y las lecciones impartidas en el curso siguiente, 2018/19.
Nota: Una vez instalado XAMPP, haced una copia de seguridad de la carpeta /xampp/apache/conf/ y del archivo /xampp/php/php.ini por si necesitáis recuperarlos.
En esta lección se tratan dos puntos muy importantes:
Si vuestro Windows es de 64 bits, instalad las versiones de 64 bits de Java Runtime Environment 8 y de Eclipse PHP (aunque también se podrían instalar las de 32 bits). Pero si vuestro Windows es de 32 bits, tenéis que instalar las versiones de 32 bits.
En esta lección se explica cómo crear un workspace de ejemplo y crear en él un proyecto, una carpeta enlazada, programas de ejemplo, configurar una herramienta externa para ejecutar archivos HTML, etc. Cread ese workspace de ejemplo siguiendo los pasos de la lección. Más adelante, podéis borrar la carpeta del workspace.
En esta lección se explican las opciones de configuración de Eclipse que vamos a utilizar durante el curso. La mayoría son necesarias para seguir la guía de estilo PSR-2. El resto son opcionales y responden más a los gustos de cada uno. Como la configuración hay que realizarla en cada workspace, os aconsejo realizarla únicamente con el workspace definitivo.
El estilo que se recomienda en esta lección es el que tenéis que utilizar en vuestros programas.
Estos ejercicios se pueden hacer de muchas maneras, incluyendo más o menos líneas en cada uno de los fragmentos PHP o HTML. Las soluciones propuestas son un ejemplo de solución.
Esta semana no se realizan ejercicios con variables, pero quiero que leáis esa primera lección.
En estos ejercicios se necesita la función rand() que genera números aleatorios que se comenta en la lección Operaciones aritméticas (apartado Números aleatorios).
Para generar las imágenes SVG, mirad el código fuente de los ejercicios de ejemplo. En realidad los programas sólo tienen que generar valores numéricos, el código SVG se puede copiar de la página de muestra.
En la primera parte del curso de PHP vamos a hacer un pequeño repaso general de PHP, tocando los temas vistos el año pasado en el módulo LMSGI: variables, operaciones, if ... else .. y for ... además de las matrices, un tipo de variable que permite almacenar varios datos distintos en una sola variable. Esta parte la he llamado PHP, sin formularios porque las páginas no contienen formularios, por lo que el usuario no puede proporcionar información a los programas. Para que cada vez que se ejecuten los programas los resultados sean distintos, recurriremos a números aleatorios.
El 3 de octubre se publicó una nueva versión de Eclipse PHP, Eclipse PHP Oxygen.1. En la lección Instalación de Eclipse PHP tenéis el enlace de descarga de la versión para Windows de 64 bits.
Para instalarla, decomprimid el archivo .zip en la carpeta C:\software, llamad eclipse-php-oxygen-1 a la carpeta y cread un acceso directo al ejecutable eclipse.exe. Al iniciar Eclipse, debéis elegir el workspace que creasteis para la versión anterior, en C:\software\workspace-nombre-php-oxygen.
Una vez hayáis comprobado que la nueva versión funciona correctamente, podéis borrar la carpeta c:\software\eclipse-php-oxygen de la versión anterior, o conservarla por si acaso.
No es imprescindible instalar la nueva versión, pero como en cada versión se corrigen fallos y la actualización es muy sencilla, creo que vale la pena actualizarse.
Tradicionalmente los colores en las páginas web se han definido mediante nombres de colores o códigos RGB, pero CSS3 permite usar códigos HSL que son más intuitivos que los códigos RGB. En esta lección se explica cómo se expresan los colores mediante códigos HSL.
Estos ejercicios son opcionales.
En estos ejercicios se necesita escribir fórmulas para generar series de números que permiten crear dibujos. Mirando el código fuente de los programas de ejemplo se pueden ver los números, pero las fórmulas se os tienen que ocurrir a vosotros. En realidad, es más fácil de lo que parece, porque las series de números forman sucesiones aritméticas por lo que las fórmulas son (casi) siempre del tipo a * x + b, donde a y b son números enteros.
Son ejercicios que podéis repetir las veces que queráis. El primero es trivial, pero el segundo exige bastante cálculo mental (aunque podéis empezar haciéndolo con papel y lápiz y calculadora), sobre todo si se elige el mayor nivel de dificultad.
Las matrices son un tipo de variable muy flexible que utilizaremos mucho a partir de ahora. En los ejercicios de esta semana, los índices de las matrices son numéricos y correlativos. En las próximas semanas trabajaremos con matrices asociativas, es decir, de índices no numéricos o no correlativos.
Esta semana y la próxima vamos a ver el uso de formularios en PHP. Lo haremos en dos pasos:
En esta parte se trata de aprender a utilizar formularios y a recoger los datos introducidos en ellos, pero no haremos ninguna comprobación sobre los datos recogidos.
En esta parte veremos cómo comprobar los datos recibidos y cómo mostrar mensajes al usuario en caso de que no sean correctos.
Esta semana vamos a hacer programas sin comprobación posterior y la semana que viene ya haremos la comprobación de los datos. Los ejercicios son fáciles, pero esta semana hay mucho que leer.
El mecanismo de HTML para recoger información del usuario son los formularios, que nos permitirán crear páginas web interactivas.
Esta lección forma parte de los apuntes de HTML y trata los aspectos de los formularios relacionados con la presentación del formulario. Faltan por contar algunos tipos de controles y algunos atributos, pero no son demasiado importantes.
Esta lección trata los aspectos de los formularios relacionados con el tratamiento de los datos. Faltan por contar los tipos de controles nuevos en HTML 5, pero su tratamiento no difiere de los controles de HTML 4.
Esta lección es bastante densa porque aborda los problemas y riesgos de los programas que recogen datos. El problema consiste básicamente en que no podemos saber a priori qué datos van a llegar al programa y probablemente llegarán datos con mala intención. La solución es que los programa no trabajen directamente con $_REQUEST, sino con variables que contengan los datos recibidos una vez "limpiados" y comprobados. Para ello, usaremos una función recoge().
En resumen, todo lo que se cuenta en esta lección es para justificar el uso de la función recoge() que se encuentra al final del tema. Al final de la lección hay otras funciones recoge(). Para los primeros ejercicios, utilizaremos la primera función recoge().
En esta lección se explica cómo realizar los ejercicios con formularios. El ejemplo del apartado recogida de datos sin comprobación os puede servir de guía para la página de ejercicios de esta semana.
En esta lección se comentan varias familias de funciones de comprobación de datos, pero de todas las funciones que se comentan en esta página, las que vamos a utilizar principalmente son is_numeric() y ctype_digit() y en algún caso filter_var().
En los ejercicios de esta semana ya hace falta incluir el tratamiento de errores de los datos recogidos del formulario. En esta lección se explica un modelo de resolución de ejercicio, con las diferentes partes de la página (recogida de datos, tratamiento de errores, generación del resultado). Es muy importante entender la estructura propuesta porque se utilizará en todos los ejercicios posteriores.
En el último ejercicio aparecen muchos controles, si habéis hecho el resto, no es necesario hacerlo.
Estos ejercicios, salvo el último, son una selección de ejercicios de las páginas que se ofrecen como material extra.
En cursos anteriores no dábamos ejercicios sin formularios y trabajamos más ejercicios con formularios. Algunas páginas de ejercicios los podéis hacer como ejercicios de ampliación:
Otras páginas de ejercicios los podéis hacer también como ejercicios de ampliación, pero son más difíciles (o distintos a lo que estamos viendo este año):
Podéis hacer tantos como queráis. Normalmente los primeros de cada página son más fáciles y se van complicando.
En la página de soluciones podéis consultar soluciones de los ejercicios.
Esta lección es un resumen brevísimo, ya que no necesitamos profundizar en este tema. En el módulo de Servicios de red veréis el tema con más detalle.
En esta lección se comenta las dos cabeceras que vamos a utilizar: Location para redireccionar páginas y Content-type para definir tipos MIME.
Los ejercicios del primer apartado (redirecciones) nos permiten mejorar los formularios. Cuando la página a la que el formulario envía los datos detecta un error, se redirige automáticamente a la primera, para que se vuelva a mostrar el formulario con los errores detectados. Cada ejercicio se basa en el anterior. Para hacerlos se recomienda ir paso a paso:
Las sesiones nos permiten compartir variables entre diferentes páginas web, lo que permite crear verdaderas aplicaciones web.
La parte de teoría es bastante sencilla, pero las aplicaciones son infinitas. Para hacer los ejercicios, os recomiendo que vayáis escribiendo el programa siguiendo el orden de utilización de la aplicación. En las soluciones de Sesiones (1) he indicado precisamente ese orden, para que os resulte más fácil entenderlas. Que no os importe mirar las soluciones al hacer los dos o tres primeros ejercicios.
Son ejercicios similares a los ejercicios Sesiones (1) de la semana pasada. El resto de ejercicios de esta página requiere el uso del bucle foreach.
Esta página contiene una serie de ejercicios encadenados. En cada ejercicio se van añadiendo más elementos hasta obtener finalmente una máquina tragaperras completa. En las plantilla sólo he incluido los dos primeros ejercicios, porque lo mejor a partir del segundo ejercicio es hacer cada ejercicio a partir del anterior
para estos ejercicios os he proporcionado tres tipos de ayuda: en la página del enunciado hay una desplegable con los puntos que debe contemplar vuestro programa, en la página de ayuda se muestran trocitos de código correspondientes a los puntos mencionados en la página del enunciado, y en la página de soluciones están las soluciones completas.
Esta semana está dedicada a la realización de los exámenes parciales.
En la página de exámenes he añadido un enlace a una página con comentarios sobre la realización del examen.
En la página de exámenes de los apuntes tenéis los ejercicios de examen de años anteriores que podéis realizar como ejercicios de repaso. Pero tened en cuenta que:
Esta semana y la que viene están dedicadas a terminar de ver temas de PHP que no entrarán para examen, pero que son importantes.
Los bucles foreach permiten recorrer estructuras (matrices, recursos, etc) sin preocuparse por el número de elementos, lo que los hace muy útiles cuando se deben recorrer estructuras no generadas por el propio programa, como información proveniente de formularios o consultas a bases de datos.
Estos ejercicios son difíciles, así que no os desaniméis con ellos. En ellos hay varios detalles nuevos. Quizás sería conveniente que os descargarais las soluciones y viérais cómo está hecho el primer ejercicio fijándoos en los detalles que se comentan a continuación, para luego hacer el resto de ejercicios.
El ejercicio 3 es el más complicado al haber formularios y redirecciones.
Esta semana y la anterior están dedicadas a terminar de ver temas de PHP que no entrarán para examen, pero que son importantes.
El último ejercicio (Bases de datos (2) 3) es una aplicación más o menos completa que nos servirá de "puente" a la segunda parte del curso. La semana que viene empezaremos a trabajar con aplicaciones web y usaremos esta aplicación, por lo que es necesario que entendais cómo funciona y qué papel juega en ella cada fichero.
Esta lección es una presentación general a la forma de trabajar con bases de datos en PHP.
Esta lección es una introducción a la biblioteca PDO que permite trabajar con diferentes bases de datos. Los ejemplos de código corresponden a los ejercicios y están pensados para poder trabajar tanto con MySQL como con SQLite.
Esta lección pretende ser una recopilación de detalles a tener en cuenta al preparar una aplicación que pueda utilizar tanto MySQL como SQLite, pero está muy incompleta.
No he actualizado a HTML 5 la aplicación de ejemplo de Inyecciones SQL.
Estos ejercicios son una serie de ejercicios encadenados para terminar obteniendo una aplicación que gestione una pequeña agenda. Cada ejercicio se hace a partir del anterior. Podéis consultar las soluciones.
Estos ejercicios completan la aplicación anterior.
Nota: Estos son ejercicios son largos, por lo que si no tenéis tiempo de hacerlos, al menos sí que quiero que miréis las soluciones y entendais cómo están estructurados y cómo funcionan los programas.