Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34
  1. #1
    Utente di HTML.it L'avatar di Reiko81
    Registrato dal
    Oct 2009
    Messaggi
    203

    MySQL - PHP - Motore di ricerca FullText

    E' tutta la giornata che ci sbatto la testa. Per favore, aiutatemi!

    Ho un database MySQL (MyISAM e chiavi indicizzate) e volevo mettere nel sito un "motore di ricerca".
    Ho fatto così:

    Codice PHP:
    include("inc_dbCon.php");

    connettiDb();
    $key "Bottoni";

    $query "SELECT * FROM film WHERE MATCH (titolo, testo) AGAINST('".$key."')";
    $result mysql_query($query$con) or die(mysql_error());

    echo 
    "Valore cercato: " $key;
    while(
    $row mysql_fetch_array($result))
    {
    echo 
    $row['titolo']."
    "
    .$row['testo']."
    "
    ;

    La connessione va a buon fine. "Bottoni" è presente nel titolo di uno dei record, ma purtroppo non mi stampa alcun risultato.
    Come posso scoprire dov'è il problema?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    prova la query in phpmyadmin e poi: di che tipo sono i campi? sono indicizzati?

  3. #3
    Utente di HTML.it L'avatar di Reiko81
    Registrato dal
    Oct 2009
    Messaggi
    203
    Siccome il database non è nato come MyISAM, l'ho convertito e per la tabella film ho eseguito questo in phpmyadmin
    codice:
    ALTER TABLE film ADD FULLTEXT(titolo, testo);
    Ho eseguito la query come mi hai detto, ma effettivamente non mi da risultati
    codice:
    MySQL ha restituito un insieme vuoto (i.e. zero righe). ( La query ha impiegato 0.0004 sec )
    SELECT *
    FROM film
    WHERE MATCH (
    titolo, testo
    )
    AGAINST (
    'Bottoni'
    );
    
    LIMIT 0 , 30

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    le colonne devono avere un indice fulltext...

  5. #5
    Utente di HTML.it L'avatar di Reiko81
    Registrato dal
    Oct 2009
    Messaggi
    203
    Pensavo che "ALTER TABLE film ADD FULLTEXT(titolo, testo);" servisse proprio a quello!

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    sì... era solo una puntualizzazione... puoi postare il record che dovrebbe contenere la parola che cerchi postando però il risultato della query SELECT * FROM (non scrivendo tu a mano i dati)?

  7. #7
    Utente di HTML.it L'avatar di Reiko81
    Registrato dal
    Oct 2009
    Messaggi
    203
    Originariamente inviato da eiyen
    sì... era solo una puntualizzazione... puoi postare il record che dovrebbe contenere la parola che cerchi postando però il risultato della query SELECT * FROM (non scrivendo tu a mano i dati)?
    codice:
    $query = "SELECT * FROM film";
    $result = mysql_query($query) or die(mysql_error());
    while($row = mysql_fetch_array($result)){
    	echo "Titolo: " . $row["titolo"];
    	echo "
    Testo: " . $row["testo"];
    }
    Mi stampa

    Titolo: Bottoni
    Testo: Tanti bottoni colorati

  8. #8
    Utente di HTML.it L'avatar di Reiko81
    Registrato dal
    Oct 2009
    Messaggi
    203
    Io credo ci sia un problema con ALTER TABLE perché ho provato a rifarlo ora e va sempre a buon fine. Non dovrebbe dirmi invece che è una modifica già effettuata?

  9. #9
    Utente di HTML.it L'avatar di Reiko81
    Registrato dal
    Oct 2009
    Messaggi
    203
    Ho provato così:
    Codice PHP:
    SELECT FROM `filmWHERE `titoloLIKE 'Bottoni' 
    E funziona... mi restituisce il record...

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non puoi verificare se l'indicizzaz. fulltext è ok? puoi controllare/impostarla dall'interfaccia di phpmyadmin?

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.