9. MySQL
-
Upload
diana-carolina -
Category
Documents
-
view
214 -
download
0
Transcript of 9. MySQL
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 1/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 2/91
Índice
• Introducción• MySQL
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 3/91
Introducción
• Michael Widenius en la década de los 90 crear una API SQdenominada MySQL para bases de datos muy similar a la
mSQL pero más portable.
• Por otro lado, el nombre del delfín de MySQL es Sakila y fu
seleccionado por los fundadores de MySQL AB en el concu“Name the Dolphin”.
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 4/91
¿Qué es MySQL?
•Sistema de Gestión de Base de Datos
. Una implemenCliente Servidor, basado en el álgebra relacioncaracteriza por disponer toda la información contentablas, y las relaciones entre datos deben ser represeexplícitamente en esos mismos datos.
• Es un software de códigoabierto escrito en C
accesible para cualquiera para usarlo y modificarlo.
usa el GPL GNU Licencia Publica General) no nos
dinero a menos que lo incluyamos en un so
comercial.
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 5/91
MySQL Relational
Database Structure
MySQL
server
dcp
1 20
2 20
3 20
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 6/91
Simple base de datos
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 7/91
MySQL Consola
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 8/91
SHOW databases;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 9/91
Comandos MySQL
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 10/91
Creación de una base de datos
•CREATE DATABASE
publications;
•USE
publications;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 11/91
Creación de usuarios
• GRANT ALL ON publications.* TO 'jim'@'localhost'IDENTIFIED BY 'mypasswd';
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 12/91
Creación de tablas
CREATE TABLE classics (author VARCHAR(128),
title VARCHAR(128),
type VARCHAR(16),
year CHAR(4)) ENGINE MyISAM;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 13/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 14/91
Agregar una columna autoincremento
ALTER TABLE
classicsADD
idINT UNSIGNED NOT NULL
AUTO_INCREMENT KEY;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 15/91
Eliminando una columna
ALTER TABLE
classicsDROP
id;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 16/91
Insertar datos a la tabla
INSERT INTO
classics(author, title, type, year)VALUES
('MTwain','The Adventures of Tom Sawyer','Fiction','1876');
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 17/91
Renombrar una tabla
ALTER TABLE
classicsRENAME
pre1900;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 18/91
Cambiar el tipo de dato de una columna
ALTER TABLE
classicsMODIFY
yearSMALLINT
;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 19/91
Renombrar una columna
ALTER TABLE
classicsCHANGE
type categoryVARCHAR 1
Eliminar una columna
ALTER TABLE classics DROP pages;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 20/91
Eliminar una tabla
• CREATE TABLE disposable(trash INT);• DESCRIBE disposable;
• DROP TABLE disposable;
• SHOW tables;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 21/91
Crear un índice
• Las búsquedas se pueden hacer sin problemas en MyShasta que crezca más de un par de cientos de filas, es la base de datos de accesos será más y más lento con nueva fila añadida, ya que MySQL tiene que buscar a trde cada fila cada vez que se haga una consulta.
• La manera de lograr búsquedas rápidas es añadir un íncuando se crea una tabla
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 22/91
Crear un índice
• ALTER TABLE classics ADD INDEX(author(20));• ALTER TABLE classics ADD INDEX(title(20));
• ALTER TABLE classics ADD INDEX(category(4));
• ALTER TABLE classics ADD INDEX(year);
• Ejemplo:
The Adventures of Tom Sawyer
Solo va a almacenar en el índice de los primeros 20 caracteres:
The Adventures of To
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 23/91
Clave primaria
•ALTER TABLE
classicsADD
isbnCHAR 13
);
•UPDATE
classicsSET
isbn='9781598184891'WHERE
year='187
•ALTER TABLE
classicsADD PRIMARY KEY
(isbn);
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 24/91
Indice FULLTEXT
• A diferencia de un índice normal, FULLTEXT permitebúsquedas súper rápidas de columnas enteras de texto
• ALTER TABLE classics ADD FULLTEXT(author,title
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 25/91
Consultas a una base de datos MySQL
• Con la base de datos creada y sus tablas de MySQL, lledatos, y sus índices para hacerlos rápido para buscar.
• Ahora se pude ver cómo se realizan las búsquedas, y lodiferentes comandos y calificadores disponibles.
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 26/91
Select
•SELECT
author,titleFROM
classics;
• SELECT title,isbn FROM classics;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 27/91
Select
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 28/91
SELECT COUNT
• Muestra el número de filas (registros) de una tab
SELECT COUNT(*) FROM classics;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 29/91
SELECT DISTINCT
• Elimina las múltiples entradas cuando contienenlos mismos datos.
SELECT DISTINCT author FROM classics;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 30/91
WHERE
• Retorna los registros que cumple la condición.
SELECT author,title FROM classics WHERE author"Mark Twain";
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 31/91
LIKE calificador)
• Permite buscar en partes de una cadena.
• SELECT author,title FROM classics WHERE author LIKE
• SELECT author,title FROM classics WHERE title LIKE "%
• SELECT author,title FROM classics WHERE title LIKE "%
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 32/91
LIKE calificador)
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 33/91
DELETE
• Elimina el registro que cumple la condición.
DELETE FROM classics WHERE title='Little Dorrit';
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 34/91
LIMIT calificador)
• Permite elegir el número de filas que retorna unconsulta, y en qué parte de la tabla empieza adevolverlos.
•SELECT
author,titleFROM
classicsLIMIT
3;• SELECT author,title FROM classics LIMIT 1,2;
• SELECT author,title FROM classics LIMIT 3,1;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 35/91
LIMIT calificador)
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 36/91
MATCH ... AGAINST
• Se usa en columnas al que se les ha dado el índFULLTEXT. Con esto se puede hacer búsquedas elenguaje natural.
• SELECT author,title FROM classics WHERE MATCH(authAGAINST('and');
• SELECT author,title FROM classics WHERE MATCH(authAGAINST('old shop');
• SELECT author,title FROM classics WHERE MATCH(authAGAINST('tom sawyer');
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 37/91
MATCH ... AGAINST
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 38/91
MATCH ... AGAINST en modo Boolean
• Es mas poderoso para las búsquedas, podemos (+) o exlucir (-) palabras
• SELECT author,title FROM classics WHERE MATCH(auth
AGAINST
('+charles -species'IN BOOLEAN MODE
);
• SELECT author,title FROM classics WHERE MATCH(authAGAINST('"origin of"' IN BOOLEAN MODE);
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 39/91
MATCH ... AGAINST en modo Boolean
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 40/91
UPDATE ... SET
• Permite actualizar el contenido de un campo
• UPDATE classics SET author='Mark Twain (Samuel LangClemens)‘ WHERE author='Mark Twain';
• UPDATE classics SET category='Classic Fiction‘ WHERE
category='Fiction';
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 41/91
ORDER BY
• Retorna las columnas en orden ascendente o de
• SELECT author,title FROM classics ORDER BY au
• SELECT author,title FROM classics ORDER BY tit
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 42/91
GROUP BY
• Agrupa resultados de la consulta por gruposSELECT category,COUNT(author) FROM classics G
category;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 43/91
Unión de Tablas
• SELECT name,author,title FROM customers,classWHERE customers.isbn=classics.isbn;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 44/91
Natural Join
•SELECT
name,author,titleFROM
customersNATURAL JOIN classics;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 45/91
phpMyAdmin
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 46/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 47/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 48/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 49/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 50/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 51/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 52/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 53/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 54/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 55/91
Agregar un campo
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 56/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 57/91
Eliminar un campo
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 58/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 59/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 60/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 61/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 62/91
Renombrar una tabla
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 63/91
Renombrar una tabla
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 64/91
Cambiar el tipo de dato de una columna
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 65/91
Cambiar el tipo de dato de una columna
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 66/91
Cambiar el tipo de dato de una columna
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 67/91
Agregar índices
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 68/91
Agregar índices
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 69/91
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 70/91
Funciones de PHP para el acceso a ba
datos MySQL
• Los pasos para acceder desde PHP a una base de datos son los siguien
• Conectar con el servidor de bases de datos
• Seleccionar una base de datos
• Enviar la instrucción SQL a la base de datos
• Obtener y procesar los resultados
• Cerrar la conexión con el servidor de bases de datos
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 71/91
Acceso a bases de datos MySQL
• Las funciones concretas de MySQL que realizan estas operaciones son:
• Conectar con el servidor de bases de datos:
• mysql_connect )
• Seleccionar una base de datos:
• mysql_select_db )
• Enviar la instrucción SQL a la base de datos:
• mysql_query )
• Obtener y procesar los resultados:
• mysql_num_rows ) y mysql_fetch_array )
• Cerrar la conexión con el servidor de bases de datos:
• mysql_close )
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 72/91
Acceso a bases de datos MySQL
• Conectar con el servidor de bases de datos: mysql_connect )
• Devuelve un identificador de la conexión en caso de éxito y false en caso
• Sintaxis:
$conexi on = mysql _connect ( servi dor, user name, password) ;
• Ejemplo:$conexi on = mysql _connect ( “l ocal host ”, “cur sophp”, “”)
or di e (“No se puede conect ar con el servi dor”) ;
$conexi on = mysql _connect ( “l ocal host ”, “cursophp- ad”, “php. hph”)or di e (“No se puede conect ar con el servi dor”) ;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 73/91
Acceso a bases de datos MySQL
• Seleccionar una base de datos: mysql_select_db )
• Devuelve true en caso de éxito y false en caso contrario
• Sintaxis:
mysql _sel ect _db ( dat abase) ;
• Ejemplo:
mysql _sel ect _db ( “l i ndavi st a”)or di e (“No se puede sel ecci onar l a base de dat os”) ;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 74/91
Acceso a bases de datos MySQL
• Enviar la instrucción SQL a la base de datos: mysql_query )
• Devuelve un identificador o true (dependiendo de la instrucción) si la inscorrectamente y false en caso contrario
• Sintaxis:
$consul t a = mysql _quer y ( i nst r ucci ón, $conexi on) ;
• Ejemplo:
$consul t a = mysql _quer y ( “sel ect * f r om not i ci as”, $conexi on)or di e (“Fal l o en l a consul t a”);
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 75/91
Acceso a bases de datos MySQL
• Obtener y procesar los resultados: mysql_num_rows ), mysql_fetch_arra
• En el caso de que la instrucción enviada produzca unos resultados, mysqlas filas de la tabla afectadas por la instrucción
• mysql_num_rows() devuelve el número de filas afectadas
• Para obtener las distintas filas del resultado se utiliza la función mysql_obtiene una fila del resultado en un array asociativo cada vez que se inv
• Sintaxis:
$nf i l as = mysql _num_r ows ( $consul t a) ;$f i l a = mysql _f et ch_ar r ay ( $consul t a) ;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 76/91
Acceso a bases de datos MySQL
• Ejemplo:
Título 1 Texto 1 05/02/2004
noticias
1
Título 2 Texto 2 05/02/20042
Título 3 Texto 3 04/02/20043
Título 4 Texto 4 01/02/20044
Título 5 Texto 5 31/01/20045
Instrucción:sel ect * f r om not i ci as wher e cat egor i a=“pr omoci ones”
ofertas
promociones
promociones
costas
promociones
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 77/91
Acceso a bases de datos MySQL
• Ejemplo:
Título 1 Texto 1 05/02/2004
noticias
1
Título 2 Texto 2 05/02/20042
Título 3 Texto 3 04/02/20043
Título 4 Texto 4 01/02/20044
Título 5 Texto 5 31/01/20045
Instrucción:sel ect * f r om not i ci as wher e cat egor i a=“pr omoci ones”
ofertas
promociones
promociones
costas
promociones
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 78/91
Acceso a bases de datos MySQL
• Obtención de las filas:$nf i l as = mysql _num_r ows ( $consul t a) ;i f ( $nf i l as > 0){
f or ( $i =0; $i <$nf i l as; $i ++){
$f i l a = mysql _f et ch_ar r ay ( $consul t a) ; procesar fila i-ésima de los resultados
}}
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 79/91
Acceso a bases de datos MySQL
• Obtener los resultados: mysql_num_rows ), mysql_fetch_array )
• Para acceder a un campo determinado de una fila se usa la siguiente si
$f i l a[“nombr e_campo”] / / por ser un ar r ay asoci at i vo
$f i l a[ $i ] / / $i =í ndi ce del campo desde 0
• Ejemplo:
f or ( $i =0; $i <$nf i l as; $i ++){
$f i l a = mysql _f et ch_ar r ay ( $consul t a) ;pr i nt “Tí tul o: “ . $f i l a[ “ t i tul o”] ;pr i nt “Fecha: “ . $f i l a[ “f echa”];
}
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 80/91
Acceso a bases de datos MySQL
• Cerrar la conexión con el servidor de bases de datos: mysql_close )
• Sintaxis:
mysql _cl ose ( $conexi on) ;
• Ejemplo
mysql _cl ose ( $conexi on) ;
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 81/91
Consulta avanzada de tablas
• Objetivo:
• mostrar los resultados de la consultadivididos en bloques de un número
elementos
(por ejemplo, de 5 en 5)
• Requisitos:
• Recuperar un número limitado de elementos de la tabla
• Implementar un mecanismo de navegación que permita avanzar al siguanterior bloque de elementos
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 82/91
Consulta avanzada de tablas
• Para recuperar un número fijo de elementos de una tabla se utiliza la o
orden SELECT. Así, por ejemplo,
SELECT * f r om not i ci as LI MI T 0, 5
recupera los 5 primeros elementos de la tabla. Y en general,
SELECT * f r om not i ci as LI MI T $comi enzo, $num
recupera $num elementos a partir de la posición $comienzo
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 83/91
Consulta avanzada de tablas
• La variable $num tendrá un valor constante (en este caso 5), mientras q
$comienzo se incrementará o decrementará en 5 unidades al pasar a lo anterior
• Para ello se pasará la variable como parámetro en el enlace asociado acorrespondiente
• Por ejemplo, el código para el botón siguiente será:
"<A HREF=' " . $_SERVER[ ' PHP_SELF' ] . "?comi enzo=" . ( $comi enzo " ' >Si gui ent e</ A>"
• Habrá que comprobar previamente que el nuevo valor de comienzo es vse encuentra dentro de los límites de la tabla devuelta por la consulta
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 84/91
Consulta avanzada de tablas
• Objetivo:
• Mostrar los resultados de una consulta de manera que se puedanfiltrar
de una determinada columna
de la tabla
• Requisitos:
• Recuperar de una tabla los elementos que cumplan una determinada c
• Permitir seleccionar un valor de entre los valores posibles de una colum
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 85/91
Consulta avanzada de tablas
• Para recuperar los elementos de una tabla que cumplen una condición
WHERE
de la orden SELECT. Por ejemplo,
SELECT * f r om not i ci as WHERE cat egori a=’ of ert as’
recupera las noticias cuya categoría tiene el valor “ofertas”. Y en genera
SELECT * f r om not i ci as WHERE cat egori a =’ $cat egori a’
recupera las noticias cuya categoría tiene el valor dado por la variable $
• La variable $categoria se obtendrá de un elemento SELECT
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 86/91
Consulta avanzada de tablas
• Objetivo:
• Modificar el ejercicio anterior para que los resultados se actualicen de foseleccionar un nuevo valor para la columna
• Requisitos:
• Obtener automáticamente los valores de una columna de tipo enumeratabla
• Utilizar código JavaScript para detectar un cambio en la opción selecciode tipo SELECT
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 87/91
Consulta avanzada de tablas
• Función JavaScript que actualiza una página en función de la opción se
elemento SELECT de nombre ‘categoria’ del formulario de nombre ‘sele
<SCRI PT LANGUAGE=' J avaScr i pt ' ><! - -f unct i on act ual i zaPagi na ( ){
i = document . f or ms. sel ecci ona. cat egor i a. sel ect edI ndex;categori a =
document . f or ms. sel ecci ona. cat egor i a. opt i ons[ i ] . val ue;wi ndow. l ocat i on = ‘ muest r a_not i ci as. php?categor i a=' +
cat egor i a;}/ / - - ></ SCRI PT>
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 88/91
Consulta avanzada de tablas
• Para ejecutar la función JavaScript es preciso asociarla al elemento SEL
evento ONCHANGE, que se activa cuando se modifica la opción seleccio
<SELECT NAME=' cat egor i a' ONCHANGE=' act ual i zaPagi na( ) ' >
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 89/91
Consulta avanzada de tablas
• Es conveniente que la opción seleccionada aparezca marcada por defec
página
• Para ello es preciso generar las opciones del elemento SELECT de form
• De esta manera se puede comparar cada una de las opciones con el vaformulario y colocar el atributo SELECTED a la que corresponda
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 90/91
Consulta avanzada de tablas
• En el formulario del ejercicio anterior los valores de los campos de tipo
(ENUM) están escritos directamente en el propio código. Así, para la catse tiene:
<SELECT NAME=“cat egor i a">
<OPTI ON VALUE=“pr omoci ones">pr omoci ones
<OPTI ON VALUE=“of er t as" SELECTED>of er t as
<OPTI ON VALUE=“cost as">cost as
</ SELECT>
• Este hecho no es muy deseable ya que si se modifican los valores de latabla hay que modificar también el código del formulario
7/23/2019 9. MySQL
http://slidepdf.com/reader/full/9-mysql 91/91
Consulta avanzada de tablas
• Lo ideal es tomar los valores automáticamente de la tabla en lugar de e
en el código. Para ello se utiliza la siguiente instrucción SQL:
SHOW col umns FROM not i ci as LI KE ‘ cat egori a‘
que devuelve una tabla con las propiedades del campo ‘categoria’. El e
esta tabla contiene lo siguiente:
enum( “pr omoci ones" , “of ert as" , “cost as" )
• A partir de esta información podemos obtener los valores del tipo enumlas opciones del elemento SELECT. Sólo queda marcar con SELECTED laestaba seleccionada en caso de haberse enviado el formulario