I have a search form, and I want to let the user to search one or more authors who writes a book.
I have this code that put the string in an array:
if (strpos($a,' ')||strpos($a,',')) {
$autore_diviso = explode(",", $a);
$dim=count($autore_diviso);
$i=0;
for ($i=0;$i<$dim;$i++)
{
$autore_diviso[$i]=trim($autore_diviso[$i]," ");
$autore_diviso[$i] = explode(" ", $autore_diviso[$i]);
}
debug($autore_diviso);
}
Which outputs something like this:
Array(
[0] => Array
(
[0] => santone
)
[1] => Array
(
[0] => anfossi
)
[2] => Array
(
[0] => gli
) )
Now, I have this code for query:
$t = $params['titolo'];
$e = $params['editore'];
$anno = $params['anno'];
$anno2 = $params['anno2'];
$conditions = array( 'editore LIKE' => "%$e%",
'titolo LIKE' => "%$t%"
);
if (isset($autore_diviso)) // if I have more than 1 author
{
$dim=count($autore_diviso);
$i=0;
for ($i=0;$i<$dim;$i++)
{
$conditions['autori LIKE ?'] = array('OR' => array(
'%' . $autore_diviso[$i][0] . '%'));
} }
else
$conditions[]=array('autori LIKE' => "%$a%");
if (!$anno&&!$anno2)
$conditions=$conditions;
else {
if (!$anno)
$conditions[] = array('anno <=' => "$anno2");
if (!$anno2)
$conditions[] = array('anno >=' => "$anno");
}
if ($anno&&$anno2)
$conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2));
}
My problem is this:
if (isset($autore_diviso)) // if I have more than 1 author
{
$dim=count($autore_diviso);
$i=0;
for ($i=0;$i<$dim;$i++)
{
$conditions['autori LIKE ?'] = array('OR' => array(
'%' . $autore_diviso[$i][0] . '%'));
}
}
Which outputs:
Array (
[editore LIKE] => %%
[titolo LIKE] => %%
[autori LIKE ?] => Array
(
[OR] => Array
(
[0] => %santone%
)
))
Which is the last author I search (for example: anf, gli, santone).
How can I search one or more authors, using that array? Thanks.