PUBLICIDADE

Autor

rlpa

Rodrigo Araujo

membro deste abril de 2007

Tags

Compartilhe e guarde

  • Rec6
  • StumbleUpon
  • ueba
  • linkk
  • dihitt
  • linkloko
  • linkto
  • Technorati
  • Simpy
  • del.icio.us
  • Faves: Fave It!

PUBLICIDADE

Enquete

Você acredita que um dia o Firefox será mais utilizado que o IE?

Pesquisar em banco de dados com Ajax


O código a seguir utiliza o AJAX para efetuar consulta em uma base de dados, permitindo um pesquisa rápida e não sendo necessário o refresh da página inteira.

O exemplo em anexo seria a consulta dos dados de um funcionário digitando o seu nome, será listado em um combobox os funcionários que começarem com o texto que está sendo digitado.
'-------------------------------------------------
'Pagina 1: funcionarios.asp
'-------------------------------------------------
<%@ Language=VBScript %>
<%
Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"         'não armazena no cache os dados gerados
Response.addHeader "cache-control", "private"   'não armazena no cache os dados gerados
Response.CacheControl = "no-cache"              'não armazena no cache os dados gerados
Session.LCID = 1046
%>
<HTML>
<TITLE>Pesquisa de Funcionários</TITLE>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
<meta http-equiv="Content-Language" content="pt-br">
<HEAD>
        <script>
            // a funcao abaixo pega a versao mais nova do xmlhttp do ie.
            function createXMLHTTP() {
                var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
                "Microsoft.XMLHTTP"];
                for (var i=0; i < arrSignatures.length; i++) {
                    try {
                        var oRequest = new ActiveXObject(arrSignatures[i]);
                        return oRequest;
                    } catch (oError) {
                    }
                }
                throw new Error("MSXML is not installed on your system.");
            }

            function recuperarFunc(Nome)
            {
                // criacao do objeto XMLHTTP
                var oHTTPRequest = createXMLHTTP(); 
                // Abrindo a solicitacao HTTP. o primeiro parametro informa o metodo post/get
                // o segundo parametro informa o arquivo solicitado que pode ser asp, php, txt, xml, etc
                // o terceiro parametro informa que a solicitacao nao assincrona, 
                // para solicitacao sincrona o parametro deve ser false
                oHTTPRequest.open("post", "execfunc.asp", true);
                // para solicitacoes utilizando o metodo post deve ser acrescentado 
                // este cabecalho HTTP
                oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                // a funcao abaixo e executada sempre que o estado do objeto muda (onreadystatechange)
                document.all.divFuncionarios.innerHTML="<select style='width:300px'><option>Procurando ...</option></select>";
                oHTTPRequest.onreadystatechange=function() {
                    // o valor 4 significa que o objeto ja completou a solicitacao
                    if (oHTTPRequest.readyState==4){
                        // abaixo o texto do gerado no arquivo executa.asp e colocado no div
                        document.all.divFuncionarios.innerHTML = oHTTPRequest.responseText;
                    }
                }
                // abaixo e enviada a solicitacao. Note que a configuracao
                // do evento onreadystatechange deve ser feita antes do send.
                oHTTPRequest.send("Nome=" + Nome);
            }

            function recuperarInfo(Matricula)
            {
                // criacao do objeto XMLHTTP
                var oHTTPRequest = createXMLHTTP(); 
                // Abrindo a solicitacao HTTP. o primeiro parametro informa o metodo post/get
                // o segundo parametro informa o arquivo solicitado que pode ser asp, php, txt, xml, etc
                // o terceiro parametro informa que a solicitacao nao assincrona, 
                // para solicitacao sincrona o parametro deve ser false
                oHTTPRequest.open("post", "execfunc.asp?cmd=info", true);
                // para solicitacoes utilizando o metodo post deve ser acrescentado 
                // este cabecalho HTTP
                oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                // a funcao abaixo e executada sempre que o estado do objeto muda (onreadystatechange)
                //document.all.divFuncionarios.innerHTML="<select style='width:400px'><option>Procurando ...</option></select>";
                oHTTPRequest.onreadystatechange=function() {
                    // o valor 4 significa que o objeto ja completou a solicitacao
                    if (oHTTPRequest.readyState==4){
                        // abaixo o texto do gerado no arquivo executa.asp e colocado no div
                        document.all.divDetalhes.innerHTML = oHTTPRequest.responseText;
                    }
                }
                // abaixo e enviada a solicitacao. Note que a configuracao
                // do evento onreadystatechange deve ser feita antes do send.
                oHTTPRequest.send("Matricula=" + Matricula);
                //alert("Matricula=" + Matricula);  
            }
        </script>
    </HEAD>
    <body onload="recuperarFunc(document.formulario.Nome.value)">
        <form id="formulario" name="formulario">
            <table border="0">
                <tr>
                    <td>Pesquisa (Digite o nome do funcionário):</td>
                    <td>
                    <INPUT type="text" name="Nome" size="50" style='width:300px' onKeyUp="recuperarFunc(this.value)" onKeydown="recuperarFunc(this.value)">
                    </td>
                </tr>
                <tr>
                    <td></td>
                    <td><div id="divFuncionarios"></div>
                    </td>
                </tr>
                <tr>
                    <td></td>
                    <td><div id="divDetalhes"></div>
                    </td>
                </tr>
            </table>
        </form>
    </body>
</HTML>

'-------------------------------------------------
'Página 2: execfunc.asp
'-------------------------------------------------
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
<meta http-equiv="Content-Language" content="pt-br">
<font face=verdana size=2>
<%
Session.LCID = 1046
Set Conn = Server.Createobject("ADODB.Connection")
sConnectionString = "PROVIDER=MSDASQL;DRIVER={SQL Server};SERVER=SERVIDOR;DATABASE=BANCODADOS;UID=USUARIO;PWD=SENHA"
Conn.open sConnectionString
Dim Registro	

if request("cmd") = "info" then
	set Registro = createobject("adodb.recordset")
	set Registro.activeconnection = conn
	Registro.cursortype = 3	
	Consulta = "SELECT * FROM SRA010 WHERE RA_MAT = '" & Request.Form("Matricula") & "' "
	Registro.open Consulta
	if not Registro.eof or Registro.bof then
		response.write "Detalhes do Funcionário: <u><b>" & Registro("RA_NOME") & "</b></u><BR><BR>"
		response.write "<table width=""100%"" border=1>"
		For I=0 to Registro.Fields.Count-1 'STEP 2			
			If Not IsNull(Registro.Fields(I)) Then
				IF Registro.Fields(I).name = "RA_ADMISSA" then
					Dado = mid(Server.HTMLEncode(Registro.Fields(I)),7,2) & "/" & mid(Server.HTMLEncode(Registro.Fields(I)),5,2) & "/" & mid(Server.HTMLEncode(Registro.Fields(I)),1,4)
				else
					Dado = Server.HTMLEncode(Registro.Fields(I))
				end if						

				Response.Write "<tr><td width=""20%"" align=""right""><b><font face=verdana size=1>" & Registro.Fields(I).name & ": <b></font></td>"
				Response.Write "<td width=""80%"" bgcolor=""#FFFFF0""><font face=verdana size=2>" & Dado & "&nbsp;</font></td></tr>"
			End If
		Next
		response.write "</table>"
	else
		response.write "Vazio..."
	end if
	Registro.close
else
%>
<select name="cmbFuncionarios" id="cmbFuncionarios"  style='width:300px'>

	<%
	set Registro = createobject("adodb.recordset")
	set Registro.activeconnection = conn
	Registro.cursortype = 3
	Consulta = "SELECT * FROM SRA010 WHERE RA_SITFOLH <> 'D' AND RA_NOME LIKE '%" & uCase(Request.Form("Nome")) & "%'  order by RA_FILIAL,RA_NOME"
	Registro.open Consulta
	while not Registro.eof 
		Response.Write "<option value=" & Registro("RA_MAT") & ">" & Registro("RA_FILIAL") & " - " & Registro("RA_MAT") & " - " & server.HTMLEncode(Registro("RA_NOME")) & "</option>"
		Registro.movenext
	wend
	Registro.close
	%>
</option>
</select>
<input type="button" value="Exibir Dados" onClick="recuperarInfo(document.all.cmbFuncionarios.value)">
<%end if%>

Sim   Não   Este código foi útil para você?
NotaComentário
Ainda não foi enviado nenhum comentário.
Regras:
Os comentários seguem as seguintes regras:
  • Todos os comentários são enviados por membros cadastrados no site.
  • A pontuação de comentários de conteúdo do próprio membro não serão computados.
  • Os comentários serão pré-aprovados, porém a equipe do site revisará o conteúdo de todos os comentários podendo ser invalidados (inclusive a pontuação).
  • Os comentários precisam ter, obrigatóriamente, coerência sobre o conteúdo que será comentado.
  • O membro que atingir 5 comentários invalidados não poderá mais comentar dentro do site. Com isso o membro não poderá mais ganhar pontos com comentários.
  • Há um limite de 10 comentários por dia para cada membro.
  • Qualquer comentário após ter sido publicado poderá ser retirado através da opção ( denunciar)

Comente

     (ainda não tem cadastro? clique aqui!)


Máximo de 30 caracteres

Máximo de 255 caracteres
 

R&W Consulting - Soluções Web Hospedagem UOL HOST PagSeguro - solução para pagamentos online
© 2006-2009 R&W Informática Ltda. - Todos os direitos reservados.