Ir para conteúdo

POWERED BY:

Arquivado

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

rondonha

Sistema de busca (parecido)

Recommended Posts

Salve galera...

alguém sabe como me ajudar neste problema, este asp é para pesquisar itens mas ele só pesquisa itens corretos, exemplo:

usuário procura a palavra "familia" e não tem nenhum produto com "família" sem acento...

 

está aí o código:

 

 

<!--#include file="conexao.asp"-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>LBC Livros</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>

<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<!--#include file="busca.asp"-->


<table width="99%" border="0" cellpadding="0" cellspacing="0">
	<tr>
	<td><font size="2">  <!--#include file="menu.asp"--></font>
	</td> 
	<th rowspan="2"><font size="2">
<% dim rqtbusca,rqtcat,rs,sql,sqlaux
	
	rqtbusca=request.form("txtbusca")
	rqtcat=request.form("cbocat")
	
		if rqtcat="" or livros then
		
			sqlaux="where livro like '%"&rqtbusca&"%' or autor like '%"&rqtbusca&"%' or desc1 like '%"&rqtbusca&"%' or desc2 like '%"&rqtbusca&"%' or desc3 like '%"&rqtbusca&"%' order by livro"
			
		
		else 
		sqlaux="where (livro like '%"&rqtbusca&"%' or autor like '%"&rqtbusca&"%' or desc1 like '%"&rqtbusca&"%' or desc2 like '%"&rqtbusca&"%' or desc3 like '%"&rqtbusca&"%') and categoria='"&rqtcat&"' order by livro"
		
		end if
	
		
			
		sql="select *from livros " & sqlaux
		
		set rs=server.createobject("adodb.recordset")
		rs.open sql,conexao
		
		if rs.eof then
			response.write("Produto Não Encontrado")
		
		else 
	'	response.write sql
		response.write("<table>")
		
			while not rs.eof
				
				rqtnome=rs("livro")
				rqtautor=rs("autor")
				rqtid=rs("id")
				rqtfoto=rs("foto")
				
			if rqtcataux<>rqtcat then
			
			
			end if %>
			
				<tr><td><img src="<%=rs("foto") %>" width="60" height="60" align="right"><BR />
				</td><td><%=rqtnome%></td><td><%=rqtautor%></td><td><a href="detalhes.asp?id=<%=rqtid%>">Detalhes</a></td></tr>
				<tr><th cowspan='3'><th></tr>
				
			<%
			
			rqtcataux=rqtcat
			rs.movenext
			wend
		response.write("</table>")
		
		end if
		rs.close()
		set rs=nothing
			%>
			
			</th></tr>
			<tr><td><br><br></td></tr></font>
</table>
</body>
</html>

quero procurar algo parecido e que apareça normalmente;

 

valeu galera, grato desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria o ideal você retirar os acentos quando for fazer a busca, tem funções no laboratório que vão ajudar e muito!

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa esta funcaun

 

Function RemoveAcentos(ByVal Texto)
    Dim ComAcentos
    Dim SemAcentos
    Dim Resultado
	Dim Cont
    'Conjunto de Caracteres com acentos
    ComAcentos = "ÁÍÓÚÉÄÏÖÜËÀÌÒÙÈÃÕÂÎÔÛÊáíóúéäïöüëàìòùèãõâîôûêÇç"
    'Conjunto de Caracteres sem acentos
    SemAcentos = "AIOUEAIOUEAIOUEAOAIOUEaioueaioueaioueaoaioueCc"
    Cont = 0
    Resultado = Texto
    Do While Cont < Len(ComAcentos)
	Cont = Cont + 1
	Resultado = Replace(Resultado, Mid(ComAcentos, Cont, 1), Mid(SemAcentos, Cont, 1))
    Loop
    RemoveAcentos = Resultado
End Function

outro exemplo

'------------------------------------------------------------------------------------------------
'FUNÇÃO: of_acento
'DESCRIÇÃO: Função para substituição de vogais acentuadas
' para busca em select.
'AUTOR: Gil Henrique H. Belei
'DATA: 21/02/2003
'-------------------------------------------------------------------------------------------------
Function of_acento(Texto)
Texto = UCAse(Texto)
Texto = Replace(Texto, "Ã", "[ã,a,á,â,à]")
Texto = Replace(Texto, "Â", "[ã,a,á,â,à]")
Texto = Replace(Texto, "Á", "[ã,a,á,â,à]")
Texto = Replace(Texto, "À", "[ã,a,á,â,à]")
Texto = Replace(Texto, "A", "[ã,a,á,â,à]")

Texto = Replace(Texto, "É", "[é,è,e,ê]")
Texto = Replace(Texto, "È", "[é,è,e,ê]")
Texto = Replace(Texto, "Ê", "[é,è,e,ê]")
Texto = Replace(Texto, "E", "[é,è,e,ê]")

Texto = Replace(Texto, "Í", "[i,í,ì,î]")
Texto = Replace(Texto, "Ì", "[i,í,ì,î]")
Texto = Replace(Texto, "Î", "[i,í,ì,î]")
Texto = Replace(Texto, "I", "[i,í,ì,î]")

Texto = Replace(Texto, "Ò", "[o,ó,ò,ô,õ]")
Texto = Replace(Texto, "Ó", "[o,ó,ò,ô,õ]")
Texto = Replace(Texto, "Õ", "[o,ó,ò,ô,õ]")
Texto = Replace(Texto, "Ô", "[o,ó,ò,ô,õ]")
Texto = Replace(Texto, "O", "[o,ó,ò,ô,õ]")

Texto = Replace(Texto, "Ú", "[u,ú,ù,û]")
Texto = Replace(Texto, "Ù", "[u,ú,ù,û]")
Texto = Replace(Texto, "Û", "[u,ú,ù,û]")
Texto = Replace(Texto, "U", "[u,ú,ù,û]")
of_acento = Texto
End function
'------------------------------------------------------------------------------------------------------
'FIM DA FUNÇÃO: of_acento
'------------------------------------------------------------------------------------------------------





busca = Request("campo")
busca = of_acento(busca)

SELECT * 
FROM [tabela] 
WHERE [coluna] LIKE "'%"&busca&"%'" 

existem outros exemplos no forum tb

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce pode usar a função SOUNDEX(sei que funciona no MySql e SqlServer) para procurar palavras semelhantes. No Oracle tem a função TRANSLATE que faz um replace dos acentos.

 

Lembrando que todas as funções de banco são "pesadas" quando aplicadas nas colunas comparadas pois o banco vai executar em todos os registros antes de realmente iniciar a pesquisa. O que eu tenho feito é criar duas colunas, sendo uma com o conteúdo que o usuário quer armazenar e outra coluna com os dados pra usar na pesquisa(retirando acentos e todas as letras em minusculas)

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa a funcaun , chamando direto na sua string SQL

até mesmo usando RegExp

Function TrocaCaractere(Conteudo, Procurar, Trocar)    
    Set ReExp = New RegExp   
     ReExp.Global = True     
   ReExp.IgnoreCase  = False 
       ReExp.Pattern = Procurar  
      TrocaCaractere = ReExp.Replace(Conteudo, Trocar)
End Function

tem tb uma funcaun SQL

CREATE FUNCTION FREMOVE_ACENTOS (@TEXTO VARCHAR (5000))RETURNS VARCHAR (5000)  AS
BEGIN
DECLARE @COMACENTOS VARCHAR(50),
 @SEMACENTOS VARCHAR (50),
 @QTD_TEXTO INT,
 @CONTADOR INT,
 @QTD INT,
 @CONT INT,
 @CONT_C INT,
 @LETRA_T VARCHAR(1),
 @LETRA_C VARCHAR(1),
 @RESULTADO VARCHAR (5000),
 @TEXTE VARCHAR (30)

SET @COMACENTOS = "ÀÂÊÔÎÛÃÕÁÉÍÓÚÇÜ"
SET @SEMACENTOS =  "AAEOIUAOAEIOUCU"
SET @QTD_TEXTO = (SELECT LEN(@TEXTO))
SET @CONTADOR = 0
SET @RESULTADO = 
INICIO:
WHILE @CONTADOR < @QTD_TEXTO 
BEGIN
  SET @CONTADOR = @CONTADOR+1
  SET @LETRA_T = (SELECT SUBSTRING(@TEXTO,@CONTADOR,1))
  SET @CONT = (SELECT LEN(@COMACENTOS))  
  SET @QTD = 0      
   WHILE @QTD < @CONT
 BEGIN
  SET @QTD = @QTD + 1
  SET @LETRA_C = (SELECT SUBSTRING(@COMACENTOS,@QTD,1)) 
  IF @LETRA_C = @LETRA_T 
   BEGIN
           SET @RESULTADO = @RESULTADO + (SELECT SUBSTRING(@SEMACENTOS,@QTD,1))
           GOTO INICIO
    END
     ELSE
        BEGIN  
                  IF @QTD = @CONT 
       SET @RESULTADO =  @RESULTADO + @LETRA_T    
           
               END
 END 
     
END
RETURN  @RESULTADO
END

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.