Solución:
Un buen método que es uno de mis favoritos y para muchos, estoy seguro, es hacer uso de foreach
que 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 remedio que usar foreach
, y es por eso que solo obtiene un valor devuelto de su matriz.
Aquí hay un ejemplo usando $_GET
. Sin embargo, puedes usar $_POST
y necesitaría hacer coincidir ambas directivas 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 tu manejador
<?php
$name = $_GET['color'];
// optional
// echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}
?>
Suponiendo que haya elegido rojo, verde, azul y cian como colores, aparecerá así:
rojo
verde
azul
cian
##OPCION 2
También puede 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.";
}
?>
(No es action="get"
o action="post"
es method="get"
o method="post"
Intenta hacerlo usando el método de publicación:
<form action="third.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>
y en third.php
o para un campo pericular, puede obtener valor en:
$_POST['color'][0] //for RED
$_POST['color'][1] // for GREEN
Lo que sugiero es que es mejor usar la publicación que obtener. aquí hay algunas diferencias entre post VS get
Algunas notas sobre las 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
- 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 las 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
- 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.";
}
?>