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
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
Baixando anexo do email no servidor com IMAP e PHP
27 August 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