This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
es:web_development:forms:inputs [2022/05/09 09:41] mag created |
es:web_development:forms:inputs [2023/08/16 09:33] (current) |
||
---|---|---|---|
Line 8: | Line 8: | ||
* Continuaremos trabajando con ' | * Continuaremos trabajando con ' | ||
- | * form.php | + | * [[https:// |
- | * process_form.php | + | * [[https:// |
+ | |||
+ | ==== Enviar un Formulario ==== | ||
+ | |||
+ | * Abra ' | ||
+ | * < | ||
+ | * Escriba ' | ||
+ | * La etiqueta < | ||
+ | * Establecer < | ||
+ | |||
+ | < | ||
+ | |||
+ | * Mueva el párrafo existente dentro de las etiquetas < | ||
+ | * Ahora agregue nuestras opciones de héroe como botones ' | ||
+ | |||
+ | < | ||
+ | <button type=" | ||
+ | |||
+ | * Establecer el < | ||
+ | * < | ||
+ | * El < | ||
+ | * Guarde y cargue el archivo, luego abra la página. | ||
+ | * Haga clic en su héroe elegido y luego verifique los resultados. ¿Ves el nombre de tu héroe? | ||
+ | * Esta es una forma rara de usar un botón Enviar, pero es válida. Veamos otras opciones. | ||
+ | |||
+ | ==== Entrada de Texto ==== | ||
+ | |||
+ | * Creemos un formulario para agregar héroes a nuestra base de datos. | ||
+ | * Necesitaremos campos de entrada para el alias del héroe, la identidad (secreta), si es un héroe o un villano, el año en que apareció por primera vez en los cómics de Marvel (o en otro lugar) y cuál es la fuente de su poder. | ||
+ | * Podríamos usar una tabla para presentar nuestro formulario con etiquetas a la izquierda y entradas a la derecha, pero eso no responde, es decir, no se adaptará a pantallas más pequeñas. | ||
+ | * En su lugar, usaremos una lista, donde cada etiqueta/ | ||
+ | * Elimine todo lo que esté dentro de la etiqueta < | ||
+ | |||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | * Los campos para el alias y la identidad del héroe pueden ser simples campos de texto. | ||
+ | |||
+ | < | ||
+ | <label for=" | ||
+ | <input type=" | ||
+ | </ | ||
+ | < | ||
+ | <label for=" | ||
+ | <input type=" | ||
+ | </ | ||
+ | |||
+ | * Aquí tenemos una etiqueta para nuestra entrada, usando la etiqueta < | ||
+ | * Luego tenemos una entrada, pero en lugar de ser de < | ||
+ | * Le damos un < | ||
+ | * Hay dos atributos adicionales que no hemos visto antes. < | ||
+ | * Finalmente, tenemos la opción de darle al usuario una pista sobre qué tipo de contenido esperamos aquí usando < | ||
+ | * Guarde y cargue el código para ver cómo se ve en vivo. | ||
+ | |||
+ | ==== Botones de Radio ==== | ||
+ | |||
+ | * Cuando tenemos una entrada con solo unas pocas opciones configuradas y solo se puede seleccionar una a la vez, usamos botones de radio. | ||
+ | * El ejemplo más común de esto es ' | ||
+ | * En este caso queremos saber si nuestro héroe es realmente heroico o villano. Agregue el siguiente código para mostrar esto. | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <input type=" | ||
+ | <input type=" | ||
+ | </ | ||
+ | |||
+ | * He etiquetado esta distinción héroe/ | ||
+ | * Una vez más, los botones de radio usan la etiqueta < | ||
+ | * no < | ||
+ | * Añadimos el texto antes o después de < | ||
+ | * Finalmente, observe el < | ||
+ | * Guarda y sube para ver cómo se ve. | ||
+ | |||
+ | ==== Número ==== | ||
+ | |||
+ | * Nuestro próximo campo es el año en que el héroe apareció por primera vez en un cómic (o película, etc.). | ||
+ | * Se enviará como texto, pero en realidad es un número y podemos ayudar a nuestro usuario especificándolo. | ||
+ | * Agregue el siguiente código a su formulario. | ||
+ | |||
+ | < | ||
+ | <label for=" | ||
+ | <input type=" | ||
+ | </ | ||
+ | |||
+ | * También podemos configurar sizey maxlength, pero veremos mejores formas de administrar esto más adelante. | ||
+ | * Guarde y cargue el código para ver cómo se ve. Casi exactamente lo mismo que una entrada de texto, ¿verdad? | ||
+ | * Tenga en cuenta que tiene flechas hacia arriba y hacia abajo para permitir a los usuarios cambiar el número por incrementos. | ||
+ | * Si tiene un dispositivo móvil para cargar la página, también notará que el teclado cambia automáticamente a una entrada numérica en lugar del diseño de teclado habitual. | ||
+ | |||
+ | ==== Cuadros Desplegables ==== | ||
+ | |||
+ | * Nuestro próximo campo es la fuente del poder del héroe. Este es un tipo de categoría, donde queremos controlar las opciones que se pueden seleccionar. | ||
+ | * Para esto usamos un < | ||
+ | * Copie el siguiente código en su formulario. | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <option value=" | ||
+ | <option value=" | ||
+ | <option value=" | ||
+ | <option value=" | ||
+ | <option value=" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | * Tenemos una serie de opciones enumeradas usando etiquetas < | ||
+ | * En lugar de configurar namepara cada opción individualmente, | ||
+ | * El valor enviado a ' | ||
+ | * Guarde y cargue el archivo para ver que aparece como un cuadro desplegable. | ||
+ | * Finalmente, agregue el botón Enviar para que el formulario funcione. | ||
+ | |||
+ | < | ||
+ | |||
+ | * Guarde y cargue el archivo. | ||
+ | * Agregue algunos datos y haga clic en el botón para enviar sus datos. | ||
+ | * Tenga en cuenta que si elige ' | ||
+ | |||
+ | ==== Consulta de Base de Datos ==== | ||
+ | |||
+ | * También nos gustaría poder agregar las apariencias de cada héroe. Esto se puede hacer de varias maneras, pero vamos a crear un formulario separado para ello. | ||
+ | * Agregue un formulario debajo del existente con la misma acción (' | ||
+ | * Agregue una lista desordenada con dos entradas. | ||
+ | * La primera entrada tendrá una etiqueta de ' | ||
+ | * Para hacer esto, primero necesitaremos configurar nuestra base de datos. | ||
+ | * Agregue la siguiente línea antes de incluir el encabezado. | ||
+ | |||
+ | < | ||
+ | |||
+ | * Ahora cree un nuevo archivo llamado ' | ||
+ | |||
+ | < | ||
+ | // Configurar la conexión a la base de datos | ||
+ | define (' | ||
+ | include DBCONNECT; | ||
+ | $db = ' | ||
+ | $dsn = " | ||
+ | try | ||
+ | { // conectar | ||
+ | $pdo = new MyPDO($dsn, $db_user, $db_pass, $db_options); | ||
+ | } catch (\PDOException $e) { | ||
+ | throw new \PDOException ($e-> | ||
+ | } | ||
+ | ?></ | ||
+ | |||
+ | * En algún momento después de eso (prefiero al final del primer bloque de PHP para que todos los includecomandos estén juntos) agregue algo de código para obtener los nombres de los héroes. | ||
+ | |||
+ | < | ||
+ | $query = " | ||
+ | $args = array(); | ||
+ | $rslt = $pdo-> | ||
+ | $rslt-> | ||
+ | |||
+ | * Ahora podemos recorrer la respuesta y agregar una opción para cada una. | ||
+ | |||
+ | < | ||
+ | <label for=" | ||
+ | <select name=" | ||
+ | <?php | ||
+ | // mostrar la lista de héroes | ||
+ | while($row = $rslt-> | ||
+ | ?> | ||
+ | <option value="<? | ||
+ | <?php | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | * Subir el código y refrescar la página para comprobar que se muestra como queremos. | ||
+ | |||
+ | ==== Casillas de Verificación ==== | ||
+ | |||
+ | * El segundo elemento de la lista en este formulario serán las películas. | ||
+ | * También necesitaremos obtener esta lista de la base de datos. | ||
+ | * Agregue el siguiente código debajo de la consulta de héroe | ||
+ | |||
+ | < | ||
+ | $query = " | ||
+ | $args = array(); | ||
+ | $mrslt = $pdo-> | ||
+ | $mrslt-> | ||
+ | |||
+ | * Ahora muestre cada película debajo de la etiqueta ' | ||
+ | |||
+ | < | ||
+ | // mostrar lista de peliculas | ||
+ | while($row = $mrslt-> | ||
+ | ?> | ||
+ | < | ||
+ | <?php | ||
+ | } | ||
+ | ?></ | ||
+ | |||
+ | |||
+ | * Debe reconocer la mayor parte de este código, ya que es el mismo que el código anterior con algunas modificaciones. < | ||
+ | * Ahora, agreguemos la casilla de verificación | ||
+ | |||
+ | < | ||
+ | |||
+ | * Tenga en cuenta que la entrada de la casilla de verificación es muy similar a una entrada de radio. Tiene un nombre y un valor y un texto para mostrar. | ||
+ | * El nombre es ligeramente diferente. El nombre ' | ||
+ | * Cargue el código guardado y actualice la página. | ||
+ | * Debería ver una lista de películas con una casilla de verificación al frente. | ||
+ | * Desafortunadamente, | ||
+ | |||
+ | ==== GROUP BY ==== | ||
+ | |||
+ | * Para solucionar esto, echemos un vistazo directamente a la base de datos. | ||
+ | * Abra PHPMyAdmin y seleccione la tabla ' | ||
+ | * La lista de películas aparece tal como lo hizo en nuestra página, lo que dice que nuestra consulta funcionó correctamente. | ||
+ | * Nuestro problema es que realmente solo queremos ver cada película una vez. | ||
+ | * Podemos hacerlo usando 'GROUP BY' en nuestra consulta. | ||
+ | * Haga clic en la pestaña ' | ||
+ | |||
+ | < | ||
+ | |||
+ | * Obtendrá un error que indica que hay una ' | ||
+ | * Mira las líneas 4 y 5 para ver esto. Cuando agrupamos a todos los héroes que aparecen en 'Los Vengadores', | ||
+ | * Hay algunos trucos que podemos hacer con números (como probar el total) e incluso podríamos obtener solo la primera entrada, pero por ahora solo queremos el nombre de la película, así que especifíquelo en la consulta. | ||
+ | |||
+ | < | ||
+ | |||
+ | * Ejecute esta consulta y verá que obtenemos una lista de películas, cada una de las cuales aparece solo una vez. Perfecto. | ||
+ | * Ahora coloquemos esto en nuestra consulta en ' | ||
+ | |||
+ | < | ||
+ | $query = " | ||
+ | $args = array(); | ||
+ | $mrslt = $pdo-> | ||
+ | $mrslt-> | ||
+ | |||
+ | * Actualiza la página y comprueba que cada película solo aparece una vez. | ||
+ | |||
+ | ==== Agregar Película ==== | ||
+ | |||
+ | * ¿Qué hará nuestro usuario cuando quiera agregar una apariencia para una película que aún no está en la lista? | ||
+ | * Por ejemplo, Scarlet Witch aparece como una heroína, pero no aparece en ninguna de las películas de la lista. | ||
+ | * Necesitamos una línea donde el usuario pueda agregar otra película. | ||
+ | * Agregue este código después del ciclo (pero antes de la etiqueta < | ||
+ | |||
+ | < | ||
+ | |||
+ | ==== Parámetros Múltiples ==== | ||
+ | |||
+ | * Finalmente, necesitamos nuestro botón de envío antes de la etiqueta de cierre < | ||
+ | |||
+ | < | ||
+ | |||
+ | * Actualice la página, ingrese algunos datos y haga clic en enviar. | ||
+ | * Mire la URL con todos nuestros datos en ella. | ||
+ | * Tenga en cuenta que en lugar de usar comas para separar cada par de nombre/ | ||
+ | * Observe también que cuando envía un campo con dos palabras, el espacio se reemplaza por un < | ||
+ | * Ahora que tenemos todo funcionando, | ||
+ | |||
+ | ==== Codigo Final ==== | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | [[es: |