検索フォームに対して次のクエリがあります。
// General Query
$conditions = array(
'editore LIKE' => "%$e%",
'titolo LIKE' => "%$t%"
);
ここで、ユーザーがフィールド(作成者、年など)に入力することを選択した場合、次のようになります。
if (isset($menu)&&$menu!='')
$conditions[]=array('classe LIKE' => "%$menu%");
または:
if ($anno&&$anno2)
$conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2));
ユーザーが本にいくつかのタグを選択した場合、私は次のようになります。
$query_t = $CdBibliotem->query("SELECT codiceBiblio FROM cd_bibliotem WHERE codiceTematica IN (".implode(',', $fields).")");
$query_t = Set::classicExtract($query_t,'{n}.cd_bibliotem.codiceBiblio');
$tot=implode(',', $query_t);
$conditions[]=array('codiceBiblio IN (?)'=> "$tot");
これは機能するはずですが、代わりに理由がわかりません。最初のレコードしか表示されません。
これは、ユーザーが1つのタグのみを選択し、他のフィールドを空のままにする最終クエリのデバッグの例です。
Array (
[editore LIKE] => %%
[titolo LIKE] => %%
[0] => Array
(
[autori LIKE] => %%
)
[1] => Array
(
[codiceBiblio IN (?)] => 118729,118656,118645,118554,118534,118533,118532,118531,118530,118529,118528,118527,118526,118121,117632,117515,117040,116562,115851,115787,114613,114612,113545,113385,113142
) )
この場合、最初の本(id = 118729)のすべての詳細が表示されますが、そのすべての本の詳細が表示されるはずです。