Resumo : neste tutorial você aprenderá como usar PHP para processar um formulário com uma ou mais caixas de seleção.
Uma rápida introdução ao elemento checkbox
Uma caixa de seleção permite selecionar um único valor para envio em um formulário. Para criar uma caixa de seleção, você usa o input
elemento com o tipo checkbox
seguinte:
<input type="checkbox" name="checkbox_name" value="checkox_value">
Linguagem de código: HTML, XML ( xml )
Uma caixa de seleção possui dois estados: marcada e desmarcada.
Se você marcar a caixa de seleção e enviar o formulário usando o POST
método, o $_POST
array associativo conterá um elemento cuja chave é checkbox_name
e o valor é checkbox_value
.
echo $_POST['checkbox_name']; // 'checkbox_value'
Linguagem de código: PHP ( php )
Porém, se você desmarcar a caixa de seleção e enviar o formulário, $_POST
não haverá nenhum elemento com key checkbox_name
. Isso significa que a seguinte expressão retorna false
:
isset($_POST['checkbox_name'])
Linguagem de código: PHP ( php )
Para verificar se uma caixa de seleção está marcada, você também pode usar a filter_has_var()
função como esta:
if(filter_has_var(INPUT_POST,'checkbox_name')) {
// ...
}
Linguagem de código: JavaScript ( javascript )
A filter_has_var()
função retorna true
se checkbox_name
existir no arquivo INPUT_POST
.
Uma caixa de seleção não tem rótulo. Portanto, você deve sempre usar uma caixa de seleção com um <label>
elemento como este:
<input type="checkbox" name="agree" id="agree">
<label for="agree">I agree</label>
Linguagem de código: HTML, XML ( xml )
Neste exemplo, o valor do for
atributo do <label>
elemento é igual ao valor do id
atributo da caixa de seleção. Ao associar um rótulo a uma caixa de seleção, você pode clicar no rótulo para marcar ou desmarcar a caixa de seleção.
Outra forma de associar uma caixa de seleção a um rótulo é colocar a caixa de seleção dentro do rótulo assim:
<label>
<input type="checkbox" name="agree"> I agree
</label>
Linguagem de código: HTML, XML ( xml )
Nesse caso, você não precisa especificar o id
para a caixa de seleção e o for
atributo para o rótulo.
Um exemplo simples de caixa de seleção PHP
Criaremos um formulário simples com uma caixa de seleção e um botão de envio.
Primeiro, crie o seguinte diretório e estrutura de arquivos:
.
├── css
│ └── style.css
├── inc
│ ├── .htaccess
│ ├── get.php
│ └── post.php
└── index.php
Linguagem de código: texto simples ( texto simples )
Arquivo | Diretório | Descrição |
---|---|---|
index.php | . | Contém a lógica principal que carrega get.php ou post.php dependendo do método de solicitação HTTP |
cabeçalho.php | Inc. | Contém o código do cabeçalho |
rodapé.php | Inc. | Contém o código do rodapé |
obter.php | Inc. | Contém o código para mostrar um formulário com uma caixa de seleção quando a solicitação HTTP for GET. |
post.php | Inc. | Contém o código para lidar com a solicitação POST |
.htaccess | Inc. | Impedir o acesso direto aos arquivos no diretório inc |
estilo.css | css | Contém o código CSS |
index.php
Segundo, adicione o seguinte código ao index.php
arquivo:
<?php
require __DIR__ . '/inc/header.php';
$errors = [];
$request_method = $_SERVER['REQUEST_METHOD'];
if ($request_method === 'GET') {
require __DIR__ . '/inc/get.php';
} elseif ($request_method === 'POST') {
require __DIR__ . '/inc/post.php';
}
if ($errors) {
require __DIR__ . '/inc/get.php';
}
require __DIR__ . '/inc/footer.php';
Linguagem de código: PHP ( php )
O index.php
carrega o formulário do get.php
arquivo se o método de solicitação HTTP for GET. E carrega o post.php
arquivo se o formulário for enviado.
A $errors
variável é usada para armazenar mensagens de erro.
cabeçalho.php
Terceiro, coloque o seguinte código no header.php
arquivo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>PHP Checkbox</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body class="center">
<main>
Linguagem de código: HTML, XML ( xml )
rodapé.php
Quarto, o footer.php
arquivo contém as tags envolventes correspondentes às tags de abertura do header.php
arquivo:
</main>
</body>
</html>
Linguagem de código: HTML, XML ( xml )
obter.php
Quinto, crie um formulário no get.php
arquivo:
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
<div>
<label for="agree"> <input type="checkbox" name="agree" value="yes" id="agree" /> I agree to the <a href="#" title="term of service"> Term of Service</a></label>
<small class="error"><?php echo $errors['agree'] ?? '' ?>
</small>
</div>
<div>
<button type="submit">Join Us</button>
</div>
</form>
Linguagem de código: PHP ( php )
post.php
Sexto, adicione o seguinte código ao post.php
arquivo para limpar e validar os dados do formulário:
<?php
// sanitize the value
$agree = filter_input(INPUT_POST, 'agree', FILTER_SANITIZE_STRING);
// check against the valid value
if ($agree) {
echo 'Thank you for joining us!';
} else {
$errors['agree'] = 'To join us, you need to agree to the TOS.';
}
Linguagem de código: PHP ( php )
Resumo
- Use
isset()
oufilter_has_var()
para verificar se uma caixa de seleção está marcada ou não.