Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    ricercare in database (?)

    Sto utilizzando questo codice per cercare all'interno del campo "messaggio" in un database
    ma non mi convince...

    codice:
    <%
    'RICERCA in annunci
    search="parole da trovare e non sperare"
    
    set connA = server.createobject("adodb.connection") 
    connA.open "driver={microsoft access driver (*.mdb)};dbq="&_ 
    server.mappath("/forum/forum.mdb") 
    
    sqlA = "select * from messaggi where idsezione <>'' AND" 
    
    ArrSearch = Split(search) 
    x = 0 
    for each Word In ArrSearch 
    
    If Not x = UBound(ArrSearch) Then 
    sqlA = sqlA & " messaggio like '%" & word & "%'AND"
    Else   
    sqlA = sqlA & " messaggio like '%" & word & "%' "
    End If 
    x = x + 1 
    Next 
    
    set rsA = connA.Execute(sqlA)
    'Controllo se non c'e' nessun dato (EOF=End Of File)
    If rsA.EOF=True Then
    response.write "Nessun risultato"
    Else
    Do Until rsA.EOF
    titolo=rsA("titolo")
    id=rsA("id")
    %>
    la mia necessità è di ricercare tutte o solo alcune delle parole che comprendono la frase "parole da trovare e non spera"

    invece questo script mi restituisce anche tutte le parole che comprendono per esempio la congiunzione "e" oppure "la"

    per cui vorrei eliminare le parole aldisotto delle due lettere (come in questo forum) e far ricercare per esempio "spera" ma non "SPERAre"

    anche cambiando AND in OR
    codice:
    sqlA = sqlA & " messaggio like '%" & word & "%'AND"
    il risultato è lostesso!


    Grazie x l'aiuto
    www.telefoninook.com
    contenuti e risorse gratis per il tuo cellulare

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Stampa la query prima di eseguirla e così capisci il perché cerca in un determinato modo.

    Roby

  3. #3
    la stampa così


    select * from messaggi where idsezione <>'' AND messaggio like '%parole%'AND messaggio like '%da%'AND messaggio like '%trovare%'AND messaggio like '%e%'AND messaggio like '%non%'AND messaggio like '%sperare%'


    la frase e/o le parole da cercare:

    search="parole da trovare e non sperare"
    www.telefoninook.com
    contenuti e risorse gratis per il tuo cellulare

  4. #4
    se devi trovare parole esatte, non devi usare LIKE!

  5. #5
    ho provato anche a sotituire LIKE con =

    e restituisce solo i msg che contengono la frase come inserita
    (quasi mai nessuno)

    e anche AND con OR

    ma i risultato è sempre lo stesso
    quando nella ricerca vi è una "e" restituisce tutte le parole che contengono la lett "e" e la ricerca non finisce mai....
    www.telefoninook.com
    contenuti e risorse gratis per il tuo cellulare

  6. #6
    Splitta la frase (dividila nelle parole che la compongono) e poi fai la ricerca usando = (non LIKE) e OR (non AND), eventualmente inserendo un controllo per eliminare le parole di due lettere.
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  7. #7
    modificando così:

    If Not x = UBound(ArrSearch) Then
    sqlA = sqlA & " messaggio = '" & word & "'OR"
    Else
    sqlA = sqlA & " messaggio = '" & word & "' "
    End If

    non mi da nessun risultato anche se vi sono messaggi che contengono le parole addirittura anche con la sola parola "trovare" non ho risultati anche se vi sono 681 messaggi che la contengono

    ho provato a scrivere qualche rigo per eliminare le parole aldisoto delle 2 lettere ma non riesco a farlo fungere nel codice di ricerca
    codice:
    <%
    txt="questa è una storia di poche parole"
    
    min = 3
    arr = split(txt, " ") 
    For i = LBound(arr) to UBound(arr)
    controllo=Len(arr(i))
    if controllo > min then
    gino=arr(i)
    response.write gino&" "
    end if
    next
    %>
    percaso sapete indicarmi dove poter trovare uno script del genere?
    www.telefoninook.com
    contenuti e risorse gratis per il tuo cellulare

  8. #8

    Re: ricercare in database (?)

    codice:
    <%
    'RICERCA in annunci
    search="parole da trovare e non sperare"
    
    set connA = server.createobject("adodb.connection") 
    connA.open "driver={microsoft access driver (*.mdb)};dbq="&_ 
    server.mappath("/forum/forum.mdb") 
    
    sqlA = "select * from messaggi where idsezione <>'' AND" 
    
    ArrSearch = Split(search) 
    x = 0 
    for each Word In ArrSearch 
    
    vPrima = True
    If not vPrima Then
    If Len(word) > 3 then sqlA = sqlA & " messaggio like '%" & word & "'AND"
    ElseIf Len(word) > 3 then    
    sqlA = sqlA & " messaggio like '%" & word & "' "
    vPrima = False
    End If 
    x = x + 1 
    Next 
    
    set rsA = connA.Execute(sqlA)
    'Controllo se non c'e' nessun dato (EOF=End Of File)
    If rsA.EOF=True Then
    response.write "Nessun risultato"
    Else
    Do Until rsA.EOF
    titolo=rsA("titolo")
    id=rsA("id")
    %>
    prova così, oppure togli completamente i %.
    EX Mentecatto - succube della Honda
    Le mie foto|HONDA CLUB ITALIA!|DARTH LEGNANZ!

  9. #9
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  10. #10
    ho fatto così e sembra fungere
    codice:
    <%
    'RICERCA in annunci
    search="parole da trovare e non sperare"
    
    min=3
    set connA = server.createobject("adodb.connection") 
    connA.open "driver={microsoft access driver (*.mdb)};dbq="&_ 
    server.mappath("/forum/forum.mdb") 
    
    sqlA = "select * from messaggi where idsezione <>'' AND" 
    
    ArrSearch = Split(search) 
    x = 0 
    for each Word In ArrSearch 
    
    if len(word) > min then
    If Not x = UBound(ArrSearch) Then 
    sqlA = sqlA & " messaggio like '%" & word & "%'AND"
    Else   
    sqlA = sqlA & " messaggio like '%" & word & "%' "
    End If 
    x = x + 1 
    Next 
    
    set rsA = connA.Execute(sqlA)
    'Controllo se non c'e' nessun dato (EOF=End Of File)
    If rsA.EOF=True Then
    response.write "Nessun risultato"
    Else
    Do Until rsA.EOF
    titolo=rsA("titolo")
    id=rsA("id")
    %>
    così mi manda in query tutte le parole formate da più de 3 lettere.

    ma mi rimane un ultimo problema
    se la frase è per esempio così:
    "pippo super grande tre"
    L'ultima parola non viene letta perchè filtrata ma nel ciclo della query comunque risulta per cui la select mi termina con
    sql="....messaggio like '% grande %' OR
    e non si chiude
    come fare?
    www.telefoninook.com
    contenuti e risorse gratis per il tuo cellulare

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.