Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    15

    MySql: problema con la ricerca di tipo full text

    Salve a tutti e grazie in anticipo per l'attenzione.

    Ho un problema con la ricerca full text, ho una tabella cosi formata:


    id_film int(8)
    titolo varchar(50)
    didascalia varchar(60)
    regia varchar(30)
    interpreti varchar(70)
    recensione longtext

    gli indici sono:

    Nome chiave tipo cardinalità campo

    PRIMARY PRIMARY 1 id_film
    interpreti FULLTEXT nessuna interpreti
    recensione FULLTEXT nessuna recensione

    volevo realizzare una query che mi ricercasse un riscontro tra gli intepreti, ho utilizzato questo codice (fa riferimento ad una classe esterna gia testata e funzionante)

    codice:
    <?php
    	include "TheClass.php";
    	$data=new TheClass();
    	$data->connetti();	
    	
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
    <input type="text" value="" name="interpreti" />
    <input type="submit" value="cerca" name="ok" />
    </form>
    <?php
    	if(isset($_POST['ok']))
    	{
    	
    	if(isset($_POST['interpreti']))
    	{
    		$interpreti = $_POST['interpreti'];
    	}
    	else{ echo "inserisci o errore inserimento";}
    	$search = $data->query("SELECT * FROM test WHERE MATCH(interpreti) AGAINST('$interpreti')");
            echo $search;
    	
    	}
    	
    ?>
    Non sono riuscito a trovare una guida valida ed il risultato è che dopo che ho effettuato la ricerca $search mi stampa "Resource id #4" a prescindere dall'esistenza o meno della parola nel campo. Il mio timore è di non aver ben compreso cosa restituisce la query.
    Qualsiasi tipo di aiuto sarà ricompensato con una discreta dose di "Grazie!"

  2. #2
    Beh...qery esegue la query (ovviamente), poi devi recuperarne i valori.
    Probabilmente esiste un fetch o simile, nella classe che usi


  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    15
    Grazie per la risposta

    Ho cambiato il codice secondo una guida che ho trovato online:

    http://devzone.zend.com/article/1304

    codice:
    $search = $data->query("SELECT *, MATCH(interpreti) AGAINST('$interpreti') AS score
                    FROM test
                WHERE MATCH(interpreti) AGAINST('$interpreti')
                ORDER BY score DESC ");
    	while($array = mysql_fetch_array($search)){
    		echo "ma quì ci arrivi?". $array['interpreti'];
    		echo "
    ";
    		echo $array['titolo'];
    		echo "
    ";
    		}
    Il "ma qui ci arrivi?" è un controllo di flusso xD e comunque NON CI ARRIVA xD.
    Il che mi lascia pensare che non esista il fetch_array di $search.
    Sono io che sono un po nabbo in materia ma non capisco come devo trattare i valori (e quali siano) che restituisce la query. Sul web no ho trovato nessuna guida che me lo specifichi in maniera esplicita.

    Un modo elaborato per dirvi......."AIUTOOOOOOOOOOO"

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Da quello che scrivi sembrerebbe che la query non restituisca nulla, ma perché non la provi direttamente sul db così ti togli i dubbi?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    15
    Ed in effetti mi restituisce "MySQL ha restituito un insieme vuoto (i.e. zero righe). (La query ha impiegato 0.0001 sec)". Ma deve trovarmi almeno un risultato. Qualche idea sul perchè?

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    15
    RISOLTO:

    Ho realizzato la ricerca in BOOLEAN MODE e cosi ottengo il riscontro (in effetti a me basta che trovi UN SOLO interprete corrispondente per visualizzare il risultato). Il codice che ho utilizzato è:

    codice:
    $search = $data->query("SELECT *, MATCH(interpreti) AGAINST('$interpreti' IN BOOLEAN MODE) AS score
                    FROM test
                WHERE MATCH(interpreti) AGAINST('$interpreti' IN BOOLEAN MODE)
                ORDER BY score DESC ");
    	while($array = mysql_fetch_array($search)){
    		echo "ma quì ci arrivi?". $array['interpreti'];
    		echo "
    ";
    		echo $array['titolo'];
    		echo "
    ";
    		}
    Grazie comunque a tutti

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.