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

Busca com filtro


Loko da Web

Pergunta

Boa tarde.

Fiz um sistema de busca, funciona 100%. Agora falta colocar o filtro,... tenho um form com busca (pesq) e select da palavraexata e qualquerpalavra (busca), segue abaixo como esta a minha select:

If (Request.Form("busca") = "palavraexata") Then
sql = "SELECT * FROM fotos WHERE nome = '" & Request.Form("pesq") & "'"
else
sql = "SELECT * FROM fotos WHERE nome LIKE '%" & palavrasem(pesq) & "%' and nome LIKE '%" & palavracom(pesq) & "%'"
end if
Agora gostaria de acrescentar o filtro com as categorias (idcat), de que forma poderia ser feito em cima dessa sql ? Form da busca:
<FORM name="form" action="busca_filmes.asp" method="Post">
<tr><td><input class="textb" type="text" name="pesq" size="40"></td></tr>
<tr><td><select class="textb" size="1" name="idcat">
<option value="todos">Todos</option>
<% 
set conexao = createobject("adodb.connection")
constr = "Driver={Microsoft Access Driver (*.mdb)};DBQ="& server.mappath("db/filmes.mdb")
conexao.open constr
Set rscat=Conexao.Execute("SELECT * FROM categorias ORDER BY nome_cat asc")
%>
<%
While not rscat.EOF
%>
<option value="<%=rscat("id")%>"><%=rscat("nome_cat")%></option>
<%
rscat.Movenext
Wend 
%>
</select></td></tr>
<tr><td><SELECT class="textb" NAME="busca">
<OPTION value="palavraexata">Palavra Exata</OPTION>
<OPTION value="qualquerpalavra" SELECTED>Qualquer Palavra</OPTION>
</SELECT></td></tr>
<tr><td><input class="textb" type="submit" name="submit" value="Buscar"></td></tr>

Editado por Loko da Web
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

E quanto a opção "Todos" ???? porque na select vai ter as categorias e também todos...

Editando...

Fiz conforme bareta pediu, e não deu certo. Digito um nome no campo e seleciono categoria que não faz parte desse nome, em mesmo assim retorna resultado.

pesq=request.form("pesq")
idcat=request.form("idcat")
busca=request.form("busca")
Set RS= Server.CreateObject("ADODB.Recordset")
If (Request.Form("busca") = "palavraexata") Then
sql = "SELECT * FROM fotos WHERE nome = '" & Request.Form("pesq") & "' AND idcat= " & request.form("idcat") & ""
else
sql = "SELECT * FROM fotos WHERE nome LIKE '%" & palavrasem(pesq) & "%' OR nome LIKE '%" & palavracom(pesq) & "%' AND idcat= " & request.form("idcat") & ""
end if
RS.Open SQL, conn, 3

Editado por Loko da Web
Link para o comentário
Compartilhar em outros sites

  • 0

Mas, já tenho um if, veja abaixo como está:

If (Request.Form("busca") = "palavraexata") Then
sql = "SELECT * FROM fotos WHERE nome = '" & Request.Form("pesq") & "' and idcat= " & request.form("filtro") & ""
else
sql = "SELECT * FROM fotos WHERE nome LIKE '%" & RemoveAcentuacao(pesq) & "%' and idcat= " & request.form("filtro") & ""
end if

Teria que fazer dois if´s...???

Editado por Loko da Web
Link para o comentário
Compartilhar em outros sites

  • 0

Substitua por isso aqui e teste:

busca = Request.Form("busca") 
If busca = "palavraexata" Then
response.write "busca = " & busca
response.end
sql = "SELECT * FROM fotos WHERE nome = '" & Request.Form("pesq") & "' and idcat= " & request.form("filtro") & ""
else
sql = "SELECT * FROM fotos WHERE nome LIKE '%" & RemoveAcentuacao(pesq) & "%' and idcat= " & request.form("filtro") & ""
end if

Poste aqui os resultados!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0
Substitua por isso aqui e teste:

busca = Request.Form("busca") 
If busca = "palavraexata" Then
response.write "busca = " & busca
response.end
sql = "SELECT * FROM fotos WHERE nome = '" & Request.Form("pesq") & "' and idcat= " & request.form("filtro") & ""
else
sql = "SELECT * FROM fotos WHERE nome LIKE '%" & RemoveAcentuacao(pesq) & "%' and idcat= " & request.form("filtro") & ""
end if
Poste aqui os resultados! []'s Rafael Spilki
Rafael, não entendi o que você quiz fazer aqui... pois o resultado dessa busca é o mesmo que postei, não muda nada. Não sei se você entendeu, mas o que estou querendo agora é acrescentar a opção "Todas as categorias", pois o filtro esta funcionando 100%. O meu form esta dessa maneira: form de busca - categorias (falta acrescentar a opção "Todas as categorias") - qualquer palavra e palavra exata - enviar O bareta deu ideia de utilizar um if pra colocar a opção "todos" sem filtro e outro com o filtro, mas eu já tenho um if, só que é pela palavra exata e qualquer palavra. Segue o sql como esta agora:
If (Request.Form("busca") = "palavraexata") Then
sql = "SELECT * FROM fotos WHERE nome = '" & Request.Form("pesq") & "' and idcat= " & request.form("filtro") & ""
else
sql = "SELECT * FROM fotos WHERE nome LIKE '%" & RemoveAcentuacao(pesq) & "%' and idcat= " & request.form("filtro") & ""
end if

Editado por Loko da Web
Link para o comentário
Compartilhar em outros sites

  • 0

A sua condicional diz que busca tem que ser exatamente igual a "palavraexata", logo quero confirmar se está vindo assim do bd, para ter certeza de que a condicional realmente funciona... por isso pedi para debugar a variável...

deve ser algo nessa ordem... porque pelo que entendi sua busca sempre acaba no mesmo if!

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0
A sua condicional diz que busca tem que ser exatamente igual a "palavraexata", logo quero confirmar se está vindo assim do bd, para ter certeza de que a condicional realmente funciona... por isso pedi para debugar a variável...

deve ser algo nessa ordem... porque pelo que entendi sua busca sempre acaba no mesmo if!

[]'s

Sim, dei um response e esta ok, o select da palavraexata funciona... E a ordem é essa mesma. Qualquer coisa que precisar pra ter uma analise melhor é só falar...

Link para o comentário
Compartilhar em outros sites

  • 0

Bom... você tentou na forma que eu sugeri? Que resultados apareceram?

São várias coisas diferentes... pra começar o set da variável antes de entrar na condiconal! A remoção de parenteses desnecessário e outras coisinhas mais...

Poste o resultado exato daquele debug que seguimos!

[]'s

Editado por Rafael Spilki
Link para o comentário
Compartilhar em outros sites

  • 0

Ok... então acho que minhas suspeitas estavam certas...

tente assim:

busca = Request.Form("busca")
response.write "busca = " & busca
response.end
If busca = "palavraexata" Then
sql = "SELECT * FROM fotos WHERE nome = '" & Request.Form("pesq") & "' and idcat= " & request.form("filtro") & ""
else
sql = "SELECT * FROM fotos WHERE nome LIKE '%" & RemoveAcentuacao(pesq) & "%' and idcat= " & request.form("filtro") & ""
end if

poste aqui os resultados desse debug.

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

tente assim:

busca = Request.Form("busca")
'response.write "busca = " & busca
'response.end
If busca = "palavraexata" Then
sql = "SELECT * FROM fotos WHERE nome = '" & Request.Form("pesq") & "' and idcat= " & request.form("filtro") & ""
elseif busca = "qualquerpalavra" then
sql = "SELECT * FROM fotos WHERE nome LIKE '%" & RemoveAcentuacao(pesq) & "%' and idcat= " & request.form("filtro") & ""
end if

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Dessa forma abaixo, imprimiu na tela com qualquer palavra selecionado:

busca = qualquerpalavra
Selecionando a palavra exata
busca = palavraexata
busca = Request.Form("busca")
response.write "busca = " & busca
response.end
If busca = "palavraexata" Then
sql = "SELECT * FROM fotos WHERE nome = '" & Request.Form("pesq") & "' and idcat= " & request.form("filtro") & ""
else
sql = "SELECT * FROM fotos WHERE nome LIKE '%" & RemoveAcentuacao(pesq) & "%' and idcat= " & request.form("filtro") & ""
end if
Agora, fazendo dessa forma abaixo:
tente assim:
busca = Request.Form("busca")
'response.write "busca = " & busca
'response.end
If busca = "palavraexata" Then
sql = "SELECT * FROM fotos WHERE nome = '" & Request.Form("pesq") & "' and idcat= " & request.form("filtro") & ""
elseif busca = "qualquerpalavra" then
sql = "SELECT * FROM fotos WHERE nome LIKE '%" & RemoveAcentuacao(pesq) & "%' and idcat= " & request.form("filtro") & ""
end if

[]'s Rafael Spilki

Rafael, continua fazendo a busca, dessa forma acima que postou,... Desculpe minha inconviniencia, mas o que você esta querendo fazer com estes response.write, fiquei apenas curioso ?????

Link para o comentário
Compartilhar em outros sites

  • 0

Não tem mais nenhum response.write! Veja a ' (aspas simples) na frente deles...

busca = Request.Form("busca")

'response.write "busca = " & busca

'response.end

If busca = "palavraexata" Then

sql = "SELECT * FROM fotos WHERE nome = '" & Request.Form("pesq") & "' and idcat= " & request.form("filtro") & ""

elseif busca = "qualquerpalavra" then

sql = "SELECT * FROM fotos WHERE nome LIKE '%" & RemoveAcentuacao(pesq) & "%' and idcat= " & request.form("filtro") & ""

end if

Estão todos desabilitados... não estou querendo debugar mais nada... estou querendo que você teste essa nova forma de condicional que eu fiz pra você e veja se funciona!

Link para o comentário
Compartilhar em outros sites

  • 0

Rafael, agora falta colocar a opção "Todas as categorias", tentei fazer assim:

If busca = "palavraexata" Then
sql = "SELECT * FROM fotos WHERE nome = '" & Request.Form("pesq") & "' and idcat= " & request.form("filtro") & ""
elseif busca = "qualquerpalavra" then
sql = "SELECT * FROM fotos WHERE nome LIKE '%" & RemoveAcentuacao(pesq) & "%' and idcat= " & request.form("filtro") & ""
elseif filtro = "todos" then
sql = "SELECT * FROM fotos WHERE nome LIKE '%" & RemoveAcentuacao(pesq) & "%'"
end if
Microsoft JET Database Engine error '80040e10' 

No value given for one or more required parameters.

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...