Tengo 1 formulario con varias casillas de verificación (cada uno 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)
Esto es para un sistema de bandeja de entrada y tengo un botón debajo que deseo (cuando se hace clic) para eliminar todos los mensajes (identificadores de:) $row['Report ID']
que tienen marcada la casilla de verificación.
$check
será igualon
.if($_POST)
- inútil,$_POST
siempre será cierto. Debe verificar si!empty($_POST['check_list'])
en su lugar.array_key_exists('check_list', $_POST) && !empty($_POST['check_list'])
empty()
no causa este error. Del manual:empty() does not generate a warning if the variable does not exist.
Editar Para reflejar lo que dijo @Marc en el comentario a continuación.
Puede hacer un ciclo a través de todos los valores publicados.
HTML:
PHP:
fuente
[]
sintaxis en la definición de campo, lo que hace que PHP cree ese valor $ _POST como una matriz. De lo contrario, será un único valor sin matriz, lo que hará que el bucle foreach () explote.debe nombrar sus casillas de verificación en consecuencia:
entonces puede acceder a todas las casillas marcadas con
PD. asegúrese de escapar correctamente de su salida (
htmlspecialchars()
)fuente
Y después de la publicación, puede recorrerlos:
O obtenga un cierto valor publicado en la página anterior:
fuente
Lo sentimos, viejo tema, pero esta es una pieza importante para mencionar para esto, con la que @JamesRattray y otros estaban teniendo problemas.
NO cierre la
input
etiqueta (usando/>
) cuando intente publicar varios valores en el script PHP. Cuando cierra la etiqueta, finaliza la definición de la matriz y solo tendrá un único valor publicado en su script al enviarlo. 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/...
error de PHP en este caso.EDITAR: Como se señala en los comentarios a continuación, la investigación adicional sugiere que esto depende del DOCTYPE. Si tiene el DOCTYPE configurado 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.
fuente
Es muy simple ¡Presta atención y lo recibirás de inmediato! :)
Creará una matriz html, que luego se enviará a la matriz php. Su código html se verá así:
Donde
[1] [2] [3]
estan losID
s de sus mensajes, lo que significa que seráecho
su$row['Report ID']
en su lugar.Luego, cuando envíe el formulario, su matriz PHP se verá así:
print_r($check_list)
[1] => checked [3] => checked
Dependiendo de cuáles fueron verificados y cuáles no.
Estoy seguro de que puede continuar desde este punto en adelante.
fuente
check_list[]
comenzaría concheck_list[0]
más que concheck_list[1]
.En mi caso necesito que venga en un solo valor, por lo tanto no me vale una matriz.
Con esto me aseguro que los valores sean 1 y separados por coma. Así en MySQL puedo hacer la consulta, venga en matriz o no:
fuente