Obtener valores de casilla de verificación al enviar
Tengo 6 opciones, quiero obtener los valores marcados para almacenarlos en la variable de la segunda página. ¿Cómo sigo haciendo eso?
<form action="third.php" method="get">
<!-- Choices -->
Red <input type="checkbox" name="color[]" id="color" value="Red">
Green <input type="checkbox" name="color[]" id="color" value="Green">
Blue <input type="checkbox" name="color[]" id="color" value="Blue">
Cyan <input type="checkbox" name="color[]" id="color" value="Cyan">
Magenta <input type="checkbox" name="color[]" id="color" value="Magenta">
Yellow <input type="checkbox" name="color[]" id="color" value="Yellow">
Black <input type="checkbox" name="color[]" id="color" value="Black">
<!-- Submit -->
<input type="submit" value="submit">
</form>
Y third.php
página:
$color = $_GET['color'];
echo 'The color is '.$color;
Si lo elimino []
, obtengo el color activado, cuando lo hago así, color[]
aparece un aviso que dice:
Conversión de matriz a cadena
Lo que quiero es el valor de las casillas marcadas para poder almacenarlo en una variable.
Un buen método, que es uno de mis favoritos y del que estoy seguro para muchos, es utilizar el foreach
cual generará cada color que elija y aparecerá en la pantalla, uno debajo del otro.
Cuando se trata de usar casillas de verificación, no tiene más opción que usar foreach
, y es por eso que solo obtiene un valor devuelto de su matriz.
Aquí hay un ejemplo usando $_GET
. Sin embargo, puede usar $_POST
y necesitaría hacer que ambas directivas coincidan en ambos archivos para que funcionen correctamente.
###FORMULARIO HTML
<form action="third.php" method="get">
Red<input type="checkbox" name="color[]" value="red">
Green<input type="checkbox" name="color[]" value="green">
Blue<input type="checkbox" name="color[]" value="blue">
Cyan<input type="checkbox" name="color[]" value="cyan">
Magenta<input type="checkbox" name="color[]" value="Magenta">
Yellow<input type="checkbox" name="color[]" value="yellow">
Black<input type="checkbox" name="color[]" value="black">
<input type="submit" value="submit">
</form>
###PHP (usando $_GET) usando third.php
como controlador
<?php
$name = $_GET['color'];
// optional
// echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}
?>
Suponiendo que haya elegido como colores rojo, verde, azul y cian, aparecerá así:
rojo
verde
azul
cian
##OPCION 2
También puedes comprobar si se eligió un color. Si no se elige ninguno, aparecerá un mensaje separado.
<?php
$name = $_GET['color'];
if (isset($_GET['color'])) {
echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}
} else {
echo "You did not choose a color.";
}
?>
##Opciones adicionales: Para aparecer como una lista: ( <ul></ul>
puede ser reemplazado por <ol></ol>
)
<?php
$name = $_GET['color'];
if (isset($_GET['color'])) {
echo "You chose the following color(s): <br>";
echo "<ul>";
foreach ($name as $color){
echo "<li>" .$color."</li>";
}
echo "</ul>";
} else {
echo "You did not choose a color.";
}
?>
Lo que sugiero es que es mejor usar publicar que obtener. aquí hay algunas diferencias entre post VS get
Algunas notas sobre solicitudes GET:
- Las solicitudes GET se pueden almacenar en caché
- Las solicitudes GET permanecen en el historial del navegador
- Las solicitudes GET se pueden marcar como favoritas
- Las solicitudes GET nunca deben usarse cuando se trata de datos confidenciales
- Las solicitudes GET tienen restricciones de longitud
- Las solicitudes GET deben usarse solo para recuperar datos
Algunas notas sobre solicitudes POST:
- Las solicitudes POST nunca se almacenan en caché
- Las solicitudes POST no permanecen en el historial del navegador.
- Las solicitudes POST no se pueden marcar como favoritas
- Las solicitudes POST no tienen restricciones en la longitud de los datos.
código HTML
<html>
<head></head>
<body>
<form action="output.php" method="post">
Red<input type="checkbox" name="color[]" id="color" value="red">
Green<input type="checkbox" name="color[]" id="color" value="green">
Blue<input type="checkbox" name="color[]" id="color" value="blue">
Cyan<input type="checkbox" name="color[]" id="color" value="cyan">
Magenta<input type="checkbox" name="color[]" id="color" value="Magenta">
Yellow<input type="checkbox" name="color[]" id="color" value="yellow">
Black<input type="checkbox" name="color[]" id="color" value="black">
<input type="submit" value="submit">
</form>
<body>
</html>
código PHP
<?php
if(isset($_POST['color'])) {
$name = $_POST['color'];
echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}} // end brace for if(isset
else {
echo "You did not choose a color.";
}
?>
Es muy sencillo.
El campo de la casilla de verificación es como un texto de entrada. Si no escribe nada en el campo, dirá que el campo no existe.
<form method="post">
<input type="checkbox" name="check">This is how it works!<br>
<button type="submit" name="submit">Submit</button>
</form>
<?php
if(isset($_POST['submit'])) {
if(!isset($_POST['check'])) {
echo "Not selected!";
}else{
echo "Selected!";
}
}
?>