Ir para conteúdo

POWERED BY:

Arquivado

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

Amaral

Pequisa no Servidor

Recommended Posts

Olá, estou querendo colocar um formulário de busca no meu site. Fiz tudo "direitinho" e o formulário até chega a fazer a busca, mas ele mostra nos resultados todas as minhas notícias e não somente as semelhantes a palavra-chave digitada no formulário.

 

Exemplo 1:

 

sqlDados = "SELECT * FROM noticias "

sqlDados = sqlDados & " Where " + "'%" + request.Form("valor") + "%' "

sqlDados = sqlDados & " ORDER by titulo "

 

-------------------------------------

Exemplo 2:

 

Eu mudei o código e coloquei assim:

 

sqlDados = sqlDados & " Where " + " LIKE " + "'%" + request.Form("valor") + "%' "

 

mas ele apresenta o seguinte erro:

 

[Microsoft][Driver ODBC para Microsoft Access] Erro de sintaxe (operador faltando) na expressão de consulta 'LIKE '%Crise%''.

 

 

--------------------------

 

No exemplo 1 um a busca retorna tudo que tem na tabela noticias do banco de dados, já no exemplo 2 quando eu tenho usar a função LIKE ele dá erro.

 

Alguém pode me ajudar?

 

Consegui arrumar galera. Faltava eu especificar o LIKE... heheuheu... OU seja, "Like titulo"

 

Agora euu gostaria de saber como faço pra ele busca sem a diferenciação de acento.

 

Tipo: Quando eu coloco Agua aqui ele não encontra minhas notícias que estão escritas corretamente.

 

Quero que se eu digitar "agua" ele encotre titulos de notícias que contenham: agua, água...

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa o operador LIKE assim

 

"SELECT * FROM TABELA WHERE NOME LIKE '%" & variavel & "%'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa o operador LIKE assim

 

"SELECT * FROM TABELA WHERE NOME LIKE '%" & variavel & "%'"

 

MAs eu coloquei desse jeito, onde você escreveu "variável" eu coloquei o "request.form"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é o campo onde digito a palavra que quero buscar.

 

<form name="form1" method="post" action="pesquisa.asp">
<input name="valor" type="text">
<input name="imageField" type="image" class="CaixaTexto" src="imagens/ok2.gif" align="top" size="28" height="20">
</form>

Esses são os dados que eu estou colocando na página onde o resultado vai aparecer:

 

Dim sqlDados
call abreconexao
sqlDados = "SELECT * FROM rss "
sqlDados = sqlDados & " Where titulo Like '%" & request.Form("valor") & "%' "
sqlDados = sqlDados & " ORDER by titulo "
set rsDados = conexaoDataBase.execute(sqlDados)

Legenda:

Rss- nome da tabela do banco de dados que as notícias estão gravadas.

valor - nome do campo onde eu digito a palavra que estou procurando.

titulo - é o nome da coluna do banco de dados com o título das notícias

Compartilhar este post


Link para o post
Compartilhar em outros sites

request.Form("valor") é do tipo string ou numérico ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua string SQL para ver o que esta sendo passado,

response.write(SQL)
response.end()

e veja o resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua string SQL para ver o que esta sendo passado,

response.write(SQL)
response.end()

e veja o resultado

 

Deu no mesmo. Olha só como é o meu código normal da pagina de resposta:

 

 

Esse é o comando que puxa da caixa de texto onde escrevo o que quero buscar:

 

sqlDados = "SELECT * FROM rss "
sqlDados = sqlDados & " Where titulo Like '%" & request.Form("valor") & "%' "
sqlDados = sqlDados & " ORDER by titulo "

E esse é o código que mostra o que foi encontrado.

 

<p><% Do While not rsDados.eof %>
	<a href="detalhe.asp?codigo=<% = rsDados("codNew") %>"><% = rsDados("titulo") %></a>
    <br><br>    
    

<%
rsDados.MoveNext
Loop
%></p>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade era para por logo abaixi de

 

sqlDados = "SELECT * FROM rss "
sqlDados = sqlDados & " Where titulo Like '%" & request.Form("valor") & "%' "
sqlDados = sqlDados & " ORDER by titulo "

esse trecho

 

response.write(sqlDados)
response.end()

o que aparecer pst aqui para vermos se o erro não se encontra ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade era para por logo abaixi de

 

sqlDados = "SELECT * FROM rss "
sqlDados = sqlDados & " Where titulo Like '%" & request.Form("valor") & "%' "
sqlDados = sqlDados & " ORDER by titulo "

esse trecho

 

response.write(sqlDados)
response.end()

o que aparecer pst aqui para vermos se o erro não se encontra ai

 

Ele não apresenta erro, simplismente não encontra nada. Tipo tem uma notícia minha que o título é "água" se eu digitar "agua"(sem acento) ele não encontra. Vou colocar todo o código aqui.

-------------------------------------------------------------------------------

<%@LANGUAGE="VBSCRIPT"%>
<%
Option Explicit
%>
<!--#Include file="dbconexao.inc"-->
<%
Response.Expires = 0
Dim conexaoDataBase
Dim sqlDados, rsDados, totalNoticias, sqlServ, rsServ, mes
Dim dia_semana, sqlNews, rsNews, banner
call abreconexao

sqlDados = "SELECT * FROM rss "
sqlDados = sqlDados & " Where titulo Like '%" & request.Form("valor") & "%' "
sqlDados = sqlDados & " ORDER by titulo "
set rsDados = conexaoDataBase.execute(sqlDados)


sqlServ = " SELECT * FROM servicos "
set rsServ = conexaoDataBase.execute(sqlServ)

banner = "banner"

sqlNews = " SELECT * FROM rss "
set rsNews = conexaoDataBase.execute(sqlNews)

totalNoticias = rsDados.recordcount

// Função para data

Function ExibeData(data)
  dia_semana = WeekDay(data)
  Select Case dia_semana
  Case 1 : dia_semana = "Domingo"
  Case 2 : dia_semana = "Segunda-Feira"
  Case 3 : dia_semana = "Terça-Feira"
  Case 4 : dia_semana = "Quarta-Feira"
  Case 5 : dia_semana = "Quinta-Feira"
  Case 6 : dia_semana = "Sexta-Feira"
  Case 7 : dia_semana = "Sábado"
  End Select
  mes = Month(data)
  Select Case mes
  Case 1 : mes = "Janeiro"
  Case 2 : mes = "Fevereiro"
  Case 3 : mes = "Março"
  Case 4 : mes = "Abril"
  Case 5 : mes = "Maio"
  Case 6 : mes = "Junho"
  Case 7 : mes = "Julho"
  Case 8 : mes = "Agosto"
  Case 9 : mes = "Setembro"
  Case 10 : mes = "Outubro"
  Case 11 : mes = "Novembro"
  Case 12 : mes = "Dezembro"
  End Select
  ExibeData = dia_semana & ", " & Day(Date()) & " de " & mes & " de " & Year(data)
End Function

%>

<HTML>
<HEAD>
<title> Consultoria XXX </title>

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link type="text/css" rel="stylesheet" href="style.css" />
<link rel="shortcut icon" href="" type="image/icon">

<script type="text/javascript">
                  
//relógio
function startTime()
{
var today=new Date()
var h=today.getHours()
var m=today.getMinutes()
var s=today.getSeconds()
// adiciona  zero na frente dos numeros < 10
m=checkTime(m)
s=checkTime(s)
document.getElementById('txt').innerHTML=h+":"+m+":"+s
t=setTimeout('startTime()',500)
}

function checkTime(i)
{
if (i<10) 
  {i="0" + i}
  return i
}
// Final do relógio
</script>
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
</HEAD>

<body>
<div id="nova">
<div id="geral">
<div id="conteudo">
<div id="topo" align="center">
<div class="logo" align="left"><img src="imagens/marca.gif">
<div class="banner">

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,
0,0,0"
 WIDTH="496" HEIGHT="61" id="banner" ALIGN="">
 <PARAM NAME=movie VALUE="banner"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#FFFFFF> <EMBED src="imagens/banner.swf" quality=high bgcolor=#FFFFFF  WIDTH="496" HEIGHT="61" NAME="banner" ALIGN=""
 TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.XXX.com.br/go/getflashplayer"></EMBED>
</OBJECT>
</div>
</div>
</div><!--fim da div TOPO-->

<!--div MENU-->
	<!--#Include file="menu.asp"-->
<!--Fim div MENU-->
<br>
<div id="corpo">

<h5>Sua pesquisa encontrou <strong><% = totalNoticias %></strong> notícias(s)<br></h5>
    
	<p><% Do While not rsDados.eof %>
	<a href="detalhe.asp?codigo=<% = rsDados("codNew") %>"><% = rsDados("titulo") %></a>
    <br><br>    
    

<%
rsDados.MoveNext
Loop
%></p>

             
              <div class="rss">
              <h1>Últimas Notícias</h1>
             
              <% Do while not rsNews.eof%>
              
			  <p align="justify"><a href=""><% = rsNews("titulo") %></a><BR>
             
              <% 
			  rsNews.MoveNext
			  loop
			  %></p>
				<p><a href="">Mais...</a></p>
              </div>

</div><!--fim da div CORPO-->

</div><!--fim da div CONTEUDO-->



</div><!--fim da div GERAL-->
<div id="rodape" align="center">

<img src="imagens/banner_rodape2.gif">

</div><!--fim da div RODAPÉ-->
</div><!--fim da div NOva-->
</body>
</HTML>

<%
rsDados.close
rsNews.close
rsServ.close
call fechaconexao
set rsDados = nothing
set rsNews = nothing
set totalNoticias = nothing
set rsServ = nothing
set dia_semana = nothing
set mes = nothing
set banner = nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas o que apareceu com o que pedimos para por? mesmo sem dar erro era para aparecer uma mensagem na tela

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas o que apareceu com o que pedimos para por? mesmo sem dar erro era para aparecer uma mensagem na tela

 

Quando eu coloco:

 

response.write(sqlDados)

response.end()

 

no lugar de:

 

<p><% Do While not rsDados.eof %>
	<a href="detalhe.asp?codigo=<% = rsDados("codNew") %>"><% = rsDados("titulo") %></a>
    <br><br>    
    

<%
rsDados.MoveNext
Loop
%></p>

 

AParece o seguinte:

Ele mostra: Sua pesquisa encontrou 9 resultados(que são todas as notícias que eu tenho no BD)

 

e onde deveria aparecer as noticias encontradas aparece:

SELECT * FROM rss Where titulo Like '%%' ORDER by titulo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode implementar uma função para fazer a busca com ou sem acento...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode implementar uma função para fazer a busca com ou sem acento...

 

Mas é isso que eu quero. o meu código já retorna as notícias só que ele não diferencia com e sem acento... Isso que eu gostaria de colocar.

 

Tipo:

digitar "agua"

 

e se eu tiver uma notícia no banco de dados "água"(com acento) ele encontrar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esses dias teve um post parecido com o seu, inclusive com uma função de acentos:

http://forum.imasters.com.br/index.php?/topic/403096-adaptar-paginacao-em-sistema-de-busca/

 

tem também no laboratório de scripts, basta dar uma procurada por lá, que retorna por exemplo:

http://forum.imasters.com.br/index.php?/topic/299803-catalogo-de-scripts/page__hl__acento__fromsearch__1

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%
Option Explicit
%>
<!--#Include file="dbconexao.inc"-->
<%
Response.Expires = 0
Dim conexaoDataBase
Dim sqlDados, rsDados, totalNoticias, sqlServ, rsServ, mes, busca, i, texto, TiraAcento
Dim dia_semana, sqlNews, rsNews, banner
call abreconexao

sqlDados = "SELECT * FROM rss "
sqlDados = sqlDados & " Where titulo Like '%" & request.Form("busca") & "%' "
sqlDados = sqlDados & " ORDER by titulo "
set rsDados = conexaoDataBase.execute(sqlDados)

sqlServ = " SELECT * FROM servicos "
set rsServ = conexaoDataBase.execute(sqlServ)

banner = "banner"

sqlNews = " SELECT TOP 4 * FROM rss "
set rsNews = conexaoDataBase.execute(sqlNews)

totalNoticias = rsDados.recordcount

Function ExibeData(data)
  dia_semana = WeekDay(data)
  Select Case dia_semana
  Case 1 : dia_semana = "Domingo"
  Case 2 : dia_semana = "Segunda-Feira"
  Case 3 : dia_semana = "Terça-Feira"
  Case 4 : dia_semana = "Quarta-Feira"
  Case 5 : dia_semana = "Quinta-Feira"
  Case 6 : dia_semana = "Sexta-Feira"
  Case 7 : dia_semana = "Sábado"
  End Select
  mes = Month(data)
  Select Case mes
  Case 1 : mes = "Janeiro"
  Case 2 : mes = "Fevereiro"
  Case 3 : mes = "Março"
  Case 4 : mes = "Abril"
  Case 5 : mes = "Maio"
  Case 6 : mes = "Junho"
  Case 7 : mes = "Julho"
  Case 8 : mes = "Agosto"
  Case 9 : mes = "Setembro"
  Case 10 : mes = "Outubro"
  Case 11 : mes = "Novembro"
  Case 12 : mes = "Dezembro"
  End Select
  ExibeData = dia_semana & ", " & Day(Date()) & " de " & mes & " de " & Year(data)
End Function


for i = 1 to len(busca) 
  Letra = mid(busca, i, 1)
  Select Case Letra
   Case "a","á","Á","à","À","ã","Ã","â","Â","â","ä","Ä"
   Letra = "A"
   Case "e","é","É","ê","Ê","Ë","ë","È","è"
   Letra = "E"
   Case "i","í","Í","ï","Ï","Ì","ì"
   Letra = "I"
   Case "o","ó","Ó","ô","Ô","õ","Õ","ö","Ö","ò","Ò"
   Letra = "O"
   Case "ú","Ú","Ù","ù","ú","û","ü","Ü","Û"
   Letra = "U"
   Case "ç","Ç"
   Letra = "C"
   Case "ñ"
   Letra = "N"
  End Select
  texto = texto & Letra
next
TiraAcento = texto



%>

<HTML>
<HEAD>
<title> Consultoria Ambiental</title>

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link type="text/css" rel="stylesheet" href="style.css" />
<link rel="shortcut icon" href="" type="image/icon">

<script type="text/javascript">
                  
//relógio
function startTime()
{
var today=new Date()
var h=today.getHours()
var m=today.getMinutes()
var s=today.getSeconds()
// adiciona  zero na frente dos numeros < 10
m=checkTime(m)
s=checkTime(s)
document.getElementById('txt').innerHTML=h+":"+m+":"+s
t=setTimeout('startTime()',500)
}

function checkTime(i)
{
if (i<10) 
  {i="0" + i}
  return i
}
// Final do relógio
</script>
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>


<script>
//Faz o menu funcionar no IE
startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("nav");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
  }
  node.onmouseout=function() {
  this.className=this.className.replace
	(" over", "");
   }
   }
  }
 }
}
window.onload=startList;
</script>
</HEAD>

<body>
<div id="nova">
<div id="geral">
<div id="conteudo">
<div id="topo" align="center">
<div class="logo" align="left"><img src="imagens/marca.gif">
<div class="banner">
</div>
</div>
</div><!--fim da div TOPO-->

<!--div MENU-->
	<!--#Include file="menu.asp"-->
<!--Fim div MENU-->
<br>
<div id="corpo">

<h5>Sua pesquisa encontrou <strong><% = totalNoticias %></strong> notícias(s)<br></h5>
    
	<p><% Do While not rsDados.eof %>
	<a href="detalhe.asp?codigo=<% = rsDados("codNew") %>"><% = rsDados("titulo") %></a>
    <br><br>    
    

<%
rsDados.MoveNext
Loop
%></p>

             
              <div class="rss">
              <h1>Últimas Notícias</h1>
             
              <% Do while not rsNews.eof%>
              
			  <p align="justify"><a href=""><% = rsNews("titulo") %></a><BR>
             
              <% 
			  rsNews.MoveNext
			  loop
			  %></p>
				<p><a href="">Mais...</a></p>
              </div>

</div><!--fim da div CORPO-->

</div><!--fim da div CONTEUDO-->



</div><!--fim da div GERAL-->
<div id="rodape" align="center">

<img src="imagens/banner_rodape2.gif">

</div><!--fim da div RODAPÉ-->
</div><!--fim da div NOva-->
</body>
</HTML>

<%
rsDados.close
rsNews.close
rsServ.close
call fechaconexao
set rsDados = nothing
set rsNews = nothing
set totalNoticias = nothing
set rsServ = nothing
set dia_semana = nothing
set mes = nothing
set banner = nothing
%>

----------------------------------

 

Continua diferenciando os acentos.

O formulário de busca fica em outro arvio asp e responde pra página pesquisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o erro que esta gerando, se está, coloque número e linha ?!?!?

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o erro que esta gerando, se está, coloque número e linha ?!?!?

 

Ele não gera erro. Encontra o que eu busco, só que da mesma forma que estava antes de eu colocar esse código...

 

Se eu digitar na busca "agua" e no banco de dados tiver "água" ele não encontra, por causa do acento.

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.