PHP
Preenchendo um Select em HTML dinamicamente com Banco de Dados
No artigo de hoje aprenderemos como fazer um combobox em HTML totalmente dinâmico através do PHP e MySql, utilizando a antiga API MySql do PHP, e com o método mais utilizado hoje em dia o PDO.

Preencher um select/combobox não é uma tarefa difícil como talvez possa parecer, mas é claro que necessita de um conhecimento prévio da linguagem PHP e Banco de Dados para manipular os dados.
No arquivo conexao.php estabelecemos a conexão com a base de dados MySql, para preencher com dados da tabela o (select/combobox). O arquivo conexão é o responsável por fazer a conexão de sua aplicação com seu banco de dados.
OBS: Você pode criar seu Bando de Dados usando a interface de alguma ferramenta como o phpMyAdmin, que na qual mostro nesse artigo Como Criar Banco de Dados, ou você pode cria-lo diretamente com php, fica de sua preferência.
conexao.php
mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('banco_exemplo') or die(mysql_error());
Esse trecho de código é o responsável pela conexão, na qual ele recebe como parâmetro o servidor em que você está, o nome de usuário e a senha de usuário, e depois ele seleciona o banco de dados que você deseja trabalhar, muito simples. Existe outra maneira de se fazer a conexão usando o método PDO do PHP, na qual ficaria dessa maneira:
public function conectar() {
try {
$this->pdo = new PDO("mysql:host=localhost;dbname='banco_exemplo'",
"root",//usuario
"",//senha
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
}
Tendo ele a mesma função porém escrito de outra maneira.
Feito a conexão, vamos ao BD, caso você ainda não tenha criado seu BD, ou prefira cria-lo via script vou mostrar um exemplo de como se fazer via PHP.
//estabelecemos conexão com o banco de dados
mysql_connect('localhost','root','') or die(mysql_error());
//criamos o banco de dados através do script php
$create_base = mysql_query("CREATE DATABASE IF NOT EXISTS banco_exemplo;") or die(mysql_error());
//seleciona o banco de dados
mysql_select_db('banco_exemplo') or die(mysql_error());
if($create_base) {
//criamos a tabela no banco de dados
mysql_query("CREATE TABLE IF NOT EXISTS produto (
id INT(11) AUTO_INCREMENT,
descricao VARCHAR(100) NOT NULL,
preco FLOAT NOT NULL,
PRIMARY KEY(id)
);") or die(mysql_error());
//verifica se existe registros no banco
$query = mysql_query("SELECT id, descricao, preco FROM produto");
//se não existir registros então insere os valores abaixo
if(empty($query)) {
//insere alguns dados para os exemplos
mysql_query("INSERT INTO produto(descricao, preco) VALUES
('Notebook', '2800'),
('Nobreak', '800'),
('Roteador Wireless', '180');
") or die(mysql_error());
}
}
Pronto você criou seu BD via PHP e inseriu dados nele para fazermos o select no combobox.
No arquivo index.php, logo abaixo, foi criado o formulário com o select/combobox para receber os dados da sua tabela produto criada anteriormente.
Logo no início do script, incluímos o arquivo conexao.php de conexão com o MySql para podermos realizar as consultas.
Na função mysql_query() passamos a string SQL de seleção de dados no banco e atribuímos o valor retornado para a variável $query.
E através da função mysql_fetch_array() criamos um array com os dados da varável $query.
Por fim, percorremos o array $prod apresentando cada registro dentro do select/combobox.
index.php
<?php
//chama o arquivo de configuração com o banco
require conexao.php';
//seleciona os dados da tabela produto
$query = mysql_query("SELECT id, descricao, preco FROM produto");
// abaixo montamos um formulário em html
// e preenchemos o select com dados
?>
<form name="produto" method="post" action="">
<label>Selecione um produto</label>
<select>
<option>Selecione...</option>
//abrimos um contador while para que enquanto houver registros ele continua no loopin
<?php while($prod = mysql_fetch_array($query)) { ?>
<option value="<?php echo $prod['id'] ?>"><?php echo $prod['descricao'] ?></option>
<?php } ?>
</select>
</form>
Pronto, feito isso já temos um select preenchido dinamicamente através da tabela produto criada anteriormente, você pode implementar da forma que quiser, mas o conceito é praticamente o mesmo, vou mostrar também como seria em PDO, é muito parecido mudando algumas coisas apenas na forma de programar, mas a lógica segue a mesma.
<label >Produto:</label>
<select name="produto" id="produto" >
<?php
require_once('class/Conexao.class.php');
$pdo = new Conexao();
$resultado = $pdo->select("SELECT * FROM categoria");
$pdo->desconectar();
if(count($resultado)){
foreach ($resultado as $res) {
?>
<option value="<?php echo $res['id’];?>" ><?php echo $res[‘descricao'];?></option>
<?php
}
}
?>
</select>
Bem semelhante não ?! Porém é usado o conceito de classe e métodos, e lembrando que a classe instanciada e o método utilizado não foram mostrados, pois o foco é o select e não sobre classes, para saber mais sobre classe com php acesse no artigo Criando Classe com PHP.
Dúvidas, críticas ou sugestões deixe seu comentário, e bom estudo !
Gigasystems Login:
Informe seu e-mail abaixo para continuar!
XVeja Também:
Artigos Relacionados a categoria: PHP
Cotações para compra e venda de Moedas estrangeiras com PHP
27 julho de 2016
Gerenciador de dependências Composer
14 janeiro de 2016
Erro ao acessar um arquivo externo com o comando file_get_content
04 novembro de 2015
Baixando anexo do email no servidor com IMAP e PHP
27 agosto de 2015
Olá, deixe seu comentário para Preenchendo um Select em HTML dinamicamente com Banco de Dados
benedito junior
10:30
11:00
10:20
GOSTARIA DE UMA FORMA DE FAZER COM QUE QUANDO CHEGAR A HORA EM QUE ESTA MARCANDO CADA UM DOS OPTIONS, ELE DESAPARECESSE DO FORMULARIO E SO REAPARECER NO DIA SEGUINTE
Nilton Oliveira
Para buscar por exemplo a categoria do produto(tbl_categoria: id, descricao).
Arthur Oliveira
Octacilio Nazare
< class="form-control">
Selecione
>
Agradeço qq ajuda. email:octanaza@gmail.com
rafael
Leonardo Martins
Pablo
gedmilson medeiros delgado filho
gedmilson medeiros delgado filho
Marcos Martins
//método construtor da classe
function __construct($pdo = null) {
$this->pdo = $pdo;
if ($this->pdo == null)
$this->conectar();
}
Quando você instanciar uma classe, ela só vai conectar novamente caso esteja desconectada. Porque numa página podemos ter várias chamadas para listar um conteúdo no site e desta forma, prevenimos várias chamadas.
Já o desconectar é um método, que sempre depois de fazermos conexão com o BD, devemos fechá-la. Regra básica, abriu tem que fechar.
Yuri
Mychelle Rocha