Yii Framework Forum: [Risolto] Admin View: Un Unico Textbox Per La Ricerca In Or Su Multipli Campi - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[Risolto] Admin View: Un Unico Textbox Per La Ricerca In Or Su Multipli Campi ... il cliente non finisce mai di stupire... Rate Topic: -----

#1 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 11 October 2012 - 04:22 AM

Mi han chiesto di realizzare, OLTRE al filtro avanzato, anche un filtro che abbia una unica textbox, ma che poi effettui il search in OR su piu cambi.

Immaginiamo, ma non è questo il caso, di avere nome, cognome, indirizzo, razza del cane, in campi separati. L'utente deve poter cercare 'giulio' o 'labrador' tramite quell'unica textbox... è possibile una cosa del genere!?


La sql sarà " .. WHERE nome LIKE '%giulio%' OR cognome LIKE '%giulio%' OR razza LIKE '%giulio%' OR ... "

ovviamente il tutto case insensitive, ma questo credo lo faccia già mysql

Questo filtro verrà mostrato come predefinito, e sarà in una view diversa rispetto al filtro avanzato _search, in quanto solo uno dei due per volta potrà essere usato. Il che non fa una piega.
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#2 User is offline   zaccaria 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 2,232
  • Joined: 04-October 09
  • Location:Moscow

Posted 11 October 2012 - 04:42 AM

Aggiungi una proprieta' al model

public $text_search;

Mettilo fra i safe attribute per la search e scrivi la condition:

$criteria=>addCondition("(nome LIKE '%:nome%' OR cognome LIKE '%:nome%' OR razza LIKE '%:nome%' )");
$criteria->params[':nome']=$this->text_search;


Oltre ovviamente a mettere la textbox da qualche parte.


Spero vivamente per voi che le tabelle siano piccole, perche' se sperate di trovare qualcosa in questo millenio cercando fra migliaia di record con like ho brutte notizie per voi.

Nel caso di ricerche su grandi dati, usate sphinx.
0

#3 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 11 October 2012 - 05:22 AM

mi da zero risultati dopo aver provato ad eseguire questa SQL, si noti il parametro NON sostituito


SELECT COUNT(DISTINCT `t`.`id`) FROM `cprol_users` `t` LEFT OUTER JOIN `cprol_languages` `languageObj` ON (`t`.`languageId`=`languageObj`.`id`) WHERE ((username != 'root' ) AND ((username LIKE '%:freeSearch%' OR realname LIKE '%:freeSearch%' OR email LIKE '%:freeSearch%' )))


$criteria->addCondition("(username LIKE '%:freeSearch%' OR realname LIKE '%:freeSearch%' OR email LIKE '%:freeSearch%' )");
$criteria->params[':freeSearch']=$this->freeSearch;

Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#4 User is offline   zaccaria 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 2,232
  • Joined: 04-October 09
  • Location:Moscow

Posted 11 October 2012 - 05:25 AM

Non dovresti usare mai $_GET nei model, usa if ($this->freeSearch)

Magari il bottone cerca manda anche la freesearch vuota e ti causa qualche problema.
0

#5 User is offline   zaccaria 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 2,232
  • Joined: 04-October 09
  • Location:Moscow

Posted 11 October 2012 - 05:28 AM

Devi fare cosi':

$criteria->addCondition("(username LIKE :freeSearch OR realname LIKE :freeSearch OR email LIKE :freeSearch)");
$criteria->params[':freeSearch']='%'.$this->freeSearch.'%';


Mettere i percenti nel param e non nella condition, non ci ho pensato prima.
1

#6 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 700
  • Joined: 03-October 12
  • Location:Ferrara

Posted 11 October 2012 - 05:31 AM

Questo va a meraviglia ! Grazie
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users