Actualizar registros

edited julio 2008 in Principiantes
Hola, he hecho un formulario sobre una lista de contactos que pertenecen a un staff editorial de una revista y los datos del contacto están repartidos en dos tablas. Ahora bien, cuando submiteo el form con la tabla que relaciona los contactos con las revistas no tengo ningun problema, pero con la tabla que pertenece específicamente a los contactos sí! No me deja hacer el update()

Esto es así:
	public function validar($id){

			$persona1 = $this->Persona->find_first($id);
			
			$persona1->apellido = $_REQUEST['apellido'];
			$persona1->apellido = $_REQUEST['nombre'];
			$persona1->update();
						 
			$persona2 = $this->Personaxrevista->find_first("persona_id = '$id'");
			$persona2->relacion = $_REQUEST['relacion'];
			$persona2->notas = $_REQUEST['notas'];
			$persona2->capacitacion_id = $_REQUEST['capacitacion_id'];
			$persona2->update();
}

Con $persona2 no tengo problemas y me actualiza el registro en la tabla pero con $persona1 obtengo el siguiente mensaje: "No se puede actualizar porque el registro no existe". He hecho pruebas del tipo echo $persona1->apellido y obtengo el apellido del contacto. Qué podrá ser? Gracias desde ya.

Comentarios

  • edited 8:12
    Yo lo utilizo asi:

    $usuario = $this->Usuarios->find($id);
    $usuario->save_from_request();

    Es más simple y a mi me funciona bien.

    Un saludo
  • edited 8:12
    Yo lo utilizo asi:

    $usuario = $this->Usuarios->find($id);
    $usuario->save_from_request();

    Es más simple y a mi me funciona bien.

    Un saludo

    Gracias wiggly pero hice la prueba y nada ahora obtengo el mensaje: KumbiaDBException: 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 ') VALUES )' at line 1 al ejecutar
  • Lo que sucede es que save_from_request tus campos del formulario deben ser iguales a los de la Tabla de la BD
  • edited 8:12
    Lo mejor es que en el MODELO pongas $logger = true; Asi te guardara un LOG con todas las sentencias SQL.

    Un saludo
  • edited 8:12
    yo cambiaria tu codigo por este otro:
    public function validar($id){
    
             $persona1 = $this->Persona->find_first($id);
             
             $persona1->apellido = $this->request("apellido");
             $persona1->apellido = $this->request("nombre");
             $persona1->save();
                      
             $persona2 = $this->Personaxrevista->find_first("persona_id = '$id'");
             $persona2->relacion = $this->request("relacion");
             $persona2->notas = $this->request("notas");
             $persona2->capacitacion_id = $this->request("capacitacion_id");
             $persona2->save();
    }
    

    el save(), si el registro existe lo actualiza, sino lo crea.


    suerte!!!
  • edited 8:12
    Antes te hable de save_from_request(), pero supongo que save() serás más eficiente que save_from_request().

    save_from_request() tiene que "buscar" en REQUEST las variables que recibe, por lo que si lo haces explicitamente, algo que ahorras (supongo)

    Un saludo
  • edited 8:12
    Gracias a todos, gracias FiDeLio! Funcionó.

    Por casualidad, ahora estoy armando un form de ingreso de personas y quiero que antes de ingresar los datos pase por una validación como por ejemplo que no dejen campos vacíos, cómo hago? Uso before_create? Pero cómo? y en dónde lo inserto? Gracias
  • edited 8:12
    que tipo de formulario estas utilizando.

    Puedes utilizar before o success. En el libro de KUMBIA hay algun ejemplo.

    Tambien si en la base de datos tienes puesto que no puede ser nulo, te lo valida automaticamente.

    Pero mejor realizarlo primero en cliente, asi quitas carga al servidor.

    Un saludo
Sign In or Register to comment.