[Ir al menú de PHP]
Añadir registros a una tabla desde formulario

Los valores de
SELECT MULTIPLE

En una opción SELECT MULTIPLE dentro de un form típico de HTML es posible elegir ninguno, uno o varios de los elementos de de la lista.

Basta con pulsar con el mouse (... has visto que fino quedó... lo de mouse..) en los valores valores elegidos manteniendo pulsada la tecla Ctrl, es decir... puro Windows

Para recoger los valores de esa opción se define -dentro de la etiqueta SELECT- un name tipo array. Bastaría con escribir:

<SELECT MULTIPLE
name=
var[] SIZE=6>

Como ves var es el nombre de la variable (esta vez sin $ delante, recuerda que no estamos en PHP sino en puro HTML) y va seguido de [] precisamente para indicar que es un array.

Lo de SIZE=6 no es otra cosa que el parámetro que indica cuantos elementos de la lista de opciones queremos que se visualicen simultáneamente en la página.

El truco está en los values de cada option dentro de ese select

Los he escrito así:

<option value=1>Castellano
<option value=2>Francés
<option value=4>Inglés
<option value=8>Alemán
<option value=16>Búlgaro
<option value=32>Chino

¡¡Fíjate que he mantenido exactamente el mismo orden que he definido el campo SET de la tabla.

Y fíjate también en los valores: 1, 2, 4, 8, 16 y 32 que son precisamente las potencias de 2:
20, 21, 22, 23, 24, 25, y 26

Si eres de ciencias seguro que ya no vas a necesitar más comentarios, pero si eres de letras como yo... quizá te venga bien la explicación con adaptación curricular muy significativa que tuvo que darme el amigo que me enseño el truco...

¿Pensaste que era mía la idea?. Pues...no.. así es la vida

El caso es que al seleccionar valores, van añadiéndose al array. Por ejemplo. Si selecciono: Francés y Búlgaro el array sería este: var[0]=2, var[1]=16

Si sumamos esos valores (2 + 16) nos daría 18 (hasta ahí llegamos hasta los de letras... :-) ..) y si convertimos a binario el dieciocho resultará:
         010010
que es como decirle a MySQL (mirando la cadena de derecha a izquierda, ¿lo recuerdas?) que incluya el segundo (Francés) y el quinto (Búlgaro) que son las posiciones que tienen un uno en la cadena.

Como ves, un milagro de las matemáticas...


 
 


Creación del formulario

El caso más frecuente -casi el único- es que los registros de una tabla se añadan utilizando un formulario y enviando desde él los datos a un script PHP que ejecute la opción de añadir.

Si no recuerdas el funcionamiento de este método, pulsa aquí... de nada :-)

En el ejemplo he desarrollado un formulario -para añadir registros a la tabla demo4- con las siguientes peculiaridades: Pues bien, aquí código fuente del formulario que he diseñado

Ver código fuente


Inserción de datos

Como recordarás, cuando se envía el contenido de un formulario mediante el method=POST y se indica como action un fichero PHP los valores enviados son recogidos -en este último fichero- en variables de PHP que tienen exactamente el mismo nombre que los name del formulario (esta vez con el $ delante y cuyo valor coincide con los values recibidos.

A partir de ahí, bastaría con depurar los valores recibos, recoger en variables los valores depurados y pasarlos a una sentencia MySQL -de las que hemos visto en la página anterior- para que sean añadidas a la tabla correspondiente. Yo lo he hecho tal como puedes ver aquí:


Ver código fuente

En realidad, tal como habrás podido ver -si es que has mirado el código fuente- la depuración ha sido la siguiente: Es evidente que con el asunto de los campos tipo CHAR(0) me he metido en un sembrado.. y bien por mi ignorancia y bisoñez manifiestas, públicas y notorias; o bien porque la complejidad de manejo de ese tipo de campos; o tal vez por ambas, el caso es que... te juro y no te miento... que no voy a volver a usarlos.

Cuando necesite un campo booleano lo definiré como tipo ENUM con opciones Si y No... y problema resuelto...

Tu, desde luego, eres libre de la hacer lo que quieras... faltaría más... :-)

Sugerir a un/a amig@ Envíame tus comentarios
Anterior
Indice
Siguiente