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

    Dilemma Motore di ricerca

    Salve, sto cercando di costruire un motore di ricerca.
    Se ho questo database:

    Nome ------- Cognome
    Mario ------ Rossi
    Luisa ------ Fazzi
    Dino ------ Massa

    Se l'utente inserisce nel form di ricerca "Mario Rossi" con questo codice:

    sSql1 ="SELECT * from tabnomi WHERE Nome LIKE '%"& cerca &"%' OR Cognome LIKE '%"& cerca &"%'"

    Non mi restituisce dei risultati perché Mario si trova in un campo e Rossi in un altro. Come posso risolvare il problema?
    GRAZIE 1000

  2. #2
    Devi usare due variabili differenti.

    ES:

    codice:
    nome = "Mario"
    Cognome = "Rossi"
    
    sSql1 ="SELECT * from tabnomi WHERE Nome LIKE '%"& nome &"%' OR Cognome LIKE '%"& cognome &"%'"
    Oppure dicci cosa contiene la variabile "cerca" prima di passarla alla query, per caso --> cerca = "Mario Rossi"???

    Dicci, dicci...
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  3. #3
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Devi splittare le singole parole (in base allo spazio) e cercare ognuna di esse in ogni campo.
    In alternativa fai un form con due campi: nome e cognome.

    Roby

  4. #4
    In cerca c'è il valore preso dal form!
    Come devo fare per splittare? Non conosco questa cosa!Mi puoi aiutare?

    Grazie 1000

  5. #5
    Originariamente inviato da Mattatore2
    In cerca c'è il valore preso dal form!
    E quindi? Quello che ho ipotizzato io?
    Originariamente inviato da Mattatore2
    Come devo fare per splittare? Non conosco questa cosa!Mi puoi aiutare?

    Grazie 1000
    codice:
    cerca = "Mario Rossi"
    
    arrCerca = split(cerca, " ")
    
    sSql1 ="SELECT * from tabnomi WHERE Nome LIKE '%"& arrCerca(1) &"%' OR Cognome LIKE '%"& arrCerca(2) &"%'"
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  6. #6
    Ma se l'utente cerca Rossi Mario... non funziona poi?

  7. #7
    Ed è giusto (a mio parere) che sia così.

    Rossi --> Cognome se lo cerchi nel nome è giusto che non trovi nulla.

    Mario --> Nome se lo cerchi nel cognome è giusto che non trovi nulla.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  8. #8
    Io ho fatto un esempio con i campi"nome e cognome".. ma ho molti campi, volevo sapere in generale come si faceva per poi adattarlo al mio. Io non conosco cosa cercherà l'utente e in che ordine lo cercherà..Vorrei solo che facesse una ricerca su tutti i campi delle singole parole.
    Ho provato anche a fare come mi hai detto (giusto per provare) ma mi da questo errore:

    Response object error 'ASP 0106 : 80020005'

    Type Mismatch

    /catalogo/cerca.asp, line 0

    An unhandled data type was encountered.

  9. #9
    L'errore lo risolviamo.
    Quello che ti volevo fare capire, nel post precedente, è che se l'utente compila tanti campi di ricerca, si aspetta un certo risultato "logico" dalla stessa ricerca.

    Mettiamo ad esempio che cerca per nome e per cognome.
    Non ha senso che se scrive:

    1)Nome = Rossi
    2)Cognome = Mario

    gli venga visualizzato un risultato...

    A differenza invece se scrive:

    1)Nome = Mario
    2)Cognome = Rossi

    si aspetta che gli venga visualizzato un risultato.

    Comunque a titolo di correttezza, sarebbe meglio fare due colonne distinte e separate nel Db, una per Nome e un'altra per Cognome.

    Riflettici... ;-)

    P.S.: posta il codice della pagina che ti restituisce l'errore.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  10. #10
    Come ti dicevo prima nome e cognome era solo un esempio. IO ho 4 colonne (valore-descrizione-pick-anno). Visto che ho + di 800 records ho pensato di fare un motore di ricerca dove l'utente attraverso il form (cerca) trava quello che gli serve. Io ho fatto in questo modo:
    codice:
    cerca = trim(request.form("cerca"))
    idcerca = request.form("idcerca") 'campo nascosto
    .
    .
    connessione
    .
    .
    sSql1 ="SELECT * from banconote WHERE numero="&idcerca&" and valore LIKE '%"& cerca &"%' OR descrizione LIKE '%"& cerca &"%' OR anno LIKE '%"& cerca &"%' OR pick LIKE '%"& cerca &"%' ORDER BY pick"
    .
    .
    Ma questo codice di sopra non trova il record quando per esempio inserisco: "1 Lira 12/11/1890" , perché "1 Lira" sta nel campo valore e "12/11/1890" sta nel campo anno.
    Ovviamente se scrivo solo "1 Lira" o "12/11/1890" mi compare quello che cercavo.
    Sto cercando un modo che mi permetta di trovare il records giusto anche se quello che sto cercando è diviso in due campi.
    Ho provato a fare anche questo:
    codice:
    .
    .
    cerca = trim(request.form("cerca"))
    arrcerca = split(cerca, " ")
    .
    .
    connessione
    .
    .
     sSql1 ="SELECT * from banconote WHERE numero="&idcerca&" and "
    for i=0 to ubound(arrcerca)
      
       sSql1 = sSql1 & "valore LIKE '%"& arrcerca(i) &"%' OR descrizione LIKE '%"& arrcerca(i) &"%' OR anno LIKE '%"& arrcerca(i) &"%' OR pick LIKE '%"& arrcerca(i) &"%'"
     if not i=ubound(arrcerca) then
     sSql1 = sSql1 & " and "
     end if
     
     next 
       
       sSql1 = sSql1 & "ORDER BY pick"
    .
    .
    Ma mi trova quasi tutti gli 800 records. Quindi non va bene perché c'è ne solo uno di "1 Lira 12/11/1890".
    Spero che mi abbiate capito. Datemi una mano!GRAZIE

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.