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 July de 2016
Como instalar certificado SSL (https) no WampServer
30 March de 2016
Gerenciador de dependências Composer
14 January de 2016
Erro ao acessar um arquivo externo com o comando file_get_content
04 November de 2015
Olá, deixe seu comentário para Preenchendo um Select em HTML dinamicamente com Banco de Dados
Luciano Manoel Gregorio Junior Gregorio
estou criando um formulario para cadastro onde no banco de dados ja foi alimentado com os itens:
sigam o raciocinio :
item 1 > definido como ( AREA ) onde averas varios selecte levando até (AREA 99), logo que celeciona-se uma area eu queria saber como fasso para que o proximo select puxe os dados cadastrados para a ( area ) selecionada, assim eu seleciono a area 1 nela teria sub area1, sub area 2 , e assim por diante como posso faser com que um select seja alimentado pelo que eu fino no select anterior
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