problema filtro registros

22 views
Skip to first unread message

Jose Puertas

unread,
Dec 27, 2016, 4:03:38 PM12/27/16
to ZnetDK
Hola Pascal, al intentar hacer el crud con el input de busqueda me devuelve error, paso a exponer el código:

controlador:

namespace app\controller;


use app\model\tjugadorDAO;


class tjugadoresctrl extends \AppController {
 
   
static protected function action_lister() {
       
// 1) Read POST parameters
        $request
= new \Request();
       
// --> Pagination
        $first
= $request->first; $rows = $request->rows;
       
// --> Sort criteria
        $sortField
= $request->sortfield; $sortOrder = $request->sortorder;
         $sortCriteria
= is_null($sortField) ? 'nombre_equipo' : $sortField . (is_null($sortOrder) ? ' ASC' : $sortOrder == 1 ? ' ASC' : ' DESC');
       
// --> Filter criteria
        $criteria
= $request->search_criteria;
        $filtro
= '%' . $criteria . '%';
     
/*  $request = new \Request();*/
        $response
= new \Response();
       
//$filtrouserDAO = new \app\model\filtrouserDAO();
       
// $filtrouserDAO->setUserIDAsFilter(\UserSession::getLoginName());
       
     
//  $user_id=  $filtrouserDAO->getResult();
       
// $filtro = $user_id['user_id'];
       
//$valor = (int)$filtro;
        $jugadorid
= new tjugadorDAO();
        $jugadorid
->setFilterEntUser($filtro);
         $jugadores
= array();
         
try {
            $response
->total = $jugadorid->getCount();
            $jugadorid
->setSortCriteria($sortCriteria);
            $jugadorid
->setLimit($first, $rows);
           
       
while ($row = $jugadorid->getResult()) {
            $jugadores
[] = $row;
       
}
       
/* Réponse retournée au contrôleur principal */
       
        $response
->rows = $jugadores;
        $response
->success = true;
       
         
} catch (\PDOException $ex) {
     
   
     $response
->setFailedMessage("Request data", "Unable to request the products (error '" . $ex->getCode() . "')");
       
}
       
 
// 3) Return JSON response
       
return $response;
}
 
}


dao

namespace app\model;


class tjugadorDAO extends \DAO {


   
protected function initDaoProperties() {


        $this
->table = "usuarios";
        $this
->IdColumnName = "id_usuario";
        $this
->query = "select usuarios.*, posicion.nombre_posicion , equipos.nombre_equipo from usuarios";
        $this
->query .= " left join posiciones as posicion using (id_posicion) ";
        $this
->query .= "INNER JOIN asig_jug_equipo A on A.id_usuario=usuarios.id_usuario ";
        $this
->query .= "INNER JOIN equipos on equipos.id_equipo=A.id_equipo ";
       
// $this->filterClause = " where equipos.user_id like ? order by equipos.nombre_equipo ASC";
   
}


   
public function setFilterEntUser($id){
     
//  $this->table = "usuarios";
       
//$this->IdColumnName = "id_usuario";
     
//   $this->query = "select usuarios.*, posicion.nombre_posicion , equipos.nombre_equipo , equipos.id_equipo from usuarios ";
     
//   $this->query .= "left join posiciones as posicion using (id_posicion) ";
     
//   $this->query .= "INNER JOIN asig_jug_equipo A on A.id_usuario=usuarios.id_usuario ";
     
//   $this->query .= "INNER JOIN equipos on equipos.id_equipo=A.id_equipo ";
        $this
->filterClause = " where equipos.nombre_equipo like lower ? ";    
        $this
->setFilterCriteria($id);
   
}


}


error:

[2016-12-27 21:56:52] CORE - ZNETDK ERROR - DAO-002: unable to execute the SQL query 'select usuarios.*, posicion.nombre_posicion , equipos.nombre_equipo from usuarios left join posiciones as posicion using (id_posicion) INNER JOIN asig_jug_equipo A on A.id_usuario=usuarios.id_usuario INNER JOIN equipos on equipos.id_equipo=A.id_equipo   where equipos.nombre_equipo like lower ? ': code='42000', message='SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''%%'' at line1

He copiado tal como tu lo tienes en el crud.

Saludos

Pascal Martinez

unread,
Dec 28, 2016, 2:54:33 PM12/28/16
to ZnetDK
Hola José,

lower es una función en tu petición SQL. Tienes que escribir lower(?).

Saludos,

Pascal MARTINEZ

Jose Puertas

unread,
Dec 28, 2016, 4:39:55 PM12/28/16
to ZnetDK
Muchas gracias.
Reply all
Reply to author
Forward
0 new messages