Ciao a tutti, ho da poco messo una semplice funzione di ricerca sul mio sito, funziona bene, solo che vorrei apportare alcume modifiche e non ne sono capace, il codice è questo:
Se provo ad eseguire una ricerca del tipo: " casa casa" (ossia inserisco due volte la stessa parola separata da uno spazio) i risultati sono giusti, ma quicodice:<% Dim prechiave Dim tipo prechiave=request.querystring("form_chiave") tipo=request.querystring("tipo") if tipo="tutte" then change="%'and descrizione like'%" chiave=Replace(prechiave," ", change) else chiave=prechiave end if Dim iPageSize 'Numero di record da visualizzare Dim iPageCount 'Numero di pagine totali che otteniamo dalla query Dim iPageCurrent 'Pagina corrente Dim strOrderBy 'Parametro in base a cui definire l'ordinamento Dim strSQL 'Comando da eseguire Dim RS 'Il solito amico Recordset Dim iRecordsShown 'Variabile usata per definire i record mostrati Dim miastringa 'Variabile utilizzata per la visualizzazione dei risultati Dim nuovastringa 'Variabile utilizzata per la visualizzazione dei risultati iPageSize = 4 ' Imposto il numero di record visualizzati If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If If Request.QueryString("order") = "" Then strOrderBy = "id" Else strOrderBy = Request.QueryString("order") End If Dim Conn Set Conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/gestione_dati.mdb") Set rs = Server.CreateObject("ADODB.Recordset") sql = "SELECT * FROM motore where descrizione like '%"&chiave&"%' ORDER BY " & strOrderBy & " DESC;" RS.Open sql, conn, adOpenKeyset RS.PageSize = iPageSize RS.CacheSize = iPageSize iPageCount = RS.PageCount Dim totale totale = rs.recordcount If iPageCurrent > iPageCount Then iPageCurrent = iPageCount If iPageCurrent < 1 Then iPageCurrent = 1 If iPageCount = 0 Then response.redirect("search_again.htm") Else RS.AbsolutePage = iPageCurrent %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="it"> <head> <title>Risultati della ricerca: <% = chiave %>.</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <div class="uno"> <div class="info"> <H4 title="Risultati della ricerca">la ricerca di: "<% = chiave %>" ha prodotto <% = totale %> risultati</H4> <% iRecordsShown = 0 Do While iRecordsShown < iPageSize And Not RS.EOF %> "><%= rs("nome")%> <font face="Verdana, Arial, Helvetica, sans-serif" size="1"> <% miastringa = RS("descrizione") nuovastringa = Mid( miastringa, 1, 100) response.write(nuovastringa)&"..." %></font></p> <% iRecordsShown = iRecordsShown + 1 RS.MoveNext Loop End If RS.Close Set RS = Nothing Conn.Close Set Conn= Nothing %> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Pagina <%= iPageCurrent%> di <%= iPageCount%></font> <% If iPageCurrent <> 1 Then %> indietro <% end if %> <%If iPageCurrent < iPageCount Then %> avanti > <% end if %> </div> </div></body></html>
mi stampa questo:codice:<H4 title="Risultati della ricerca">la ricerca di: "<% = chiave %>" ha prodotto <% = totale %> risultati</H4>
non capisco perchè quelcodice:La ricerca di: "casa%'and descrizione like'%casa" ha prodotto 8 risultati
eventualmente è possibile inserire un controllo che eviti di prendere in considerazione nella ricerca la seconda parola se è uguale alla prima?codice:%'and descrizione like'%

Rispondi quotando
