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

Problemas con los campos tipo datetime en los formularios

Estas en el tema de Problemas con los campos tipo datetime en los formularios en el foro de Zend en Foros del Web. Buenas. Mi problema es que tengo un form, en el cual se introduce una fecha y una hora, y queda en el formato: dd-mm-YYYY hh:mm ...
  #1 (permalink)  
Antiguo 26/05/2012, 13:54
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Problemas con los campos tipo datetime en los formularios

Buenas.

Mi problema es que tengo un form, en el cual se introduce una fecha y una hora, y queda en el formato: dd-mm-YYYY hh:mm (26-05-2012 18:05 por ejemplo).

A la hora de guardar este valor en mi base de datos (de tipo MySQL), el formato en el que hay que guardarlo es YYYY-mm-dd hh:mm (2012-05-26 18:05 con el ejemplo anterior).

He estado buscando como hacerlo, con funciones de PHP y tal, en la acción del controlador que se encarga de recibir los datos del formulario, pero se ve que no lo estaré haciendo bien, y al final en la base de datos me encuentro con el valor 0000-00-00 00:00:00

También he intentando debuggear mediante alerts, o console.log para firebug, o echos de PHP, pero no funciona igual con Zend Framework de por medio, y se me hace bastante complicado todo.

Espero haberme explicado y que alguien pueda ayudarme.

Un saludo y gracias.
  #2 (permalink)  
Antiguo 26/05/2012, 14:00
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: Problemas con los campos tipo datetime en los formularios

El formato debe de ser el segundo: YYYY-mm-dd hh:mm

Bien podrías usar date() para generar ese formato, sí lo quieres insertar desde un formulario pues faltaría ver como generas, y que es lo que estas insertando para ver porque no funciona.

Saludos.
  #3 (permalink)  
Antiguo 26/05/2012, 14:51
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Respuesta: Problemas con los campos tipo datetime en los formularios

Claro, ahí está la cosa.

En el formulario, la fecha y la hora se insertan en el primer formato, que es el que se usa en España, por ejemplo pondría la fecha: 26-05-2012 18:00.

Ahora cuando se envíe el formulario, y antes de guardar los datos en la base de datos, quiero transformar esa fecha al formato que pide MySQL, que sería 2012-05-26 18:00, y ahí es donde tengo el problema, lo he intentado hacer de varias formas, pero no me sale...

Gracias por contestar GatorV.

Un saludo.
  #4 (permalink)  
Antiguo 27/05/2012, 11:39
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: Problemas con los campos tipo datetime en los formularios

Pues sí ya conoces el formato de entrada, y el de salida, puedes hacerlo fácilmente usando explode() y luego construyendo la nueva fecha en un string, por ejemplo:
Código PHP:
Ver original
  1. // Fecha de entrada
  2. // dd-mm-YYYY
  3. // pasar a
  4. // YYYY-mm-dd
  5. $aFecha = explode('-', $sFecha);
  6. $newFecha = $aFecha[2] . '-' . $aFecha[1] . '-' . $aFecha[0];

Saludos.
  #5 (permalink)  
Antiguo 27/05/2012, 12:48
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Respuesta: Problemas con los campos tipo datetime en los formularios

Gracias por la ayuda GatorV.

Lo he intentado como me dices, pero sigue guardandome 0000-00-00 00:00:00.

Ten en cuenta que la fecha "de entrada" es dd-mm-YYYY hh:mm, y la de salida debería ser YYYY-mm-dd hh:mm, que es el tipo datetime de MySQL.

Saludos.
  #6 (permalink)  
Antiguo 27/05/2012, 19:51
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: Problemas con los campos tipo datetime en los formularios

Pues sin ver el código de lo que adaptaste esta complicado ver el problema, soluciones mágicas no existen.

Como tip yo guardaría en el formato internacional o un Timestamp, y solo muestras la fecha/hora correcta de acuerdo al locale actual.

Saludos.
  #7 (permalink)  
Antiguo 28/05/2012, 03:44
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Respuesta: Problemas con los campos tipo datetime en los formularios

Gracias por responder GatorV.

He estado intentando sacar esto con las soluciones que me das y con algunas otras, pero nada, siempre me encuentro con que en la base de datos mete el valor 0000-00-00 00:00:00 ó 1970-01-01 01:00:00 y no se por qué.

Me gustaría poder ir depurando el código poco a poco, poder ir sacando por pantalla lo que se recibe del formulario, o ir mostrando que valor tiene cada variable en un momento determinado. Algo que en PHP simple haría mediante echos para sacar esos valores por pantalla. En Zend Framework no se si habrá alguna forma de hacerlo, yo hasta el momento no la he visto.

Si hay alguna forma, agradecería que me la dijeses, y seguro que así soy capaz de sacar para delante el problema este con las fechas.

Perdón por la molestia, un saludo y gracias!!
  #8 (permalink)  
Antiguo 28/05/2012, 04:39
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Respuesta: Problemas con los campos tipo datetime en los formularios

He podido sacar el valor que recibo del formulario, mediante la función de dump y he visto que el problema debe estar en que en el formulario, el valor se mete como dd/mm/YYYY hh:mm (28/05/2012 18:00) y no en formato dd-mm-YYYY hh:mm como dije antes... facepalm

Entonces estoy intentando transformarlo ahora de ese formato a YYYY-mm-dd hh:mm para poder guardarlo en la base de datos, pero parece que con la función date() de PHP no se puede hacer así, ¿no?.

Sigo mirando, thanks
  #9 (permalink)  
Antiguo 28/05/2012, 04:59
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Respuesta: Problemas con los campos tipo datetime en los formularios

Lo he sacado de la siguiente forma GatorV, seguramente haya alguna forma mejor o más bonita, pero al menos me sale:

Código PHP:
Ver original
  1. /*La fecha entra en formato: dd/mm/YYYY hh:mm
  2.    y la guardaremos en formato: YYYY-mm-dd hh:mm que es el formato correcto de datetime en MySQL
  3. */
  4.                 $event_date_form = $form->getValue('event_date');
  5.                 $separate_date = explode('/', $event_date_form);
  6.                 $separate_year_time = explode(' ', $separate_date[2]);
  7.                 $event_date = $separate_year_time[0].'-'.$separate_date[1].'-'.$separate_date[0]. ' '.$separate_year_time[1];

Gracias por la ayuda :)
  #10 (permalink)  
Antiguo 28/05/2012, 09:07
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: Problemas con los campos tipo datetime en los formularios

Siempre puedes hacer un echo como en PHP "sin Zend", y puedes poner un die() al final para asegurarte, aunque lo mejor y más profesional es que uses un Debugger, como XDebug para depurar tu código paso a paso y así ver todas las variables y lo que estas usando.

Saludos.
  #11 (permalink)  
Antiguo 28/05/2012, 12:06
Avatar de Lobito14  
Fecha de Ingreso: abril-2010
Mensajes: 222
Antigüedad: 14 años
Puntos: 17
Respuesta: Problemas con los campos tipo datetime en los formularios

Cita:
Iniciado por GatorV Ver Mensaje
Siempre puedes hacer un echo como en PHP "sin Zend", y puedes poner un die() al final para asegurarte, aunque lo mejor y más profesional es que uses un Debugger, como XDebug para depurar tu código paso a paso y así ver todas las variables y lo que estas usando.

Saludos.
Pues tío, al principio lo intentaba hacer así, con un echo normal, pero como "seguía para delante", no veía nada, después vi por lo de poner la sentencia die(); y ya así he podido ir viendo el valor de la variable a cada paso y tal, y he podido sacarlo...

Gracias por tu ayuda :)

Etiquetas: datetime, mysql, formulario
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 09:02.