搜索一个或多个作者查询cakephp

时间:2013-02-12 10:38:11

标签: sql cakephp cakephp-1.2

我有一个搜索表单,我想让用户搜索一个或多个写书的作者。

我有这个代码将字符串放在一个数组中:

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);
}           


输出的内容如下:

Array(
[0] => Array
    (
        [0] => santone
    )

[1] => Array
    (
        [0] => anfossi
    )

[2] => Array
    (
        [0] => gli
    ) )



现在,我有这个查询代码:

$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));
      }


我的问题是:

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] . '%'));
    }
}



哪个输出:

Array (
[editore LIKE] => %%
[titolo LIKE] => %%
[autori LIKE ?] => Array
    (
        [OR] => Array
            (
                [0] => %santone%
            )

    ))

我搜索的最后一位作者(例如:anf,gli,santone) 如何使用该阵列搜索一个或多个作者?感谢。

1 个答案:

答案 0 :(得分:0)

我想我解决了这个问题:

if (isset($autore_diviso)) {
$dim=count($autore_diviso);
$i=0;
while ($i<$dim)
{
    $conditions[]=array ('autori LIKE ?' => array(
        '%' . $autore_diviso[$i][0] . '%'));
    $i++;
} }