Eu tenho 1 formulário com várias caixas de seleção nele (cada uma com o código):
<input type="checkbox" name="check_list" value="<? echo $row['Report ID'] ?>">
Onde $row['Report ID']
está uma chave primária em um banco de dados, para que cada valor seja diferente.
Como posso saber quais caixas de seleção foram marcadas? (Talvez múltiplos)
Isto é para um sistema de caixa de entrada e eu tenho um botão abaixo do qual desejo (quando clicado) excluir todas as mensagens (IDs de:) $row['Report ID']
que têm a caixa de seleção marcada.
$check
será igualon
.if($_POST)
- inútil,$_POST
sempre será verdade. Você deve verificar se em!empty($_POST['check_list'])
vez disso.array_key_exists('check_list', $_POST) && !empty($_POST['check_list'])
empty()
não causa esse erro. Do manual:empty() does not generate a warning if the variable does not exist.
Editar Para refletir o que @Marc disse no comentário abaixo.
Você pode fazer um loop através de todos os valores lançados.
HTML:
PHP:
fonte
[]
sintaxe na definição de campo, o que faz o PHP criar esse valor $ _POST como uma matriz. Caso contrário, será um único valor sem matriz, causando a explosão do loop foreach ().você deve nomear suas caixas de seleção de acordo:
você pode acessar todas as caixas de seleção marcadas com
ps. escape da saída corretamente (
htmlspecialchars()
)fonte
E após a postagem, você pode percorrê-las:
Ou obtenha um determinado valor publicado na página anterior:
fonte
Desculpe, tópico antigo, mas esta é uma peça importante a ser mencionada, com a qual o @JamesRattray e outros estavam tendo problemas.
NÃO feche
input
automaticamente a tag (usando/>
) quando estiver tentando postar vários valores no script PHP. Quando você fecha a tag automaticamente, ela termina a definição da matriz e você terá apenas um único valor postado no seu script no envio. Com efeito, a resposta da @Scone pode não funcionar até que ela/>
seja alterada.É isso que causa o
Warning: Invalid argument supplied for foreach() in /home1/...
erro do PHP neste caso.EDIT: Como observado nos comentários abaixo, pesquisas adicionais sugerem que isso depende do DOCTYPE. Se você tiver o DOCTYPE definido para XHTML, será necessário que a tag de entrada seja fechada. Se você tiver um conjunto DOCTYPE de HTML5, será necessário que a tag de entrada não seja fechada. Também há uma chance de que isso possa ser determinado pelo navegador em que o usuário está visualizando a página e quão bem ela segue o DOCTYPE especificado no código.
fonte
É bem simples. Preste atenção e você receberá imediatamente! :)
Você criará uma matriz html, que será enviada para a matriz php. Seu código html ficará assim:
Onde
[1] [2] [3]
são osID
s de suas mensagens, o que significa que você vaiecho
o seu$row['Report ID']
em seu lugar.Então, quando você enviar o formulário, sua matriz PHP ficará assim:
print_r($check_list)
[1] => checked [3] => checked
Dependendo de quais foram verificadas e quais não foram.
Tenho certeza que você pode continuar deste ponto em diante.
fonte
check_list[]
começaria comcheck_list[0]
e nãocheck_list[1]
.No meu caso, o que é necessário para vingar em um único valor, por tanto quanto eu não tiver uma matriz.
Conhece-me aseguro que os valores sean 1 e separados por coma. Como no MySQL, você pode consultar, vingar na matriz ou não:
fonte