Caixa de seleção PHP

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 inputelemento com o tipo checkboxseguinte:

<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 POSTmétodo, o $_POSTarray associativo conterá um elemento cuja chave é checkbox_namee 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, $_POSTnã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 truese checkbox_nameexistir 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 foratributo do <label>elemento é igual ao valor do idatributo 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 idpara a caixa de seleção e o foratributo 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.phpLinguagem 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.phparquivo:

<?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.phpcarrega o formulário do get.phparquivo se o método de solicitação HTTP for GET. E carrega o post.phparquivo se o formulário for enviado.

A $errorsvariável é usada para armazenar mensagens de erro.

cabeçalho.php

Terceiro, coloque o seguinte código no header.phparquivo:

<!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.phparquivo contém as tags envolventes correspondentes às tags de abertura do header.phparquivo:

</main>
</body>

</html>Linguagem de código:  HTML, XML  ( xml )

obter.php

Quinto, crie um formulário no get.phparquivo:

<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.phparquivo 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()ou filter_has_var()para verificar se uma caixa de seleção está marcada ou não.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *