Autor: Rafael Martin - rafa_40005@hotmail.com

 

Buscar registros do banco de dados sem recarregar a página e sem usar AJAX

Neste artigo vou apresentar como trazer dados do banco sem recarregar a página e sem usar AJAX, após selecionar um registro na combobox. É um recurso que, particulamente, uso bastante, mas é pouco utilizado na área e no mercado.

Chega de papo e vamos ao que interessa. Crie um arquivo chamado default.asp.

Abaixo comento toda a programação, para que você entenda todas as etapas do código. O artigo será a partir do código.

<%
'----------------------------------------------------------------------
'Aqui vamos estabelecer conexão com o banco de dados
Dim oConn, oRS, sql
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("banco.mdb")
'----------------------------------------------------------------------
%>

<form name="frmMain" id="frmMain" method="post">
            <table border="0" cellpadding="2" cellspacing="0" align="center">
                        <tr>
                                   <td>
                                               Nome:
                                   </td>
                                   <td>
<!-- A função sel_nome() que chamamos no onchange é onde está o grande segredo -->
<select name="cmbNome" id="cmbNome" onChange="sel_nome();">
                                                           <option value="0">- -</option>
<%
'----------------------------------------------------------------------                                                            'Aqui vamos trazer os dados do banco
                                                           sql = "SELECT id, nome, telefone, email FROM tb_dados order by nome"
                                                           set oRS = oConn.execute(sql)
'----------------------------------------------------------------------
                                                          
'Agora nós vamos ler todas as linhas (registros) que temos no banco
                                                           while not oRS.EOF
                                              
%>
<!-- --------------------------------------------------------------------------------------------------- -->
<!-- Atenção! Reparem que no valeu da combo existe 0, 1, 2 e 3. Eles representam a coluna do banco de cada campo no banco. Sempre devemos começar contando do zero, já que estamos trabalhando com vetor. -->

                                                             <option value="<%Response.Write(oRS(0) & "|" & oRS(1) & "|" & oRS(2) & "|" & oRS(3))%>">
<!-- Aqui é exibido o conteúdo da coluna 1, que é o campo nome. -->
                                                                       <%=oRS(1)%>
                                                             </option>
<%     
                                                                       oRS.MoveNext
                                                           wend
                                              
                                                           oRS.close
                                                           set oRS = nothing                           
%>
                                   </select>
                                   </td>
                        </tr>
                        <tr>
                                   <td>
                                               Telefone:
                                   </td>
                                   <td>
                                               <input type="text" name="telefone" value="" >
                                   </td>
                        </tr>
                        <tr>
                                   <td>
                                               Email:
                                   </td>
                                   <td>
                                               <input type="text" name="email" value="" >
                                   </td>
                        </tr>
            </table>
</form>

<script>
/* Aqui é que está o grande segredo */
            function sel_nome()
            {
// Primeira coisa: Se vocês repararem no código fonte da página, vão reparar que o valeu da combo está desta forma:
//<option value="1|rafael|93442001|rafa_40005@hotmail.com">
//<option value="2|testeRafael|55555555|testerafael@ig.com.br">
// Com os valores do banco de dados.
// E se vocês perceberem, vão ver também que aparecem 2 combos. Isso porque existem duas linhas no banco, ou seja, se tivesse 100 linhas no banco, teria 100 combos no código fonte da página.

                        var arr = new String(frmMain.cmbNome.value);
// Vamos dar um split para pegarmos os valores que estão no valeu da combo
// Como vocês podem ver na linha abaixo

                        arr = arr.split('|');

// Nós pegamos os registros, pertencente àquele nome que você selecionou na combo.
// Prestem atenção que estamos chamando ARR de 2 e ARR de 3.
// Como trabalhamos com vetor, começamos do 0. Se vocês contarem os valores que estão dentro do valeu da combo, vejam que o campo telefone está na posição 2 e o campo email está na posição 3.

                        frmMain.telefone.value = arr[2];
                        frmMain.email.value = arr[3];
                       
// Lembrem-se: o nome do campo (input) e o nome do form na página devem estar iguais ao campo que você chama na função GavaScript.
// Como aqui

frmMain.telefone.value = arr[2];
            }
</script>

Bom, é isso, espero que tenha sido útil!

Abraços!