• 0
Sign in to follow this  
Guest --Akira --

Busca.

Question

Guest --Akira --

Olá pessoal,

Sou novato em javascript e to com um problema, tenho uma tabela em banco de dados com cerca de 7000 registros, eu carrego ela toda em um combo,

mas queria fazer uma busca dentro desse combo para ver se encontro um registro desse combo,

Fiz da seguinte forma,

function fn_busca_proced(busca){

var vc_busca = busca.toUpperCase();

//apaga os registro da combo onde deve ser colocado os registros encontrados

for (i = document.frm_proced.lst_procedimentos.length -1; i >= 0; i--)

document.frm_proced.lst_procedimentos.options = null;

// Objeto 'todos' é a combo onde possui todos os procedimentos

for (i=0; i < document.frm_proced.todos.length; i++){

//verifica se o primeiro char e 0 pois se n for não pode ser adicionado na outra combo

if(document.frm_proced.todos.options.value.substring(0,1) == 0){

if (document.frm_proced.todos.options.text.indexOf(vc_busca) != -1)

{

//objeto 'lst_procedimentos' é onde coloco os registros encontrados na busca.

document.frm_proced.lst_procedimentos.options[document.frm_proced.lst_procedimentos.length] = new Option(document.frm_proced.todos.options.text);

document.frm_proced.lst_procedimentos.options[document.frm_proced.lst_procedimentos.length - 1].value = document.frm_proced.todos.options.value.substring(2);

}

}

}

}

Fiz esta função mas ela por causa do loop demora cerca de 6 segundos para rodar o que é muito já que fiz essa função para rodar toda vez que ele digite alguma letra.

Ah outra maneira de efetuar essa busca??

Obrigado.

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0
Guest --Akira --

Sim pois o usuario ira selecionar alguns registros para gravar e muitos tem nome diferentes,

e efetuar a busca pelo sql acredito que ira tomar mais tempo que listar todos eles.

e efetuar a busca pelo javasript.

Share this post


Link to post
Share on other sites
  • 0

Obrigado andreia_sp, não achei nada que pode-se me ajuda para deixar esta função mais rapida,

então sou 'obrigado' a fazer com ajax conheço pouco mas acho que da para me virar.

Grato pela atenção.

Share this post


Link to post
Share on other sites
  • 0

Coitado dos teus usuarios pra ver 7000 opcoes num combo rssss

mas montei um exemplo simples:

<script>
function Procura()
{
var ArrayMes = new Array("Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro");

for (i=0; i <= ArrayMes.length; i++)
{
    if (ArrayMes[i] == "Maio")
    {
        alert("achou");
        exit;
    }
}
alert("não achou");
}
</script>

<a href="#" onclick="Procura()">link</a>

Eu não tenho certeza se a funcao search do javascript pode ser usada sem FOR... mas se eu achar codigo melhor te aviso

Share this post


Link to post
Share on other sites
  • 0

Eu confundi não ser um combo, é um list.

mas mesmo assim é dificil ver os 7000 registros,

Por isso queria a busca pois pensei que não ia ser tão lerdo o Js procurar,

pelo que eu vi da função search do Js, ela procura em uma string.

sem o for no caso da list não daria ser,

O problema mesmo e que é muitos registros e o for pra correr todos eles demora muito pra executa.

Edited by Tenshi-san

Share this post


Link to post
Share on other sites
  • 0

Po eu vo insistir na mesma questao... tem CERTEZA que é necessario exibir TODOS os 7.000 registros???

será que não tem como voce filtrar antes? Por exemplo, imagina que desses 7000 o usuario queira ver somente os registros referentes ao mês de Janeiro. Voce não precisaria mostrar de todos os meses, somente o de janeiro.

então criaria uma tela antes da exibição, com combo para o usuario selecionar qual mês referente ele quer...

Se esses registros forem aumentado vai ficar muito complicado!

O que pode também ser feito pra amenizar a espera e impaciencia do usuario, é um "Aguarde..."

Share this post


Link to post
Share on other sites
  • 0

tu está fazendo o loop de busca em cima do list ???

não, assim vai levar um eternidade.

quando carregar os 7 mil registros pra tela, coloque-os dentro de um array

como mostrou a andreia com os meses acima.

e quando o usuario digitar, e você for procurar, faca o loop no array.

at,

Share this post


Link to post
Share on other sites
  • 0

O problema andreia é que por exemplo eu carrego parte do registro e a pessoa quer

procurar um dos registros que não tem nessa faixa eu terie que efetuar a busca no banco.

Pois os meus registro é dificil definir quais os pricipais registros para mostrar so eles..

Vo tentar por array.

Obrigado Mestre-san e Andreia, mesmo pelo array ele ficou muito devagar.

sou obrigado a fazer a pesquisa pelo ajax mesmo.

Obrigado pela ajuda.

Obs. Gostei muito do forum é a primeira vez que frequento este forum, mas vou passa a frequentar mais. pois pelo o que vi aqui existem muitas pessoas legais, e fico a disposição quando encontrar uma duvida e poder ajudar irei ajudar com muito prazer pois acredito que foi isso que vocês fizeram.

Novamente Obrigado.

Edited by Tenshi-san

Share this post


Link to post
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.

Sign in to follow this