Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    semplice motore di ricerca

    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:

    codice:
    <%
    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 &gt; 
    <% end if %>
    </div>
    </div></body></html>
    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 qui

    codice:
    <H4 title="Risultati della ricerca">la ricerca di: "<% = chiave %>" ha prodotto <% = totale %> risultati</H4>
    mi stampa questo:

    codice:
    La ricerca di: "casa%'and descrizione like'%casa" ha prodotto 8 risultati
    non capisco perchè quel
    codice:
    %'and descrizione like'%
    eventualmente è possibile inserire un controllo che eviti di prendere in considerazione nella ricerca la seconda parola se è uguale alla prima?

  2. #2
    change="%'and descrizione like'%"
    chiave=Replace(prechiave," ", change)

    sostituisci lo spazio nella chiave con la frase che ti salta fuori!!!
    A bombolo ma che te lo dico affà beato te che nun capisci un cazzo!!

  3. #3
    in questo modo la ricerca non restituisce risultati, io vorrei invece che la ricerca "casa casa" equivalga alla ricerca "casa"

  4. #4
    appunto, non credo che sia una cosa semplice in pratica dovresti fare uno split sulla stringa, e parola per parola controllare che non si ripeta nella stringa, nel qual caso, dovresti fare un replace della parola trovata con una stringa vuota.

    Mmmmhhhhhhh mica per niente i motori di ricerca costano e hanno anni di sviluppo alle spalle!!
    A bombolo ma che te lo dico affà beato te che nun capisci un cazzo!!

  5. #5
    Allora penso che lo lascerò così, il mio era solo un puntiglio!
    Ti ringrazio!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.