Es poco probable que a alguien le den ganas de leer esa maraña de
codigo sin formato. ¿Por que no pruebas usar el http://bin.cakephp.org
cuando tengas que pegar tanto codigo ?

On 6 mar, 18:05, yuyul <[EMAIL PROTECTED]> wrote:
> Buenas amigos,
> mi problema es el siguiente:
>
> Cuando intento guardar tanto editando como a la hora de añadir un
> nuevo usuario, me guarda bien los datos, tanto del usuario como la
> tabla relacionada usuarios_contratas, pero me el siguiente error:
>
> Query: data
> Warning: SQL Error: 1064: You have an error in your SQL syntax; check
> the manual that corresponds to your MySQL server version for the right
> syntax to use near 'data' at line 1 in C:\xampp\htdocs\GESINC\cake\libs
> \model\datasources\dbo_source.php on line 440
>
> Mirando las diferentes consultas que intenta hacer contra la base de
> datos, me fijo que intenta ejecutar una consulta "data" y hay da el
> error, pero no se porque intenta ejecutar esa consulta.
>
> Trabajo con la version estable de cakephp y mysql.
>
> Les pongo aqui los controladores y los modelos, a ver si alguien ve
> por donde puede estar el fallo, ya que llevo varios dias mirando y
> probando y no doy con el error.
>
> <?php
> class UsuariosController extends AppController {
>         var $name ='Usuarios';
>         var $layout = 'default';
>         function login(){
>                 //No mostrar el mensaje de error si no se han proporcionado 
> datos.
>                 $this->set('error', false);
>
>                 //Si un usuario ha proporcionado datos a través del formulario
>                 if (!empty($this->data)){
>                         //Primero, veamos si hay usuarios en la base de datos
>                         //con el nombre de usuario proporcionado por el 
> usuario
>                         //utilizando el formulario
>
>                         $someone = 
> $this->Usuario->findByLogin($this->data['Usuario']
> ['login']);
>
>                         //En este punto, $someone está lleno con datos del 
> usuario, o está
> vacio.
>                         //Comparemos la contraseña proporcionada a través del 
> formulario
> con la
>                         //almacenada en la base de datos.
>                         if(!empty($someone['Usuario']['password']) && 
> ($someone['Usuario']
> ['password'] == $this->data['Usuario']['password'])){
>                                 //Nota: esperanzado en que las contraseñas 
> estén ofuscadas en la
> base de datos,
>                                 //tu comparación podria verse más como:
>                                 //md5($this->data['Usuario']['password'] == 
> ...
>
>                                 //Esto significa que estas son iguales. Ahora 
> podemos contruir
> alguna información básica de
>                                 //sesión para recordar este usuario como con 
> 'sesión-iniciada'
>
>                                 $this->Session->write('Usuario', 
> $someone['Usuario']);
>
>                                 //Ahora que tenemos a los usuarios 
> registrados en una sesión,
> redireccionémoslos a
>                                 //la página de recibimiento para la 
> aplicación.
>
>                                 $this->redirect('/empresas');
>                         }
>                         //Caso contrario, han provisto datos incorrectos:
>                         else {
>                                 //Recuerdas la variable $error en la vista? 
> Cambiemos su valor a
> verdadero:
>                                 $this->set('error', true);
>                         }
>                 }
>         }
>
>         function logout(){
>                 //Redirecciona usuarios a esta acción si hacen click en el 
> botón
> Cerrar Sesión.
>                 //Todos lo que necesitamos hacer aquí es destruir la 
> información de
> sesión.
>                 $this->Session->delete('Usuario');
>
>                 //Y problablemente deberíamos redireccionarlos a alguna parte,
> también ...
>
>                 $this->redirect('/usuarios/login');
>         }
>
>         function index(){
>                 $this->Usuario->recursive = 0;
>                 $this->set('usuarios', $this->Usuario->findAll());
>         }
>
>         function view($id){
>                 $this->set('usuarios', $this->Usuario->read(null,$id));
>                 $this->set('contratasArray', 
> $this->Usuario->Contrata->generateList());
>
>         }
>
>         function add (){
>            if(empty($this->data)){
>               $this->set('empresaArray',
>                          $this->Usuario->Empresa->generateList());
>               $this->set('contratasArray', 
> $this->Usuario->Contrata->generateList());
>
>               $this->set('usuarios', null);
>            }
>            else{
>               if($this->Usuario->save($this->data)){
>                  //$this->redirect('usuarios/index');
>                  //$this->set('Correcto', 1);
>                  $this->set('empresaArray',
>                          $this->Usuario->Empresa->generateList());
>                          $this->set('contratasArray',
>                          $this->Usuario->Contrata->generateList());
>               }
>               else{
>                  $data = $this->data;
>                  $this->set('usuarios', $data);
>                  $this->set('empresaArray',
>                          $this->Usuario->Empresa->generateList());
>                          $this->set('contratasArray',
>                          $this->Usuario->Contrata->generateList());
>               }
>            }
>         }
>
>         function edit($id=null){
>                 if(empty($this->data)){
>                         $this->Usuario->id = $id;
>                         $this->data = $this->Usuario->read();
>                         $data = $this->Usuario->read(null, $id);
>                         $this->set('usuarios', $data);
>                         $this->set('empresaArray',
>                                                 
> $this->Usuario->Empresa->generateList());
>                         $this->set('contratasArray',
>                                                 
> $this->Usuario->Contrata->generateList());
>                         foreach($data['Contrata'] as $var){
>                                 $contrata[$var['id']] = $var['id']; }
>                         $this->set('selectedContrata', $contrata);
>                 }
>                 else {
>                         if($this->Usuario->save($this->data)){
>                                 //$this->redirect('usuarios/index');
>                                 /*$data = $this->Usuario->read();
>                                 $this->set('usuarios', $data);
>
>                                 $this->set('empresaArray',
>                                                         
> $this->Usuario->Empresa->generateList());
>                                 $this->set('contratasArray',
>                                                         
> $this->Usuario->Contrata->generateList());
> //                              echo $data['Contrata']['id'];
>                                 foreach($data['Contrata'] as $var){
>                                         $contrata[$var['id']] = $var['id']; }
>                                 $this->set('selectedContrata', $contrata);
>                                 */
>                         }
>                         else {
>                                 /*$this->Usuario->id = $id;
>                                 $this->data = $this->Usuario->read();
>                                 $data = $this->Usuario->read(null, $id);
>                                 $this->set('usuarios', $data);
>
>                                 $this->set('empresaArray',
>                                                         
> $this->Usuario->Empresa->generateList());
>                                 $this->set('contratasArray',
>                                                         
> $this->Usuario->Contrata->generateList());
>                                 foreach($data['Contrata'] as $var){
>                                         $contrata[$var['id']] = $var['id']; }
>                                 $this->set('selectedContrata', $contrata);
>                                 */
>                         }
>                 }
>         }
>
>         function delete($id){
>                 $this->Usuario->del($id);
>                 $this->flash('Usuario eliminado.', '/usuarios/index');
>         }}
>
> ?>
>
> <?php
> class usuario extends AppModel {
>         var $name = 'Usuario';
>
>         var $defaultFields = 'nombre';
>
>         var $belongsTo = array(
>                                                 'empresa' =>
>                                                 array ('className' => 
> 'Empresa',
>                                                                 'Conditions' 
> => '',
>                                                                 'order' => '',
>                                                                 'foreignKey' 
> => 'empresa_id',
>                                                                 
> 'counterCache' => ''),);
>
>     var $hasAndBelongsToMany = array('Contrata' =>
>                                array('className'    => 'Contrata',
>                                      'joinTable'    =>
> 'usuarios_contratas',
>                                      'foreignKey'   => 'usuario_id',
>                                      'associationForeignKey'=>
> 'contrata_id',
>                                      'conditions'   => '',
>                                      'order'        => '',
>                                      'limit'        => '',
>                                      'unique'       => true,
>                                      'finderQuery'  => '',
>                                      'deleteQuery'  => '',
>                                )
>                                );
>
>    var $validate = array(
>       'login' => '/[a-z0-9\_\-]{3,}$/i',
>       'password' => VALID_NOT_EMPTY
>    );
>
>    function beforeSave()
>         {
>             $this->data['Usuario']['password'] = md5($this->data('Usuario',
> 'password'));
>
>             return true;
>         }
>
> }
>
> ?>
>
> Aqui les dejo el modelo de contratas
>
> <?php
> class Contrata extends AppModel {
>         var $name = 'Contrata';
>         var $displayField = 'nombre';
>
>         var $belongsTo = array(
>             'empresa' =>
>              array('className' => 'Empresa',
>                    'conditions' => '',
>                    'order' => '',
>                    'foreignKey' => 'empresa_id',
>                    'counterCache' => ''),
>             'tipocontrata' =>
>                         array('className' => 'Tipocontrata',
>                                         'conditions' => '',
>                                         'order' =>'',
>                                         'foreignKey' => 'tipocontrata_id',
>                                         'counterCache' => ''),);
>
> }
>
> ?>
>
> Aqui les pongo la estructura de las tablas:
>
> CREATE TABLE `usuarios` (
>   `id` int(11) NOT NULL auto_increment,
>   `nombre` varchar(20) collate latin1_general_ci NOT NULL,
>   `login` varchar(20) collate latin1_general_ci NOT NULL,
>   `password` varchar(50) collate latin1_general_ci NOT NULL,
>   `rol` char(1) collate latin1_general_ci NOT NULL,
>   `empresa_id` int(11) default NULL,
>   PRIMARY KEY  (`id`)
> ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1
> COLLATE=latin1_general_ci;
>
> CREATE TABLE `contratas` (
>   `id` int(11) NOT NULL auto_increment,
>   `nombre` varchar(40) collate latin1_general_ci default NULL,
>   `empresa_id` int(11) NOT NULL,
>   `tipocontrata_id` int(11) NOT NULL,
>   PRIMARY KEY  (`id`),
>   KEY `contratas_fk` (`empresa_id`),
>   KEY `contratas_fk1` (`tipocontrata_id`),
>   CONSTRAINT `contratas_fk` FOREIGN KEY (`empresa_id`) REFERENCES
> `empresas` (`id`),
>   CONSTRAINT `contratas_fk1` FOREIGN KEY (`tipocontrata_id`)
> REFERENCES `tipocontratas` (`id`)
> ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
> COLLATE=latin1_general_ci;
>
> CREATE TABLE `usuarios_contratas` (
>   `usuario_id` int(11) NOT NULL,
>   `contrata_id` int(11) NOT NULL,
>   PRIMARY KEY  (`usuario_id`,`contrata_id`),
>   KEY `usuario_contratas_fk1` (`contrata_id`),
>   CONSTRAINT `usuario_contratas_fk` FOREIGN KEY (`usuario_id`)
> REFERENCES `usuarios` (`id`),
>   CONSTRAINT `usuario_contratas_fk1` FOREIGN KEY (`contrata_id`)
> REFERENCES `contratas` (`id`)
> ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
>
> Gracias a todos.
--~--~---------~--~----~------------~-------~--~----~
Has recibido este mensaje porque estás suscrito a Grupo "CakePHP-es" de Grupos 
de Google.
 Si quieres publicar en este grupo, envía un mensaje de correo 
electrónico a [email protected]
 Para anular la suscripción a este grupo, envía un mensaje a [EMAIL PROTECTED]
 Para obtener más opciones, visita este grupo en 
http://groups.google.com/group/CakePHP-es?hl=es.

-~----------~----~----~----~------~----~------~--~---

Responder a