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

Problema Com Duplicidade


Carlos Rocha

Pergunta

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.


<%
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&ccedil;o para impress&atilde;o no la&ccedil;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&ccedil;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
%>


Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

dá uma olhada nesse pequeno script para evitar palavras repetidas:

palavra = "como fazer como o João Fez" ' aqui a sua string

dim separada(10)'Um array para obter as palavras

cont=0 ' Um contador para manipularmos o array

for i=1 to len(palavra)'num caracteres

var=mid(palavra,i,1)

str=str&var

if var=" " then' espaços em branco significa próxima palavra

cont=cont+1

separada(cont)=str

str="" ' então zeramos a string

end if

next

cont=cont+1

separada(cont)=str ' para não perdermos a última palavra

for i=1 to cont ' para evitar palavras repetidas

for i2=1 to cont

if separada(i)=separada(i2) and not i=i2 then

separada(i)=""

end if

next

next

for i3=1 to cont ' para evitar palavras pequenas ex: é , sim, tem , não é opcional

if not len(separada(i3)) < 4 then

Response.Write(separada(i3)&"<br>")

end if

next

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...