Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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;if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET",url,true);
req.send(null);} 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?
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.
Procure por JQuery e a função $.post(), seu código ficará menor, eficiente e você tranquilão...
a minha propaganda rendeu uma resposta
mas seguindo com a ideia, voce não tem uma sugestão, relativa ao codigo apresentado, já vi este da jquery, porém acho melhor fazer o meu
use o Responder Azul /applications/core/interface/imageproxy/imageproxy.php?img=http://img222.imageshack.us/img222/8498/respondery.png&key=db0a5d713bd1099ba19595f08a80f5881ed1a276406432195f83536896c761d5" alt="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 ?
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})>
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.
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...
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.
e para pegar esse valor pra variar?
ja que os campos não podem ter o não id, como saberei que campo enviou, e o retorno deste campo
>
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.
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?precisa invocar o argumento ne amigo ?
function ajax(url, alvo)
programação básica.
valeu, consegui fazer isso
é a mesma coisa.
pegue o script q faz com 1 campo, e 'duplique' ele. Apenas isso.