Salve a tutti,
sto puntualizzando un piccolo motore di ricerca seguendo tra gli altri anche i criteri di ricerca classici che ho elencato in oggetto.
un pò di codice:
Questo è il codice che regola la select dei criteri tramite array e foreach
Codice PHP:
private $compare = array(
"uguale a" => "=",
"diverso da" => "NOT LIKE",
"minore di" => "<",
"maggiore di" => ">",
"minore di o uguale a" => "<=",
"maggiore di o uguale a" => ">=",
"contiene" => 'LIKE',
"inizia con" => "LIKE"
);
echo "<select name=voce$var size=1>";
//le varie option
foreach ($compare as $num => $val) {
echo "<option value=$val>$num</option>";
}
echo "</select>";
Questo è il controllo che eseguo nella classe, $this->voce è il campo da cercare, $this->comparazione1 è il criterio, $this->input è la stringa da cercare:
Codice PHP:
if (isset($_POST['input1'])) {
if ($_POST['comparazione1'] == 'LIKE') {
$query .= " AND " . $this->voce1 . " " . $this->comparazione1 . " '$this->input1%'"; } else{
$query .= " AND " . $this->voce1 . " " . $this->comparazione1 . " '$this->input1'";
}
}
Il punto è che come si può notare dall'array, per "inizia per", "contiene" e "finisce per", la parola chiave nell'array da passare per comporre la query è sempre "LIKE", mentre la regexp da settare in realtà è diversa per ciascuno dei tre criteri è ben diversa.
Vorrei capire: secondo voi come posso discernere l'input giusto avendo lo stesso value di riferimento nella SELECT?
Grazie mille!
P.S per chiarire, non ho ancora utilizzato il termine REGEXP nella query, ma è proprio la trasformazione che mi accingo a fare.