Fundamentos de Ingenierı́a de Software Práctica 3 “Conexión a una base de datos desde PHP” Profesor: Sergio Luis Pérez Pérez Fecha: 06-mar-2013 Fecha lı́mite de entrega: miércoles 20-mar-2013 22:00 horas 1. Descripción de la práctica PHP nos permite realizar conexiones a una amplia gama de bases de datos de diferentes proveedores, las cuales puede consultar en el sitio oficial de php: http://php.net/manual/en/refs.database.php En particular nosotros trabajaremos con conexiones a PostgreSQL en su versión 8.1.23 (pues es la que está instalada en labred.cua.uam.mx), cuyo tutorial podemos encontrar en: http://www.postgresql.org/docs/8.1/static/index.html El objetivo de esta práctica es realizar una conexión a una base de datos, cosultar algunas tablas, insertar algunos registros y borrar algunos otros, todo evidentemente desde php. Para crear una base de datos, teniendo instalado PosgreSQL (en nuestro caso en el servidor de labred), se utiliza la siguiente instrucción en lı́nea de comandos: createdb nombredb Donde “nombredb” es el nombre que elija para su base de datos. Para eliminar la base de datos use el comando: dropdb nombredb Para acceder a dicha base de datos (y por tanto al manejador de posgresql) escriba en lı́nea de comandos: psql nombredb Las actividades que debe realizar son las siguientes: 1. Si no tiene creada una base de datos en su cuenta en el servidor de labred por favor cree al menos una. 2. Dentro de su base de datos elegida, cree una tabla llamada empleado con los siguientes campos: a) No empleado de tipo integer. Establezca este campo como Primary Key. 1 b) Nombre de tipo text. c) Fecha nacimiento de tipo date. d) Puesto de tipo varchar(20). 3. Analice el código visto en la clase de práctica, en el cual realizamos la conexión a una tabla de una base de datos y algunas operaciones sobre ésta, estos archivos los puede descargar desde el sitio del curso. Los archivos son “libreria.txt” y “ejemplo sql.txt”. 4. Investigue el funcionamiento de la función rand de php. http://php.net/manual/en/function.rand.php 5. Realice una página llamada practica3.php que cada vez que se ejecute en lı́nea de comandos como: php practica3.php intente insertar 10 registros cuyos campos deben ser generados de forma aleatoria con ayuda de la función rand. Las caracterı́sticas de cada campo deben ser las siguientes: a) No empleado deberá ser un número aleatorio entre 1 y 100. b) Nombre deberá ser una cadena aleatoria -formada por mayúsculas, minúsculas y espacios- de longitud entre 20 y 30. c) Fecha nacimiento deberá ser una fecha válida entre los años 1980 y 1990. De preferencia sólo genere dı́as del 1 al 28, ası́ no tendra que evitar cosas raras como un 30 de febrero, o bien inténte agregar tal validación, será un buen ejercicio de programación. Recuerde que un año es bisiesto sólo si es múltiplo de 4 y pero no de 100, aunque sı́ de 400. d) Puesto deberá ser una cadena aleatoria -formada por minúsculas, dı́gitos y espacios- de longitud entre 10 y 20. Observe que la función aleatoria podrı́a repetir un número de empleado, sobre todo si la página php es ejecutada varias veces, por lo tanto cada que intente insertar un nuevo registro realice el siguiente proceso: a) Realice una consulta que verifique si existe un empleado con dicho No empleado, si NO existe entonces insértelo en la tabla, de lo contrario -ya existe uno con el mismo No empleado- no realice inserción alguna. Note entonces que cada vez que se ejecute la página practica3.php se insertarán cuando mucho 10 registros nuevos o en el peor de los casos ninguno. 6. Cuando finalice los 10 intentos de inserción imprima una tabla que contenga todos los registros actuales en la tabla empleado, incluyendo los insertados en el paso anterior, pero dicha tabla sólo debe contener los campos de No empleado, Nombre y Fecha nacimiento. Ejemplo: Número de empleado Nombre Fecha de nacimiento 6 Lucio Fernando 06-06-1986 9 Felipe de Jesus 09-09-1990 2 Ademas los registros deberán aparecer ordenados por el campo No empleado. 7. También genere un archivo txt llamado “Salida.txt” que contenga TODOS los campos de la tabla empleados con el siguiente formato: Numero de empleado | Nombre | Fecha de nacimiento | Puesto 9 | Felipe de Jesus | 09-09-1990 | gerente 6 | Lucio Fernando | 06-06-1986 | supervisor En este caso los datos en el archivo “Salida.txt” deberán aparecer ordenados por el campo Nombre. ¿Que observa de extraño? Para mas información sobre cómo crear/escribir archivos desde php consulte las páginas: http://php.net/manual/en/function.fopen.php http://www.php.net/manual/en/function.fwrite.php 8. Preferentemente incluya todas las funciones que utilice para realizar esta práctica en un archivo adicional -por ejemplo libreria.php- y sólo ponga el código principal en el archivo practica3.php. 2. Entregables Escriba un reporte donde describa -en a lo sumo una página en latex- qué problemas tuvo al realizar esta práctica y sus conclusiones. Además deberá enviar su código fuente práctica3.php y todo código adicional utilizado -por ejemplo el archivo libreria.php-. Si no envı́a todo su código fuente no podré pobrar su práctica. Envı́e al e-mail [email protected] su reporte en un archivo llamado Practica3 NombreApellido.(tex y pdf) y todos sus códigos fuente. De preferencia no utilice acentos en los nombres de los archivos. 3. Tips 1. Lea todos los recursos que he proveı́do en esta página -es decir los sitios web- y analice el código que le he proporcionado como ejemplo. 3