Gerar combobox em HTML a partir do PHP

Gerar combobox em HTML a partir do PHP

É muito comum o uso de listas suspensas (comboboxes) em formulários web, para que o usuário possa selecionar um item ao preencher o formulário. Os itens que compõem uma lista suspensa podem ser inseridos no combobox por meio de digitação no código HTML, porém esse método é altamente ineficiente, pois significa que toda vez que for necessário alterar, excluir ou acrescentar um item na lista, será necessário alterar o código da página.

Uma forma muito mais eficiente de preencher uma lista em um formulário é usando código em PHP. Neste tutorial, vamos mostrar como preencher um combobox com dados armazenados em um banco de dados, de modo que seja possível incluir ou excluir itens da lista manipulando a tabela que os contém – o que pode ser feito criando-se funções e embutindo em um formulário na própria página.

A aplicação

A aplicação será composta de três arquivos:

  • Um arquivo principal, que chamarei de itens.php, que contém um formulário e um combobox criado com o elemento HTML option, que irá mostrar a listagem de itens (sarei uma lista de frutas para seleção)
  • O script processaLista.php, que receberá o item selecionado no combobox para processamento (aqui, somente o exibirei na página).
  • Arquivo BDdados.php, que irá armazenar os dados para conexão ao banco de dados.

Além disso, iremos criar uma tabela chamada de listas no banco de dados banco_teste, que será preenchida com os nomes dos itens (frutas) que iremos exibir na lista suspensa do formulário HTML.

Códigos-fonte

A seguir temos os códigos de cada um dos arquivos que serão criados para o projeto:

1 – Arquivo principal itens.php:

<?php header("Content-type: text/html; charset=utf-8");

include_once('BDdados.php');

$strcon = mysqli_connect($servidor,$usuario,$senha,$banco);
mysqli_set_charset($strcon, 'utf8'); // Configurar a conexão para usar codificação UTF-8

if (!$strcon) {
 die('Não foi possível conectar ao MySQL');
}
 $sql = "SELECT Item FROM listas ORDER BY Item";
 $resultado = mysqli_query($strcon,$sql) or die(mysql_error()."<br>Erro ao executar a inserção dos dados");

if (mysqli_num_rows($resultado)!=0){
 echo '<form name="Combobox" action="processaLista.php" method="POST">';
 echo '<select name="itens" id="itens">
 <option value=" " selected="selected">Escolha uma fruta:</option>';
 while($elemento = mysqli_fetch_array($resultado))
 {
   $nomeItem = $elemento['Item'];
   echo '<option value="'.$nomeItem.'">'.$nomeItem.'</option>';
 }
 echo '</select>';
echo '<input type="submit" name="btnEnvia" value="Enviar">';
echo '</form>';
}
?>

2 – Script processaLista.php, que receberá o item selecionado no combobox pelo usuário, para tratamento e exibição na página:

<?php header("Content-type: text/html; charset=utf-8");
$itemSelecionado = $_POST['itens'];
echo "A fruta selecionada no combobox foi " . $itemSelecionado . "<br>";
?>

3 – Arquivo BDdados.php, com dados do banco a conectar:

<?php 
 // Dados de conexão ao banco de dados
 $servidor = 'localhost';
 $banco = 'banco_teste';
 $usuario = 'fabio';
 $senha = '123'; 
?>

Banco de dados

E a seguir, o código para criação da tabela no banco_teste:

Criar tabela para listagem e inserir os itens na coluna Item, do banco banco_teste:

 CREATE TABLE listas (
 ID_item SMALLINT PRIMARY KEY AUTO_INCREMENT,
 Item VARCHAR(40) NOT NULL)
 CHARACTER SET=utf8 COLLATE utf8_unicode_ci;
 
 INSERT INTO listas (Item)
 VALUES
 ('Laranja'),
 ('Banana'),
 ('Maçã'),
 ('Uva'),
 ('Caqui'),
 ('Caju');

SELECT * FROM listas;

Não se esqueça de dar permissão de acesso no banco ao usuário que o irá acessar – no caso, usuário fabio:

GRANT ALL ON banco_teste.* TO fabio@localhost;

Aplicação finalizada

Após criar os arquivos e salvá-los no servidor, basta abrir a página principal e testar a aplicação:

Combobox preenchido via PHP com MySQL

É isso aí! até a próxima!

Sobre Fábio dos Reis (1332 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*