Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lilian Vilela

Busca no Fórum

Recommended Posts

oi gente,

 

assim eu tenho uma busca em um forum, onde o cara digita a palavra e essa palavra é buscada em varios campos da tabela.

 

exemplo:

 

ele digitou a palavra cadeira, se tiver a palavracadeira no campo autor, no campo titulo e no campo mensagem, ele traz 3 vezes a mesma mensagem do forum.

 

como eu faço pra ele nao repetir as mensagens ??!?!?!?!?!?!?!? :wacko:

 

entenderam ?????

 

valews....

Lilian .....

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao adianto......olha meu codigo....strSql = "SELECT distinct * FROM forum"if acao = "busca" then strSql = strSql & ",resposta where forum.Nome_usu like '%" &Busca&"%' OR resposta.Resp_Mensagem LIKE '%" & Busca & "%' OR resposta.Resp_Usua LIKE '%" & Busca & "%' OR forum.Assunto LIKE '%" & Busca & "%' OR forum.Msg LIKE '%" & Busca & "%' ORDER BY data DESC"end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o campo index?Por exemplo ser tiver algum código(indice) tenta assim...SELECT * FROM forum WHERE (...suas condições) GROUP BY (codigo)Tenta aí

Compartilhar este post


Link para o post
Compartilhar em outros sites

no meu código o select pra busca é esse:strSql = "SELECT * FROM forum"if acao = "busca" then strSql = strSql & " where Nome_usu like '%" &Busca&"%' OR Data LIKE '%" & Busca & "%' OR Assunto LIKE '%" & Busca & "%' OR Msg LIKE '%" & Busca & "%' ORDER BY data DESC"end ifonde eu colocaria o group by ?!?!?e outra, quando se usa o group by no select pode usar o * antes do From, nao tem que especificar campo por campo ?!??!?! :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

onde eu colocaria o group by ?!?!?

strSql = "SELECT * FROM forum"if acao = "busca" thenstrSql = strSql & " where Nome_usu like '%" &Busca&"%' OR Data LIKE '%" & Busca & "%' OR Assunto LIKE '%" & Busca & "%' OR Msg LIKE '%" & Busca & "%' GROUP BY codigo ORDER BY data DESC"end if

e outra, quando se usa o group by no select pode usar o * antes do From, nao tem que especificar campo por campo ?!??!?!

Não tenho certeza. Tanta com *, se não funcionar faz especificando os campos. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu ja tinha tentado faze do jeito que voce me ensino agora.... mas aparece esse erro......Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)[Microsoft][Driver ODBC para Microsoft Access] Você tentou executar uma consulta que não inclui a expressão 'Assunto' especificada como parte de uma função agregada./desenv/produtos/portal/site/interno/forum/forum_main.asp, line 21o codigo fikou assim (ps eu inclui a resposta....)strSql = "SELECT id, Assunto, Msg, Data, Ativo, Img, Img_Assunto, Email_usu, Nome_usu, Resp_Id, Resp_IdForum, Resp_Mensagem, Resp_Ativo, Resp_Img, Resp_Data, Resp_Usua FROM forum, resposta "if acao = "busca" thenstrSql = strSql & "where forum.Nome_usu like '%" &Busca&"%' OR resposta.Resp_Usua LIKE '%" & Busca & "%' OR Resp_Mensagem LIKE '%" & Busca & "%' OR forum.Data LIKE '%" & Busca & "%' OR forum.Assunto LIKE '%" & Busca & "%' OR forum.Msg LIKE '%" & Busca & "%' GROUP BY id ORDER BY data DESC"end ifa linha 21 do erro é:rsSql.Open strSql, objBanco, adOpenStatic?!?!?!?!?!?! :unsure: :wacko: :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse eh meu select e eu tenho essa variavel acao no meu codigo q aki no caso ela vai ser busca.os campos da tabela fórum --> Nome_usu, Data, Assunto, Msgos campos da tabela resposta -->Resp_Usua,Resp_Mensagem strSql = "SELECT id, Assunto, Msg, Data, Ativo, Img, Img_Assunto, Email_usu, Nome_usu, Resp_Id, Resp_IdForum, Resp_Mensagem, Resp_Ativo, Resp_Img, Resp_Data, Resp_Usua FROM forum, resposta "if acao = "busca" thenstrSql = strSql & "where forum.Nome_usu like '%" &Busca&"%' OR resposta.Resp_Usua LIKE '%" & Busca & "%' OR resposta.Resp_Mensagem LIKE '%" & Busca & "%' OR forum.Data LIKE '%" & Busca & "%' OR forum.Assunto LIKE '%" & Busca & "%' OR forum.Msg LIKE '%" & Busca & "%' GROUP BY id ORDER BY data DESC"end iflinha do erro: rsSql.Open strSql, objBanco, adOpenStaticerro: Tipo de erro:Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)[Microsoft][Driver ODBC para Microsoft Access] Você tentou executar uma consulta que não inclui a expressão 'Assunto' especificada como parte de uma função agregada./desenv/produtos/portal/site/interno/forum/forum_main.asp, line 19ai vai o codigo se acao="busca"....lseif acao = "busca" then If Busca = "" then%></tr><tr><td height="30"></td></tr><tr><td align="center" class="title"><b>O campo buscar não foi preechido corretamente</b></td></tr><tr><td height="30"></td></tr><td align="center"><a style="cursor:hand" href="forum.asp"><li type="square"><b>Voltar</b></a></td></tr><%elseif rsSql.eof then%></tr><tr><td height="30" class="title"></td></tr><tr><td align="center" class="title"><b>Não há mensagens postadas!!</b></td></tr><tr><td height="30"></td></tr><td align="center"><a style="cursor:hand" href="forum.asp"><li type="square"><b>Voltar</b></a></td></tr><%else rsSql.PageSize = 7If Request.QueryString("pagina_busca")="" then intpagina=1 ElseIf cint(Request.QueryString("pagina_busca"))<1 thenintpagina=1 ElseIf cint(Request.QueryString("pagina_busca"))> rsSql.PageCount then intpagina=rsSql.PageCount Elseintpagina=Request.QueryString("pagina_busca")End ifEnd ifEnd ifrsSql.AbsolutePage=intpaginai = 0intrec=0While intrec < rsSql.PageSize and not rsSql.EOFif rsSql("ativo") = true thenset rsResp = objBanco.execute("SELECT count(Resp_Id) as qtde FROM Resposta Where Resp_IdForum="&rsSql("Id"))if i = 0 then%><tr><td><table cellspacing=0 cellpadding=0 border="0" class="texto" width="100%"><tr> <td width="25"></td> <td width="200" style="border-bottom: 1px solid #e1e1e1;"><b>Mensagens </b></td> <td width="100" style="border-bottom: 1px solid #e1e1e1;" align="center"><b>Respostas</b></td> <td width="90" style="border-bottom: 1px solid #e1e1e1;" align="center"><b>Data</b></td> <td width="50" style="border-bottom: 1px solid #e1e1e1;" align="center"><b>Consultar</b></td></tr><%end if%><tr id="ln<%=rsSql("id")%>"> <td width="10"></td> <td width="150" style="border-bottom: 1px solid #e1e1e1;"><a style="cursor:hand" onclick="java script: consulta(<%=rsSql("id")%>);" onmouseover="ln<%=rsSql("id")%>.className='Ln01';" onmouseout="ln<%=rsSql("id")%>.className='Ln02';" class="texto" style="font-weight: normal; text-decoration: none;"><%response.write "<img src='"&local&"imagens/forum/" & rsSql("Img_Assunto") & "' border='0'>  " & rsSql("Assunto")%></a></td> <td style="border-bottom: 1px solid #e1e1e1;" align="center"><%=rsResp("qtde")%></td> <td style="border-bottom: 1px solid #e1e1e1;"><%=rsSql("Data")%></td> <td style="border-bottom: 1px solid #e1e1e1;" align="center"><a style="cursor:hand" href="java script:consulta(<%=rsSql("id")%>)"onmouseover="ln<%=rsSql("id")%>.className='Ln01';" onmouseout="ln<%=rsSql("id")%>.className='Ln02';" class="texto" style="font-weight: normal; text-decoration: none;"><img src="../../imagens/consultar.gif" border="0"></a></td></tr><%intrec=intrec+1 i = i + 1end ifrsSql.MoveNextWendrsSql.MoveFirstrsCount = objBanco.execute("SELECT COUNT(ativo) AS qtdAtivo FROM Forum WHERE Ativo = true")if rsCount("qtdAtivo") <> 0 then Mensagem = "<td clas'texto' width100%' alig'left'>Última Mensem Posta:<b>  "&rsSql("data")&"</b><br></td>"elseMensagem = "<td class='title' width='100%' align='center'><b>Não há mensagens postadas!!</b></td>"end if%><tr><td colspan="5"><table cellspacing=0 cellpadding=9 border=0 class="texto" width="80%"><tr><td widht="10"></td><td class="texto" width="100%" align="left"></td></tr><tr><td></td><%=Mensagem%></tr><tr><td widht="10"></td><td class="texto" width="100%" align="left"><%If intpagina <> 1 then%><a style="cursor:hand" href="forum.asp?acao=busca"><%=intpagina = 1%>">Primeira</a>  - <a style="cursor:hand" href="forum.asp?acao=busca"><%=intpagina - 1%>Anterior</a>  | <%else%>Primeira  - Anterior  | <%end if%><%If strcomp(intpagina,rsSql.PageCount) <> 0 then%><a style="cursor:hand" href="forum.asp?acao=busca"<%=pagina1 + 1%>>Próxima</a>  - <a style="cursor:hand" href="forum.asp?acao=busca"<%=rsSql.PageCount%>>Última</a><%else%>Próxima  - Última<%end if%></td></tr><tr><td align = "center" colspan="2"></tr><tr><td align = "center" colspan="2"><a href="forum.asp?acao=cadastrar"><img src="../../imagens/adiciona.gif" border="0"> Postar uma nova mensagem </a>  ||  <a style="cursor:hand" href="forum.asp?acao=voltar"><b>Voltar</b></a></td><td width="15"></td></tr></table></td> </tr>

Compartilhar este post


Link para o post
Compartilhar em outros sites

OláLilian Vilela,Percebi que você está um pouco confusa, primeiro você tem que avaliar o q você realmente quer.Na sua instrução de SQL você está utilizando duas tabelas na clausula FROM por isso é necessário fazer um relacionamento entre as duas, exemplo:select id, Assunto, Resp_Id, Resp_Mensagem from forum, resposta where forum.id=resposta.id and Assunto like ...claro que você terá que usar as chaves primarias e secundárias das tabelas para o relacionamento, que no caso eu não sei quais são utilizei o ID..Tenho certeza que seu problema está apenas no relacionamento entre as tabelas adicione o relacionamento na clausula WHERE que não vai mais aparecer linhas duplicadas.Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

os campos da tabela fórum --> Nome_usu, Data, Assunto, Msgos campos da tabela resposta -->Resp_Usua,Resp_Mensagemselect a.Nome_usu, a.Data, a.Assunto, a.Msg, B.Resp_Usua, B.resp_MEnsagem from forum a, resposta b where a.Nome_Usu like '%"&busca&"%' or ....e por assim vai .....se você utilizar algum AND na clausa do where junto com o or...vai dar uma busca esquisita... o or teria q ficar entre parenteses....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.