Foros del Web » Programando para Internet » PHP » Zend »

Error al insertar en la base de datos

Estas en el tema de Error al insertar en la base de datos en el foro de Zend en Foros del Web. Que tal! Ya pude ver mi aplicación en el navegador, ahora, tengo un formulario simple que está prgramado para almacenar datos en Postgres, sin embargo ...
  #1 (permalink)  
Antiguo 05/01/2011, 12:28
 
Fecha de Ingreso: diciembre-2010
Mensajes: 20
Antigüedad: 14 años
Puntos: 0
Error al insertar en la base de datos

Que tal!

Ya pude ver mi aplicación en el navegador, ahora, tengo un formulario simple que está prgramado para almacenar datos en Postgres, sin embargo a la hora de presionar el botón "Enviar", me aparece el siguiente mensaje:

Cita:
No token was provided to match against
No tengo idea de porque aparece y no he podido resolverlo. En mi base de datos, no se guardo ningun dato. A que se debe esto??

Saludos!!
  #2 (permalink)  
Antiguo 05/01/2011, 12:36
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Error al insertar en la base de datos

Es un mensaje de error del formulario, o bien el validator no esta bien configurado o no pasa la validación de un elemento, seguramente tenes un Identical, revisalo y en todo caso postea la configuración.

Saludos.
  #3 (permalink)  
Antiguo 05/01/2011, 13:02
 
Fecha de Ingreso: diciembre-2010
Mensajes: 20
Antigüedad: 14 años
Puntos: 0
Respuesta: Error al insertar en la base de datos

mm.. no entiendo bien a que te refieres con el validator, donde checo la configuración???, mira mi forma esta de la siguiente manera:

Cita:
<?php

class Application_Form_Ingreso extends Zend_Form{

public function init()
{
$this->setMethod('post');
$this->addElement('text', "username",
array('label' => 'Nombre de usuario: ' ));
$this->addElement('text', "name",
array('label' => 'Nombre: ' ));
$this->addElement('text', "lastname1",
array('label' => 'Apellido Paterno: ' ));
$this->addElement('text', "lastname2",
array('label' => 'Apellido Materno: ' ));
$this->addElement('text', "pass",
array('label' => 'Password: ' ));
$this->addElement('text', "confirm_pass",
array('label' => 'Confirme password: '));
$this->addElement('hash', 'csrf', array('ignore' => true));
$this->addElement('submit', 'enviar', array('ignore' => true, 'label' => 'Enviar Solicitud'));
}
}
Espero me puedan orientar
  #4 (permalink)  
Antiguo 05/01/2011, 14:24
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Error al insertar en la base de datos

Internamente Zend_Form_Element_Hash utiliza el validator Zend_Validator_Identical, para checkear que el hash del form es igual al hash que esta en la session, no debería haber problemas según lo que estas mostrando, este validator depende de session, tenes el resource session configurado en tu application.ini ?, le estas aplicando algún decorator al form?
  #5 (permalink)  
Antiguo 10/01/2011, 12:03
 
Fecha de Ingreso: diciembre-2010
Mensajes: 20
Antigüedad: 14 años
Puntos: 0
Respuesta: Error al insertar en la base de datos

Hola masterpuppet, ya chequé lo que me dijiste y ya logré resolver el error, le quite la parte de

Cita:
'ignore' => true
y mi aplicación ya no me manda ningún error, ahora hay otro problema, cuando envío mis datos en teoría si los inserta, pero cuando checo la BD no hay nada y bueno, no aparece ningún mensaje de error o algo que me oriente para ver que onda.

Hice un metodo para mostrar el contenido de la BD, me basé en el tutorial de la página de ZF, pero en el foreach tengo un error, la verdad no entiendo muy bien de donde salen las variables entries as $entry del tutorial.

Mira, este es el código de mi vista, que es donde me manda el error:

Cita:
<center><b> Todos los registros </b></center>

<p> <a href= "
<?php echo $this->url(array(
'controller'=>'Ingreso',
'action'=>'index'), 'default', true)
?>">
Regresar a inicio </a> </p>

Registros: </br>

<dl>
<?php foreach($this->entradas as $entrada): ?>
<dt> <?php echo $this->escape($entrada->usuario_id)?> </dt>
<dt> <?php echo $this->escape($entrada->nombre_acceso)?> </dt>
<dt> <?php echo $this->escape($entrada->nombre)?> </dt>
<dt> <?php echo $this->escape($entrada->apellido_paterno)?> </dt>
<dt> <?php echo $this->escape($entrada->apellido_materno)?> </dt>
<?php endforeach ?>
</dl>
y el error es:

Cita:
Warning: Invalid argument supplied for foreach() in D:\Programas\wamp\www\ZendFramework\ksas\applicati on\views\scripts\ingreso\all.phtml on line 13
Espero me puedan orientar. Saludos.
  #6 (permalink)  
Antiguo 10/01/2011, 12:39
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: Error al insertar en la base de datos

Cita:
Iniciado por Pituficosa Ver Mensaje
... ahora hay otro problema, cuando envío mis datos en teoría si los inserta, pero cuando checo la BD no hay nada y bueno, no aparece ningún mensaje de error o algo que me oriente para ver que onda.
Estas segura que pasa la validación del formulario ? podrías postear el código del controller donde procesas el submit ?

Cita:
Iniciado por Pituficosa Ver Mensaje
...de donde salen las variables entries as $entry del tutorial.
Sin el link como referencia no te sabria decir.

El error que estas teniendo es porque entradas no es iterable, deberías postear el código donde lo asignas a la vista.
  #7 (permalink)  
Antiguo 10/01/2011, 13:02
 
Fecha de Ingreso: diciembre-2010
Mensajes: 20
Antigüedad: 14 años
Puntos: 0
Respuesta: Error al insertar en la base de datos

Ok, muchas gracias.

Mira, el codigo donde proceso el submit es este:

Código PHP:
Ver original
  1. public function insertar(Application_Model_Ingreso $ingreso){
  2.         $datos = array(
  3.             'nombre_acceso' => $ingreso->getUserName(),
  4.             'nombre' => $ingreso->getName(),
  5.             'apellido_paterno' => $ingreso->getLastName1(),
  6.             'apellido_materno' => $ingreso->getLastName2(),
  7.             'sys_actualizacion' => date(DATE_ATOM , time()),
  8.             'sys_creacion' => date(DATE_ATOM , time())         
  9.         );
  10.                    
  11.         $pass = array(
  12.             'id_usuario' => $ingreso->getId(),
  13.             'contrasena' => $ingreso->getPassword(),
  14.             'activo' => "true",
  15.             'sys_actualizacion' => date(DATE_ATOM, time())
  16.         );
  17.        
  18.         if(null === ($username = $ingreso->getUserName() )) {
  19.             unset ($datos['nombre_acceso'] );
  20.             $this->getDbTabla() -> insert($datos);
  21.            
  22.             $this->getDbTablaContrase&#241;a() -> insert($pass);
  23.         }
  24.     }

LA parte que no entiendo del tutorial es el fetchAll de esta página [URL="http://framework.zend.com/manual/en/learning.quickstart.create-model.html"]Tutorial ZF[/URL]

El codigo de mi modelo para mostrar todo es:

Código PHP:
Ver original
  1. public function verTodos(){
  2.         $resultSet = $this -> getDbTablaIngreso() -> verTodos();
  3.         $entradas = array();
  4.        
  5.         foreach($resultSet as $columna){
  6.             $entrada = new Application_Model_Ingreso();
  7.             $entrada->setId($columna->usuario_id)
  8.                     ->setUsername($columna->nombre_acceso)
  9.                     ->setName($columna->nombre)
  10.                     ->setLastName1($columna->apellido_paterno)
  11.                     ->setLastName2($columna->apellido_materno);
  12.                    
  13.             $entradas[] = $entrada;    
  14.         }
  15.         return $entradas;
  16.     }


Y el de mi vista es:
Código PHP:
Ver original
  1. <center><b> Todos los registros </b></center>
  2.  
  3. <p> <a href= "
  4.         <?php echo $this->url(array(
  5.             'controller'=>'Ingreso',
  6.             'action'=>'index'), 'default', true)
  7.         ?>">
  8.     Regresar a inicio </a> </p>
  9.    
  10. Registros:  </br>
  11.  
  12. <dl>
  13.     <?php foreach($this->entradas as $entrada): ?>
  14.         <dt>    <?php echo $this->escape($entrada->usuario_id)?>  </dt>
  15.         <dt>    <?php echo $this->escape($entrada->nombre_acceso)?>  </dt>
  16.         <dt>    <?php echo $this->escape($entrada->nombre)?>  </dt>
  17.         <dt>    <?php echo $this->escape($entrada->apellido_paterno)?>  </dt>
  18.         <dt>    <?php echo $this->escape($entrada->apellido_materno)?>  </dt>
  19.     <?php endforeach ?>
  20. </dl>
  #8 (permalink)  
Antiguo 10/01/2011, 14:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Error al insertar en la base de datos

Pero faltaría el de tu controller, que es donde asignas los datos de tu modelo a tu vista...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:18.