Obtener POST PUBLICAR desde múltiples casillas de verificación


Tengo 1 formulario con múltiples casillas de verificación (cada una con el código):

<input type="checkbox" name="check_list" value="<? echo $row['Report ID'] ?>">

Donde $row['Report ID'] es una clave primaria en una base de datos, por lo que cada valor es diferente.

¿Cómo podría saber qué casillas de verificación se han marcado? (Tal vez múltiples)

(En contexto:) Es para un sistema de bandeja de entrada y tengo un botón debajo que quiero (cuando se hace clic) para eliminar todos los mensajes (id de: $row['Report ID']) que tienen la casilla de verificación marcada...

¿Cómo haría esto?

Gracias mucho...

Author: Pete, 2011-02-15

6 answers

Establezca el nombre en el formulario en check_list[] y podrá acceder a todas las casillas de verificación como una matriz($_POST['check_list'][]).

Aquí hay una pequeña muestra según lo solicitado:

<form action="test.php" method="post">
    <input type="checkbox" name="check_list[]" value="value 1">
    <input type="checkbox" name="check_list[]" value="value 2">
    <input type="checkbox" name="check_list[]" value="value 3">
    <input type="checkbox" name="check_list[]" value="value 4">
    <input type="checkbox" name="check_list[]" value="value 5">
    <input type="submit" />
</form>
<?php
if(!empty($_POST['check_list'])) {
    foreach($_POST['check_list'] as $check) {
            echo $check; //echoes the value set in the HTML form for each checked checkbox.
                         //so, if I were to check 1, 3, and 5 it would echo value 1, value 3, value 5.
                         //in your case, it would echo whatever $row['Report ID'] is equivalent to.
    }
}
?>
 298
Author: Sean Walsh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-06 06:10:00

Edita Para reflejar lo que @Marc dijo en el comentario a continuación.

Puede hacer un bucle a través de todos los valores publicados.

HTML:

<input type="checkbox" name="check_list[]" value="<?=$rowid?>" />
<input type="checkbox" name="check_list[]" value="<?=$rowid?>" />
<input type="checkbox" name="check_list[]" value="<?=$rowid?>" />

PHP:

foreach($_POST['check_list'] as $item){
  // query to delete where item = $item
}
 21
Author: Scone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-30 14:11:43

Usted tiene que nombrar sus casillas de verificación en consecuencia:

<input type="checkbox" name="check_list[]" value="…" />

Luego puede acceder a todas las casillas de verificación marcadas con

// loop over checked checkboxes
foreach($_POST['check_list'] as $checkbox) {
   // do something
}

Ps. asegúrese de escapar correctamente de su salida (htmlspecialchars())

 15
Author: knittl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-09 09:42:24
<input type="checkbox" name="check_list[<? echo $row['Report ID'] ?>]" value="<? echo $row['Report ID'] ?>">

Y después del post, usted puede recorrer a través de ellos:

   if(!empty($_POST['check_list'])){
     foreach($_POST['check_list'] as $report_id){
        echo "$report_id was checked! ";
     }
   }

O obtener un cierto valor publicado de la página anterior:

if(isset($_POST['check_list'][$report_id])){
  echo $report_id . " was checked!<br/>";
}
 12
Author: Mārtiņš Briedis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-13 17:04:23

Lo siento, viejo tema, pero esta es una pieza importante para mencionar para esto, que @JamesRattray y otros estaban teniendo problemas con.

NO cierre automáticamente la etiqueta input (usando />) cuando esté tratando de publicar varios valores en el script PHP. Cuando auto cierre la etiqueta, termina la definición de matriz y solo tendrá un solo valor publicado en su script en el envío. En efecto, la respuesta de @Scone puede no funcionar hasta que se cambie />.

Esto es lo que causa el Warning: Invalid argument supplied for foreach() in /home1/... PHP error en este caso.

EDITAR: Como se indica en los comentarios a continuación, investigaciones adicionales sugieren que esto depende de DOCTYPE. Si tiene el DOCTYPE establecido para XHTML, requerirá que la etiqueta de entrada esté cerrada. Si tiene un conjunto DOCTYPE de HTML5, requerirá que la etiqueta de entrada no se cierre. También existe la posibilidad de que esto pueda ser dictado por el navegador en el que el usuario está viendo la página y qué tan bien sigue el DOCTYPE especificado en el código.

 12
Author: Jon Gallup,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-07 15:08:54

Es bastante simple. ¡Presta atención y lo conseguirás de inmediato! :)

Creará una matriz html, que luego se enviará a la matriz php. Su código html se verá así:

<input type="checkbox" name="check_list[1]" alt="Checkbox" value="checked">
<input type="checkbox" name="check_list[2]" alt="Checkbox" value="checked">
<input type="checkbox" name="check_list[3]" alt="Checkbox" value="checked">

Donde [1] [2] [3] son IDs de sus mensajes, lo que significa que usted echo su $row['Report ID'] en su lugar.

Entonces, cuando envíes el formulario, tu array PHP se verá así:

print_r($check_list)

[1] => checked [3] => checked

Dependiendo de cuáles se verificaron y cuáles no.

Estoy claro que puedes continuar desde este punto en adelante.

 5
Author: Richard Rodriguez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-10 04:38:02