
Erro Em "notícias Relacionadas"
#1
Posted 17/04/2007, 10:55
Tenho na minha tabela de noticias, um campo chamado PALAVRACHAVE, onde cadastro algumas palavras-chave da notícia para que depois eu possa montar minha lista de "notícias relacionadas". Porém não estou conseguindo fazer isso funcionar corretamente, o resultado aparece muito estranho, não consigo descobrir o erro.
Vamos ao código:
Para exemplificar o que está acontecendo, digamos que tenho 5 noticias cadastradas da seguinte maneira:
Campo PALAVRACHAVE (tabela – 1NOTICIA):
1 - flamengo
2 – vasco
3 – flamengo, botafogo
4 – botafogo, vasco
5 – vasco, flamengo
As "notícias relacionadas" aparecem da seguinte forma:
Na Notícia 1 – (aparece a 3 e 5) – CORRETO
Na Notícia 2 – (aparece a 4 e 5) – CORRETO
Na Notícia 3 – (aparece a 4) - ERRADO, DEVERIA APARECER A 1, 4 E 5
Na Notícia 4 – (aparece a 2 e 5) - ERRADO, DEVERIA APARECER A 2, 3 E 5
Na Notícia 5 – (aparece a 1 e 3) - ERRADO, DEVERIA APARECER A 1, 2, 3 E 4 - ou as 3 ultimas, pois defino TOP 3 na consulta.
meu código:
[codebox]<%
strpalavrachave = objRS("palavrachave")
MyArray = Split(strpalavrachave," ")
strcodnoticia = objRS("cod_noticia")
For I=LBound(MyArray) To UBound(MyArray)
Set relacionadas = Server.CreateObject("ADODB.Recordset")
relacionadas.Open "SELECT TOP 3 * FROM 1NOTICIA WHERE palavrachave LIKE '%" & MyArray (I) & "%' and cod_noticia <>" & strcodnoticia & " and destaque='s' ORDER BY cod_noticia", Conexao
Next
If relacionadas.EOF = true then
else
%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<th colspan="2" align="left" bgcolor="#E2E2E2" class="texto1" scope="row">Notícias relacionadas:</th>
</tr>
</table>
<%
while Not relacionadas.EOF
%>
<table width="100%" border="0" cellpadding="0" cellspacing="1" bordercolor="#FFFFFF">
<tr>
<th width="12%" align="left" bgcolor="#E2E2E2" class="data" scope="row"><%= relacionadas("dtnoticia") %></th>
<th width="88%" align="left" bgcolor="#E2E2E2" class="texto" scope="row"><a href="...">
<% = relacionadas("titulo") %>
</a></th>
</tr>
</table>
<%
relacionadas.MoveNext
wend
End if
%>
[/codebox]
Pelo o que percebo, quando a busca é só com 1 palavra, ele pega bleza... mas se o campo tiver
2 palavras para busca, ele pega somente a 2ª palavra.
Por favor, não sei mais o que fazer, já tentei de um monte de jeito e nada de funcionar corretamente.
Abraços!
#2
Posted 04/05/2007, 08:49
A lógica do meu script funciona da seguinte maneira:
Tenho na minha tabela de noticias, um campo chamado PALAVRACHAVE, onde cadastro algumas palavras-chave da notícia para que depois eu possa montar minha lista de "notícias relacionadas". Porém não estou conseguindo fazer isso funcionar corretamente, o resultado aparece muito estranho, não consigo descobrir o erro.
Vamos ao código:
Para exemplificar o que está acontecendo, digamos que tenho 5 noticias cadastradas da seguinte maneira:
Campo PALAVRACHAVE (tabela – 1NOTICIA):
1 - flamengo
2 – vasco
3 – flamengo, botafogo
4 – botafogo, vasco
5 – vasco, flamengo
As "notícias relacionadas" aparecem da seguinte forma:
Na Notícia 1 – (aparece a 3 e 5) – CORRETO
Na Notícia 2 – (aparece a 4 e 5) – CORRETO
Na Notícia 3 – (aparece a 4) - ERRADO, DEVERIA APARECER A 1, 4 E 5
Na Notícia 4 – (aparece a 2 e 5) - ERRADO, DEVERIA APARECER A 2, 3 E 5
Na Notícia 5 – (aparece a 1 e 3) - ERRADO, DEVERIA APARECER A 1, 2, 3 E 4 - ou as 3 ultimas, pois defino TOP 3 na consulta.
meu código:<%strpalavrachave = objRS("palavrachave")MyArray = Split(strpalavrachave," ")strcodnoticia = objRS("cod_noticia")For I=LBound(MyArray) To UBound(MyArray)Set relacionadas = Server.CreateObject("ADODB.Recordset")relacionadas.Open "SELECT TOP 3 * FROM 1NOTICIA WHERE palavrachave LIKE '%" & MyArray (I) & "%' and cod_noticia <>" & strcodnoticia & " and destaque='s' ORDER BY cod_noticia", ConexaoNextIf relacionadas.EOF = true thenelse%><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><th colspan="2" align="left" bgcolor="#E2E2E2" class="texto1" scope="row">Notícias relacionadas:</th></tr></table><%while Not relacionadas.EOF%> <table width="100%" border="0" cellpadding="0" cellspacing="1" bordercolor="#FFFFFF"><tr><th width="12%" align="left" bgcolor="#E2E2E2" class="data" scope="row"><%= relacionadas("dtnoticia") %></th><th width="88%" align="left" bgcolor="#E2E2E2" class="texto" scope="row"><a href="..."><% = relacionadas("titulo") %></a></th></tr></table><%relacionadas.MoveNextwend End if%>
Pelo o que percebo, quando a busca é só com 1 palavra, ele pega bleza... mas se o campo tiver
2 palavras para busca, ele pega somente a 2ª palavra.
Por favor, não sei mais o que fazer, já tentei de um monte de jeito e nada de funcionar corretamente.
Abraços!
Então broder,você conseguiu resolver o problema? Eu estava querendo fazer justamente isso e pensei na mesma lógica que você pensou, através das palavras chave. MAs já que tu disse que nao deu certo...
abraços..
#3
Posted 11/05/2007, 10:27
- primeiro faça um select normal
- nesse select vc usa o like assim:
palavra_chave = variavel_com_sua_palavra_puxando_do_banco select * from tabela where campo like '%"&palavra_chave&"%'- depois faça a listagem desse select
---------------------------------------------------------------------------
> BRdesign.NET - Soluções em Websites e Sistemas E-Commerce.
---------------------------------------------------------------------------
> BR-ecommerce - Sua loja virtual na internet! - Apenas R$99,90 mensais (hospedagem inclusa)!
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)