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

Busca dinâmica


Anderson Gouveia

Pergunta

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 para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 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,8k
×
×
  • Criar Novo...