Carregando dados do Banco de Dados MySQL através de uma tag

Propaganda
Carregando dados do Banco de
Dados MySQL através de uma
tag SELECT
Como
já
vimos
todo
o
processo
de
criação
do
Objeto
XMLHttpRequest e como efetuar a comunicação com o servidor
através das funções de OPEN e SEND em outros posts meu, vamos
agora botar um exemplo de funcionamento do AJAX, onde ele irá
carregar os valores do banco de dados MysqL de acordo com o
que for selecionado no <SELECT> e exibir esses dados em uma
div. Funcionamento:
1. Criar o BD e inserir os valores
2. Fazer a listagem dentro da tag <SELECT>
3. Ao selecionar um elemento, exibir os dados dele em uma
<DIV>
Não entrarei em detalhes aqui das páginas PHP, pois não é o
nosso foco, mas eu fiz o código o mais simples possível para o
funcionamento. A idéia será tipo uma “Agenda de Contatos”.
Iremos trabalhar com 3 arquivos:
1. usuarios.php
2. exibir_dados.php
3. scripts.js
Começaremos com o arquivo “usuarios.php“, que é onde eu irei
efetuar a conexão com o BD e listar os nomes das pessoas que
tenho cadastrado lá. Segue abaixo o código do arquivo:
<?php
header("Content-Type: text/html; charset=ISO-8859-1");
?>
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type"
charset=iso-8859-1" />
<script
language="javascript"
type="text/javascript"></script>
<title>Seleção de Usuários</title>
<style type="text/css">
#conteudo{
width:300px;
height:100px;
background-color:#CCC;
}
</style>
</head>
content="text/html;
src="scripts.js"
<body>
<?php
mysql_connect("localhost", "usuario", "senha");
mysql_select_db("meu_bd");
$consulta = mysql_query("SELECT * FROM `agenda` ORDER BY
`nome`;");
$num = mysql_num_rows($consulta);
$usuario = mysql_fetch_assoc($consulta);
if($num > 0){
echo "<form>\n";
echo "Selecione um usuário:<br /> \n";
echo
"<select
name=\"usuarios\"
onchange=\"mostrarUsuario(this.value);\">\n";
echo "<option value=\"0\" selected=\"selected\">Selecione o
nome</option>\n";
do{
echo
"<option
value=\"{$usuario['id_usuario']}\">{$usuario['nome']}</optio
n>\n";
}while($usuario = mysql_fetch_assoc($consulta));
echo "</select>\n";
echo "</form>\n<br /><br />";
}
?>
<div id="conteudo"><b>Os dados irão aparecer aqui.</b></div>
</body>
</html>
Agora vamos ao arquivo “exibir_dados.php“:
<?php
header("Content-Type: text/html; charset=ISO-8859-1");
$id=$_GET["id"];
if($id==0){
echo "Você deve selecionar um NOME";
}else{
include("conexao.php");
$sql="SELECT
'".$id."'";
*
FROM
`agenda`
WHERE
`id_usuario`
=
$result = mysql_query($sql);
echo "<table border='1'>
<tr>
<th>Nome</th>
<th>Telefone</th>
<th>E-mail</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['nome'] . "</td>";
echo "<td>" . $row['telefone'] . "</td>";
echo "<td>" . $row['email'] . "</td>";
echo "</tr>";
}
echo "</table>";
}
?>
E pra finalizar nosso arquivo Javascript chamado “scripts.js”
que fará o processo do AJAX:
var navegador = navigator.userAgent.toLowerCase(); //Cria e
atribui à variável global 'navegador' (em caracteres
minúsculos) o nome e a versão do navegador
//Função que inicia o objeto XMLHttpRequest
function objetoXML(){
if (navegador.indexOf('msie') != -1) { //Internet Explorer
var controle = (navegador.indexOf('msie 5') != -1) ?
'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; //Operador ternário
que adiciona o objeto padrão do seu navegador (caso for o
IE) à variável 'controle'
try{
return xmlhttp = new ActiveXObject(controle); //Inicia o
objeto no IE
}catch(e){}
}else{ //Firefox, Safari, Outros..
return xmlhttp = new XMLHttpRequest(); //Inicia o objeto no
Firefox, Safari, Mozilla
}
}
// Exibe os dados do usuário pelo ID que foi passado como
parâmetro
function mostrarUsuario(id) {
xmlhttp=objetoXML();
if (xmlhttp==null) {
alert ("Seu navegador não suporta AJAX!");
return;
}
var url="exibir_dados.php";
url=url+"?id="+id;
xmlhttp.onreadystatechange=function() {
if
(xmlhttp.readyState==4
||
xmlhttp.readyState=="complete") {
document.getElementById('conteudo').innerHTML=xmlhttp.respon
seText;
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
Agora veja alguns detalhes
“mostrarUsuario();”:
de
cada
linha
da
função
17– Cria o Objeto XMLHttpRequest na variável “xmlhttp”;
18– Testa para ver se não foi criado o Objeto para exibir a
mensagem de erro;
23– Definimos o nome de nossa página que receberá a consulta;
24– Completamos com os dados que serão enviados pelo GET;
25– A partir daqui até a linha 28, iremos verificar o estado
em que se encontra para poder dar o innerHTML na div
“conteudo”;
30– Abrimos o devido documento com os dados;
31– Enviamos a consulta.
Caso você queira fazer alterações de onde será exibido o
resultado, basta alterar o nome do elemento na linha 27.
Caso queira alterar o nome do arquivo que receberá a consulta,
basta modificar o valor onde tem a variável “url” na linha 23
para o nome do seu arquivo.
Espero que tenham gostado e aprendido um pouco mais de AJAX.
Qualquer coisa, só comentar. Ah, e não esqueçam de dar o seu
voto neste post!
Abraços!
Download