Resumo : neste tutorial, você aprenderá como usar o <select>
elemento para criar uma lista suspensa e uma caixa de listagem e como obter os valores selecionados do <select>
elemento em PHP.
Uma rápida introdução ao elemento <select>
O <select>
é um elemento HTML que fornece uma lista de opções. O seguinte mostra como definir um <select>
elemento em HTML:
<label for="color">Background Color:</label>
<select name="color" id="color">
<option value="">--- Choose a color ---</option>
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
</select>
Linguagem de código: HTML, XML ( xml )
O <select>
elemento tem dois atributos importantes:
id
–id
associa o<select>
elemento a um<label>
elementoname
– oname
atributo associado ao valor para o envio de um formulário.
O <option>
elemento aninhado dentro do <select>
elemento define uma opção no menu. Cada opção possui um value
atributo. O value
atributo armazena dados enviados ao servidor quando é selecionado.
Se uma opção não tiver o value
atributo, o value
padrão do atributo será o texto dentro do <option>
elemento.
Para selecionar uma opção quando a página for carregada pela primeira vez, você pode adicionar o selected
atributo ao <option>
elemento.
O exemplo a seguir seleciona a Green
opção quando a página é carregada pela primeira vez:
<label for="color">Background Color:</label>
<select name="color" id="color">
<option value="">--- Choose a color ---</option>
<option value="red">Red</option>
<option value="green" selected>Green</option>
<option value="blue">Blue</option>
</select>
Linguagem de código: HTML, XML ( xml )
Obtendo o valor selecionado de um elemento <select>
Criaremos um formulário que usa um <select>
elemento.
Primeiro, crie as seguintes pastas e arquivos:
├── css
| └── style.css
├── inc
| ├── footer.php
| ├── get.php
| ├── header.php
| └── post.php
└── index.php
Linguagem de código: JavaScript ( javascript )
Segundo, coloque o seguinte código no arquivo header.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/style.css">
<title>PHP select option</title>
</head>
<body class="center">
<main>
Linguagem de código: HTML, XML ( xml )
Terceiro, coloque o seguinte código no arquivo footer.php:
</main>
</body>
</html>
Linguagem de código: HTML, XML ( xml )
Quarto, adicione o seguinte código ao arquivo get.php para criar um formulário que possui um <select>
elemento com um botão de envio:
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
<div>
<label for="color">Background Color:</label>
<select name="color" id="color">
<option value="">--- Choose a color ---</option>
<option value="red">Red</option>
<option value="green" selected>Green</option>
<option value="blue">Blue</option>
</select>
</div>
<div>
<button type="submit">Select</button>
</div>
</form>
Linguagem de código: HTML, XML ( xml )
O formulário usa o POST
método para enviar dados ao servidor web.
Por fim, adicione o seguinte código ao arquivo post.php:
<?php
$color = filter_input(INPUT_POST, 'color', FILTER_SANITIZE_STRING);
?>
<?php if ($color) : ?>
<p>You selected <span style="color:<?php echo $color ?>"><?php echo $color ?></span></p>
<p><a href="index.php">Back to the form</a></p>
<?php else : ?>
<p>You did not select any color</p>
<?php endif ?>
Linguagem de código: HTML, XML ( xml )
Para obter o valor selecionado do <select>
elemento, você usa a $_POST
variável superglobal se o método do formulário for POST
e $_GET
se o método do formulário for GET
.
Alternativamente, você pode usar a função filter_input() para limpar o valor selecionado.
Se você selecionar a primeira opção do <select>
elemento, o valor selecionado ficará vazio. Caso contrário, o valor selecionado será vermelho, verde ou azul.
Selecione com várias opções
Para ativar múltiplas seleções, adicione o multiple
atributo ao <select>
elemento:
<select name="colors[]" id="colors" multiple>
...
</select>
Linguagem de código: HTML, XML ( xml )
Quando você seleciona várias opções de um <select>
elemento e envia o formulário, o nome conterá vários valores em vez de um único valor. Para obter vários valores selecionados, você adiciona os colchetes ( [])
após o nome do <select>
elemento.
Vamos dar uma olhada em um exemplo de uso de um <select>
elemento com múltiplas seleções .
Primeiro, crie as seguintes pastas e arquivos:
.
├── css
| └── style.css
├── inc
| ├── footer.php
| ├── get.php
| ├── header.php
| └── post.php
└── index.php
Linguagem de código: JavaScript ( javascript )
Segundo, coloque o seguinte código no arquivo header.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>PHP Listbox</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body class="center">
<main>
Linguagem de código: HTML, XML ( xml )
Terceiro, adicione o seguinte código ao arquivo footer.php:
</main>
</body>
</html>
Linguagem de código: HTML, XML ( xml )
Quarto, inclua os arquivos header.php
e footer.php
em index.php
:
<?php
require __DIR__ . '/inc/header.php';
$request_method = strtoupper($_SERVER['REQUEST_METHOD']);
if ($request_method === 'GET') {
require __DIR__ . '/inc/get.php';
} elseif ($request_method === 'POST') {
require __DIR__ . '/inc/post.php';
}
require __DIR__ . '/inc/footer.php';
Linguagem de código: HTML, XML ( xml )
Se a solicitação HTTP for GET, o arquivo index.php mostrará um formulário do arquivo get.php. Quando o formulário for enviado, o arquivo post.php cuidará do envio do formulário.
Quinto, crie um formulário que contenha um <select>
elemento com o multiple
atributo no get.php
arquivo. O nome do <select>
elemento possui colchetes de abertura e fechamento []
para que o PHP possa criar um array que contenha os valores selecionados.
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
<div>
<label for="colors">Background Color:</label>
<select name="colors[]" id="colors" multiple>
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
<option value="purple">Purple</option>
<option value="magenta">Magenta</option>
<option value="cyan">Cyan</option>
</select>
</div>
<div>
<button type="submit">Submit</button>
</div>
</form>
Linguagem de código: HTML, XML ( xml )
Por fim, lide com o envio do formulário no post.php
arquivo:
<?php
$selected_colors = filter_input(
INPUT_POST,
'colors',
FILTER_SANITIZE_STRING,
FILTER_REQUIRE_ARRAY
);
?>
<?php if ($selected_colors) : ?>
<p>You selected the following colors:</p>
<ul>
<?php foreach ($selected_colors as $color) : ?>
<li style="color:<?php echo $color ?>"><?php echo $color ?></li>
<?php endforeach ?>
</ul>
<p>
</p>
<?php else : ?>
<p>You did not select any color.</p>
<?php endif ?>
<a href="index.php">Back to the form</a>
Linguagem de código: HTML, XML ( xml )
O arquivo post.php usa a filter_input()
função para obter as cores selecionadas como um array. Se você selecionar uma ou mais cores, o arquivo post.php irá exibi-las.
Resumo
- Use o
<select>
elemento para criar uma lista suspensa. - Use o
multiple
atributo para criar uma lista que permite seleções múltiplas. - Use
$_POST
para obter o valor selecionado do elemento select se o método do formulário forPOST
(ou$_GET
se o método do formulário forGET
). - Adicione colchetes (
[]
) após o nome do<select>
elemento para obter vários valores selecionados.