Lecciones impartidas en clase (curso 2016/17)

Introducción

Esta lección contiene un índice de las lecciones que he impartido en clase durante el curso 2016/17, así como los ejercicios que han realizado los alumnos.

Para elaborar este índice he utilizado como base las guías de estudio que ofrezco a mis alumnos de la modalidad semipresencial en la plataforma Moodle de la Conselleria de Educación. El trabajo propuesto a estos alumnos es el mismo que han seguido en clase mis alumnos de la modalidad presencial, aunque la distribución temporal no haya sido la misma.

La información se ofrece distribuida en semanas, ya que es así como está organizada la modalidad semipresencial.

Semana S01: del 12/09/16 al 18/09/16

Presentación

  1. Leed la lección Presentación de los apuntes

¿Qué es PHP?

  1. Leed la lección Lenguajes de programación
  2. Leed la lección Qué es PHP

Instalación de XAMPP

  1. Leed la lección Qué es XAMPP -
  2. Leed la lección Instalación de XAMPP en Windows
  3. Instalad XAMPP 7.0.9.

    Nota: Una vez instalado XAMPP, haced una copia de seguridad de la carpeta /xampp/apache/conf/ y del archivo php.ini por si necesitáis recuperarlos.

Configuración de Apache y PHP

  1. Leed la lección Configuración de Apache y PHP

    En esta lección se tratan dos puntos muy importantes:

    1. los Alias de Apache, que utilizaremos durante todo el curso.
    2. las opciones de configuración de PHP, que modificarse como se indica en la lección para que el comportamiento sea el mismo en los ordenadores de todos los alumnos.
  2. Configurad php.ini de acuerdo con la lección Configuración de Apache y PHP 1.
  3. Para familizarizaros con la creación de Alias en Apache, haced los ejercicios Apache 1 y 2.
  4. En la página de soluciones podéis consultar soluciones de los ejercicios.

Instalación y configuración de Eclipse PDT

  1. Leed la lección Instalación de Eclipse
  2. Instalad Eclipse PDT Neon (64 bits).

    Como la versión que vamos a utilizar es la de 64 bits, es necesario tener instalado el Java Runtime 8 para 64 bits. Si tenéis Windows de 32 bits, podéis instalar las versiones de 32 bits.

  3. Leed la lección Configuración de Eclipse 1

    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.

  4. Leed la lección Configuración de Eclipse 2

    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.

  5. Para familiarizaros con la creación de proyectos y carpetas enlazadas en Eclipse y la creación de alias en Apache, haced los ejercicios Apache y Eclipse 3, 4 y 5.
  6. Para configurar Apache y Eclipse tal y como se utilizará durante el curso, haced el ejercicio Apache y Eclipse 6.
  7. Configurad Eclipse de acuerdo con la lección Configuración de Eclipse 2.
  8. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S02: del 19/09/16 al 25/09/16

Cómo hacer los ejercicios (1)

  1. Leed la lección Cómo realizar los ejercicios
  2. Leed la lección Ejemplos de resolución de ejercicios - Sin formularios
  3. Leed la lección Uso de Eclipse

Primeras páginas en PHP

  1. Leed la lección Primeras páginas en PHP
  2. Leed la lección Cadenas 1
  3. Leed la lección Guía de estilo.

    El estilo que se recomienda en esta lección es el que tenéis que utilizar en vuestros programas.

  4. Haced los ejercicios 1 a 3 de Primeras páginas.

    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.

  5. En la página de soluciones podéis consultar soluciones de los ejercicios.

Variables

  1. Leed la lección Variables 1

    Esta semana no se realizan ejercicios con variables, pero quiero que leáis esa primera lección.

  2. Haced los ejercicios 4 a 7 de Primeras páginas.

    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.

  3. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S03: del 26/09/16 al 02/10/16

Nota previa

En cursos anteriores, después de los ejercicios de Primeras páginas hemos empezado viendo los formularios, que son el mecanismo de las páginas web para solicitar información al usuario. El problema es que los formularios no son fáciles de procesar en PHP y a los alumnos les costaba entenderlos. Este año voy a retrasar los formularios, a ver si así os resultan más fáciles.

Este año lo que vamos a hacer es empezar haciendo un pequeño repaso general a 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. A continuación, veremos los formularios y las sesiones, lo que nos permitirá recoger información del usuario y crear pequeñas aplicaciones web (no páginas sueltas, sino páginas integradas en una tarea común).

Variables y operaciones

  1. Leed la lección Variables.
  2. Leed los apartados de la lección Tipos de variables: enteras y decimales.
  3. Leed la lección Operaciones aritméticas.
  4. Haced los ejercicios Variables 1.
    1. En estos ejercicios se necesita la función rand() que genera números aleatorios y que se comenta en el apartado Números aleatorios de la lección Operaciones aritméticas .
    2. Los valores aleatorios se utilizan en varios lugares de la página web, por lo que se deben guardar en una variable y después utilizar la variable el número de veces necesario. En algunos ejercicios también es necesario hacer cálculos adicionales con esas variables.
    3. Los dados son imágenes SVG que os podéis descargar descargando las plantillas de los ejercicios. El resto de imágenes SVG están incluidas en la propia página web. Podéis mirar el código fuente de los ejercicios de ejemplo. En realidad los programas sólo tienen que generar algunos valores numéricos del código SVG.
  5. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S04: del 03/10/16 al 09/10/16

Nueva versión de Eclipse

El 28 de septiembre se publicó una nueva versión de Eclipse PDT, Eclipse PDT Neon .1. En la lección Instalación de Eclipse PDT 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-pdt-neon-1 a la carpeta y cread un acceso dircto 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.

Una vez hayáis comprobado que la nueva versión funciona correctamente, podéis borrar la carpeta c:\software\eclipse-pdt-neon 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.

Estructuras de control (if ... elseif ... else ...)

  1. Leed el apartado Variables lógicas de la lección Tipos de variables (solamente el apartado Variables lógicas).
  2. Leed la lección Operaciones lógicas.
  3. Leed el apartado if ... elseif ... else ... de la lección Estructuras de control (solamente el apartado if ... elseif ... else ...).
  4. Leed el apartado colores HSL de la lección Colores de los apuntes de HTML/CSS.

    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.

  5. Haced los ejercicios if ... else ... (1).
  6. En la página de soluciones podéis consultar soluciones de los ejercicios.

Estructuras de control (bucle for)

  1. Leed la lección Bucle for.

    No hace falta leer el apartado de bucles anidados, porque en los ejercicios no se necesitan bucles anidados.

  2. Haced los ejercicios: 1 al 5 de Bucle for
  3. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S05: del 10/10/16 al 16/10/16

Estructuras de control (bucle for)

En los ejercicios de esta semana, 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.

Para practicar la deducción de fórmulas os he preparado una lección y unos ejercicios. Estas dos páginas no forman parte de los apuntes de PHP, las he puesto en un apartado de mclibre que se llama Temas de informática.

  1. Leed la lección Sucesiones aritméticas
  2. Haced los ejercicios Sucesiones aritméticas

    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.

  3. Haced los ejercicios 11 al 19 y 21 y 22 de Bucle for. El más difícil es el ejercicio 13, porque en las fórmulas aparecen dos variables. Lo podéis dejar para el final.
  4. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S06: del 17/10/16 al 23/10/16

Matrices

  1. Leed la lección Matrices.

    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 de índices no numéricos o no correlativos.

  2. Haced los ejercicios Matrices. Las soluciones están escritas con la notación clásica, pero podéis utilizar también la notación compacta.
  3. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S07: del 24/10/16 al 30/10/16

Nota previa

Esta semana y la próxima vamos a ver el uso de formularios en PHP. Lo haremos en dos pasos:

  1. Recogida de datos sin comprobación posterior

    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.

  2. Recogida de datos con comprobación posterior

    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.

Formularios (1)

El mecanismo de HTML para recoger información del usuario son los formularios, que nos permitirán crear páginas web interactivas.

  1. Leed la lección Formularios (apuntes HTML/CSS).

    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.

  2. Leed la lección Controles en formularios.

    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.

  3. Leed la lección Recogida de datos.

    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(). Al final de la lección se encuentran varias funciones recoge(). Para los primeros ejercicios, gastaremos la primera función recoge().

  4. Leed la lección Ejemplo de ejercicio.

    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.

  5. Haced los ejercicios Controles en formularios (1).
  6. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S08: del 31/10/16 al 06/11/16

Formularios (2)

  1. Leed la lección Comprobación de datos

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

  2. Leed la lección Ejemplo de resolución de ejercicio (con comprobación de datos)

    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.

  3. Haced los ejercicios Controles en formularios (2).

    Haced al menos los cuatro primeros ejercicios, que contienen los tipos de controles más habituales. El resto son similares y también los podéis hacer.

Repaso

Una vez vistos los formularios, en los apuntes hay bastantes ejercicios de cursos anteriores que podéis hacer:

  1. Ejercicios Operaciones aritméticas
  2. Ejercicios if else
  3. Ejercicios for 1
  4. Ejercicios for 2
  5. Ejercicios for 3
  6. Ejercicios for 4
  7. Ejercicios for 5
  8. Ejercicios Matrices 1

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.

Semana S09: del 07/11/16 al 13/11/16

Cabeceras

  1. Leed la lección El protocolo HTTP

    Esta lección es un resumen brevísimo, ya que no necesitamos profundizar en este tema. En el módulo de redes daréis bastante más.

  2. Leed la lección La función header()

    En esta lección se comenta las dos cabeceras que vamos a utilizar: redireccionar páginas y definir tipos MIME.

  3. >Haced los ejerciciosCabeceras.

    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:

    1. primero se hace la primera página, generando el formulario, sin preocuparse todavía por los avisos
    2. después se hace la segunda página, para validar el formulario, de manera similar a los ejercicios de la semana pasada, pero cuando se encuentran errores, en vez de mostrar un aviso, se redirige a la primera página enviando la información necesaria
    3. por último, se completa la primera página de manera que recoja los datos que le puede enviar la segunda página y se incluyen en el formulario
  4. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S10: del 14/11/16 al 20/11/16

Sesiones

  1. Leed la lección Sesiones

    Las sesiones nos permiten compartir variables entre diferentes páginas web, lo que permite crear verdaderas aplicaciones web.

  2. Haced los ejercicios Sesiones (1).

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

  3. Haced los ejercicios Sesiones (2).

    No he terminado de pasar estos ejercicios al estilo de este año.

  4. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana SE1: del 21/11/16 al 27/11/16

Examen

En la página de exámenes de los apuntes tenéis los ejercicios de examen de años anteriores que también podéis realizar como ejercicios de repaso. pero tened en cuenta que:

  1. Algunos ejercicios de examen de años anteriores están ya incorporados como ejercicios de clase de este año.
  2. En los exámenes anteriores a 2013/14 no hay plantillas disponibles. En los de los cursos 2014/15 hay plantillas, pero ese año las páginas todavía estaban en XHTML 1.0. En los de los cursos 2015/16 hay plantillas y ya usaba HTML 5, pero todos los ejercicios usaban formularios y todavía dejaba las páginas sin PHP como páginas .html.
  3. Como no he dado lo mismo todos los años, algunos ejercicios de examen pueden ser más difíciles que lo que hemos dado este año.

En la página de exámenes he añadido un enlace a una página con comentarios sobre la realización del examen.

Semana S11: del 28/11/16 al 04/12/16

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. Intentad al menos hacer los ejercicios Menús.

Bucle foreach

  1. Leed las lecciones Resumen bucle foreach y Bucle foreach

    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.

  2. [optativo] Haced los ejercicios foreach(1).

    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.

    1. los programas están formados por tres páginas, la primera es un formulario html, la segunda un programa PHP que incluye un formulario, la tercera un programa PHP.
    2. en la segunda página los nombres de los controles son elementos de una matriz que se generan con un bucle for.
    3. la segunda página contiene un control oculto que envía el dato inicial (el tamaño de la matriz).
    4. en la tercera página, la matriz de controles se tiene que recoger con la función recogeMatriz() de la lección de Recogida de datos.
    5. la matriz recogida se procesa con bucles foreach, por ejemplo, para mostrar los controles recibidos.
    6. en la tercera página hay un enlace a la segunda página que envía el dato inicial.
    7. por simplificar los ejercicios, podéis no hacer la comprobación de los datos.
  3. En la página de soluciones podéis consultar soluciones de los ejercicios.

Constantes

  1. Leed la lección Constantes

Funciones y blibliotecas

  1. Leed la lección Funciones y bibliotecas
  2. Haced los ejercicios Menús

    El ejercicio 3 es el más complicado al haber formularios y redirecciones.

  3. En la página de soluciones podéis consultar soluciones de los ejercicios.

Semana S12: del 05/12/16 al 11/12/16

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.

Bases de datos

  1. Leed la lección Bases de datos en PHP

    Esta lección es una presentación general a la forma de trabajar con bases de datos en PHP.

  2. Leed la lección Biblioteca PDO

    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.

  3. [optativo] Leed la lección Diferencias MySQL/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.

  4. [optativo] Leed la lección Inyecciones SQL

    No he actualizado a HTML 5 la aplicación de ejemplo de Inyecciones SQL.

  5. Haced los ejercicios Bases de datos (1)

    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.

  6. Haced los ejercicios Bases de datos (2)

    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.

  7. En la página de soluciones podéis consultar soluciones de los ejercicios.