Ir para conteúdo

POWERED BY:

Arquivado

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

Celio Luiz

Busca em ASP

Recommended Posts

olá pessoal do imasters!desculpem me sou iniciante hein ASP e estou com um serio problema!naum consigo fazer uma busca por palavras ou sejase eu digito no campo de busca "copo agua" ele tem que me retornar toda a descrição de "copo" e de "agua"e naum esta acontecendo issooque ocorre eh q ele axa soh os valores de "copo agua" como se fosse uma coisa sohcomo faço para fazer issoeste eh o codigo que eu tenho<!-- #include file="include/seguro.asp" --><!-- #include file="include/conexao.asp" --><%'Hit counterhit = Request.QueryString("hit")if hit = "s" then data = month(Now)&"/"&Day(Now)&"/"&year(Now) SQL = "pr_hit_b '"& data &"'" Set Rx = db.Execute(SQL) End if'Fim do Hit counterBusca = Request.form("busca")if Busca = empty or Busca = "" then Busca = Request.QueryString("busca")End if IF Busca <> empty then Dim Rsimagens__MMColParam Rsimagens__MMColParam = "1" if (Request.QueryString("busca") <> "") then Rsimagens__MMColParam = Request.QueryString("busca") set Rsimagens = Server.CreateObject("ADODB.Recordset") Rsimagens.ActiveConnection = db Rsimagens.Source = "SELECT * FROM Images WHERE descricao LIKE '%" & Busca & "%' OR obs LIKE '%" & Busca & "%' ORDER BY numeracao ASC" Rsimagens.CursorType = 0 Rsimagens.CursorLocation = 2 Rsimagens.LockType = 3 Rsimagens.Open() Rsimagens_numRows = 0 Dim Repeat1__numRows Repeat1__numRows = 16 Dim Repeat1__index Repeat1__index = 0 Rsimagens_numRows = Rsimagens_numRows + Repeat1__numRows ' *** Recordset Stats, Move To Record, and Go To Record: declare stats variables ' set the record count Rsimagens_total = Rsimagens.RecordCount ' set the number of rows displayed on this page If (Rsimagens_numRows < 0) Then Rsimagens_numRows = Rsimagens_total Elseif (Rsimagens_numRows = 0) Then Rsimagens_numRows = 1 End If ' set the first and last displayed record Rsimagens_first = 1 Rsimagens_last = Rsimagens_first + Rsimagens_numRows - 1 ' if we have the correct record count, check the other stats If (Rsimagens_total <> -1) Then If (Rsimagens_first > Rsimagens_total) Then Rsimagens_first = Rsimagens_total If (Rsimagens_last > Rsimagens_total) Then Rsimagens_last = Rsimagens_total If (Rsimagens_numRows > Rsimagens_total) Then Rsimagens_numRows = Rsimagens_total End If ' *** Recordset Stats: if we don't know the record count, manually count them If (Rsimagens_total = -1) Then ' count the total records by iterating through the recordset Rsimagens_total=0 While (Not Rsimagens.EOF) Rsimagens_total = Rsimagens_total + 1 Rsimagens.MoveNext Wend ' reset the cursor to the beginning If (Rsimagens.CursorType > 0) Then Rsimagens.MoveFirst Else Rsimagens.Requery End If ' set the number of rows displayed on this page If (Rsimagens_numRows < 0 Or Rsimagens_numRows > Rsimagens_total) Then Rsimagens_numRows = Rsimagens_total End If ' set the first and last displayed record Rsimagens_first = 1 Rsimagens_last = Rsimagens_first + Rsimagens_numRows - 1 If (Rsimagens_first > Rsimagens_total) Then Rsimagens_first = Rsimagens_total If (Rsimagens_last > Rsimagens_total) Then Rsimagens_last = Rsimagens_total End If ' *** Move To Record and Go To Record: declare variables Set MM_rs = Rsimagens MM_rsCount = Rsimagens_total MM_size = Rsimagens_numRows MM_uniqueCol = "" MM_paramName = "" MM_offset = 0 MM_atTotal = false MM_paramIsDefined = false If (MM_paramName <> "") Then MM_paramIsDefined = (Request.QueryString(MM_paramName) <> "") End If ' *** Move To Record: handle 'index' or 'offset' parameter if (Not MM_paramIsDefined And MM_rsCount <> 0) then ' use index parameter if defined, otherwise use offset parameter r = Request.QueryString("index") If r = "" Then r = Request.QueryString("offset") If r <> "" Then MM_offset = Int® ' if we have a record count, check if we are past the end of the recordset If (MM_rsCount <> -1) Then If (MM_offset >= MM_rsCount Or MM_offset = -1) Then ' past end or move last If ((MM_rsCount Mod MM_size) > 0) Then ' last page not a full repeat region MM_offset = MM_rsCount - (MM_rsCount Mod MM_size) Else MM_offset = MM_rsCount - MM_size End If End If End If ' move the cursor to the selected record i = 0 While ((Not MM_rs.EOF) And (i < MM_offset Or MM_offset = -1)) MM_rs.MoveNext i = i + 1 Wend If (MM_rs.EOF) Then MM_offset = i ' set MM_offset to the last possible record End If ' *** Move To Record: if we dont know the record count, check the display range If (MM_rsCount = -1) Then ' walk to the end of the display range for this page i = MM_offset While (Not MM_rs.EOF And (MM_size < 0 Or i < MM_offset + MM_size)) MM_rs.MoveNext i = i + 1 Wend ' if we walked off the end of the recordset, set MM_rsCount and MM_size If (MM_rs.EOF) Then MM_rsCount = i If (MM_size < 0 Or MM_size > MM_rsCount) Then MM_size = MM_rsCount End If ' if we walked off the end, set the offset based on page size If (MM_rs.EOF And Not MM_paramIsDefined) Then If (MM_offset > MM_rsCount - MM_size Or MM_offset = -1) Then If ((MM_rsCount Mod MM_size) > 0) Then MM_offset = MM_rsCount - (MM_rsCount Mod MM_size) Else MM_offset = MM_rsCount - MM_size End If End If End If ' reset the cursor to the beginning If (MM_rs.CursorType > 0) Then MM_rs.MoveFirst Else MM_rs.Requery End If ' move the cursor to the selected record i = 0 While (Not MM_rs.EOF And i < MM_offset) MM_rs.MoveNext i = i + 1 Wend End If ' *** Move To Record: update recordset stats ' set the first and last displayed record Rsimagens_first = MM_offset + 1 Rsimagens_last = MM_offset + MM_size If (MM_rsCount <> -1) Then If (Rsimagens_first > MM_rsCount) Then Rsimagens_first = MM_rsCount If (Rsimagens_last > MM_rsCount) Then Rsimagens_last = MM_rsCount End If ' set the boolean used by hide region to check if we are on the last record MM_atTotal = (MM_rsCount <> -1 And MM_offset + MM_size >= MM_rsCount) ' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters ' create the list of parameters which should not be maintained MM_removeList = "&index=" If (MM_paramName <> "") Then MM_removeList = MM_removeList & "&" & MM_paramName & "=" MM_keepURL="":MM_keepForm="":MM_keepBoth="":MM_keepNone="" ' add the URL parameters to the MM_keepURL string For Each Item In Request.QueryString NextItem = "&" & Item & "=" If (InStr(1,MM_removeList,NextItem,1) = 0) Then MM_keepURL = MM_keepURL & NextItem & Server.URLencode(Request.QueryString(Item)) End If Next ' add the Form variables to the MM_keepForm string For Each Item In Request.Form NextItem = "&" & Item & "=" If (InStr(1,MM_removeList,NextItem,1) = 0) Then MM_keepForm = MM_keepForm & NextItem & Server.URLencode(Request.Form(Item)) End If Next ' create the Form + URL string and remove the intial '&' from each of the strings MM_keepBoth = MM_keepURL & MM_keepForm if (MM_keepBoth <> "") Then MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1) if (MM_keepURL <> "") Then MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1) if (MM_keepForm <> "") Then MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1) ' a utility function used for adding additional parameters to these strings Function MM_joinChar(firstItem) If (firstItem <> "") Then MM_joinChar = "&" Else MM_joinChar = "" End If End Function ' *** Move To Record: set the strings for the first, last, next, and previous links MM_keepMove = MM_keepBoth MM_moveParam = "index" ' if the page has a repeated region, remove 'offset' from the maintained parameters If (MM_size > 0) Then MM_moveParam = "offset" If (MM_keepMove <> "") Then params = Split(MM_keepMove, "&") MM_keepMove = "" For i = 0 To UBound(params) nextItem = Left(params(i), InStr(params(i),"=") - 1) If (StrComp(nextItem,MM_moveParam,1) <> 0) Then MM_keepMove = MM_keepMove & "&" & params(i) End If Next If (MM_keepMove <> "") Then MM_keepMove = Right(MM_keepMove, Len(MM_keepMove) - 1) End If End If End If ' set the strings for the move to links If (MM_keepMove <> "") Then MM_keepMove = MM_keepMove & "&" urlStr = Request.ServerVariables("URL") & "?" & MM_keepMove & MM_moveParam & "=" MM_moveFirst = urlStr & "0" MM_moveLast = urlStr & "-1" MM_moveNext = urlStr & Cstr(MM_offset + MM_size) prev = MM_offset - MM_size If (prev < 0) Then prev = 0 MM_movePrev = urlStr & Cstr(prev)end if%>obrigado por lerem se vcs puderem me ajudar eu agradeço demaisobrigado mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta tirar os simbolos % do final

 

assim: SELECT * FROM Images WHERE descricao LIKE '%" & Busca & "' OR obs LIKE '%" & Busca & "' ORDER BY numeracao ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

oh DW como voce deixa o codigo tão limpo...Bem tiozinho do jeito que ta voce ta fechando em duas palavras a serem buscadasvoce tem algumas opções a ser feitastem uma muito simples mas nao é a ideal que seria apenas substituir os espaços por % e adicionar uma % antes e depois detudoassim pegaria todos os registros que tenham estas palavras na mesma ordem digitadaoutra seria usar o um laço de repetição para montar a SQL com AND's para cada palavra digitadaque é a mais completa

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado mesmo aos dois que me responderam!!!bem o problema continua!!!eu tentei tirar "%' e a busca filtra mais aindamais num eh isso que eu precisoeu gostaria q ela pegasse todos os valores em qualquer ordem na verdadetipo como o exemplo que eu dei acimaquando eu digito "copo agua" ele tem que axar essas ocorrencias em todos os lugarese ele tah axando soh isso junto, tipo se na descriçao estiver escrito "copo de agua" ele naum axa!e eu preciso exatamente que ele axe issomarioufa disse pra mim fazer um laço num eh isso?!abusando um pouco da sua vontade como eu poderia faze-lovocê podia me ajudar?!um abraço a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria tipo assim tiozinho

 

fiz rapidinho

 

ve se ajuda

 

FRASE = "OI OLA AEW"MyArray = Split(FRASE, " ")SQL = "SELECT CAMPO FROM TABELA WHERE 1=1 "For I = LBound(MyArray ) To UBound(MyArray )SQL = SQL & "AND CAMPO LIKE '%" & MyArray (I) & "%' "Nextresponse.write (SQL)

Compartilhar este post


Link para o post
Compartilhar em outros sites

tranquilo tiozinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

OPA consegui um jeito de faze oq eu quero simples assimBusca = Server.URLEncode(request("busca")) Busca = Replace(Busca,"+","%")hehehheehese isso ajuda alguem ta aiabraço a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa sugestao eu havia dado la no inicio em meu primeiro post neste topicomas como disse lá, so pega as palavras se aparecerem nesta mesma ordemse mudar uma de ordem nao pega nada

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.