Visualizzazione risultati 1 fino 6 di 6

Discussione: [php/mysql] Motore di ricerca interno

  1. #1
    Guest

    Exclamation [php/mysql] Motore di ricerca interno

    Stò provando a creare un motore di ricerca per il mio sito.. nel mysql ho una tabella con i campi ARTISTA e TITOLO..
    facendo arrivare i dati da un normale form, ho fatto:
    Codice PHP:
    SELECT * FROM all_site_canzoni WHERE artista LIKE '$_POST[ricerca]' OR titolo LIKE '$_POST[ricerca]'
    in questo modo, però, mi trova un risultato solo se immetto nel form il nome intero dell'artista o il nome intero del titolo..
    ad esempio se ho:
    ARTISTA = ligabue
    TITOLO = certe_notti
    scrivendo:
    "ligabue" funge
    "certe_notti" funge
    "ligabue certe_notti" NON funge
    "liga" NON funge
    ecc.ecc.
    mi serve una query che confronti la parola anche con una parte del dato, non solo con il dato intero.. spero di essermi spiegato.. praticamente una query che faccia una ricerca completa nei due campi della tabella..
    GRAZIE 1000!!!

  2. #2
    Guest

    Predefinito

    ho risolto, posto per chi trovasse lo stesso problema..
    ho un'altra domanda: come faccio a determinare la pertinenza di un risultato??
    ad es.
    io ho:
    ARTISTA = ligabue
    TITOLO = certe_notti
    e
    ARTISTA = ligabue
    TITOLO = leggero

    usando il codice che ho postato sotto e cercando "ligabue leggero", mi seleziona entrambe le righe.. come faccio a ordinarle in base alla pertinenza??

    ecco il codice:
    Codice PHP:
    $esplosa=explode(" ",$ricerca);

    $add="";
    reset($esplosa);
    while(list(,
    $parola)=each($esplosa))
    {
    $parola=trim($parola);
    if (!empty(
    $parola)){
    $add.="artista LIKE '%$parola%' OR titolo LIKE '%parola%' OR ";};
    }
    $add.="0";
    $add=str_replace(" OR 0","",$add);

    $query="SELECT * FROM all_site_canzoni WHERE ". $add ." ORDER BY artista ASC";

  3. #3
    L'avatar di makpaolo
    makpaolo non è connesso Utente storico
    Data registrazione
    08-05-2003
    Residenza
    Brescia ( prov.)
    Messaggi
    9,399

    Predefinito

    prova con
    Codice PHP:
    $query="SELECT * FROM all_site_canzoni WHERE ". $add ." ORDER BY titolo,artista ASC";
    Se smetti di imparare e evolverti sei morto dentro

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da makpaolo
    prova con
    Codice PHP:
    $query="SELECT * FROM all_site_canzoni WHERE ". $add ." ORDER BY titolo,artista ASC";
    no.. in questo modo ordina i risultati in ordine alfabetico rispetto al titolo.. non prende in considerazione la pertinenza..
    help please..

  5. #5
    Guest

    Predefinito

    MySQL può determinare automaticamente per pertinenza usando le ricerche fulltext.
    Puoi fare qualche ricerca sul sito ufficiale (mysql.com) per saperne di più.
    In rete trovi anche molte info e tutorial/guide per sapere cosa sono e come funzionano questo tipo di ricerche e i relativi tipi di campi.


    Ciaooooo!!!!

  6. #6
    Guest

    Predefinito

    Perchè non funziona??
    questo è quello che ho scritto (ho provato solo con il campo "artista"):
    Codice PHP:
    $esplosa=explode(" ",$ricerca);

    $add="";
    reset($esplosa);
    while(list(,
    $parola)=each($esplosa))
    {
    $parola=trim($parola);
    if (!empty(
    $parola)){
    $add.="*$parola* ";};
    }
    $query="SELECT * FROM all_site_canzoni WHERE MATCH(artista) AGAINST('".$add."')";
    Ultima modifica di Niso : 11-10-2006 alle ore 08.20.47

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •