salve e tutto il giorno che sto cercando di risolvere un problema ma non ho trovato ancora una soluzione.
forse sarà una cosa facilissima ma non sono riuscito a risolvere questo problema.
allora, sto facendo una ricerca full text in questo modo.
Codice PHP:
class Ricerca
{
var $campi;
var $tabella;
var $key;
var $tuple;
function Ricerca($key, $tabella, $campi)
{
$this->key = $key;
if($tabella!="")
$this->tabella = $tabella;
if($campi!="")
$this->campi = $campi;
$this->pulisciStringa();
}
function Query()
{
$datah = time();
$query = "SELECT *, MATCH($this->campi) AGAINST('$this->key' IN BOOLEAN MODE) AS attinenza FROM $this->tabella WHERE MATCH($this->campi) AGAINST('$this->key' IN BOOLEAN MODE) ORDER BY attinenza DESC";
//AND dataFineTimestamp > $datah prende l'annuncio che ancora non e scaduto
$this->tuple = mysql_query($query);
}
function pulisciStringa()
{
$keyMod = strip_tags($this->key);
$keyMod = mysql_real_escape_string($keyMod);
$this->key = trim($keyMod);
}
function ricercaParole()
{
$word = explode(' ', trim($this->key));
$num = count($word);
$i=0;
while($i< $num){
$word[$i] = '+'.$word[$i];
$i++;
}
$this->key = implode(' ',$word);
}
function ricercaFrase()
{
$word = $this->key;
$word = '"'.$word.'"';
$this->key = $word;
}
}
questa ricerca trova tutti gli annunci che hanno attinenza con la parola cercata
ogni annuncio e associato a una categoria tramite id , i nome delle categorie sono in un altra tabella.
vorrei che quando trova gli annunci a sinistra nella pagina escono le categorie degli annunci che ha trovato, per esempio se trova 3 annunci della categoria casa, a fianco esce una volta casa, se trova anche annunci che hanno categoria macchina, esce casa, macchina. ecc.
io avevo pensato di fare la funzione sopra per trovare gli annunci, e poi fare una query uguale per le categorie in questo modo.
Codice PHP:
class categorie
{
var $campi;
var $tabella;
var $key;
var $tuple;
function categorie($key, $tabella, $campi)
{
$this->key = $key;
if($tabella!="")
$this->tabella = $tabella;
if($campi!="")
$this->campi = $campi;
$this->pulisciStringacat();
}
function Querycat()
{
$datah = time();
$query = "SELECT a.*, b.categoria1, MATCH($this->campi) AGAINST('$this->key' IN BOOLEAN MODE) AS attinenza FROM annunci a, cat1 b WHERE MATCH($this->campi) AGAINST('$this->key' IN BOOLEAN MODE) AND a.id_cat1= b.cod_cat1 GROUP BY a.id_cat1 ORDER BY attinenza DESC";
//dataFineTimestamp > $datah prende l'annuncio che ancora non e scaduto
$this->tuple = mysql_query($query);
}
function pulisciStringacat()
{
$keyMod = strip_tags($this->key);
$keyMod = mysql_real_escape_string($keyMod);
$this->key = trim($keyMod);
}
function ricercaParolecat()
{
$word = explode(' ', trim($this->key));
$num = count($word);
$i=0;
while($i< $num){
$word[$i] = '+'.$word[$i];
$i++;
}
$this->key = implode(' ',$word);
}
function ricercaFrasecat()
{
$word = $this->key;
$word = '"'.$word.'"';
$this->key = $word;
}
}
solo che facendo cosi mi dice che non puo eseguire la query
cosa sbaglio ?
se nella query metto questa condizione id_cat1=1 funziona
se metto id_cat1=cod_cat1 dice che non puo eseguire la query
mi potreste aiutare. o magari se ci sono soluzioni migliori ve ne sarei molto grato