Codice PHP:
<?php
// search with more keys
function more_keys($str) {
$rubrica = "3A";
$where = "SELECT * FROM `annunci` WHERE ((`rubrica` = '".$rubrica."')";
// Articoli determinativi etc
$eccezioni = array(" il "," lo "," la "," i "," gli "," le "," in "," con "," su "," per "," tra "," fra "," di "," a "," e "," o "," u "," da "," di "," della "," delle "," un "," una "," uno "," piu' "," più "," per "," dai "," ad "," ed "," dello "," al "," allo ");
$field = array("`titolo`", "`testo`", "`tel`");
$str_temp = str_replace( $eccezioni, " ", $str);
$pieces = explode(chr(32), $str_temp);
$len_pieces = (count($pieces)-1);
$len_field = (count($field)-1);
$where .= " AND (((".$field[0]." like '%".$pieces[0]."%')";
for ($i = 1; $i <= $len_pieces; $i++) {
$where .= " AND (".$field[0]." like '%".$pieces[$i]."%')";
}
$where .= ") ";
for ($k = 0; $k <= $len_field; $k++) {
$where .= " OR ((".$field[$k]." like '%".$pieces[0]."%')";
for ($l = 1; $l <= $len_pieces; $l++) {
$where .= " AND (".$field[$k]." like '%".$pieces[$l]."%')";
}
$where .= ")";
}
$where .= "))";
print '<pre>';
print_r($pieces);
print '</pre>';
echo "<hr>";
print_r($where);
return $where;
}
?>
<?php
if ( $_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('chiave', $_POST) ){
$chiave = trim($_POST['chiave']);
more_keys($chiave);
} else {
$chiave = "milano appartamento centro";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
key:
<input name="chiave" type="text" value="<?= $chiave; ?>" />
<input name="Invia" type="submit" value="Invia" />
</form>
Risultato:
codice:
SELECT * FROM `annunci` WHERE ((`rubrica` = '3A') AND (((`titolo` like '%milano%') AND (`titolo` like '%appartamento%') AND (`titolo` like '%centro%')) OR ((`testo` like '%milano%') AND (`testo` like '%appartamento%') AND (`testo` like '%centro%')) OR ((`tel` like '%milano%') AND (`tel` like '%appartamento%') AND (`tel` like '%centro%'))))