SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
Introducción al desarrollo web con PHP 5
Ejercicios
Universidad de Córdoba
martes, 2 de noviembre de 2010
Índice de contenidos
Introducción........................................................................................................................................ 3
Relación de ejercicios......................................................................................................................... 4
Ejercicio 01.......................................................................................................................................4
Ejercicio 02...................................................................................................................................... 4
Ejercicio 03...................................................................................................................................... 4
Ejercicio 04...................................................................................................................................... 5
Desarrollo de un blog......................................................................................................................... 7
Datos necesarios.............................................................................................................................7
Script de creación de la base de datos..........................................................................................8
Requisitos del sistema.................................................................................................................. 10
Listado de artículos...................................................................................................................10
Detalle de un artículo................................................................................................................ 10
Nuevo artículo............................................................................................................................11
Editar artículo............................................................................................................................12
Gadget de autenticación........................................................................................................... 13
Gadget de publicaciones anteriores..........................................................................................13
Av. Tenor Pedro la Virgen s/n (CADE)
Córdoba (España)
tlf. 957 40 61 40
Introducción
En este documento, el alumno encontrará la relación de ejercicios que ha de codifcar para
obtener una mejor puntuación a la fnalización del curso.
Adicionalmente, también se especifca el enunciado y material necesario para el desarrollo
del trabajo optativo, “Desarrollo de un blog”.
El material elaborado habrá que entregarlo en un documento con
formato PDF a la dirección de correo cristina.quintana@fai.es antes
del domingo 28 de noviembre de 2010.
Como se especifca en el programa, las dos últimas clases presenciales del curso se
dedicarán a las dudas surgidas en la resolución de los ejercicios detallados en este
documento.
http://www.fai.es Página 3 de 14
Av. Tenor Pedro la Virgen s/n (CADE)
Córdoba (España)
tlf. 957 40 61 40
Relación de ejercicios
A continuación, se detallan los enunciados de los ejercicios a desarrollar.
Ejercicio 01
Dado un número en formato numérico comprendido entre 1 y 99, imprimirlo en
formato texto.
Construir un formulario para la recepción de datos e implementar la validación de los
mismos.
Ejercicio 02
Dado un día, mes y año, imprimir el día de la semana al que pertenece.
El mes se introducirá en formato texto.
Construir un formulario para la recepción de datos e implementar la validación de los
mismos.
Ejercicio 03
Construir una clase que contenga la lógica necesaria para dibujar un calendario con el
que se muestra en la siguiente imagen.
El código a utilizar para renderizar el calendario es:
<?php
// Dibuja el calendario del mes actual
$calendar01 = new MyCalendar();
$calendar01->render();
// Dibuja el calendario del mes de agosto
$calendar02 = new MyCalendar( "agosto", 2010 );
$calendar02->render();
http://www.fai.es Página 4 de 14
Av. Tenor Pedro la Virgen s/n (CADE)
Córdoba (España)
tlf. 957 40 61 40
Ejercicio 04
Construir una aplicación con dos pantallas:
1. Listado de asignaturas
Cada asignatura será un enlace al listado de alumnos matriculados en ésta.
2. Listado de alumnos de una asignaturas
Mostrar el nombre de la asignatura y los datos de sus alumnos matriculados.
Los datos necesarios para la conexión a la base de datos son:
Host server.fai.es
Base de datos curso_php
Usuario curso
Contraseña curso_2010
Si se desea utilizar la base de datos en entorno local, el script para la creación es el
siguiente:
--
-- Base de datos: `curso_php`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `alumno`
--
DROP TABLE IF EXISTS `alumno`;
CREATE TABLE IF NOT EXISTS `alumno` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`nombre` varchar(255) NOT NULL,
`apellidos` varchar(255) NOT NULL,
`email` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=81 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `alumno_asignatura`
--
DROP TABLE IF EXISTS `alumno_asignatura`;
http://www.fai.es Página 5 de 14
Av. Tenor Pedro la Virgen s/n (CADE)
Córdoba (España)
tlf. 957 40 61 40
CREATE TABLE IF NOT EXISTS `alumno_asignatura` (
`alumno_id` bigint(20) NOT NULL DEFAULT '0',
`asignatura_id` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`alumno_id`,`asignatura_id`),
KEY `alumno_asignatura_asignatura_id_asignatura_id` (`asignatura_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `asignatura`
--
DROP TABLE IF EXISTS `asignatura`;
CREATE TABLE IF NOT EXISTS `asignatura` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`nombre` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Filtros para la tabla `alumno_asignatura`
--
ALTER TABLE `alumno_asignatura`
ADD CONSTRAINT `alumno_asignatura_alumno_id_alumno_id` FOREIGN KEY
(`alumno_id`) REFERENCES `alumno` (`id`),
ADD CONSTRAINT `alumno_asignatura_asignatura_id_asignatura_id` FOREIGN
KEY (`asignatura_id`) REFERENCES `asignatura` (`id`);
http://www.fai.es Página 6 de 14
Av. Tenor Pedro la Virgen s/n (CADE)
Córdoba (España)
tlf. 957 40 61 40
Desarrollo de un blog
A continuación, se detallan los datos necesarios para el desarrollo del blog y las
características que ha de cumplir en su ejecución.
Datos necesarios
Los datos necesarios para la conexión a la base de datos son:
Host server.fai.es
Base de datos curso_php_blog
Usuario curso
Contraseña curso_2010
La base de datos consta de la siguiente estructura:
• Tabla user
Contenido de los datos del usuario con privilegios.
Columnas de la tabla:
▪ name
Nombre del usuario.
▪ last_name
Apellidos del usuario.
▪ username
Nombre con el que el usuario accede a la aplicación.
Este dato es único para cada usuario.
▪ password
Clave con la que el usuario accede a la aplicación.
• Tabla article
Contenido de los artículos introducidos por usuarios privilegiados.
Columnas de la tabla:
▪ created_at
Fecha de registro de la publicación.
▪ title
http://www.fai.es Página 7 de 14
Av. Tenor Pedro la Virgen s/n (CADE)
Córdoba (España)
tlf. 957 40 61 40
Título de la publicación.
▪ value
Contenido de la publicación.
▪ user_id
Identifcador del usuario que ha publicado el nuevo contenido.
• Tabla comment
Contenido de los comentarios introducidos tanto por usuarios privilegiados
como por usuarios anónimos.
Columnas de la tabla:
▪ created_at
Fecha de registro de la publicación.
▪ value
Contenido de la publicación.
▪ article_id
Identifcador del artículo al que hace referencia.
Script de creación de la base de datos
Se adjunta el script de creación de la base de datos a utilizar en este ejercicio, para
aquellos que deseen realizar el ejercicio en su ordenador personal.
--
-- Base de datos: `curso_php_blog`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `article`
--
DROP TABLE IF EXISTS `article`;
CREATE TABLE IF NOT EXISTS `article` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`value` varchar(255) NOT NULL,
`created_at` date NOT NULL,
`user_id` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id_idx` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
http://www.fai.es Página 8 de 14
Av. Tenor Pedro la Virgen s/n (CADE)
Córdoba (España)
tlf. 957 40 61 40
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `comment`
--
DROP TABLE IF EXISTS `comment`;
CREATE TABLE IF NOT EXISTS `comment` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`value` varchar(255) NOT NULL,
`created_at` date NOT NULL,
`article_id` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `article_id_idx` (`article_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `user`
--
DROP TABLE IF EXISTS `user`;
CREATE TABLE IF NOT EXISTS `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`last_name` varchar(100) NOT NULL,
`username` varchar(30) NOT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Filtros para la tabla `article`
--
ALTER TABLE `article`
ADD CONSTRAINT `article_user_id_user_id` FOREIGN KEY (`user_id`) REFERENCES
`user` (`id`);
--
-- Filtros para la tabla `comment`
--
ALTER TABLE `comment`
ADD CONSTRAINT `comment_article_id_article_id` FOREIGN KEY (`article_id`)
REFERENCES `article` (`id`);
http://www.fai.es Página 9 de 14
Av. Tenor Pedro la Virgen s/n (CADE)
Córdoba (España)
tlf. 957 40 61 40
Requisitos del sistema
El problema a resolver se compone de cuatro pantallas, dos públicas y otras dos
protegidas por autenticación de usuario.
Listado de artículos
Esta pantalla es de acceso público para todos los usuarios de la red, y muestra
el listado de artículos almacenados en el sistema en orden descendente de la
fecha de creación.
De cada artículo se muestra el título, seguido de la fecha de creación.
Este título será un enlace a la pantalla de detalle de dicho artículo.
Además de ésto, esta pantalla posee una columna a la derecha dónde se
muestran los gadget de autenticación y publicaciones anteriores, los cuáles se
explican más adelante en este documento.
Detalle de un artículo
Esta pantalla es de acceso público para todos los usuarios de la red, y muestra
la información del artículo que se ha seleccionado en la pantalla de listado, a
través de la cuál se ha accedido.
Se detalla el título, descripción y fecha de creación del artículo.
Acompañando a estos datos, se debe implementar un formulario para añadir
comentarios asociados a dicho artículo.
Además de lo anterior, se ha de visualizar el listado de comentarios que
usuarios de la aplicación han añadido a través del formulario anterior. Estos
comentarios se han de mostrar en orden descendente según la fecha en la
que han sido introducidos.
Replicando la funcionalidad de la pantalla de listado, también posee una
http://www.fai.es Página 10 de 14
Av. Tenor Pedro la Virgen s/n (CADE)
Córdoba (España)
tlf. 957 40 61 40
columna a la derecha dónde se muestran los gadget de autenticación y
publicaciones anteriores, los cuáles se explican más adelante en este
documento.
Nuevo artículo
Esta pantalla es de acceso restringido, sólo se podrá acceder a esta pantalla
tras autenticarse mediante el gadget de la columna de la derecha de las
pantallas de listado y detalle de artículos.
Esta pantalla muestra un formulario de creación dónde aparecerán los
campos título y artículo o descripción. Al guardar este formulario se tomará la
fecha actual para el campo create_at de la base de datos.
Debajo de este formulario, han de aparecer el listado de artículos publicados
por el usuario autenticado en orden descendente por fecha de creación.
Cada uno de estos artículos de ese listado ha de mostrar el título del artículo
http://www.fai.es Página 11 de 14
Av. Tenor Pedro la Virgen s/n (CADE)
Córdoba (España)
tlf. 957 40 61 40
seguido de la fecha de creación.
El título ha de ser un enlace que redirija a la pantalla de edición de dicho
artículo, la cuál se describe a continuación.
Editar artículo
Esta pantalla es de acceso restringido, es decir, sólo se puede acceder a esta
pantalla, estando autenticado en el sistema.
La pantalla es idéntica a la pantalla del formulario de nuevo artículo, salvo
porque el formulario aparece completado con los datos del artículo que se
está editando.
http://www.fai.es Página 12 de 14
Av. Tenor Pedro la Virgen s/n (CADE)
Córdoba (España)
tlf. 957 40 61 40
Gadget de autenticación
Situado en las parte o columna de la derecha de las pantallas de listado de
artículos y detalle de la parte pública del blog, hay que defnir una zona dónde
los usuarios con privilegios puedan acceder al área privada.
Esta zona vendrá defnida por dos cajas de texto en las que especifcar el
nombre de usuario y la contraseña.
Al pulsar el botón registrar, se han de comprobar los datos y en caso de ser
correctos redirigir al formulario de nuevo artículo.
Gadget de publicaciones anteriores
En la columna de la derecha de las pantallas de listado de artículos y detalle
de la parte pública, hay que defnir otra zona para las publicaciones
anteriores.
http://www.fai.es Página 13 de 14
Av. Tenor Pedro la Virgen s/n (CADE)
Córdoba (España)
tlf. 957 40 61 40
Se ha de mostrar una lista los meses anteriores al actual y junto a estos el
número de artículos que se han publicado en dichas fechas.
http://www.fai.es Página 14 de 14

Más contenido relacionado

La actualidad más candente

PHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHPPHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHPRightster
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosRightster
 
Guía Practica conexión BD 2021
Guía Practica conexión BD  2021Guía Practica conexión BD  2021
Guía Practica conexión BD 2021lissette_torrealba
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebRightster
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyJuan Eladio Sánchez Rosas
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfonysymfony_bcn
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
Toturial aplicacion base de datos jsp
Toturial aplicacion base de datos jspToturial aplicacion base de datos jsp
Toturial aplicacion base de datos jspGabriela Vazquez
 
Masterclass PHP 5.3
Masterclass PHP 5.3Masterclass PHP 5.3
Masterclass PHP 5.3ADWE Team
 
Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012Gustavo Inocente Chacón
 
PHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios WebPHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios WebRightster
 
Actividad No. 1.7: Creación de usuarios en MySQL
Actividad No. 1.7: Creación de usuarios en MySQLActividad No. 1.7: Creación de usuarios en MySQL
Actividad No. 1.7: Creación de usuarios en MySQLFrancisco Medina
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasosSoni BM
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 

La actualidad más candente (18)

CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
PHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHPPHP Avanzado: Características avanzadas de PHP
PHP Avanzado: Características avanzadas de PHP
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a Objetos
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Guía Practica conexión BD 2021
Guía Practica conexión BD  2021Guía Practica conexión BD  2021
Guía Practica conexión BD 2021
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad Web
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfony
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfony
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Toturial aplicacion base de datos jsp
Toturial aplicacion base de datos jspToturial aplicacion base de datos jsp
Toturial aplicacion base de datos jsp
 
Masterclass PHP 5.3
Masterclass PHP 5.3Masterclass PHP 5.3
Masterclass PHP 5.3
 
Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012
 
PHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios WebPHP Avanzado: PHP, XML y Servicios Web
PHP Avanzado: PHP, XML y Servicios Web
 
Actividad No. 1.7: Creación de usuarios en MySQL
Actividad No. 1.7: Creación de usuarios en MySQLActividad No. 1.7: Creación de usuarios en MySQL
Actividad No. 1.7: Creación de usuarios en MySQL
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 

Destacado

Manual de php con ejercicios
Manual de php con ejerciciosManual de php con ejercicios
Manual de php con ejercicioswilliam kozisck
 
Iniciación PHP 5. Ejemplos
Iniciación PHP 5. EjemplosIniciación PHP 5. Ejemplos
Iniciación PHP 5. EjemplosRightster
 
Cuaderno de-ejercicios-y-practicas-php
Cuaderno de-ejercicios-y-practicas-phpCuaderno de-ejercicios-y-practicas-php
Cuaderno de-ejercicios-y-practicas-phplgcj1989
 
Ejercicios esctructuras repeticion 2012 1
Ejercicios esctructuras repeticion 2012 1Ejercicios esctructuras repeticion 2012 1
Ejercicios esctructuras repeticion 2012 1elitatks
 
Ejercicios PHP
Ejercicios PHPEjercicios PHP
Ejercicios PHPramos866
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacionJaime amambal
 
Beyond Virtualisation
Beyond VirtualisationBeyond Virtualisation
Beyond VirtualisationRightster
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigoepetekaun
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVIrontec
 
Buenas Prácticas de Programación en PHP
Buenas Prácticas de Programación en PHPBuenas Prácticas de Programación en PHP
Buenas Prácticas de Programación en PHPJesus Castagnetto
 
Sesion Nº 04 Introducción A Php Operadores E Instrucciones
Sesion Nº 04   Introducción A Php   Operadores E InstruccionesSesion Nº 04   Introducción A Php   Operadores E Instrucciones
Sesion Nº 04 Introducción A Php Operadores E InstruccionesEdgar A. Cruz Huaman
 
Lenguaje de programacion php
Lenguaje de programacion   phpLenguaje de programacion   php
Lenguaje de programacion phpzousbabastre
 
Curso php - capitulo 2
Curso php - capitulo 2Curso php - capitulo 2
Curso php - capitulo 2yanburbano
 
Taller mysql console_2
Taller mysql console_2Taller mysql console_2
Taller mysql console_2jonathan02591
 
Proyecto, PHP y MySQL
Proyecto, PHP y MySQLProyecto, PHP y MySQL
Proyecto, PHP y MySQLyanburbano
 

Destacado (20)

ejercicios php rfo
ejercicios php rfoejercicios php rfo
ejercicios php rfo
 
Manual de php con ejercicios
Manual de php con ejerciciosManual de php con ejercicios
Manual de php con ejercicios
 
Ejercicios preliminares en php
Ejercicios preliminares en phpEjercicios preliminares en php
Ejercicios preliminares en php
 
Curso php y_my_sql
Curso php y_my_sqlCurso php y_my_sql
Curso php y_my_sql
 
Iniciación PHP 5. Ejemplos
Iniciación PHP 5. EjemplosIniciación PHP 5. Ejemplos
Iniciación PHP 5. Ejemplos
 
Cuaderno de-ejercicios-y-practicas-php
Cuaderno de-ejercicios-y-practicas-phpCuaderno de-ejercicios-y-practicas-php
Cuaderno de-ejercicios-y-practicas-php
 
Ejercicios esctructuras repeticion 2012 1
Ejercicios esctructuras repeticion 2012 1Ejercicios esctructuras repeticion 2012 1
Ejercicios esctructuras repeticion 2012 1
 
Ejercicios PHP
Ejercicios PHPEjercicios PHP
Ejercicios PHP
 
Bbdd para ejercicios php
Bbdd para ejercicios phpBbdd para ejercicios php
Bbdd para ejercicios php
 
Ejercicios resueltos de programacion
Ejercicios resueltos de programacionEjercicios resueltos de programacion
Ejercicios resueltos de programacion
 
Beyond Virtualisation
Beyond VirtualisationBeyond Virtualisation
Beyond Virtualisation
 
52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo52 ejercicios-resueltos-en-pseudocodigo
52 ejercicios-resueltos-en-pseudocodigo
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPV
 
Buenas Prácticas de Programación en PHP
Buenas Prácticas de Programación en PHPBuenas Prácticas de Programación en PHP
Buenas Prácticas de Programación en PHP
 
Sesion Nº 04 Introducción A Php Operadores E Instrucciones
Sesion Nº 04   Introducción A Php   Operadores E InstruccionesSesion Nº 04   Introducción A Php   Operadores E Instrucciones
Sesion Nº 04 Introducción A Php Operadores E Instrucciones
 
Módulo de PHP
Módulo de PHPMódulo de PHP
Módulo de PHP
 
Lenguaje de programacion php
Lenguaje de programacion   phpLenguaje de programacion   php
Lenguaje de programacion php
 
Curso php - capitulo 2
Curso php - capitulo 2Curso php - capitulo 2
Curso php - capitulo 2
 
Taller mysql console_2
Taller mysql console_2Taller mysql console_2
Taller mysql console_2
 
Proyecto, PHP y MySQL
Proyecto, PHP y MySQLProyecto, PHP y MySQL
Proyecto, PHP y MySQL
 

Similar a Iniciación PHP 5. Ejercicios

Php07 consultas bd
Php07 consultas bdPhp07 consultas bd
Php07 consultas bdJulio Pari
 
Examen ISC
Examen ISCExamen ISC
Examen ISCivan mtz
 
Php08 mantenimiento tablas
Php08 mantenimiento tablasPhp08 mantenimiento tablas
Php08 mantenimiento tablasJulio Pari
 
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...Luis775803
 
Pysafet workflow and json library documentation
Pysafet workflow and json library documentation Pysafet workflow and json library documentation
Pysafet workflow and json library documentation Víctor Bravo Bravo
 
Aplicaciones para sistemas distribuidos slide
Aplicaciones para sistemas distribuidos slideAplicaciones para sistemas distribuidos slide
Aplicaciones para sistemas distribuidos slidemarieuri
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencapaulcuenca9
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion juandavid1118
 
Sistema integrado
Sistema integradoSistema integrado
Sistema integradobruchsytem
 
Curso php dia4
Curso php dia4Curso php dia4
Curso php dia4cognos_uie
 
0157 genexus full_throttling
0157 genexus full_throttling0157 genexus full_throttling
0157 genexus full_throttlingGeneXus
 
0157 genexus full_throttling
0157 genexus full_throttling0157 genexus full_throttling
0157 genexus full_throttlingGeneXus
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephpbetabeers
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Luis Fernando Aguas Bucheli
 
Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005Jose Ponce
 

Similar a Iniciación PHP 5. Ejercicios (20)

Php07 consultas bd
Php07 consultas bdPhp07 consultas bd
Php07 consultas bd
 
Examen ISC
Examen ISCExamen ISC
Examen ISC
 
Php08 mantenimiento tablas
Php08 mantenimiento tablasPhp08 mantenimiento tablas
Php08 mantenimiento tablas
 
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
 
Pysafet workflow and json library documentation
Pysafet workflow and json library documentation Pysafet workflow and json library documentation
Pysafet workflow and json library documentation
 
Manual de fragmentación vertical
Manual de fragmentación vertical Manual de fragmentación vertical
Manual de fragmentación vertical
 
Aplicaciones para sistemas distribuidos slide
Aplicaciones para sistemas distribuidos slideAplicaciones para sistemas distribuidos slide
Aplicaciones para sistemas distribuidos slide
 
Guiapractica de bd completa
Guiapractica de bd completaGuiapractica de bd completa
Guiapractica de bd completa
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
 
EXAMEN
EXAMENEXAMEN
EXAMEN
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 
Sistema integrado
Sistema integradoSistema integrado
Sistema integrado
 
Curso php dia4
Curso php dia4Curso php dia4
Curso php dia4
 
SEVILLA Meetups23032023.pdf
SEVILLA Meetups23032023.pdfSEVILLA Meetups23032023.pdf
SEVILLA Meetups23032023.pdf
 
0157 genexus full_throttling
0157 genexus full_throttling0157 genexus full_throttling
0157 genexus full_throttling
 
0157 genexus full_throttling
0157 genexus full_throttling0157 genexus full_throttling
0157 genexus full_throttling
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Manual de fragmentación mixta
Manual de fragmentación mixtaManual de fragmentación mixta
Manual de fragmentación mixta
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005Guia de Laboratorios 5 - VB.NET 2005
Guia de Laboratorios 5 - VB.NET 2005
 

Último

Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Juan Martín Martín
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxhenarfdez
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONamelia poma
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.docRodneyFrankCUADROSMI
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...JoseMartinMalpartida1
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOluismii249
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfRosabel UA
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...jlorentemartos
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalJonathanCovena1
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptNancyMoreiraMora1
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...JAVIER SOLIS NOYOLA
 

Último (20)

Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 

Iniciación PHP 5. Ejercicios

  • 1. Introducción al desarrollo web con PHP 5 Ejercicios Universidad de Córdoba martes, 2 de noviembre de 2010
  • 2. Índice de contenidos Introducción........................................................................................................................................ 3 Relación de ejercicios......................................................................................................................... 4 Ejercicio 01.......................................................................................................................................4 Ejercicio 02...................................................................................................................................... 4 Ejercicio 03...................................................................................................................................... 4 Ejercicio 04...................................................................................................................................... 5 Desarrollo de un blog......................................................................................................................... 7 Datos necesarios.............................................................................................................................7 Script de creación de la base de datos..........................................................................................8 Requisitos del sistema.................................................................................................................. 10 Listado de artículos...................................................................................................................10 Detalle de un artículo................................................................................................................ 10 Nuevo artículo............................................................................................................................11 Editar artículo............................................................................................................................12 Gadget de autenticación........................................................................................................... 13 Gadget de publicaciones anteriores..........................................................................................13
  • 3. Av. Tenor Pedro la Virgen s/n (CADE) Córdoba (España) tlf. 957 40 61 40 Introducción En este documento, el alumno encontrará la relación de ejercicios que ha de codifcar para obtener una mejor puntuación a la fnalización del curso. Adicionalmente, también se especifca el enunciado y material necesario para el desarrollo del trabajo optativo, “Desarrollo de un blog”. El material elaborado habrá que entregarlo en un documento con formato PDF a la dirección de correo cristina.quintana@fai.es antes del domingo 28 de noviembre de 2010. Como se especifca en el programa, las dos últimas clases presenciales del curso se dedicarán a las dudas surgidas en la resolución de los ejercicios detallados en este documento. http://www.fai.es Página 3 de 14
  • 4. Av. Tenor Pedro la Virgen s/n (CADE) Córdoba (España) tlf. 957 40 61 40 Relación de ejercicios A continuación, se detallan los enunciados de los ejercicios a desarrollar. Ejercicio 01 Dado un número en formato numérico comprendido entre 1 y 99, imprimirlo en formato texto. Construir un formulario para la recepción de datos e implementar la validación de los mismos. Ejercicio 02 Dado un día, mes y año, imprimir el día de la semana al que pertenece. El mes se introducirá en formato texto. Construir un formulario para la recepción de datos e implementar la validación de los mismos. Ejercicio 03 Construir una clase que contenga la lógica necesaria para dibujar un calendario con el que se muestra en la siguiente imagen. El código a utilizar para renderizar el calendario es: <?php // Dibuja el calendario del mes actual $calendar01 = new MyCalendar(); $calendar01->render(); // Dibuja el calendario del mes de agosto $calendar02 = new MyCalendar( "agosto", 2010 ); $calendar02->render(); http://www.fai.es Página 4 de 14
  • 5. Av. Tenor Pedro la Virgen s/n (CADE) Córdoba (España) tlf. 957 40 61 40 Ejercicio 04 Construir una aplicación con dos pantallas: 1. Listado de asignaturas Cada asignatura será un enlace al listado de alumnos matriculados en ésta. 2. Listado de alumnos de una asignaturas Mostrar el nombre de la asignatura y los datos de sus alumnos matriculados. Los datos necesarios para la conexión a la base de datos son: Host server.fai.es Base de datos curso_php Usuario curso Contraseña curso_2010 Si se desea utilizar la base de datos en entorno local, el script para la creación es el siguiente: -- -- Base de datos: `curso_php` -- -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `alumno` -- DROP TABLE IF EXISTS `alumno`; CREATE TABLE IF NOT EXISTS `alumno` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `nombre` varchar(255) NOT NULL, `apellidos` varchar(255) NOT NULL, `email` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=81 ; -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `alumno_asignatura` -- DROP TABLE IF EXISTS `alumno_asignatura`; http://www.fai.es Página 5 de 14
  • 6. Av. Tenor Pedro la Virgen s/n (CADE) Córdoba (España) tlf. 957 40 61 40 CREATE TABLE IF NOT EXISTS `alumno_asignatura` ( `alumno_id` bigint(20) NOT NULL DEFAULT '0', `asignatura_id` bigint(20) NOT NULL DEFAULT '0', PRIMARY KEY (`alumno_id`,`asignatura_id`), KEY `alumno_asignatura_asignatura_id_asignatura_id` (`asignatura_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `asignatura` -- DROP TABLE IF EXISTS `asignatura`; CREATE TABLE IF NOT EXISTS `asignatura` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `nombre` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ; -- -- Filtros para la tabla `alumno_asignatura` -- ALTER TABLE `alumno_asignatura` ADD CONSTRAINT `alumno_asignatura_alumno_id_alumno_id` FOREIGN KEY (`alumno_id`) REFERENCES `alumno` (`id`), ADD CONSTRAINT `alumno_asignatura_asignatura_id_asignatura_id` FOREIGN KEY (`asignatura_id`) REFERENCES `asignatura` (`id`); http://www.fai.es Página 6 de 14
  • 7. Av. Tenor Pedro la Virgen s/n (CADE) Córdoba (España) tlf. 957 40 61 40 Desarrollo de un blog A continuación, se detallan los datos necesarios para el desarrollo del blog y las características que ha de cumplir en su ejecución. Datos necesarios Los datos necesarios para la conexión a la base de datos son: Host server.fai.es Base de datos curso_php_blog Usuario curso Contraseña curso_2010 La base de datos consta de la siguiente estructura: • Tabla user Contenido de los datos del usuario con privilegios. Columnas de la tabla: ▪ name Nombre del usuario. ▪ last_name Apellidos del usuario. ▪ username Nombre con el que el usuario accede a la aplicación. Este dato es único para cada usuario. ▪ password Clave con la que el usuario accede a la aplicación. • Tabla article Contenido de los artículos introducidos por usuarios privilegiados. Columnas de la tabla: ▪ created_at Fecha de registro de la publicación. ▪ title http://www.fai.es Página 7 de 14
  • 8. Av. Tenor Pedro la Virgen s/n (CADE) Córdoba (España) tlf. 957 40 61 40 Título de la publicación. ▪ value Contenido de la publicación. ▪ user_id Identifcador del usuario que ha publicado el nuevo contenido. • Tabla comment Contenido de los comentarios introducidos tanto por usuarios privilegiados como por usuarios anónimos. Columnas de la tabla: ▪ created_at Fecha de registro de la publicación. ▪ value Contenido de la publicación. ▪ article_id Identifcador del artículo al que hace referencia. Script de creación de la base de datos Se adjunta el script de creación de la base de datos a utilizar en este ejercicio, para aquellos que deseen realizar el ejercicio en su ordenador personal. -- -- Base de datos: `curso_php_blog` -- -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `article` -- DROP TABLE IF EXISTS `article`; CREATE TABLE IF NOT EXISTS `article` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `value` varchar(255) NOT NULL, `created_at` date NOT NULL, `user_id` bigint(20) NOT NULL, PRIMARY KEY (`id`), KEY `user_id_idx` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; http://www.fai.es Página 8 de 14
  • 9. Av. Tenor Pedro la Virgen s/n (CADE) Córdoba (España) tlf. 957 40 61 40 -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `comment` -- DROP TABLE IF EXISTS `comment`; CREATE TABLE IF NOT EXISTS `comment` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `value` varchar(255) NOT NULL, `created_at` date NOT NULL, `article_id` bigint(20) NOT NULL, PRIMARY KEY (`id`), KEY `article_id_idx` (`article_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `user` -- DROP TABLE IF EXISTS `user`; CREATE TABLE IF NOT EXISTS `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `last_name` varchar(100) NOT NULL, `username` varchar(30) NOT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -- -- Filtros para la tabla `article` -- ALTER TABLE `article` ADD CONSTRAINT `article_user_id_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`); -- -- Filtros para la tabla `comment` -- ALTER TABLE `comment` ADD CONSTRAINT `comment_article_id_article_id` FOREIGN KEY (`article_id`) REFERENCES `article` (`id`); http://www.fai.es Página 9 de 14
  • 10. Av. Tenor Pedro la Virgen s/n (CADE) Córdoba (España) tlf. 957 40 61 40 Requisitos del sistema El problema a resolver se compone de cuatro pantallas, dos públicas y otras dos protegidas por autenticación de usuario. Listado de artículos Esta pantalla es de acceso público para todos los usuarios de la red, y muestra el listado de artículos almacenados en el sistema en orden descendente de la fecha de creación. De cada artículo se muestra el título, seguido de la fecha de creación. Este título será un enlace a la pantalla de detalle de dicho artículo. Además de ésto, esta pantalla posee una columna a la derecha dónde se muestran los gadget de autenticación y publicaciones anteriores, los cuáles se explican más adelante en este documento. Detalle de un artículo Esta pantalla es de acceso público para todos los usuarios de la red, y muestra la información del artículo que se ha seleccionado en la pantalla de listado, a través de la cuál se ha accedido. Se detalla el título, descripción y fecha de creación del artículo. Acompañando a estos datos, se debe implementar un formulario para añadir comentarios asociados a dicho artículo. Además de lo anterior, se ha de visualizar el listado de comentarios que usuarios de la aplicación han añadido a través del formulario anterior. Estos comentarios se han de mostrar en orden descendente según la fecha en la que han sido introducidos. Replicando la funcionalidad de la pantalla de listado, también posee una http://www.fai.es Página 10 de 14
  • 11. Av. Tenor Pedro la Virgen s/n (CADE) Córdoba (España) tlf. 957 40 61 40 columna a la derecha dónde se muestran los gadget de autenticación y publicaciones anteriores, los cuáles se explican más adelante en este documento. Nuevo artículo Esta pantalla es de acceso restringido, sólo se podrá acceder a esta pantalla tras autenticarse mediante el gadget de la columna de la derecha de las pantallas de listado y detalle de artículos. Esta pantalla muestra un formulario de creación dónde aparecerán los campos título y artículo o descripción. Al guardar este formulario se tomará la fecha actual para el campo create_at de la base de datos. Debajo de este formulario, han de aparecer el listado de artículos publicados por el usuario autenticado en orden descendente por fecha de creación. Cada uno de estos artículos de ese listado ha de mostrar el título del artículo http://www.fai.es Página 11 de 14
  • 12. Av. Tenor Pedro la Virgen s/n (CADE) Córdoba (España) tlf. 957 40 61 40 seguido de la fecha de creación. El título ha de ser un enlace que redirija a la pantalla de edición de dicho artículo, la cuál se describe a continuación. Editar artículo Esta pantalla es de acceso restringido, es decir, sólo se puede acceder a esta pantalla, estando autenticado en el sistema. La pantalla es idéntica a la pantalla del formulario de nuevo artículo, salvo porque el formulario aparece completado con los datos del artículo que se está editando. http://www.fai.es Página 12 de 14
  • 13. Av. Tenor Pedro la Virgen s/n (CADE) Córdoba (España) tlf. 957 40 61 40 Gadget de autenticación Situado en las parte o columna de la derecha de las pantallas de listado de artículos y detalle de la parte pública del blog, hay que defnir una zona dónde los usuarios con privilegios puedan acceder al área privada. Esta zona vendrá defnida por dos cajas de texto en las que especifcar el nombre de usuario y la contraseña. Al pulsar el botón registrar, se han de comprobar los datos y en caso de ser correctos redirigir al formulario de nuevo artículo. Gadget de publicaciones anteriores En la columna de la derecha de las pantallas de listado de artículos y detalle de la parte pública, hay que defnir otra zona para las publicaciones anteriores. http://www.fai.es Página 13 de 14
  • 14. Av. Tenor Pedro la Virgen s/n (CADE) Córdoba (España) tlf. 957 40 61 40 Se ha de mostrar una lista los meses anteriores al actual y junto a estos el número de artículos que se han publicado en dichas fechas. http://www.fai.es Página 14 de 14