Função para montar combobox com dados do banco

Olá pessoal.

No post de hoje vou publicar uma função bem interessante e prática que tem como objetivo montar uma combobox HTML(select)  a partir de uma série de registros que estão armazenados no banco de dados.

Vamos à construção dessa função e depois eu explico como ela funciona e dou um exemplo de sua aplicabilidade. Crie um arquivo funcao_combo.php

1
2
3
4
5
6
7
8
9
10
<?php
function montaCombo($nome, $rs, $valor, $descricao){
   	echo("<select name='$nome' class='combo'>n");
	echo("t<option value=''>--Selecione--</option>n");
	while ($obj = mysql_fetch_object($rs)){			
		echo("t<option value='".$obj->$valor."' > ". $obj->$descricao." </option>n");
	}
	echo("</select>n");
}
?>

A função recebe como parâmetros nome, rs, valor e descricao . O nome será usado obviamente para nomear a combobox. O rs será o resultado(resource) de uma consulta SQL. O valor é o nome do atributo que será utilizado como value do select e a descricao é o nome do atributo que será utilizado para descrever a option.

Vamos supor um banco de dados com a tabela tb_cliente e os atributos idcliente e nomecliente. Agora vamos ver como seria para montar uma combo de clientes onde o código(id) seria o valor da opção selecionada e o nome seria a descrição de cada uma das opções.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    //importa o arquivo funcao_combo.php
    require_once('funcao_combo.php');
 
    //Conexão com o banco de dados
    mysql_connect('localhost', 'root', '123321') or die ('Erro ao conectar com o servidor');
    mysql_select_db('banco_clientes') or die ('Erro ao conectar com o banco de dados');
 
    //consulta
    $rs = mysql_query("SELECT idcliente, nomecliente FROM tb_cliente ORDER BY nomecliente");
 
    //chama a função
    montaCombo('comboClientes', $rs, 'idcliente', 'nomecliente');
?>

E pronto. Isso auxilia muito no cadastro onde temos atributos que são chaves estrangeiras(FK).

Só ressaltando que que a função de exemplo é voltada para conexões com bancos mysql. Mas isso pode ser facilmente ajustado para outro SGBD.

Até a próxima.

Abs.

Siga-me no twitter: @rafaelwendel

É formado em Sistemas de Informação, pós-graduado em Sistemas de Banco de Dados e mestre em Educação com foco em Tecnologias Sociocomunitárias. Trabalha como professor de ensino técnico e tecnológico no Instituto Federal de Educação, Ciência e Tecnologia de São Paulo ministrando disciplinas nas áreas de programação, banco de dados, desenvolvimento de projetos e engenharia de software.

Posts relacionados

Comentários

  1. rafael tem como vc me ajudar
    eu to querendo criar uma combobox e quando eu clicar um estabelecimento na combobox exibir dados na tabela.
    olha codigo:

    Untitled Document

    $(document).redy(function(){
    $(“select[name=estabelecimento]”).change(function(){

    }) })

    Estabelecimento
    <?php
    $conexao = @mysql_connect("localhost","php","2525");
    $conecta_banco = mysql_select_db("php",$conexao);
    $sql_select = " select fantasia from estabelecimento";
    $resultado = mysql_query($sql_select);
    while ($lista = mysql_fetch_array($resultado))
    {

    echo '’.$lista[‘fantasia’].”;
    } ?>

     

    ESTABELECIMENTO
    DESCRICAO
    HORA INICIO
    HORA FINAL

     
     
     

     
     
     

    1. Para pegar a opção selecionada, você deverá monta a combo dentro de um form, definindo método e ação.

      Depois disso, use o $_GET[‘comboClientes’] ou $_POST[‘comboClientes’] para pegar o valor selecionado.

      Abs

  2. Parabéns pela explicação, mas gostaria de saber de como puxaria os dados do banco de dados a partir da opção escolhida pelo próprio usuário e depois as outras opções disponíveis veriam depois, no caso, para poder alterar.

  3. Muito obrigado pela sua dicas cara me ajudou bem a fazer um formulário que queria para cadastro de visita de clientes.
    Vlw abraços e sucesso.

  4. Preciso de uma ajudinha , quando estou a cadastrar por exemplo um motorista,tenho que indicar o carro que ele ira usar atraves da matricula, nesse caso a matricula e uma entidade em outra base de dados (base de dados do carro) como faço para que isso apareça num combobox

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *