Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Formulario para editar, no recoje ID????

Estas en el tema de Formulario para editar, no recoje ID???? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenos dias, M aqui otra vez con ustedes........ tengo una funcion dentro de un controlador, q le paso el ID de una tabla (Bauche) y ...
  #1 (permalink)  
Antiguo 24/02/2012, 08:31
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 3 meses
Puntos: 1
Formulario para editar, no recoje ID????

Buenos dias, M aqui otra vez con ustedes........

tengo una funcion dentro de un controlador, q le paso el ID de una tabla (Bauche) y devueleve todos los registror perfectamente al FORMULARIO DE EDICION, el codigo es el siguiente:

funcion en el controlador:
[PHP]
function editar($id= null){
if(!$id){
$this->Session->setFlash('Los Registros NO han sido modificado.', 'flash_info');
$this->redirect(array('action' => 'filtrar_fechas'));
}
if(empty($this->data)){
$this->data=$this->Bauche->find(array('Bauche.id'=>$id));
$this->set('bancos', $this->Banco->find('list',array('fields'=>array('id','agencia') ,'order' => array('agencia'))));
$this->set('IDbauche', $id);
}else{
if ($this->Bauche->save($this->data)){
$this->Session->setFlash('Los Registros han sido modificado correctamente.', 'flash_info');
$this->redirect(array('action' => 'filtrar_fechas'));
}else{
$this->Session->setFlash('Los Registros NO han sido GUARADADO correctamente.', 'flash_info');
}
}
}

Pero cuando veo el formulario de editar, muestra todo los registros q esta en esa tabla (Bauche), PERO EL MAS IMPORTANTE q ES EL ID de esa tabla, el cual necesito para actualizar cualquier ca,por dentro de esa no lo RECOGE o no lo muestra, puede verlo en la sigueinte imagen:



Ha el formulario editar este es el codigo:
Código PHP:
<fieldset>
<legend><?php __('EDITAR registros por Fechas');?></legend>
<?php
echo $form->create('Editar', array('url' => '/inicios/editar'));
echo 
$form->input('Bauche.id', array('label' => '<font color=black><b>ID Vauche deposito</b></font>','size' => '10','class' => 'validate[required] text-input','value'=>$this->data['Bauche']['id']));
echo 
$form->input('Bauche.fechadeposito_id', array('label' => '<font color=black><b>ID fecha deposito</b></font>','size' => '10','class' => 'validate[required] text-input')); 
echo 
$datePicker->picker('Fechadeposito.fecha', array('id'=>'fechaDeposito','type' => 'text''size' => '10','label' => '<font color=black><b>Fecha Deposito</b></font>','id'=>'fecha_deposito','name'=>'data[Fechadeposito][fecha]','readonly' => 'readonly','class' => 'validate[required] text-input''onfocus'=> true));
echo 
$form->select('Bauche.banco_id',$bancos,nullnull, array(0=>"Seleccione el Banco"));
echo 
$form->input ('Bauche.num_bauche', array('label' => '<font color=black><b>Numero Vauche</b></font>','size' => '10','class' => 'validate[required] text-input')); 
echo 
$form->input ('Bauche.monto', array( 'label' => '<font color=black><b>Monto Depositado</b></font>','class' => 'validate[required] text-input')); 
?>
</fieldset>
<?php
echo $form->submit ('Modificar!');
echo 
$form->end();
//echo $html->link('Regresar', array('controller' => 'Inicios', 'action' => 'index/iniciales:'.$iniciales.'/nombre:'.$nombre.'/id_usuario:'.$id_usuario.'/control:'.$valor));
?>

Que estoy haciendo mal???????
__________________
Miguel Padrón :cool:
  #2 (permalink)  
Antiguo 24/02/2012, 10:17
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Formulario para editar, no recoje ID????

¿estás usando Symfony 1.*?: te recuerdo que al tratarse del campo ID se genera un input oculto, lo que tienes que hacer es, o mostrar en un label el valor del ID o cambiar el widget, pero te recomiendo que le coloques el atributo readonly de lo contrario el usuario puede cambiar el id a voluntad
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 24/02/2012, 10:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Formulario para editar, no recoje ID????

En los tags dice CakePHP
  #4 (permalink)  
Antiguo 24/02/2012, 12:10
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Formulario para editar, no recoje ID????

Cita:
Iniciado por GatorV Ver Mensaje
En los tags dice CakePHP
cierto, no me fijé , de igual forma el código tiene gran parecido con symfony 1, saludos

@8461277: revisa el código fuente HTML, lo más probable es que pase lo mismo a como te indique, un generador de forms por omisión genera un input hidden para el PK, saludos
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 24/02/2012, 12:21
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 3 meses
Puntos: 1
Respuesta: Formulario para editar, no recoje ID????

Gracias maycolalvarez y a GatorV por señalar a nuestro amigo de que se trata CAKEPHP.

Si observas maycolalvarez el formulario, esta la linea en donde quiero atrapar el ID de la tabla(Bauche), te lo muestro:
Código PHP:
echo $form->input('Bauche.id', array('label' => '<font color=black><b>ID Vauche deposito</b></font>','size' => '10','class' => 'validate[required] text-input','value'=>$this->data['Bauche']['id'])); 
Y se que debo colocarlo oculto, pero como lo estoy probando para ver si puedo VER LOS ID's coresponedente para hacer la modificacion pertinente

Y hasta el moemnto solo puedo atrapar es:
Código PHP:
echo $form->input('Bauche.fechadeposito_id', array('label' => '<font color=black><b>ID fecha deposito</b></font>','size' => '10','class' => 'validate[required] text-input')); 
Solo lo puedo imprimir asi:
Código PHP:
$lolo=$this->data['Bauche']['id'];
echo 
$lolo
Pero si forzo a colocarlo en un campo sea oculto o no, cuando mando el formualrio no realiza la MODIFICACION, ya q me imagino q no encuentar el ID (Bauche.id) dentro de la tabla a pesar que cuando le mando el ID que deseo modificar unos de los registros, me devuelve esto:
Código SQL:
Ver original
  1. SELECT `Bauche`.`id`, `Bauche`.`fechadeposito_id`, `Bauche`.`banco_id`, `Bauche`.`num_bauche`, `Bauche`.`monto`, `Fechadeposito`.`id`, `Fechadeposito`.`fecha`, `Banco`.`id`, `Banco`.`tipo_cuenta`, `Banco`.`agencia`, `Banco`.`cliente`, `Banco`.`num_cuenta` FROM `bauches` AS `Bauche` LEFT JOIN `fechadepositos` AS `Fechadeposito` ON (`Bauche`.`fechadeposito_id` = `Fechadeposito`.`id`) LEFT JOIN `bancos` AS `Banco` ON (`Bauche`.`banco_id` = `Banco`.`id`) WHERE `Bauche`.`id` = 528 LIMIT 1

Como pueden ver alli esta el Bauche.id, pero no logro que este atrapado(si se puede decir asi) dentro del formulario

Alguna sugerencia
__________________
Miguel Padrón :cool:
  #6 (permalink)  
Antiguo 24/02/2012, 13:20
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Formulario para editar, no recoje ID????

pero estoy viendo que el 528 es estático, no se supone que proviene de POST?????
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 24/02/2012, 13:42
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 3 meses
Puntos: 1
Respuesta: Formulario para editar, no recoje ID????

Cita:
Iniciado por maycolalvarez Ver Mensaje
cierto, no me fijé , de igual forma el código tiene gran parecido con symfony 1, saludos

@8461277: revisa el código fuente HTML, lo más probable es que pase lo mismo a como te indique, un generador de forms por omisión genera un input hidden para el PK, saludos
Papa lei este sugerencia tarde, pero tiene razon si genera un input oculto, mira:
Código HTML:
Ver original
  1. <input id="BaucheId" type="hidden" value="560" name="data[Bauche][id]">

Pero cuando mando este formulario a la funcioN:

Código PHP:
function editar($idnull){
if(!
$id){
$this->Session->setFlash('Los Registros NO han sido modificado.''flash_info');
$this->redirect(array('action' => 'filtrar_fechas'));
}
if(empty(
$this->data)){
$this->data=$this->Bauche->find(array('Bauche.id'=>$id));
$this->set('bancos'$this->Banco->find('list',array('fields'=>array('id','agencia') ,'order' => array('agencia'))));
$this->set('IDbauche'$id);
}else{
if (
$this->Bauche->save($this->data)){
$this->Session->setFlash('Los Registros han sido modificado correctamente.''flash_info');
$this->redirect(array('action' => 'filtrar_fechas'));
}else{
$this->Session->setFlash('Los Registros NO han sido GUARADADO correctamente.''flash_info');
}
}

No realiza la operacion de modificado de algunos de los registros q envio dentro de ese formulario, que estara pasando sera que: name="data[Bauche][id] no lo toma como id????
__________________
Miguel Padrón :cool:
  #8 (permalink)  
Antiguo 24/02/2012, 13:52
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Formulario para editar, no recoje ID????

data[Bauche][id] te devolverá como array:

$id = $_POST['Bauche']['id'];

o me imagino que debe de haber un wrapper del generador de formularios, algo parecido en Symfony al $formInstance->bind();

deberías pasarte por los tutos de generación de forms de cakePHP
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #9 (permalink)  
Antiguo 24/02/2012, 14:06
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 2 meses
Puntos: 845
Respuesta: Formulario para editar, no recoje ID????

Y no te muestra ningún error ?, donde recuperas los errores cuando falla la integridad referencial o algún campo obligatorio ?

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 24/02/2012, 14:07
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 3 meses
Puntos: 1
Respuesta: Formulario para editar, no recoje ID????

Cita:
Iniciado por maycolalvarez Ver Mensaje
data[Bauche][id] te devolverá como array:

$id = $_POST['Bauche']['id'];

o me imagino que debe de haber un wrapper del generador de formularios, algo parecido en Symfony al $formInstance->bind();

deberías pasarte por los tutos de generación de forms de cakePHP
Papa tenias toda la razon, solko cambie lo q me sugeriste:

$id = $_POST['Bauche']['id'];

por:

$id = $data['Bauche']['id'];

Quedando asi para otras perosna que esten en mismo problema que yo:

Código PHP:
function editar($idnull){
        if(!
$id){
            
$this->Session->setFlash('Los Registros NO han sido modificado.''flash_info');
            
//$this->redirect(array('action' => 'filtrar_fechas'));
        
}
        if(empty(
$this->data)){
            
$this->data=$this->Bauche->find(array('Bauche.id'=>$id));
            
$this->set('bancos'$this->Banco->find('list',array('fields'=>array('id','agencia'),'order' => array('agencia'))));
            
$this->set('IDbauche'$id); 
        }else{
            if (!empty(
$this->data)){
                
$this->Bauche->id $data['Bauche']['id'];
                
$this->Bauche->save($this->data);
                
$this->Session->setFlash('Los Registros han sido modificado correctamente.''flash_info');
                
//$this->redirect(array('action' => 'filtrar_fechas'));
            
}else{
                
$this->Session->setFlash('Los Registros NO han sido GUARADADO correctamente.''flash_info');
            }
        } 
Mil gracias a todos y en especial a maycolalvarez, espeor contar con tu ayuda para proximas dudas

saludos
__________________
Miguel Padrón :cool:

Etiquetas: cakephp
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 07:10.