problema con esta selección

27 views
Skip to first unread message

Jose Puertas

unread,
Jan 7, 2017, 6:08:52 AM1/7/17
to ZnetDK
Hola Pascal, ante todo feliz año (aunque sea ya dia 7), tengo un problema, tengo una tabla en la que asigno jugadores,equipo,temporada y categoria:

CREATE TABLE `asig_jug_equipo` (
 
`idasig` int(11) NOT NULL,
 
`id_equipo` int(11) DEFAULT NULL,
 
`id_usuario` int(11) DEFAULT NULL,
 
`id_temporada` int(11) DEFAULT NULL,
 
`id_categoria` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


con este controlador los asigno, pero mi intención es que el jugador no se puede duplicar en la misma temporada:

static protected function action_RecJugEquipos() {
       
        $request
= new \Request();
        $selectJugadores
= $request->jugadores; // Array of the selected products in the listbox
        $selectEquipo
= $request->equipo; // Product category selected in the dropdown
        $selectcategoria
= $request->categoria;
        $selecttemporada
= $request->temporada;
        $jugadoresDAO
= new asigjugaDAO(); // The custom DAO used to store the product data


       
foreach ($selectJugadores as $value) {
                $jugadoRow
= ['id_usuario' => $value, 'id_equipo' => $selectEquipo, 'id_categoria' => $selectcategoria,'id_temporada' => $selecttemporada];
                $jugadoresDAO
->store($jugadoRow);
       
}
        $jugadequipsucess
= new \app\model\jugadasigDAO();
         
foreach ($selectJugadores as $value) {
             $valoractivo
= 1;
                $jugadoRowsucess
= ['id_usuario' => $value, 'Use_activo_temporada' => $valoractivo];
                $jugadequipsucess
->store($jugadoRowsucess);
       
}
       
       
// JSON Response
        $response
= new \Response();
        $response
->setSuccessMessage("Asingación", "Asignacion correcta");
             
return $response;
}

mediante esta consulta los muestro en otra vista diferente a la de asignación a fin de controlar los jugadores por equipo y poder modificar el equipo al que pertenecen durante la misma temporada:
class tjugadorDAO extends \DAO {


   
protected function initDaoProperties() {


        $this
->table = "usuarios";
        $this
->IdColumnName = "id_usuario";
   
        $this
->query = "select usuarios.* , equipos.nombre_equipo , temporadas.nombre_temporada  from usuarios ";
        $this
->query .= " INNER JOIN temporadas on temporadas.id_temporada=A.id_temporada";
        $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 ";
       
   
}


   
public function setFilterEntUser($id) {
       
        $this
->filterClause = " where equipos.nombre_equipo like lower(?)";
        $this
->setFilterCriteria($id);
   
}


}


este es el dialogo con el que quiero modificar el equipo del jugador:

<form class="zdk-form" id="mis_jugadores"
         
data-zdk-action="tjugadoresctrl:enregistrer"
         
data-zdk-datatable="table_Tjugadores">
       
<div id="default">
           
<ul>


               
               
<li><a href="#tab1">Datos deportivos</a></li>


           
</ul>
           
<div>
               
<div id="tab1" >


                   
<fieldset>
                       
<input class="zdk-row-id" type="hidden" name="idasig"  >
                       
<input  type="text" name="id_usuario"  >
                       
<label>Equipo actual</label><input type="text" name="nombre_equipo" disabled/>
                       
<label>Nuevo Equipo : </label>
                         
<select class="zdk-dropdown" name="id_equipo"
                                 
data-zdk-noselection="Seleccionar un valor..." data-zdk-action="equiposctrl:getEquipos"></select>
           
                   
</fieldset>
                 


                       
<button class="zdk-bt-save zdk-close-dialog" type="submit">Guardar</button>
                       
<button class="zdk-bt-cancel zdk-close-dialog" type="button">Cancelar</button>


               
               
</div>




           
</div>


       
</div>


   
</form>

esta seria  mi vista :

<div id="table_Tjugadores" class="zdk-datatable zdk-synchronize" title="Jugadores"
     
data-zdk-action="tjugadoresctrl:lister" data-zdk-paginator="10"
     
data-zdk-columns='[{"field":"id_usuario", "headerText": "Número"},
     {"field":"Use_nombre", "headerText": "Nombre"},
     {"field":"Use_apellidos", "headerText": "apellidos"},
     {"field":"nombre_equipo", "headerText": "Equipo"},
     {"field":"nombre_temporada", "headerText": "Temporada"},
     {"field":"Use_dorsal", "headerText": "Dorsal"}
     ]'
>
   


</div>

y con este controlador es con el que la muestro , también para hacer filtros por equipo pero me muestra equipos con nombres parecidos, por ejemplo (benjamin A me muestra benjamin A y prebenjamin A despues de pulsar el botón buscar):
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 . '%';
        $response
= new \Response();
        $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("Dato no encotrado", "No se ha podido encontrar el usuario (error '" . $ex->getCode() . "')");
       
}
// 3) Return JSON response
       
return $response;
   
}

y este es el controlador con el que guardo los cambios en la tabla asig_jug_equipo y el dao correspondiente:

 
static protected function action_enregistrer() {
       
/* Lecture des données de la requête HTTP */
        $request
= new \Request();
        $row
= $request->getValuesAsMap('id_equipo', 'id_usuario');
       
/* Enregistrement des données en Base de données */
        $jugadormodifDAO
= new \app\model\tjugadormodifequipDAO();
        $result
= $jugadormodifDAO->store($row);
       
/* Réponse retournée au contrôleur principal */
        $response
= new \Response();
       
if ($result) {
            $response
->setSuccessMessage('Guardar', 'Jugador guardado correctamente.');
       
} else {
            $response
->setFailedMessage('Guardar', "El jugador no ha sido guardado.");
       
}
       
return $response;
   
}

DAO
:
namespace app\model;


class tjugadormodifequipDAO extends \DAO {


   
protected function initDaoProperties() {


        $this
->table = "asig_jug_equipo";
        $this
->IdColumnName = "idasig";
        $this
->query = "select asig_jug_equipo.* from asig_jug_equipo ";
       
   
}
}


Agradecido de antemano, un abrazo

Pascal Martinez

unread,
Jan 14, 2017, 1:56:47 AM1/14/17
to ZnetDK
Hola José,

Lo siento, no puedo ayudarte si no haces una pregunta clara y precisa sobre ZnetDK o si no me das un mensaje de error.

Saludos,

Pascal MARTINEZ

Jose Puertas

unread,
Jan 17, 2017, 4:50:53 PM1/17/17
to ZnetDK
Resuelto, gracias
Reply all
Reply to author
Forward
0 new messages