Ecco la descrizione del codice in aggiunta a quella che hai già fatto. Le if lavorano tutte guai se non lavorassero. C'è voluto un mese per mettere a punto tutto!
<?php
$session =& JFactory::getSession('ricerca');/*apro una sessione e
la chiamo 'ricerca' */
$search_array = array('title','introtext','fulltext'); /*creo un array
con questi valori (sono campi della tabella) */
$cerca = array(); //inizializzo un array
foreach ( $search_array as $search ) { /* assegno con un ciclo
for alla variabile $search sui 3 valori dei campi di ricerca */
$value = JRequest::getVar($search, '' , 'post'); /* estrae il valore
di un campo di ricerca. Il ciclo agirà su tutti i campi. */
if ( $value ) { /* se il valore esiste crea il contenuto dell'array
$cerca */
$cerca[] = " `$search` LIKE '%$value%' "; /* ogni array contiene
una condizione della ricerca. L'uso di LIKE consente di eseguire la
ricerca per il valore contenuto nel campo della tabella */
}
}
if(empty($cerca) and (JRequest::getVar('submit','no','POST')=="Trova")){ /*questo è
vero quando tutti i campi sono vuoti ed avvio unaricerca con campi
vuoti cliccando sul bottone trova */
$session->set('cerca','0','ricerca'); /*resetto la sessione della
ricerca a 0 */
JRequest::setVar('limitstart',0,'Get'); /* forzo la visualizzazione alla
prima pagina della navigazione */
}
if ( !empty($cerca) ){ /* questo è vero quando ci sono dei dati
inseriti da ricercare */
echo " WHERE ".implode(' AND ', $cerca); /* scrivo tutto l'array
$cerca e creo la condizione di ricerca. */
$session->set('cerca',$cerca,'ricerca'); /* memorizzo nella
sessione l'array $cerca che userò quando navigo fra le pagine e
voglio conservare i criteri della ricerca precedentemente inviati. */
}
elseif((JRequest::getVar('submit','no','POST')<>"Trova") and($session->get('cerca',0,'ricerca')<>0)) /* questa condizione
serve a stabilire quando navigo fra le pagine, cioè non ho usato il
tasto trova ed esiste già una ricerca memorizzata nella sessione */
{
$cerca=$session->get('cerca',0,'ricerca');/*carico la precedente
ricerca memorizzata nella sessione */
echo " WHERE ".implode(' AND ', $cerca);/* scrive la condizione
della ricerca */
}
else
{
echo ""; /* nessuna where (questo sarà verificato all'inizio) e in
caso di ricerca con campi nulli */
}
?>