Unidade D – Linguagem PHP com acesso a banco de dados – parte 2

Tratamento chave estrangeira

Outro recurso importante é o tratamento de chave estrangeira. Para explicitar vamos ver a estrutura da tabela alunos que criamos no início da Unidade D. Veja abaixo que a tabela possui um campo chamado cidade que é do tipo int(11). O valor do campo cidade faz referência a chave primária da tabela cidades (campo id).

Pensando no formulário de alunos, podemos fazer a seleção da cidade conforme mostra a figura D.24, buscando os dados da tabela cidades e mostrando em um menu de lista.

O menu de lista seria montado com as opções da forma apresentada abaixo, onde mostra o nome da cidade, mas o valor correspondente ao nome da cidade é o identificador (id):

Para montar este menu de lista, a biblioteca ADODB possui um método chamado GetMenu. Por isso, no arquivo funcoes.php criamos a função lista_cidades() como  exemplo para tratar chave estrangeira com o GetMenu. Vamos dar uma olhada no código conforme figura D.25:

- linha 19 – definição da função lista_cidades() que recebe dois parâmetros: a instância da conexão e o nome da cidade que deve ser mostrado no menu de lista por padrão;

- linha 21 – monta o SQL para buscar os dados da cidade. Importante a ordem dos campos no select, deve sempre primeiro vir a descrição e depois o campo que é chave primária;

- linha 22 – executa o SQL e atribui o resultado para $rs;

- linha 23 – testa se chegou um valor no parâmetro $nome. Se chegou valor significa que é uma alteração, senão uma inclusão. O menu de lista é montado de forma diferente para cada situação.

- linha 24 – retorna o menu montado. O menu se chamará cidade, virá selecionado por padrão a cidade cujo nome é igual ao valor de $nome, e não possui um primeiro valor do menu em branco;

- linha 26 – retorna o menu montado. O menu se chamará cidade, virá selecionado com a primeira opção em branco;


 

Note que o método GetMenu monta toda a estrutura do menu de lista, o select e as option

 

Abaixo segue um exemplo de chamada da função no formulário dentro da coluna que se deseja mostrar o menu de lista: