standardLib – PHP framework
Search
Dipendenze: Security, Pagination
Descrizione
Il modello Search permette di implementare un motore di ricerca su tabelle di un database con un elevato livello di configurazione e con la possibilità di paginare direttamente i risultati.
Lista dei parametri
| Parametro | Descrizione | Default |
|---|---|---|
| type | Il tipo di ricerca; esistono quattro possibilità: Si immagini di inserire la stringa: La mia tosaerba con motore a scoppio
|
or |
| wantToPage | Si desiderano i risultati paginati? (0 no; 1 sì) | 1 |
| searchTable | Nome della tabella sulla quale viene eseguita la ricerca | Nessun valore di default |
| searchField | Campo della tabella sul quale viene eseguita la ricerca | Nessun valore di default |
| scoreMod | La modalità di visualizzazione della perinenza di una ricerca fulltext (f per frazione; p per percentuale) | p |
Lista dei metodi e delle proprietà
| Proprietà – Metodo | Descrizione | Return |
|---|---|---|
| searchResultSet | Questa propietà contiene il resultset della ricerca | |
| Pagination->searchResult() | Metodo per l’attivazione della ricerca che valorizza la proprietà searchResultset | |
| CalcScore($score) | Ritorna la pertinenza del risultato di una ricerca fulltext in percentuale o in frazione | Stringa |
Esempio minimo
Innanzitutto dovremo predisporre il form per la ricerca; l’attributo name del campo di ricerca deve essere obbligatoriamente key.
Poniamo ora di voler fare una ricerca fulltext del campo testo della tabella cerca paginado i risultati 5 alla volta
include 'standardLib/engine.php';
_setOptions('searchTable' => 'cerca',
'searchField' => 'testo',
'step' => 5,
'type' => 'fulltext',
'wantToPage' => true);
if(isset($_POST['submit']))
{
$model->searchResult(); // costruisce la risorsa
}
while($row = mysql_fetch_array($model->searchResultSet))
{
echo $row['testo'] . ' ' . $model->CalcScore($row['score']) . "
";
}
echo "
- ";
echo $model->Previous . ' ' . $model->Next;
echo "
Notate che CalcScore (che in questo caso ci restituisce la percentuale di pertinenza) prende come parametro il valore score. Il nome di questo valore non può essere modificato.
Per la paginazione ho messo solo i link per la pagina precedente e per la pagina successiva, ma naturalmente vi sono tutte le proprietà disponibili nel modello Pagination.
Per semplificare ulteriormente, è consigliato passare la risorsa restituita, direttamente al metodo query_elements() del modello Loop ed estrarre i risultati con Loop appunto.

