Jump to content
Fórum Script Brasil
  • 0

Busca dinâmica


Anderson Gouveia

Question

Pessoal, boa noite.

Tenho o seguinte código de busca dinâmia:

script.js

// JavaScript Document
// FUNÇÃO RESPONSÁVEL DE CONECTAR A UMA PAGINA EXTERNA NO NOSSO CASO A BUSCA_NOME.PHP
// E RETORNAR OS RESULTADOS

function ajax(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);
}
}
}
busca_nome.php
<?php
if(!empty($_GET["valor"]))
{
// O CAMPO VALOR CONTERÁ O QUE O USUARIO DIGITOU ATÉ O MOMENTO..
// CONECTA AO BANCO COLOCA PARAMENTROS IP,USUARIO,SENHA
require_once('../conecta.php');


// EXECUTA A INSTRUÇÃO SELECT PASSANDO O QUE O USUARIO DIGITOU
$sql="select * from pessoa where nome like '$_GET[valor]%'";
$resultado=mysql_query($sql) or die (mysql_error());

//VERIFICA A QUANTIDADE DE REGISTROS RETORNADOS
$linhas=mysql_num_rows($resultado);

if($linhas>0){
//EXECUTA UM LOOP PARA MOSTRAR OS NOMES DAS PESSOAS
// VALE LEMBRAR QUE TODOS ESSES RESULTADOS SERAO MOSTRADOS DENTRO DA PAGINA INDEX.PHP
// DENTRO DO DIV 'PAGINA'

while($pegar=mysql_fetch_array($resultado))
echo "$pegar[nome] <br>";
}

}
?>
index.html
<html>
<head>
<title>BUSCA DINÂMICA</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
&lt;script src="script.js"></script>
&lt;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="0" bgcolor="#f7f7f7">
<tr>
<td align="center" bgcolor="#CCCCCC"><strong><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif"><-
BUSCA DINÂMICA -></font></strong></td>
</tr>
<tr>
<td><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong>DIGITE
AQUI O NOME DA PESSOA</strong></font>:
<!-- NOTE Q A CADA TECLA PRESSIONADA É CHAMADA A FUNÇÃO PESQUISA PASSANDO O QUE O USUARIO TEM DIGITADO ATÉ O MOMENTO -->
<input type="text" name="nome" onKeyPress="pesquisa(this.value)"></td>
</tr>
<tr>
<td>
<!-- AQUI SERÁ APRESENTADO O RESULTADO DA BUSCA DINÂMICA.. OU SEJA OS NOMES -->
<div id="pagina"></div></td>
</tr>
</table>

</body>
</html>

Este sistema me retorna o resultado da busca dentro da div="pagina" que está no index.html. Porém ele só me retorna uma única coluna da tabela do BD.

Sei que para obter mais colunas é só acrescentá-las no "echo" do código php, mas elas virão todas juntas na div="pagina".

Gostaria que essas colunas viessem cada uma em um campo text.

EX:

cod dentro do campo cod

produto dentro do campo produto.

O que preciso fazer nestes códigos para obter este resultado?

Desde já agradeço a atenção.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

olhei teu codigo rapidamente e percebi que você está usando ajax, legal.. então você quer esse retorno venha em inputs??

Se for isso, você pode montar na pagina que faz a busca no banco os inputs dai o ajax te traz não só o texto mas sim os elementos já completos (inputs e seus valores).

Link to comment
Share on other sites

  • 0

Andreia, boa tarde!

Fiz conforme você indicou:

while($pegar=mysql_fetch_array($resultado)){

echo "<input  type='text' name='cod' value='$pegar[cod]'>
<input type='text' name='produto' value='$pegar[produto]'>
<input type='text' name='preço' value='$pegar[preço]'> <br>";
}

Porém os resultados estão saindo bagunçados, no primeiro campo sai só metade do que deveria aparecer, ex: cod 45 sai somente 4; no segundo campo, que seria o nome do produto, sai parte do código "<input type=" e o nome do produto sai em outro campo.

O que estou fazendo de errado??

Link to comment
Share on other sites

  • 0

Engajando na dúvida do colega, gostaria de saber só o caminho, o resto eu procuro:

A ideia é a seguinte:

Forneço um código JS para o site externo fazer buscas na minha tabela e esse JS devolve uma lista pre-formatada (isso eu faço) que será exibido no site da pessoa. Basicamente seria o que o google já faz com o sistema de busca deles.

Por onde devo começar nessa parte? Analisando o "google search results" vi que é gerado um arquivo com a listagem dos resultados mas seria mais um JSON pelo que andei procurando.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...