A pessoa digita por exemplo "O que o Mario que é legal gosta?"
Eu separo as palavras repetidas e fica:
"O que Mario é legal gosta"
E jogo cada uma numa matriz e faço uma busca no banco de dados por cada palavra:
1 - Busco por "O"
2 - Busco por "Mario"
3 - Busco por "é"
4 - Busco por "legal"
5 - Busco por "gosta"
Só que na hora de imprimir o resultado, nos resultados da busca por "Mario", repete resultado da busca por "O".
E eu queria excluir, na verdade impedir que quando a busca chegar em "Mario", na hora de imprimir os resultados
de "Mario", os que já extiverem sido mostrados nos resultados de "O", não sejam mostrados de novo, e assim suscessivamente
com os resultados de "é", "legal" e "Gosta".
Na verdade, to criando um sistema de peguntas frequentes e preciso evitar que a cada nova palavra digitada na frase chave,
seja repetida a mesma pergunta.
Vai aí o Código que to usando, tem uma observação no local do erro, se alguém puder me ajudar, desde já agradeço.
<%
If REQUEST.QUERYSTRING("action") = "consultar" then
Dim busca, onde, pesq, x, bg, DfId, DesenharTabela, cor, ModuloNome 'Declara as variaveis.
Dim laco, buscadas, considera, palavra, palavra2, pergunta, registro, NomeAutor, objRecordSetNomeAutor, objRecordSetNomeModulo
DesenharTabela = False
busca=trim(request.form("chave"))
laco=split(busca,chr(32))
x = 0
considera = true
buscadas = array()
for each palavra in laco
if x > 0 then
for each palavra2 in buscadas
if palavra = palavra2 then
considera = false
end if
next
if considera = true then
redim preserve buscadas(Ubound(buscadas)+1)
buscadas(Ubound(buscadas)) = palavra
end if
else
redim preserve buscadas(Ubound(buscadas)+1)
buscadas(Ubound(buscadas)) = palavra
x = x + 1
end if
considera = true
next
for each palavra in buscadas
' palavra=busca(x) 'Entrega à variavel palavra, cada uma das palavras em separado para fazer a busca
palavra = replace(palavra,"a","[a,á,à,ã,â,ä,A]") 'Trata as palavras acentuadas como que sem acento ou com acenmto
palavra = replace(palavra,"e","[e,é,è,ê,ë,E]")
palavra = replace(palavra,"i","[i,í,ì,î,ï,I]")
palavra = replace(palavra,"o","[o,ó,ò,õ,ô,ö,O]")
palavra = replace(palavra,"u","[u,ú,ù,û,ü,U]")
palavra = replace(palavra,"c","[c,ç]")
onde="tbModulo.DfNomeModulo like '%"&palavra&"%' or tbfaq.DfPergunta like '%"&palavra&"%' or tbfaq.DfResposta like '%"&palavra&"%'" 'String Sql busca letra por letra
'onde="DfPergunta like '"&palavra&"' or DfResposta like '"&palavra&"' " 'String Sql busca palavra por palavra
'Cria o Select
Conectar objConecta, objRecordSet, "SELECT tbFaq.DfIdFaq, tbModulo.DfNomeModulo, tbFaq.DfIdUsuario, tbFaq.DfPergunta, tbFaq.DfResposta, tbFaq.DfVersao FROM tbFaq INNER JOIN tbModulo ON tbfaq.DfidModulo = tbModulo.DfIdModulo where " & onde & ""
if not objRecordSet.eof = true then 'Tem registros, cria o laço para impressão no laço for
if DesenharTabela = False then
'Criando desenho tabela
response.Write "<br><p>"
response.Write "<table border='0' width=95% align=center cellspacing='1', cellpading='2'>"
response.Write "<tr bgcolor=#8193A7>"
response.Write "<td width=50 align=center height=20><font color=#FFFFFF><b>ID</b></fonte></td>"
response.Write "<td width=70 align=center height=20><font color=#FFFFFF><b>Modulo</b></fonte></td>"
response.Write "<td width=320 align=center height=20><font color=#FFFFFF><b>Pergunta</b></fonte></td>"
response.Write "<td width=100 align=center height=20><font color=#FFFFFF><b>Autor</b></fonte></td>"
response.Write "<td width=100 align=center height=20><font color=#FFFFFF><b>Versao</b></fonte></td>"
response.Write "<td width=100 align=center height=20><font color=#FFFFFF><b>Visualizar</b></fonte></td>"
response.Write "</tr>"
DesenharTabela = True
End if
dim faq_id, faq_modulo, faq_autor, faq_pergunta, faq_resposta, faq_versao
Do Until objRecordSet.EOF = True
faq_id = objRecordSet("DfIdFaq")
faq_modulo = objRecordSet("DfNomeModulo")
faq_autor = objRecordSet("DfIdUsuario")
faq_pergunta = objRecordSet("DfPergunta")
faq_versao = objRecordSet("DfVersao")
' If registro <> faq_id then (nesse momento preciso evitar a repetição. to usando esse algoritimo ma num ta dando.
if (cor = 1) then
bg = "#E8ECEE"
cor = 2
else
bg = "#d3dbde"
cor = 1
end if
Conectar objConecta, objRecordSetNomeAutor, "select * from tbUsuario where DfIdUsuario = '"&faq_autor&"'"
NomeAutor = objRecordSetNomeAutor("DfNomeUsuario")
response.Write "<tr bgcolor="&bg&">"
response.Write "<td width=50 height=20>"&faq_id&"</td>"
response.Write "<td width=70 height=20>"&faq_modulo&"</td>"
response.Write "<td width=320 height=20>"&faq_pergunta&"</td>"
response.Write "<td width=100 height=20>"&NomeAutor&"</td>"
response.Write "<td width=100 height=20>"&faq_versao&"</td>"
response.Write "<td width=100 height=20 align=center><a href=verfaq.asp?action=1&id="&faq_id&"><img src=../imagens/ver.ico width=25 border=0></a></td>"
response.Write "</tr>"
'End if
registro = faq_id
objRecordSet.MoveNext
Loop
end if
next 'Fim do laço for
if DesenharTabela = False then
response.Write "<table align=center width=200 height=50 border=2><tr><td>"
response.Write "<center>Não há resultados</center>"
response.Write "</td></tr></table>"
else
response.Write "</table>"
END IF
END IF
%>
Pergunta
Carlos Rocha
Olá pessoal!
To fazendo uma busca da seguinte forma
A pessoa digita por exemplo "O que o Mario que é legal gosta?"
Eu separo as palavras repetidas e fica:
"O que Mario é legal gosta"
E jogo cada uma numa matriz e faço uma busca no banco de dados por cada palavra:
1 - Busco por "O"
2 - Busco por "Mario"
3 - Busco por "é"
4 - Busco por "legal"
5 - Busco por "gosta"
Só que na hora de imprimir o resultado, nos resultados da busca por "Mario", repete resultado da busca por "O".
E eu queria excluir, na verdade impedir que quando a busca chegar em "Mario", na hora de imprimir os resultados
de "Mario", os que já extiverem sido mostrados nos resultados de "O", não sejam mostrados de novo, e assim suscessivamente
com os resultados de "é", "legal" e "Gosta".
Na verdade, to criando um sistema de peguntas frequentes e preciso evitar que a cada nova palavra digitada na frase chave,
seja repetida a mesma pergunta.
Vai aí o Código que to usando, tem uma observação no local do erro, se alguém puder me ajudar, desde já agradeço.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.