Sie sind auf Seite 1von 4

Curso de Extensin Universitaria

Desarrollo de sitios web


con PHP y MySQL






Prctica 10: Insercin de datos en una tabla

Apartado 1
Tomar el formulario de la prctica 8 y aadirle la insercin de la vivienda en la
tabla viviendas de la base de datos lindavista. La figura 1 muestra el formulario
de insercin, mientras que la figura 2 muestra los resultados de la insercin de
una nueva vivienda en la tabla. Para comprobar que la vivienda se ha insertado
correctamente, utilizar la pgina desarrollada en la prctica anterior.

Pasos:
1. Ejecutar phpMyAdmin
2. Asignar al usuario cursophp-ad los permisos SELECT, INSERT,
UPDATE y DELETE sobre la tabla viviendas. No olvidar reiniciar el
servidor
3. Modificar el cdigo aadiendo la conexin con la base de datos y la
insercin de la vivienda


Figura 1: formulario de insercin de vivienda


Figura 2: resultados de la insercin de vivienda

El campo extras merece un tratamiento especial al tratarse de una tabla.
Vemoslo con un ejemplo. Supongamos que se han marcado las casillas
Piscina y Garage. En tal caso se recibir una tabla extras con dos elementos:

extras[0]=Piscina
extras[1]=Garage

Como el campo extras de la tabla viviendas es de tipo SET (conjunto), hay
que crear a partir de la tabla extras la cadena

Piscina, Garage

que ser el valor a insertar en el campo. El siguiente cdigo se encarga de
realizar esta tarea:

$n = count ( $ext r as) ;
i f ( $n > 0)
{
$ex = $ext r as[ 0] ;
f or ( $i =1; $i <$n; $i ++)
$ex = $ex . " , " . $ext r as[ $i ] ;
}
el se
$ex = " " ;

Por otra parte, cuando se muestren los valores insertados tambin habr que
tener en cuenta que extras es una tabla, por lo que habr que utilizar un bucle
para mostrar sus elementos.


Apartado 2
En el formulario anterior los valores de los campos de tipo enumerado (ENUM)
y conjunto (SET) estn escritos directamente en el propio cdigo. Por ejemplo,
para el tipo de vivienda se tiene:

<SELECT NAME=" t i po" >
<OPTI ON VALUE=" Pi so" SELECTED>Pi so
<OPTI ON VALUE=" Adosado" >Adosado
<OPTI ON VALUE=" Chal et " >Chal et
<OPTI ON VALUE=" Casa" >Casa
</ SELECT>

Este hecho no es muy deseable ya que si se modifican los valores del tipo en la
tabla hay que modificar tambin el cdigo del formulario. Lo ideal es tomar los
valores automticamente de la tabla en lugar de escribirlos a mano en el
cdigo. Para ello se utiliza la siguiente instruccin SQL:

SHOWcol umns FROM vi vi endas LI KE ' t i po'

que devuelve una tabla con las propiedades del campo tipo. El elemento [1] de
esta tabla contiene lo siguiente:

enum( " Pi so" , " Adosado" , " Chal et " , " Casa" )

A partir de esta informacin podemos obtener los valores del tipo enumerado y
generar las opciones del elemento SELECT. Slo queda marcar con
SELECTED la opcin que estaba seleccionada en caso de haberse enviado el
formulario, para lo cual se usa el valor almacenado en la variable $tipo.

El cdigo completo que realiza toda esta operacin es el siguiente:

/ / Obt ener l os val or es del t i po enumer ado
$i nst r ucci on = " SHOWcol umns FROM vi vi endas LI KE ' t i po' " ;
$consul t a = mysql _quer y ( $i nst r ucci on, $conexi on) ;
$r ow = mysql _f et ch_ar r ay ( $consul t a) ;

/ / Pasar l os val or es a una t abl a
$l i s = st r st r ( $r ow[ 1] , " ( " ) ;
$l i s = l t r i m( $l i s, " ( " ) ;
$l i s = r t r i m( $l i s, " ) " ) ;
$l i st a = expl ode ( " , " , $l i s) ;

/ / Most r ar cada val or en un el ement o OPTI ON
i f ( i sset ( $i nser t ar ) )
$sel ect ed = $t i po;
el se
$sel ect ed = " " ;
f or ( $i =0; $i <count ( $l i st a) ; $i ++)
{
$cad = t r i m( $l i st a[ $i ] , " ' " ) ;
i f ( $cad == $sel ect ed)
pr i nt ( " <OPTI ON SELECTED>" . $cad . " \ n" ) ;
el se
pr i nt ( " <OPTI ON>" . $cad . " \ n" ) ;
}

Modificar el formulario del apartado anterior utilizando este procedimiento para
generar automticamente los valores de los elementos de tipo enumerado (tipo
de vivienda, zona y nmero de dormitorios) y conjunto (extras).

Das könnte Ihnen auch gefallen