Cuando trabajamos con formularios en HTML, es fundamental entender las diferencias entre los distintos tipos de controles que podemos utilizar para que la interacción con el usuario sea clara y eficiente. En primer lugar, tenemos los botones de opción exclusivos, que se implementan con input type="radio". Estos permiten seleccionar una única opción dentro de un grupo, por ejemplo, elegir cómo se adquiere un software: descarga por internet, compra en CD o empresa. Para que el navegador entienda que todas estas opciones pertenecen al mismo grupo y solo se pueda seleccionar una, es imprescindible que todas compartan el mismo atributo name. Si se asignan nombres diferentes, cada botón funcionará de manera independiente, permitiendo seleccionar varias opciones a la vez, lo cual no es el comportamiento deseado en este caso.
Por otro lado, existen los botones de verificación o checkboxes, que se crean con input type="checkbox". Estos permiten seleccionar múltiples opciones de forma independiente, como por ejemplo qué productos utiliza un usuario: servidor de empresa, procesador de textos o agenda profesional. Cada checkbox tiene su propio name y value, y solo se enviará al servidor si está marcado. Esto implica que si un checkbox no está seleccionado, no se enviará ningún dato relacionado con él, por lo que hay que tener cuidado al procesar la información recibida. Además, podemos usar el atributo checked para que una opción aparezca marcada por defecto cuando se carga el formulario, lo que puede mejorar la experiencia del usuario al guiarlo hacia una selección inicial.
Para manejar listas más extensas de opciones, como seleccionar una provincia entre muchas, es más práctico utilizar listas desplegables con la etiqueta select. Dentro de esta etiqueta, cada opción se define con option, y el atributo value indica el valor que se enviará si esa opción es seleccionada. El atributo name en el select define el nombre del campo que se enviará al servidor. Podemos preseleccionar una opción con el atributo selected. Además, el select puede configurarse para mostrar varias opciones a la vez usando el atributo size, que define cuántas opciones se ven sin necesidad de desplegar la lista. Si queremos permitir que el usuario seleccione múltiples opciones, añadimos el atributo multiple, lo que habilita la selección de varias entradas mediante clics combinados con teclas como Ctrl o Shift.
En cuanto a los botones para enviar o manipular el formulario, tenemos el clásico input type="submit", que envía los datos al servidor. También existe el botón input type="reset", que restablece todos los campos del formulario a sus valores iniciales, aunque su uso es menos común hoy en día. Por último, el botón input type="button" no realiza ninguna acción por sí mismo, pero puede ser útil para activar funciones mediante JavaScript, como mostrar mensajes o validar datos antes de enviar el formulario.
Un detalle importante es cómo se envían los datos al servidor. Cuando el formulario utiliza el método GET, los valores seleccionados se añaden a la URL como parámetros, lo que permite ver claramente qué datos se están enviando. Por ejemplo, si seleccionamos Madrid como provincia, el navegador enviará algo como provincia=Madrid en la URL. Si se seleccionan múltiples opciones en un campo con multiple, cada valor se envía repetidamente con el mismo nombre de campo. En cambio, con el método POST, los datos se envían en el cuerpo de la solicitud y no son visibles en la URL, lo que es más adecuado para operaciones que modifican datos o requieren mayor privacidad.
Finalmente, aunque HTML5 introduce nuevos tipos de entrada como email para validar automáticamente direcciones de correo, en este contexto nos centramos en elementos compatibles con HTML4 para asegurar mayor compatibilidad con navegadores antiguos o dispositivos con capacidades limitadas. Esto nos permite crear formularios funcionales y accesibles para una amplia variedad de usuarios, manteniendo la simplicidad y eficacia en la captura de datos.