Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    708

    Motore ricerca più termini campi diversi

    Ciao

    sto creando un motore di ricerca interno asp con db access.

    Utilizzando questa sql:
    codice:
    sql_ricerca = "SELECT * FROM TabAnagraficaGallery WHERE NOME LIKE '%"&cerca&"%' or CODICE_CATEGORIA LIKE '%"&cerca&"%' "
    riesco a fare la ricerca solo di termini distinti o frasi solo se appartengono allo stesso campo, ma non inserendo due termini di due campi diversi, es.:

    NOME: londra
    CODICE_CATEGORIA: felpa invernale

    se cerco:

    caso1= londra --> la ricerca trova l'articolo
    caso2= felpa invernale --> la ricerca trova l'articolo
    caso3= felpa londra --> la ricerca non trova nulla

    potete spiegarmi come modificare la sql?

    Pier

  2. #2
    splitta il testo scritto e cerchi ogni singola parola in entrambi i campi costruendoti la query in un ciclo for

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    708
    Ciao

    mi sono accorto che la ricerca la devo fare su 3 campi:

    NOME
    CODICE_CATEGORIA
    NOME_GRUPPO

    Oggi ho visto che cos'è un Array ma non ho trovato come utilizzarlo con i campi del database.

    Essendo ancora nel buoi più assoluto sull'argomento per non scrivere il solito non so come fare, vi posto questo codice:

    codice:
    Dim cerca
    
    cerca = Replace(Request.QueryString("cerca"),"'","''")
    cerca = Replace(Request.QueryString("cerca"),"\","\\")
    arrcerca = split(cerca, " ")
    
    Dim arrcerca(3)
    arrcerca(0) = rs_ricerca("NOME")
    arrcerca(1) = rs_ricerca("CODICE_CATEGORIA")
    arrcerca(2) = rs_ricerca("NOME_GRUPPO")
    
    For i = 0 to UBound(arrcerca)
    sql_ricerca = "select * from TabAnagraficaGallery WHERE NOME LIKE '%"& arrcerca(i) &"%' OR CODICE_CATEGORIA LIKE '%"& arrcerca(i) &"%' OR NOME_GRUPPO LIKE '%"& arrcerca(i) &"%'"
      Response.Write arrcerca(i) & "
    "
    Next
    ...almeno ci provo!

  4. #4
    codice:
    Dim cerca
    cerca=request.querystring("cerca")
    
    cerca = Replace(cerca,"'","''")
    cerca = Replace(cerca,"\","\\")
    arrcerca = split(cerca, " ")
    
    sql_ricerca="select * from TabAnagraficaGallery WHERE "
    
    For i = 0 to UBound(arrcerca)
     sql_ricerca =sql_ricerca&"NOME LIKE '%"& arrcerca(i) &"%' OR CODICE_CATEGORIA LIKE '%"& arrcerca(i) &"%' OR NOME_GRUPPO LIKE '%"& arrcerca(i) &"%' OR "
    Next
    sql_ricerca=sql_ricerca&"1=0"
    così c'è il problema che ti trova tutti i record contenenti le parole indicate come ricerca

    ovvero se inserisci
    (come da esempio)

    felpa invernale
    avrai come risultato tutte le righe i cui campi NOME CODICE E NOME_GRUPPO contengono almeno una delle 2 parole

    se invece vuoi trovare solo ciò che contiene tutte e due le parole è un po' più complesso

    codice:
    cerca=request.querystring("cerca")
    
    cerca = Replace(cerca,"'","''")
    cerca = Replace(cerca,"\","\\")
    arrcerca = split(cerca, " ")
    
    sql_ricerca="select * from TabAnagraficaGallery WHERE ("
    
    For i = 0 to UBound(arrcerca)
     sql_ricerca =sql_ricerca&"NOME LIKE '%"& arrcerca(i) &"%' OR "
    Next
    
    sql_ricerca=sql_ricerca&"1=0) AND ("
    
    For i = 0 to UBound(arrcerca)
     sql_ricerca =sql_ricerca&"CODICE_CATEGORIA LIKE '%"& arrcerca(i) &"%' OR "
    Next
    
    sql_ricerca=sql_ricerca&"1=0) AND ("
    
    For i = 0 to UBound(arrcerca)
     sql_ricerca =sql_ricerca&"NOME_GRUPPO LIKE '%"& arrcerca(i) &"%' OR "
    Next
    
    sql_ricerca=sql_ricerca&"1=0)"
    ma c'è qualche errore che sto cercando di sistemare

  5. #5
    in una query singola non so farlo
    quello che ti ho postato prima funziona se c'è almeno una parola ricercata per campo

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    708
    grazie dell'aiuto Grambo!

    Il primo codice funziona ma, come del resto hai detto tu, ricerca termini appartenti ad un campo distinto e non trova nulla se si ricercano due termini che appartengono a due campi diversi.

    Il secondo codice non trova nulla con qualsiasi esempio.

  7. #7
    prova a cambiarlo così
    codice:
    cerca=request.querystring("cerca")
    
    cerca = Replace(cerca,"'","''")
    cerca = Replace(cerca,"\","\\")
    arrcerca = split(cerca, " ")
    
    sql_ricerca="select * from TabAnagraficaGallery WHERE ("
    
    For i = 0 to UBound(arrcerca)
     sql_ricerca =sql_ricerca&"NOME LIKE '%"& arrcerca(i) &"%' OR "
    Next
    
    sql_ricerca=sql_ricerca&"1=1) AND ("
    
    For i = 0 to UBound(arrcerca)
     sql_ricerca =sql_ricerca&"CODICE_CATEGORIA LIKE '%"& arrcerca(i) &"%' OR "
    Next
    
    sql_ricerca=sql_ricerca&"1=1) AND ("
    
    For i = 0 to UBound(arrcerca)
     sql_ricerca =sql_ricerca&"NOME_GRUPPO LIKE '%"& arrcerca(i) &"%' OR "
    Next
    
    sql_ricerca=sql_ricerca&"1=1)"

  8. #8
    grmbo, gli OR 1=1 fanno risultare sempre positiva ogni ricerca... lascia OR 1=0 com'era prima

  9. #9
    Originariamente inviato da optime
    grmbo, gli OR 1=1 fanno risultare sempre positiva ogni ricerca... lascia OR 1=0 com'era prima
    a ecco perchè avevo messo 1=0 XD
    sono un po' fuso scusa

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    708
    intendete così?:

    codice:
    Dim cerca
    cerca=request.querystring("cerca")
    
    cerca = Replace(cerca,"'","''")
    cerca = Replace(cerca,"\","\\")
    arrcerca = split(cerca, " ")
    
    sql_ricerca="select * from TabAnagraficaGallery WHERE ("
    
    For i = 0 to UBound(arrcerca)
     sql_ricerca =sql_ricerca&"NOME LIKE '%"& arrcerca(i) &"%' OR "
    Next
    
    sql_ricerca=sql_ricerca&"1=0) AND ("
    
    For i = 0 to UBound(arrcerca)
     sql_ricerca =sql_ricerca&"CODICE_CATEGORIA LIKE '%"& arrcerca(i) &"%' OR "
    Next
    
    sql_ricerca=sql_ricerca&"1=0) AND ("
    
    For i = 0 to UBound(arrcerca)
     sql_ricerca =sql_ricerca&"NOME_GRUPPO LIKE '%"& arrcerca(i) &"%' OR "
    Next
    
    sql_ricerca=sql_ricerca&"1=0)"

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.