Obtener valores de casilla de verificación al enviar

Resuelto localhost asked hace 54 años • 10 respuestas

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.phppá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.

localhost avatar Jan 01 '70 08:01 localhost
Aceptado

Un buen método, que es uno de mis favoritos y del que estoy seguro para muchos, es utilizar el foreachcual 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 $_POSTy 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.phpcomo 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.";
}

?>
Funk Forty Niner avatar Aug 24 '2013 23:08 Funk Forty Niner

Lo que sugiero es que es mejor usar publicar que obtener. aquí hay algunas diferencias entre post VS get

Algunas notas sobre solicitudes GET:

  1. Las solicitudes GET se pueden almacenar en caché
  2. Las solicitudes GET permanecen en el historial del navegador
  3. Las solicitudes GET se pueden marcar como favoritas
  4. Las solicitudes GET nunca deben usarse cuando se trata de datos confidenciales
  5. Las solicitudes GET tienen restricciones de longitud
  6. Las solicitudes GET deben usarse solo para recuperar datos

Algunas notas sobre solicitudes POST:

  1. Las solicitudes POST nunca se almacenan en caché
  2. Las solicitudes POST no permanecen en el historial del navegador.
  3. Las solicitudes POST no se pueden marcar como favoritas
  4. 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.";

    }

    ?>
Sathya Baman avatar Jun 10 '2014 04:06 Sathya Baman

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!";
    }
}
?>
 avatar Oct 11 '2018 16:10