Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cristiano Cordeiro

[Resolvido] Pesquisa dinamica

Recommended Posts

Como fazer um sistema de pesquisa automática com dois campos ex: tenho um campo nome, ao digitar nele, é pesquisado automaticamente na base de dados, e retorna o valor na frente da caixa de texto nome, e na mesma pagina tenho um campo email, que retorna o valor achado em frente a esta caixa email.

 

ja achei varios exemplos disse tipo, porém nenhum com mais de um campo no pagina

Compartilhar este post


Link para o post
Compartilhar em outros sites

é a mesma coisa.

 

pegue o script q faz com 1 campo, e 'duplique' ele. Apenas isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este é o script

 

arquivo script

// 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);
}
}
}

 

arquivo index

<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>
window.onload = function(){

document.getElementById('nome').onkeyup = function ()
{
       var valor = document.getElementById('nome').value

       url="busca_nome.php?valor="+valor;
       ajax(url);
}

document.getElementById('user').onkeyup = function (){

var valor = document.getElementById('user').value

   url="user.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" id="nome" ></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>

 

arquivo busca.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
       $conexao=mysql_connect("localhost","root","");


       mysql_select_db("files");
       $email = $_GET[valor];

       $sql_email_check = mysql_query("SELECT COUNT(id) FROM ue WHERE em='{$email}'");

       $eReg = mysql_fetch_array($sql_email_check);

       $email_check = $eReg[0];

       if(strlen($email) > 3){  

       if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
       echo "digite um email verdadeiro";}else{

       if($email_check > 0){ echo "email ja cadastrado";
          unset($email);    }else{ echo "otimo";}

       }

}
}

 

Não tem uma forma mais simples de fazer isso, não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não flood o fórum.

 

Leias as Regras: http://forum.imasters.com.br/index.php?app=core&module=help

 

fazer a 'sua propaganda', apenas atrapalha o bom andamento da comunidade.

Pois polui desnecessariamente a lista de tópicos ativos.

 

 

Por enqnto o tópico vai rolar, portanto aguarde que alguém te responda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procure por JQuery e a função $.post(), seu código ficará menor, eficiente e você tranquilão...

Compartilhar este post


Link para o post
Compartilhar em outros sites
use o Responder Azul respondery.png

ou a 'Resposta Rápida'.

 

@topic:

a minha propaganda rendeu uma resposta

agora se coloca no meu lugar por exemplo.

 

a sua propaganda me fez perder tempo de abrir mais um tópico que não tinha nenhuma utilidade ou conteúdo.

Tive que marcar como [Duplicado] para que ele parasse de poluir a lista.

 

Além disso, tive que fazer 2 posts, para 'te dar a bronca', em vez de gastar esse tempo para efetivamente ajudar alguém.

 

 

Sou voluntário. Ajudo por que gosto. Não ganho nada por isso, a não ser experiência.

Te contar uma outra coisa agora, eu ia voltar e te responder, com o código que você precisa, para que ficasse de exemplo, e você entendesse a minha sugestão.

 

Que na verdade, é bem simples.

pegue o script q faz com 1 campo, e 'duplique' ele. Apenas isso.

Eu ia fazer, mas tive que vir aqui, e te postar esse texto para te ajudar a se portar corretamente, em vez de te ajudar a resolver.

 

 

Olha um outro lado agora. você tem o código. E eu dei uma sugestão. Cadê a sua tentativa de aplicar a minha sugestão ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpas, mas sobre o tropico? tens a resposta?

 

Cadê a sua tentativa de aplicar a minha sugestão ? tentei e não obtive sucesso

 

 

Além disso, tive que fazer 2 posts, para 'te dar a bronca', em vez de gastar esse tempo para efetivamente ajudar alguém.(se estes 2 post fosse para me ajudar, talvez o tropico ja estaria com titulo[resolvido] a muito tempo)

 

mas com o codigo

 

não teria uma maneira de mudar a linha

document.getElementById('pagina').innerHTML = req.responseText;

colocando um if ou mudando a 'pagina' para uma variavel(já tentei mas não consegui{ajax não endendo, e muito menos javascript})

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cadê a sua tentativa de aplicar a minha sugestão ? tentei e não obtive sucesso

mostre a tua tentativa.

 

Por que não obteve sucesso ? deu erro ? qual ?

 

já sabe debugar ? aperte Ctrl+Shif+J no Firefox, e corrija os erros que aparecerem.

Isso é te ajudar. Se eu fizer o código, não estaria te ajudando.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Isso é te ajudar. Se eu fizer o código, não estaria te ajudando.

 

o codigo já esta pronto, so falta ajustar o resultado, para aparecer na div correspondente, e isso eu não sei como fazer , por isso criei o trópico...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Okay, olha aqui:

function processReqChange()
{
  //..
  document.getElementById('pagina').innerHTML = req.responseText;

é neste trecho que você decide onde vai aparecer a resposta.

você precisa que isso varie, então:

 

function processReqChange( alvo )
{
  //..
  document.getElementById( alvo ).innerHTML = req.responseText;

okay ?

 

e então, a chamada você faz:

req.onreadystatechange = function(){
  processReqChange( 'pagina' );
}

para a primeira requisição.

 

E para as outras, basta direcionar para outro lugar:

req.onreadystatechange = function(){
  processReqChange( 'pagina2' );
}

 

ignore os trechos de código que omiti. Eles continuam sendo importantes. Apenas destaquei as partes necessárias para resolver a tua questão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu, agora sim você me ajudou, viu como não dueu nada?

você só veio explicar exatamente o que você precisava agora. ^^

 

antes eu ainda não sabia qual era a tua dificuldade. Viu como não doeu nada, não fazer propaganda ?

e ser objetivo na pergunta.

 

e para pegar esse valor pra variar?

? não entendi.

 

 

ja que os campos não podem ter o não id,

? não entendi.

 

como saberei que campo enviou, e o retorno deste campo

 

mais ou menos assim:

window.onload = function(){

document.getElementById('nome').onkeyup = function(){
	var valor = document.getElementById('nome').value;

	var url="busca_nome.php?nome="+valor;//note o parâmetro
	ajax(url,'pagina');
}
document.getElementById('user').onkeyup = function(){
	var valor = document.getElementById('user').value;

	var url="user.php?user="+valor;//note o parâmetro
	ajax(url,'pagina2');
}
}

veja a identação, e o parâmetro.

em um é ?nome e no outro é ?user

 

Com isso em mente, você vai saber no php, se chegou um pedido de usuario, ou de nome.

Compartilhar este post


Link para o post
Compartilhar em outros sites

endendi mas

 

 

( veja a identação, e o parâmetro. em um é ?nome e no outro é ?user)

(tô usando a mensma pagina php, porque ela so retorna, email valido ou não[usando so pra testar isso que estou tentando fazer{o resultado aparecer na div corespondente}])

 

então eu coloco o nome da div e jogo pra dentro

window.onload = function(){

       document.getElementById('nome').onkeyup = function(){
               var valor = document.getElementById('nome').value;

               var url="busca_nome.php?nome="+valor;//note o parâmetro
               ajax(url,'pagina');
       }}

 

mas não precisaria por em uma variavel para depois jogar na função

function processReqChange( alvo )
{
  //..
  document.getElementById( alvo ).innerHTML = req.responseText;

para que o alvo varie?

Compartilhar este post


Link para o post
Compartilhar em outros sites

precisa invocar o argumento ne amigo ?

 

function ajax(url, alvo)

programação básica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.