2013-02-12 11 views
0

J'ai cette requête:Rechercher dans CakePHP 1.2

$conditions = array(
      'editore LIKE' => "%$e%", 
      'titolo LIKE' => "%$t%" 
     ); 
     if (isset($autore_diviso)) 
      $conditions[] = array('autori LIKE ? AND ?' => array("%$autore1%","%$autore2%"));     
     else 
      $conditions[]=array('autori LIKE' => "%$a%"); 
     if (!$anno&&!$anno2) // I HAVE TO CHANGE THIS - if the user does not insert any year 
      $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)); 

Où anno année moyenne, Editore signifie signifie éditeur et titolo titre.

Cela ne fonctionne pas la recherche pour exactement 2 auteurs.
Si debugger $ conditions, j'ai par exemple:

Array (
[editore LIKE] => %% 
[titolo LIKE] => %% 
[0] => Array 
    (
     [autori LIKE ? AND ?] => Array 
      (
       [0] => %massi% 
       [1] => %palu% 
      ) 

    )) 


Mais le résultat est vide.

Répondre

0

Ce n'est pas comme ça qu'on ajoute des éléments aux tableaux en PHP. En outre, il n'est pas nécessaire d'utiliser AND explicite, c'est la valeur par défaut. C'est nécessaire seulement s'il y aurait autrement plusieurs clés de tableau identiques.

$conditions = array(
    'autori LIKE ? AND ?' => array("%$autore1%","%$autore2%"), 'editore LIKE' => "%$e%", 
    'titolo LIKE' => "%$t%" 
); 

if (!$anno) 
    $conditions[] = array('anno <=' => "$anno2");   

if (!$anno2) 
    $conditions[] = array('anno >=' => "$anno"); 

if ($anno&&$anno2) 
    $conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2)); 
+0

Je reçois près, mais il ne fonctionne pas la recherche de 2 auteurs, la question que j'edited. – Ettore

0

SOLVED avec ce code:

$conditions = array(
     'editore LIKE' => "%$e%", 
     'titolo LIKE' => "%$t%" 
    ); 
    if (isset($autore_diviso)) 
     $conditions[] = array('autori LIKE ? AND autori LIKE?' => array("%$autore1%","%$autore2%"));      
    else 
     $conditions[]=array('autori LIKE' => "%$a%"); 
    if (!$anno&&!$anno2) // Da sistemare. 
     $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)); 
    debug($conditions); 
Questions connexes