Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    32

    ricerca parziale

    Ciao a tutti
    io ho sviluppato una cosa del genere:
    1) form inserisci il nome da cercare
    2) tramite ricerca full text nel database si cerca se c'è qualcuno che ha un nome o cognome uguale a quello inserito in input

    e fin qui funziona

    però io vorrei fare in modo che se non trova risultati mi fa una ricerca parziale
    ossia mi trova tutti coloro ke si avvicinano al dato inserito in input?

    Per esempio Inserisco ricerca Paolo
    non esiste nessun paolo nel database però esiste un paoletti
    quindi non avendo risultati su paolo mi deve visualizzare paoletti

    oppure non so inserisco paol e mi trova tutti quelli ke iniziano così
    si può fare? come?

    Scusate sono nuovo di php mi sto leggendo tutte le guide possibili ma sono talmente tante le fonti... e non si trova sempre tutto

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    323
    Guarda anche se tu scrivi un nome a metà es: Adm darà come risultato Admin quindi completa già di suo il mysql....Prova tu stesso a scrivere un nome che già hai a metà....

  3. #3
    Per fare quello che chiedi devi utilizzare il LIKE al posto del = nella query.

    Esempio


    SELECT * FROM tabella WHERE nome LIKE '%paolo%';

    trovera:

    Paolo, Gianpaolo, paolone, Pierpaolo, Paolo Gianni,

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    32
    Originariamente inviato da Ophy94
    Guarda anche se tu scrivi un nome a metà es: Adm darà come risultato Admin quindi completa già di suo il mysql....Prova tu stesso a scrivere un nome che già hai a metà....
    non lo fa
    appena torno dalle ferie
    provo con like

    ciao a tutti
    grazie e a presto

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    32
    $result = mysql_query("SELECT * ,MATCH (nome, cognome)AGAINST('$ricerca') AS attinenza FROM cliente1 WHERE MATCH (nome, cognome) AGAINST ('$ricerca')ORDER BY attinenza DESC")

    questa è la query ke uso io però non funziona se metto solo un pezzo... ossia:
    - se cerco paolo mi da come risultato 2 persone
    - se cerco pao risultato è zero e invece vorrei ke mi trova tutti quelli ke si chiamano paola,paolo,paolino,paolone

    come posso modificarla?

  6. #6
    Originariamente inviato da raf85
    $result = mysql_query("SELECT * ,MATCH (nome, cognome)AGAINST('$ricerca') AS attinenza FROM cliente1 WHERE MATCH (nome, cognome) AGAINST ('$ricerca')ORDER BY attinenza DESC")

    questa è la query ke uso io però non funziona se metto solo un pezzo... ossia:
    - se cerco paolo mi da come risultato 2 persone
    - se cerco pao risultato è zero e invece vorrei ke mi trova tutti quelli ke si chiamano paola,paolo,paolino,paolone

    come posso modificarla?
    sinceramente penso che per trovare una stringa parziale in nome o cognome utilizzare MATCH ... AGAINST sia eccessivo.

    Usa come ti e' stato suggerito il LIKE = '%pao%'

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    32
    ma allora vorrei solo chiarirmi una cosa, perchè sulle guide per fare delle ricerche consigliavano il match against, qual'è la differenza tra usare il match against e una query normale come quella sopra?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.