Ir para conteúdo
Fórum Script Brasil
  • 0

Busca com Ajax


Tenko

Pergunta

Pra quem tiver vontade de saber como funciona o AJAX.

Aqui vai uma demonstração de busca por nome usando esse método legal..

Salve esta 1º página como index.php

<html>
<head>
<title>BUSCA DINÂMICA</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script src="script.js"></script>
    <script>
    function pesquisa(valor)
    {
        //FUNÇÃO QUE MONTA A URL E CHAMA A FUNÇÃO AJAX
        url="busca_nome.php?valor="+valor;
        ajax(url);
    }
    </script>
</head>

<body>
    <table width="657" border="1" cellpadding="2" cellspacing="0" bgcolor="#f7f7f7">
        <tr>
            <td align="center" bgcolor="#CCCCCC">
                <strong>&lt;-
                    BUSCA DIN&Acirc;MICA -&gt;
                </strong>
            </td>
        </tr>
        <tr>
            <td>
                <strong>
                    DIGITE AQUI O NOME DA PESSOA
                </strong>:
                <input type="text" name="nome" onKeyPress="pesquisa(this.value)">
            </td>
        </tr>
        <tr>
            <td>
                <div id="pagina">
                </div>
            </td>
        </tr>
</table>

</body>
</html>
Agora salve esta como script.js
function ajax( url )
{

    //alert( url );
    //alert(nick);
    //alert(dest);
    //alert(msg);

    req = null;
    // Procura por um objeto nativo (Mozilla/Safari)
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET",url,true);
        req.send(null);
        // Procura por uma versão ActiveX (IE)
    }else if (window.ActiveXObject){
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req){
            req.onreadystatechange = processReqChange;
            req.open("GET",url,true);
            req.send();
        }
    }
}

function processReqChange()
{

    // apenas quando o estado for "completado"
    if (req.readyState == 4) {

        // apenas se o servidor retornar "OK"
        if (req.status ==200) {

        // procura pela div id="pagina" e insere o conteudo
        // retornado nela, como texto HTML

            document.getElementById('pagina').innerHTML = req.responseText;
        }else{
            alert("Houve um problema ao obter os dados:n" + req.statusText);
        }
    }
}
Enfim, salve este como busca_nome.php
<?php

    require_once "lib/intranet.php"; // Minhas libs
    require_once "lib/start.php";
    
    $sNome = $_GET["valor"];
    $sNome = trim( $sNome );

    if( empty( $sNome )){

        echo "Digite algo";

    }else{
        $sSql    = " select * from tbl_usuario where nome like '" .$_GET[valor]. "%' ";
        $sResult = db_query( $sSql );
        $iLinhas = db_rows( $sResult );

        if( $iLinhas > 0){
            while( $sLinha = db_fetch_array( $sResult )){
                echo $sLinha['nome']."<br>";
            }
        }
    }
?>

Abraços pessoal

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Olá Tenko.

Parabéns pelo script.

Testei ele, porém esta apresentando os seguintes erros

Warning: main(lib/intranet.php): failed to open stream: No such file or directory in C:\... on line 3
O problema é que o script busca_nome.php esta pedindo os
require_once "lib/intranet.php"; // Minhas libs
require_once "lib/start.php";

e não consta no script.

falou

Link para o comentário
Compartilhar em outros sites

  • 0

Nossa, desculpa pela demora....

Essas libs eu criei para substituir aquele monte de comandos para conexão, é só fazer a conexão com bd normalmente sem usar estas chamadas de libs, pode tirar.

Desculpa a demora

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia TEnko!

eo seguinte não consigo entender porque aparece esse erro

Notice: Use of undefined constant valor - assumed 'valor' in c:\Inetpub\wwwroot\sisseg\ajax\busca_nome.php on line 19

porem o codigo está funcionando ele pesquisa normal...

da uma luz ai!!...

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

olá,

substitui as libs por variáveis de conexão com o banco de dados.

mesmo assim está dando um erro na variável query de consulta nome, mesmo colocando a última que postou no forum.

tem como colocar essas libs neste fórum também pra tiar as dúvidas?

gostaria muito de ver esse script funcionando com meu banco.

até

Link para o comentário
Compartilhar em outros sites

  • 0

Pra te ajudar eu fiz esse novo modelo

Salve esse arquivo como : buscaAjax.htm

<html>
   <head>
      <title>BUSCA DINÂMICA</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <script src="script.js"></script>
      <script>
         function pesquisa(valor)
		 {
		    //FUNÇÃO QUE MONTA A URL E CHAMA A FUNÇÃO AJAX
		    url="buscaAjax.php?valor="+valor;
			ajax(url);
		 }
	 </script>
   </head>

<body>
<table width="657" border="1" cellpadding="2" cellspacing="0" bgcolor="#f7f7f7">
<tr>
<td align="center" bgcolor="#CCCCCC">
<strong>&lt;-
BUSCA DIN&Acirc;MICA -&gt;
</strong>
</td>
</tr>
<tr>
<td>
<strong>
DIGITE AQUI O NOME DA PESSOA
</strong>:
<input type="text" name="nome" onKeyUp="pesquisa(this.value)">
</td>
</tr>
<tr>
<td>
<div id="pagina">
</div>
</td>
</tr>
</table>

</body>
</html>
Salve esse como script.js
function ajax( url )
{
    req = null;
    // Procura por um objeto nativo (Mozilla/Safari)
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET",url,true);
        req.send(null);
        // Procura por uma versão ActiveX (IE)
    }else if (window.ActiveXObject){
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req){
            req.onreadystatechange = processReqChange;
            req.open("GET",url,true);
            req.send();
        }
    }
}

function processReqChange()
{

    // apenas quando o estado for "completado"
    if (req.readyState == 4) {

        // apenas se o servidor retornar "OK"
        if (req.status ==200) {

        // procura pela div id="pagina" e insere o conteudo
        // retornado nela, como texto HTML

            document.getElementById('pagina').innerHTML = req.responseText;
        }else{
            alert("Houve um problema ao obter os dados:n" + req.statusText);
        }
    }
}
Salve esse como buscaAjax.php
<?php

    $sConnect = mysql_connect( "localhost","","" ) or die( "Erro ao conectar na base!" );
    $sBase    = mysql_select_db( "shx", $sConnect ) or die( "Erro ao conectar com a tabela!" );
        
    $sNome = $_GET[ "valor"];
    $sNome = trim( $sNome );

    if( empty( $sNome )){

        echo "Digite algo";

    }else{
        $sSql    = " select * from tbl_usuario where nome like '" .$sNome. "%' ";
        $sResult = mysql_query( $sSql );
        $iLinhas = mysql_num_rows( $sResult );

        if( $iLinhas > 0){
            while( $sLinha = mysql_fetch_array( $sResult )){
                echo $sLinha['nome']."<br>";
            }
        }
    }
?>

Qualquer coisa me fala

Link para o comentário
Compartilhar em outros sites

  • 0

não stresse-se comigo, mais não está trazendo nada e nem dando erro, só mudei isso:

<?php
    $sConnect = mysql_connect( "localhost","root","" ) or die( "Erro ao conectar na base!" );
    $sBase    = mysql_select_db( "db_advreu", $sConnect ) or die( "Erro ao conectar com a tabela!" );        
    $sNome = $_GET["Nome"];
    $sNome = trim( $sNome );
    if( empty( $sNome )){
        echo "Digite algo";
    }else{
        $sSql    = " SELECT * FROM tb_devedores WHERE Nome LIKE '" .$sNome. "%' ";
        $sResult = mysql_query( $sSql );
        $iLinhas = mysql_num_rows( $sResult );
        if( $iLinhas > 0){
            while( $sLinha = mysql_fetch_array( $sResult )){
                echo $sLinha['Nome']."<br>";
            }
        }
    }
?>

antes estava dando erro na 11 desse código e agora nem erro dá, mais também não tras nada.

???? e agora????

Link para o comentário
Compartilhar em outros sites

  • 0

olá amigo, tente este código:

<?php
$link = mysql_connect( "localhost","root","" ) or die( "Erro ao conectar ao banco de dados!");
mysql_select_db("db_advreu", $link) or die( "Erro ao selecionar a tabela!");
$nome = trim($_GET['nome']);
if(empty($nome)){
  print "Digite algo";
}else{
  $query = mysql_query("SELECT * FROM tb_devedores WHERE nome LIKE '".$nome."%'");
  if(@mysql_num_rows($query) > 0){
    while($a = mysql_fetch_array($query)){
      print $a['nome']."<br>";
    }
  }
}
?>

Está com variáveis diferentes, porque dei uma reformulada nele.

Thank's

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...